From 5cfd14c053d49db06a288eb08c6835f75dc7a889 Mon Sep 17 00:00:00 2001 From: Frank Adams Date: Thu, 12 Dec 2019 22:16:17 -0800 Subject: [PATCH] Add files via upload --- GRID 1550/1550 Keyboard Project.pdf | Bin 791117 -> 758929 bytes GRID 1550/1550_PC_Version.ino | 500 +++++++++++++++++++++++++++ GRID 1550/1550_Pi_Version.ino | 501 ++++++++++++++++++++++++++++ 3 files changed, 1001 insertions(+) create mode 100644 GRID 1550/1550_PC_Version.ino create mode 100644 GRID 1550/1550_Pi_Version.ino diff --git a/GRID 1550/1550 Keyboard Project.pdf b/GRID 1550/1550 Keyboard Project.pdf index 4d074fe94a25efc59bf6c332a5a8e88eff7ecdc3..35f425f3fba7ef261b2902412c8ff5b1dfcd83cc 100644 GIT binary patch delta 56986 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 {tgE{Zwfnlo5$1N7t7cq8e)MVM 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 Qhp_zPAQFQ{{BZEU0CY`fZvX%Q delta 89983 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
!*RuS) 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 diff --git a/GRID 1550/1550_PC_Version.ino b/GRID 1550/1550_PC_Version.ino new file mode 100644 index 0000000..306e1da --- /dev/null +++ b/GRID 1550/1550_PC_Version.ino @@ -0,0 +1,500 @@ +/* Copyright 2019 Frank Adams + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +// This software implements a GRID 1550 Laptop Keyboard Controller using a Teensy LC +// for use with a Windows PC. +// +// Revision History +// Initial Release Dec 12, 2019 - Created from Linux version, uses alt codes for \ and | which are not +// compatible with Linux +// +#define MODIFIERKEY_FN 0x8f // give Fn key a fake HID code +#define CAPS_LED 13 // Teensy LED on IO#13 shows Caps-Lock +#define NUM_LED 0 // Teensy IO#0 shows Num-Lock (wire to anode of new LED) +// +const byte rows_max = 11; // sets the number of rows in the matrix +const byte cols_max = 13; // sets the number of columns in the matrix +// +// Load the normal key matrix with the Teensyduino key names +// described at www.pjrc.com/teensy/td_keyboard.html +// A zero indicates no normal key at that location. +int normal[rows_max][cols_max] = { + {0,0,0,0,0,KEY_F1,KEY_F2,KEY_F3,KEY_F4,KEY_F5,0,KEY_F9,0}, + {0,0,0,0,KEY_SPACE,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,KEY_ESC,KEY_1,0,KEY_F6,KEY_F7,KEY_F8,KEY_F10,0}, + {0,0,0,0,0,KEY_TAB,KEY_Q,KEY_W,KEY_2,KEY_3,0,KEY_6,0}, + {0,0,0,0,0,KEY_CAPS_LOCK,KEY_A,KEY_S,KEY_E,KEY_4,KEY_5,KEY_7,0}, + {0,0,0,KEY_LEFT,0,0,0,KEY_Z,KEY_F,KEY_D,KEY_8,KEY_9,0}, + {0,0,0,KEY_DOWN,0,0,KEY_X,KEY_C,KEY_G,KEY_R,KEY_T,KEY_0,0}, + {0,0,0,KEY_NUM_LOCK,0,KEY_SCROLL_LOCK,KEY_V,KEY_B,KEY_H,KEY_Y,KEY_U,KEY_MINUS,0}, + {0,0,0,KEY_TILDE,0,KEY_UP,KEY_N,KEY_M,KEY_J,KEY_K,KEY_I,KEY_INSERT,0}, + {0,0,0,KEY_BACKSLASH,0,KEY_RIGHT_BRACE,KEY_COMMA,KEY_BACKSPACE,KEY_L,KEY_DELETE,KEY_O,KEY_EQUAL,0}, + {0,0,0,KEY_RIGHT,0,KEY_ENTER,KEY_SLASH,KEY_PERIOD,KEY_QUOTE,KEY_SEMICOLON,KEY_LEFT_BRACE,KEY_P,0} + +}; +// Load the numlock key matrix with key names at the correct row-column location. +// This matrix is the same as the normal matrix except for the number pad keys +// A zero indicates no numlock key at that location. +int numlock[rows_max][cols_max] = { + {0,0,0,0,0,KEY_F1,KEY_F2,KEY_F3,KEY_F4,KEY_F5,0,KEY_F9,0}, + {0,0,0,0,KEY_SPACE,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,KEY_ESC,KEY_1,0,KEY_F6,KEY_F7,KEY_F8,KEY_F10,0}, + {0,0,0,0,0,KEY_TAB,KEY_Q,KEY_W,KEY_2,KEY_3,0,KEY_6,0}, + {0,0,0,0,0,KEY_CAPS_LOCK,KEY_A,KEY_S,KEY_E,KEY_4,KEY_5,KEYPAD_7,0}, + {0,0,0,KEY_LEFT,0,0,0,KEY_Z,KEY_F,KEY_D,KEYPAD_8,KEYPAD_9,0}, + {0,0,0,KEY_DOWN,0,0,KEY_X,KEY_C,KEY_G,KEY_R,KEY_T,KEYPAD_ASTERIX,0}, + {0,0,0,KEY_NUM_LOCK,0,KEY_SCROLL_LOCK,KEY_V,KEY_B,KEY_H,KEY_Y,KEYPAD_4,KEY_MINUS,0}, + {0,0,0,KEY_TILDE,0,KEY_UP,KEY_N,KEY_M,KEYPAD_1,KEYPAD_2,KEYPAD_5,KEY_INSERT,0}, + {0,0,0,KEY_BACKSLASH,0,KEY_RIGHT_BRACE,KEYPAD_0,KEY_BACKSPACE,KEYPAD_3,KEY_DELETE,KEYPAD_6,KEY_EQUAL,0}, + {0,0,0,KEY_RIGHT,0,KEY_ENTER,KEYPAD_SLASH,KEYPAD_PERIOD,KEY_QUOTE,KEYPAD_PLUS,KEY_LEFT_BRACE,KEYPAD_MINUS,0} + +}; +// Load the modifier key matrix with key names at the correct row-column location. +// A zero indicates no modifier key at that location. +int modifier[rows_max][cols_max] = { + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {MODIFIERKEY_LEFT_SHIFT,MODIFIERKEY_FN,MODIFIERKEY_RIGHT_SHIFT,0,0,0,0,0,0,0,0,0,MODIFIERKEY_LEFT_ALT}, + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,MODIFIERKEY_LEFT_CTRL,0,0,0,0,0,0,0}, + {0,0,0,0,0,MODIFIERKEY_RIGHT_ALT,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0} + +}; +// Load the media key matrix with Fn key names at the correct row-column location. +// A zero indicates no media key at that location. +int media[rows_max][cols_max] = { + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,KEY_HOME,0,0,0,0,0,0,0,0,0}, + {0,0,0,KEY_PAGE_DOWN,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,KEY_PAUSE,0,0,0,0,0,0,0}, + {0,0,0,0,0,KEY_PAGE_UP,0,0,0,0,0,KEY_F11,0}, + {0,0,0,0,0,0,0,0,0,KEY_F12,0,0,0}, + {0,0,0,KEY_END,0,0,0,0,0,0,0,0,0} + +}; +// Initialize the old_key matrix with one's. +// 1 = key not pressed, 0 = key is pressed +boolean old_key[rows_max][cols_max] = { + {1,1,1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1,1,1} + +}; +// +// Define the Teensy LC I/O numbers (translated from the FPC pin #) +// Row FPC pin # 04,06,08,10,12,14,16,18,20,22,24 +// Teensy I/O # 01,02,03,04,05,06,07,08,09,10,11 +int Row_IO[rows_max] = {1,2,3,4,5,6,7,8,9,10,11}; // Teensy LC I/O numbers for rows +// +// Column FPC pin # 01,03,05,07,09,11,13,15,17,19,21,23,26 +// Teensy I/O # 23,22,24,21,25,20,19,18,17,16,15,14,12 +int Col_IO[cols_max] = {23,22,24,21,25,20,19,18,17,16,15,14,12}; // Teensy LC I/O numbers for columns + +// Declare variables that will be used by functions +boolean slots_full = LOW; // Goes high when slots 1 thru 6 contain normal keys +// slot 1 thru slot 6 hold the normal key values to be sent over USB. +int slot1 = 0; //value of 0 means the slot is empty and can be used. +int slot2 = 0; +int slot3 = 0; +int slot4 = 0; +int slot5 = 0; +int slot6 = 0; +// +int mod_shift_l = 0; // These variables are sent over USB as modifier keys. +int mod_shift_r = 0; // Each is either set to 0 or MODIFIER_ ... +int mod_ctrl_l = 0; +int mod_ctrl_r = 0; +int mod_alt_l = 0; +int mod_alt_r = 0; +int mod_gui = 0; +// +// Function to load the key name into the first available slot +void load_slot(int key) { + if (!slot1) { + slot1 = key; + } + else if (!slot2) { + slot2 = key; + } + else if (!slot3) { + slot3 = key; + } + else if (!slot4) { + slot4 = key; + } + else if (!slot5) { + slot5 = key; + } + else if (!slot6) { + slot6 = key; + } + if (!slot1 || !slot2 || !slot3 || !slot4 || !slot5 || !slot6) { + slots_full = LOW; // slots are not full + } + else { + slots_full = HIGH; // slots are full + } +} +// +// Function to clear the slot that contains the key name +void clear_slot(int key) { + if (slot1 == key) { + slot1 = 0; + } + else if (slot2 == key) { + slot2 = 0; + } + else if (slot3 == key) { + slot3 = 0; + } + else if (slot4 == key) { + slot4 = 0; + } + else if (slot5 == key) { + slot5 = 0; + } + else if (slot6 == key) { + slot6 = 0; + } + if (!slot1 || !slot2 || !slot3 || !slot4 || !slot5 || !slot6) { + slots_full = LOW; // slots are not full + } + else { + slots_full = HIGH; // slots are full + } +} +// +// Function to load the modifier key name into the appropriate mod variable +void load_mod(int m_key) { + if (m_key == MODIFIERKEY_LEFT_SHIFT) { + mod_shift_l = m_key; + } + else if (m_key == MODIFIERKEY_RIGHT_SHIFT) { + mod_shift_r = m_key; + } + else if (m_key == MODIFIERKEY_LEFT_CTRL) { + mod_ctrl_l = m_key; + } + else if (m_key == MODIFIERKEY_RIGHT_CTRL) { + mod_ctrl_r = m_key; + } + else if (m_key == MODIFIERKEY_LEFT_ALT) { + mod_alt_l = m_key; + } + else if (m_key == MODIFIERKEY_RIGHT_ALT) { + mod_alt_r = m_key; + } + else if (m_key == MODIFIERKEY_GUI) { + mod_gui = m_key; + } +} +// +// Function to load 0 into the appropriate mod variable +void clear_mod(int m_key) { + if (m_key == MODIFIERKEY_LEFT_SHIFT) { + mod_shift_l = 0; + } + else if (m_key == MODIFIERKEY_RIGHT_SHIFT) { + mod_shift_r = 0; + } + else if (m_key == MODIFIERKEY_LEFT_CTRL) { + mod_ctrl_l = 0; + } + else if (m_key == MODIFIERKEY_RIGHT_CTRL) { + mod_ctrl_r = 0; + } + else if (m_key == MODIFIERKEY_LEFT_ALT) { + mod_alt_l = 0; + } + else if (m_key == MODIFIERKEY_RIGHT_ALT) { + mod_alt_r = 0; + } + else if (m_key == MODIFIERKEY_GUI) { + mod_gui = 0; + } +} +// +// Function to send the modifier keys over usb +void send_mod() { + Keyboard.set_modifier(mod_shift_l | mod_shift_r | mod_ctrl_l | mod_ctrl_r | mod_alt_l | mod_alt_r | mod_gui); + Keyboard.send_now(); +} +// +// Function to send the normal keys in the 6 slots over usb +void send_normals() { + Keyboard.set_key1(slot1); + Keyboard.set_key2(slot2); + Keyboard.set_key3(slot3); + Keyboard.set_key4(slot4); + Keyboard.set_key5(slot5); + Keyboard.set_key6(slot6); + Keyboard.send_now(); +} +// +// Function to set a pin to high impedance (acts like open drain output) +void go_z(int pin) +{ + pinMode(pin, INPUT); + digitalWrite(pin, HIGH); +} +// +// Function to set a pin as an input with a pullup +void go_pu(int pin) +{ + pinMode(pin, INPUT_PULLUP); + digitalWrite(pin, HIGH); +} +// +// Function to send a pin to a logic low +void go_0(int pin) +{ + pinMode(pin, OUTPUT); + digitalWrite(pin, LOW); +} +// +// Function to send a pin to a logic high +void go_1(int pin) +{ + pinMode(pin, OUTPUT); + digitalWrite(pin, HIGH); +} +// +//----------------------------------Setup------------------------------------------- +void setup() { + for (int a = 0; a < cols_max; a++) { // loop thru all column pins + go_pu(Col_IO[a]); // set each column pin as an input with a pullup + } +// + for (int b = 0; b < rows_max; b++) { // loop thru all row pins + go_z(Row_IO[b]); // set each row pin as a floating output + } +} +// +boolean Fn_pressed = HIGH; // Initialize Fn key to HIGH = "not pressed" +extern volatile uint8_t keyboard_leds; // 8 bits sent from Pi to Teensy that give keyboard LED status. Caps lock is bit D1. +// +//---------------------------------Main Loop--------------------------------------------- +// +void loop() { +// Scan keyboard matrix with an outer loop that drives each row low and an inner loop that reads every column (with pull ups). +// The routine looks at each key's present state (by reading the column input pin) and also the previous state from the last scan +// that was 30msec ago. The status of a key that was just pressed or just released is sent over USB and the state is saved in the old_key matrix. +// The keyboard keys will read as logic low if they are pressed (negative logic). +// The old_key matrix also uses negative logic (low=pressed). +// + for (int x = 0; x < rows_max; x++) { // loop thru the rows + go_0(Row_IO[x]); // Activate Row (send it low) + delayMicroseconds(10); // give the row time to go low and settle out + for (int y = 0; y < cols_max; y++) { // loop thru the columns +// **********Modifier keys including the Fn special case + if (modifier[x][y] != 0) { // check if modifier key exists + if (!digitalRead(Col_IO[y]) && (old_key[x][y])) { // Read column to see if key is low (pressed) and was previously not pressed + if (modifier[x][y] != MODIFIERKEY_FN) { // Exclude Fn modifier key + if (Fn_pressed) { // only send modifier keys if Fn key is not currently held down + load_mod(modifier[x][y]); // function reads which modifier key is pressed and loads it into the appropriate mod_... variable + send_mod(); // function sends the state of all modifier keys over usb including the one that just got pressed + old_key[x][y] = LOW; // Save state of key as "pressed" + } + else { // Fn key is already held down so check if right alt key is pressed and send print screen if yes + if (modifier[x][y] == MODIFIERKEY_RIGHT_ALT) { + Keyboard.press(KEY_PRINTSCREEN); + delay(5); + Keyboard.release(KEY_PRINTSCREEN); + delay(5); + } + } + } + else { + Fn_pressed = LOW; // Fn status variable is active low + old_key[x][y] = LOW; // old_key state is "pressed" (active low) + } + } + else if (digitalRead(Col_IO[y]) && (!old_key[x][y])) { //check if key is not pressed and was previously pressed + if (modifier[x][y] != MODIFIERKEY_FN) { // Exclude Fn modifier key + clear_mod(modifier[x][y]); // function reads which modifier key was released and loads 0 into the appropriate mod_... variable + send_mod(); // function sends all mod's over usb including the one that just released + old_key[x][y] = HIGH; // Save state of key as "not pressed" + } + else { + Fn_pressed = HIGH; // Fn is no longer active + old_key[x][y] = HIGH; // old_key state is "not pressed" + } + } + } +// ***********end of modifier section +// +// ***********Normal keys and media keys in this section + else if ((normal[x][y] != 0) || (media[x][y] != 0)) { // check if normal or media key exists at this location in the array + if (!digitalRead(Col_IO[y]) && (old_key[x][y]) && (!slots_full)) { // check if key pressed and not previously pressed and slots not full + old_key[x][y] = LOW; // Save state of key as "pressed" + if (Fn_pressed) { // Fn_pressed is active low so it is not pressed and normal key needs to be sent + if (keyboard_leds & 1) { // test if Num Lock is turned on + load_slot(numlock[x][y]); //update first available slot with key name from numlock matrix + send_normals(); // send all slots over USB including the key that just got pressed + } + else { + load_slot(normal[x][y]); //update first available slot with key name from normal matrix + send_normals(); // send all slots over USB including the key that just got pressed + } + } + else if (media[x][y] != 0) { // Fn is pressed so send media if a key exists in the matrix + Keyboard.press(media[x][y]); // media key is sent using keyboard press function per PJRC + delay(5); // delay 5 milliseconds before releasing to make sure it gets sent over USB + Keyboard.release(media[x][y]); // send media key release + } + else if (normal[x][y] == KEY_Z) { // Fn is pressed but no media key so check if KEY_Z is pressed +// if using this keyboard on a Raspberry Pi, comment out the following Alt code section and uncomment the unicode section +// *******Windows PC Alt Code sequence to give a backslash is Alt 92******************************* + Keyboard.press(MODIFIERKEY_LEFT_ALT); // Push and hold Left Alt + delay(5); + Keyboard.press(KEYPAD_9); // Push 9 + delay(5); + Keyboard.release(KEYPAD_9); // Release 9 + delay(5); + Keyboard.press(KEYPAD_2); // Push 2 + delay(5); + Keyboard.release(KEYPAD_2); // Release 2 + delay(5); + Keyboard.release(MODIFIERKEY_LEFT_ALT); // Release Left Alt + delay(5); +// *******Raspberry Pi Unicode sequence to give a backslash is Control+Shift+u 5c Enter***************************** +/* Keyboard.press(MODIFIERKEY_LEFT_CTRL); // Push and hold Left Control + delay(5); + Keyboard.press(MODIFIERKEY_LEFT_SHIFT); // Push and hold Left Shift + delay(5); + Keyboard.press(KEY_U); // Push u + delay(5); + Keyboard.release(KEY_U); // Release u + delay(5); + Keyboard.release(MODIFIERKEY_LEFT_CTRL); // Release Left Control + delay(5); + Keyboard.release(MODIFIERKEY_LEFT_SHIFT); // Release Left Shift + delay(5); + Keyboard.press(KEY_5); // Push 5 + delay(5); + Keyboard.release(KEY_5); // Release 5 + delay(5); + Keyboard.press(KEY_C); // Push c + delay(5); + Keyboard.release(KEY_C); // Release c + delay(5); + Keyboard.press(KEY_ENTER); // Push Enter + delay(5); + Keyboard.release(KEY_ENTER); // Release Enter + delay(5); +*/ + } + else if (normal[x][y] == KEY_X) { // Fn is pressed but no media key so check if KEY_X is pressed +// if using this keyboard on a Raspberry Pi, comment out the following Alt code section and uncomment the unicode section +// *******Windows PC Alt Code sequence to give a | is Alt 124******************************* + Keyboard.press(MODIFIERKEY_LEFT_ALT); // Push and hold Left Alt + delay(5); + Keyboard.press(KEYPAD_1); // Push 1 + delay(5); + Keyboard.release(KEYPAD_1); // Release 1 + delay(5); + Keyboard.press(KEYPAD_2); // Push 2 + delay(5); + Keyboard.release(KEYPAD_2); // Release 2 + delay(5); + Keyboard.press(KEYPAD_4); // Push 4 + delay(5); + Keyboard.release(KEYPAD_4); // Release 4 + delay(5); + Keyboard.release(MODIFIERKEY_LEFT_ALT); // Release Left Alt + delay(5); +// *******Raspberry Pi Unicode sequence to give a | is Control+Shift+u 7c Enter***************************** +/* Keyboard.press(MODIFIERKEY_LEFT_CTRL); // Push and hold Left Control + delay(5); + Keyboard.press(MODIFIERKEY_LEFT_SHIFT); // Push and hold Left Shift + delay(5); + Keyboard.press(KEY_U); // Push u + delay(5); + Keyboard.release(KEY_U); // Release u + delay(5); + Keyboard.release(MODIFIERKEY_LEFT_CTRL); // Release Left Control + delay(5); + Keyboard.release(MODIFIERKEY_LEFT_SHIFT); // Release Left Shift + delay(5); + Keyboard.press(KEY_7); // Push 7 + delay(5); + Keyboard.release(KEY_7); // Release 7 + delay(5); + Keyboard.press(KEY_C); // Push c + delay(5); + Keyboard.release(KEY_C); // Release c + delay(5); + Keyboard.press(KEY_ENTER); // Push Enter + delay(5); + Keyboard.release(KEY_ENTER); // Release Enter + delay(5); +*/ + } + } + else if (digitalRead(Col_IO[y]) && (!old_key[x][y])) { //check if key is not pressed, but was previously pressed + old_key[x][y] = HIGH; // Save state of key as "not pressed" + if (Fn_pressed) { // Fn is not pressed + if (keyboard_leds & 1) { // test if Num Lock is turned on + clear_slot(numlock[x][y]); //clear slot with key name from numlock matrix + send_normals(); // send all slots over USB including the key that just got released + } + else { + clear_slot(normal[x][y]); //clear slot with key name from normal matrix + send_normals(); // send all slots over USB including the key that just got released + } + } + } + } +// **************end of normal and media key section +// + } + go_z(Row_IO[x]); // De-activate Row (send it to hi-z) + } +// +// **********keyboard scan complete +// +// Turn on the LED on the Teensy for Caps Lock based on bit 1 in the keyboard_leds variable controlled by the USB host computer +// + if (keyboard_leds & 1<<1) { // mask off all bits but D1 and test if set + go_1(CAPS_LED); // turn on the LED + } + else { + go_0(CAPS_LED); // turn off the LED + } +// +// Turn on the LED on the Teensy for Num Lock based on bit 0 in the keyboard_leds variable controlled by the USB host computer +// + if (keyboard_leds & 1) { // mask off all bits but D0 and test if set + go_1(NUM_LED); // turn on the Num Lock LED + } + else { + go_0(NUM_LED); // turn off the Num Lock LED + } +// + delay(25); // The overall keyboard scanning rate is about 30ms +} diff --git a/GRID 1550/1550_Pi_Version.ino b/GRID 1550/1550_Pi_Version.ino new file mode 100644 index 0000000..154736b --- /dev/null +++ b/GRID 1550/1550_Pi_Version.ino @@ -0,0 +1,501 @@ +/* Copyright 2019 Frank Adams + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +// This software implements a GRID 1550 Laptop Keyboard Controller using a Teensy LC +// for use with a Raspberry Pi or similar Linux computer. +// +// Revision History +// Initial Release Sept 15, 2019 +// Revision Dec 8, 2019 - Increased delays from 5ms to 25ms for the Alt 92 key codes to give backslash +// Revision Dec 11, 2019 - Added Unicode method to give backslash and pipe since Alt codes don't work for Linux +// +#define MODIFIERKEY_FN 0x8f // give Fn key a fake HID code +#define CAPS_LED 13 // Teensy LED on IO#13 shows Caps-Lock +#define NUM_LED 0 // Teensy IO#0 shows Num-Lock (wire to anode of new LED) +// +const byte rows_max = 11; // sets the number of rows in the matrix +const byte cols_max = 13; // sets the number of columns in the matrix +// +// Load the normal key matrix with the Teensyduino key names +// described at www.pjrc.com/teensy/td_keyboard.html +// A zero indicates no normal key at that location. +int normal[rows_max][cols_max] = { + {0,0,0,0,0,KEY_F1,KEY_F2,KEY_F3,KEY_F4,KEY_F5,0,KEY_F9,0}, + {0,0,0,0,KEY_SPACE,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,KEY_ESC,KEY_1,0,KEY_F6,KEY_F7,KEY_F8,KEY_F10,0}, + {0,0,0,0,0,KEY_TAB,KEY_Q,KEY_W,KEY_2,KEY_3,0,KEY_6,0}, + {0,0,0,0,0,KEY_CAPS_LOCK,KEY_A,KEY_S,KEY_E,KEY_4,KEY_5,KEY_7,0}, + {0,0,0,KEY_LEFT,0,0,0,KEY_Z,KEY_F,KEY_D,KEY_8,KEY_9,0}, + {0,0,0,KEY_DOWN,0,0,KEY_X,KEY_C,KEY_G,KEY_R,KEY_T,KEY_0,0}, + {0,0,0,KEY_NUM_LOCK,0,KEY_SCROLL_LOCK,KEY_V,KEY_B,KEY_H,KEY_Y,KEY_U,KEY_MINUS,0}, + {0,0,0,KEY_TILDE,0,KEY_UP,KEY_N,KEY_M,KEY_J,KEY_K,KEY_I,KEY_INSERT,0}, + {0,0,0,KEY_BACKSLASH,0,KEY_RIGHT_BRACE,KEY_COMMA,KEY_BACKSPACE,KEY_L,KEY_DELETE,KEY_O,KEY_EQUAL,0}, + {0,0,0,KEY_RIGHT,0,KEY_ENTER,KEY_SLASH,KEY_PERIOD,KEY_QUOTE,KEY_SEMICOLON,KEY_LEFT_BRACE,KEY_P,0} + +}; +// Load the numlock key matrix with key names at the correct row-column location. +// This matrix is the same as the normal matrix except for the number pad keys +// A zero indicates no numlock key at that location. +int numlock[rows_max][cols_max] = { + {0,0,0,0,0,KEY_F1,KEY_F2,KEY_F3,KEY_F4,KEY_F5,0,KEY_F9,0}, + {0,0,0,0,KEY_SPACE,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,KEY_ESC,KEY_1,0,KEY_F6,KEY_F7,KEY_F8,KEY_F10,0}, + {0,0,0,0,0,KEY_TAB,KEY_Q,KEY_W,KEY_2,KEY_3,0,KEY_6,0}, + {0,0,0,0,0,KEY_CAPS_LOCK,KEY_A,KEY_S,KEY_E,KEY_4,KEY_5,KEYPAD_7,0}, + {0,0,0,KEY_LEFT,0,0,0,KEY_Z,KEY_F,KEY_D,KEYPAD_8,KEYPAD_9,0}, + {0,0,0,KEY_DOWN,0,0,KEY_X,KEY_C,KEY_G,KEY_R,KEY_T,KEYPAD_ASTERIX,0}, + {0,0,0,KEY_NUM_LOCK,0,KEY_SCROLL_LOCK,KEY_V,KEY_B,KEY_H,KEY_Y,KEYPAD_4,KEY_MINUS,0}, + {0,0,0,KEY_TILDE,0,KEY_UP,KEY_N,KEY_M,KEYPAD_1,KEYPAD_2,KEYPAD_5,KEY_INSERT,0}, + {0,0,0,KEY_BACKSLASH,0,KEY_RIGHT_BRACE,KEYPAD_0,KEY_BACKSPACE,KEYPAD_3,KEY_DELETE,KEYPAD_6,KEY_EQUAL,0}, + {0,0,0,KEY_RIGHT,0,KEY_ENTER,KEYPAD_SLASH,KEYPAD_PERIOD,KEY_QUOTE,KEYPAD_PLUS,KEY_LEFT_BRACE,KEYPAD_MINUS,0} + +}; +// Load the modifier key matrix with key names at the correct row-column location. +// A zero indicates no modifier key at that location. +int modifier[rows_max][cols_max] = { + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {MODIFIERKEY_LEFT_SHIFT,MODIFIERKEY_FN,MODIFIERKEY_RIGHT_SHIFT,0,0,0,0,0,0,0,0,0,MODIFIERKEY_LEFT_ALT}, + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,MODIFIERKEY_LEFT_CTRL,0,0,0,0,0,0,0}, + {0,0,0,0,0,MODIFIERKEY_RIGHT_ALT,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0} + +}; +// Load the media key matrix with Fn key names at the correct row-column location. +// A zero indicates no media key at that location. +int media[rows_max][cols_max] = { + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,KEY_HOME,0,0,0,0,0,0,0,0,0}, + {0,0,0,KEY_PAGE_DOWN,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,KEY_PAUSE,0,0,0,0,0,0,0}, + {0,0,0,0,0,KEY_PAGE_UP,0,0,0,0,0,KEY_F11,0}, + {0,0,0,0,0,0,0,0,0,KEY_F12,0,0,0}, + {0,0,0,KEY_END,0,0,0,0,0,0,0,0,0} + +}; +// Initialize the old_key matrix with one's. +// 1 = key not pressed, 0 = key is pressed +boolean old_key[rows_max][cols_max] = { + {1,1,1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1,1,1} + +}; +// +// Define the Teensy LC I/O numbers (translated from the FPC pin #) +// Row FPC pin # 04,06,08,10,12,14,16,18,20,22,24 +// Teensy I/O # 01,02,03,04,05,06,07,08,09,10,11 +int Row_IO[rows_max] = {1,2,3,4,5,6,7,8,9,10,11}; // Teensy LC I/O numbers for rows +// +// Column FPC pin # 01,03,05,07,09,11,13,15,17,19,21,23,26 +// Teensy I/O # 23,22,24,21,25,20,19,18,17,16,15,14,12 +int Col_IO[cols_max] = {23,22,24,21,25,20,19,18,17,16,15,14,12}; // Teensy LC I/O numbers for columns + +// Declare variables that will be used by functions +boolean slots_full = LOW; // Goes high when slots 1 thru 6 contain normal keys +// slot 1 thru slot 6 hold the normal key values to be sent over USB. +int slot1 = 0; //value of 0 means the slot is empty and can be used. +int slot2 = 0; +int slot3 = 0; +int slot4 = 0; +int slot5 = 0; +int slot6 = 0; +// +int mod_shift_l = 0; // These variables are sent over USB as modifier keys. +int mod_shift_r = 0; // Each is either set to 0 or MODIFIER_ ... +int mod_ctrl_l = 0; +int mod_ctrl_r = 0; +int mod_alt_l = 0; +int mod_alt_r = 0; +int mod_gui = 0; +// +// Function to load the key name into the first available slot +void load_slot(int key) { + if (!slot1) { + slot1 = key; + } + else if (!slot2) { + slot2 = key; + } + else if (!slot3) { + slot3 = key; + } + else if (!slot4) { + slot4 = key; + } + else if (!slot5) { + slot5 = key; + } + else if (!slot6) { + slot6 = key; + } + if (!slot1 || !slot2 || !slot3 || !slot4 || !slot5 || !slot6) { + slots_full = LOW; // slots are not full + } + else { + slots_full = HIGH; // slots are full + } +} +// +// Function to clear the slot that contains the key name +void clear_slot(int key) { + if (slot1 == key) { + slot1 = 0; + } + else if (slot2 == key) { + slot2 = 0; + } + else if (slot3 == key) { + slot3 = 0; + } + else if (slot4 == key) { + slot4 = 0; + } + else if (slot5 == key) { + slot5 = 0; + } + else if (slot6 == key) { + slot6 = 0; + } + if (!slot1 || !slot2 || !slot3 || !slot4 || !slot5 || !slot6) { + slots_full = LOW; // slots are not full + } + else { + slots_full = HIGH; // slots are full + } +} +// +// Function to load the modifier key name into the appropriate mod variable +void load_mod(int m_key) { + if (m_key == MODIFIERKEY_LEFT_SHIFT) { + mod_shift_l = m_key; + } + else if (m_key == MODIFIERKEY_RIGHT_SHIFT) { + mod_shift_r = m_key; + } + else if (m_key == MODIFIERKEY_LEFT_CTRL) { + mod_ctrl_l = m_key; + } + else if (m_key == MODIFIERKEY_RIGHT_CTRL) { + mod_ctrl_r = m_key; + } + else if (m_key == MODIFIERKEY_LEFT_ALT) { + mod_alt_l = m_key; + } + else if (m_key == MODIFIERKEY_RIGHT_ALT) { + mod_alt_r = m_key; + } + else if (m_key == MODIFIERKEY_GUI) { + mod_gui = m_key; + } +} +// +// Function to load 0 into the appropriate mod variable +void clear_mod(int m_key) { + if (m_key == MODIFIERKEY_LEFT_SHIFT) { + mod_shift_l = 0; + } + else if (m_key == MODIFIERKEY_RIGHT_SHIFT) { + mod_shift_r = 0; + } + else if (m_key == MODIFIERKEY_LEFT_CTRL) { + mod_ctrl_l = 0; + } + else if (m_key == MODIFIERKEY_RIGHT_CTRL) { + mod_ctrl_r = 0; + } + else if (m_key == MODIFIERKEY_LEFT_ALT) { + mod_alt_l = 0; + } + else if (m_key == MODIFIERKEY_RIGHT_ALT) { + mod_alt_r = 0; + } + else if (m_key == MODIFIERKEY_GUI) { + mod_gui = 0; + } +} +// +// Function to send the modifier keys over usb +void send_mod() { + Keyboard.set_modifier(mod_shift_l | mod_shift_r | mod_ctrl_l | mod_ctrl_r | mod_alt_l | mod_alt_r | mod_gui); + Keyboard.send_now(); +} +// +// Function to send the normal keys in the 6 slots over usb +void send_normals() { + Keyboard.set_key1(slot1); + Keyboard.set_key2(slot2); + Keyboard.set_key3(slot3); + Keyboard.set_key4(slot4); + Keyboard.set_key5(slot5); + Keyboard.set_key6(slot6); + Keyboard.send_now(); +} +// +// Function to set a pin to high impedance (acts like open drain output) +void go_z(int pin) +{ + pinMode(pin, INPUT); + digitalWrite(pin, HIGH); +} +// +// Function to set a pin as an input with a pullup +void go_pu(int pin) +{ + pinMode(pin, INPUT_PULLUP); + digitalWrite(pin, HIGH); +} +// +// Function to send a pin to a logic low +void go_0(int pin) +{ + pinMode(pin, OUTPUT); + digitalWrite(pin, LOW); +} +// +// Function to send a pin to a logic high +void go_1(int pin) +{ + pinMode(pin, OUTPUT); + digitalWrite(pin, HIGH); +} +// +//----------------------------------Setup------------------------------------------- +void setup() { + for (int a = 0; a < cols_max; a++) { // loop thru all column pins + go_pu(Col_IO[a]); // set each column pin as an input with a pullup + } +// + for (int b = 0; b < rows_max; b++) { // loop thru all row pins + go_z(Row_IO[b]); // set each row pin as a floating output + } +} +// +boolean Fn_pressed = HIGH; // Initialize Fn key to HIGH = "not pressed" +extern volatile uint8_t keyboard_leds; // 8 bits sent from Pi to Teensy that give keyboard LED status. Caps lock is bit D1. +// +//---------------------------------Main Loop--------------------------------------------- +// +void loop() { +// Scan keyboard matrix with an outer loop that drives each row low and an inner loop that reads every column (with pull ups). +// The routine looks at each key's present state (by reading the column input pin) and also the previous state from the last scan +// that was 30msec ago. The status of a key that was just pressed or just released is sent over USB and the state is saved in the old_key matrix. +// The keyboard keys will read as logic low if they are pressed (negative logic). +// The old_key matrix also uses negative logic (low=pressed). +// + for (int x = 0; x < rows_max; x++) { // loop thru the rows + go_0(Row_IO[x]); // Activate Row (send it low) + delayMicroseconds(10); // give the row time to go low and settle out + for (int y = 0; y < cols_max; y++) { // loop thru the columns +// **********Modifier keys including the Fn special case + if (modifier[x][y] != 0) { // check if modifier key exists + if (!digitalRead(Col_IO[y]) && (old_key[x][y])) { // Read column to see if key is low (pressed) and was previously not pressed + if (modifier[x][y] != MODIFIERKEY_FN) { // Exclude Fn modifier key + if (Fn_pressed) { // only send modifier keys if Fn key is not currently held down + load_mod(modifier[x][y]); // function reads which modifier key is pressed and loads it into the appropriate mod_... variable + send_mod(); // function sends the state of all modifier keys over usb including the one that just got pressed + old_key[x][y] = LOW; // Save state of key as "pressed" + } + else { // Fn key is already held down so check if right alt key is pressed and send print screen if yes + if (modifier[x][y] == MODIFIERKEY_RIGHT_ALT) { + Keyboard.press(KEY_PRINTSCREEN); + delay(5); + Keyboard.release(KEY_PRINTSCREEN); + delay(5); + } + } + } + else { + Fn_pressed = LOW; // Fn status variable is active low + old_key[x][y] = LOW; // old_key state is "pressed" (active low) + } + } + else if (digitalRead(Col_IO[y]) && (!old_key[x][y])) { //check if key is not pressed and was previously pressed + if (modifier[x][y] != MODIFIERKEY_FN) { // Exclude Fn modifier key + clear_mod(modifier[x][y]); // function reads which modifier key was released and loads 0 into the appropriate mod_... variable + send_mod(); // function sends all mod's over usb including the one that just released + old_key[x][y] = HIGH; // Save state of key as "not pressed" + } + else { + Fn_pressed = HIGH; // Fn is no longer active + old_key[x][y] = HIGH; // old_key state is "not pressed" + } + } + } +// ***********end of modifier section +// +// ***********Normal keys and media keys in this section + else if ((normal[x][y] != 0) || (media[x][y] != 0)) { // check if normal or media key exists at this location in the array + if (!digitalRead(Col_IO[y]) && (old_key[x][y]) && (!slots_full)) { // check if key pressed and not previously pressed and slots not full + old_key[x][y] = LOW; // Save state of key as "pressed" + if (Fn_pressed) { // Fn_pressed is active low so it is not pressed and normal key needs to be sent + if (keyboard_leds & 1) { // test if Num Lock is turned on + load_slot(numlock[x][y]); //update first available slot with key name from numlock matrix + send_normals(); // send all slots over USB including the key that just got pressed + } + else { + load_slot(normal[x][y]); //update first available slot with key name from normal matrix + send_normals(); // send all slots over USB including the key that just got pressed + } + } + else if (media[x][y] != 0) { // Fn is pressed so send media if a key exists in the matrix + Keyboard.press(media[x][y]); // media key is sent using keyboard press function per PJRC + delay(5); // delay 5 milliseconds before releasing to make sure it gets sent over USB + Keyboard.release(media[x][y]); // send media key release + } + else if (normal[x][y] == KEY_Z) { // Fn is pressed but no media key so check if KEY_Z is pressed +// if using this keyboard on a Windows PC, uncomment the following Alt code section and comment out the unicode section +// *******Windows PC Alt Code sequence to give a backslash is Alt 92******************************* +/* Keyboard.press(MODIFIERKEY_LEFT_ALT); // Push and hold Left Alt + delay(5); + Keyboard.press(KEYPAD_9); // Push 9 + delay(5); + Keyboard.release(KEYPAD_9); // Release 9 + delay(5); + Keyboard.press(KEYPAD_2); // Push 2 + delay(5); + Keyboard.release(KEYPAD_2); // Release 2 + delay(5); + Keyboard.release(MODIFIERKEY_LEFT_ALT); Release Left Alt + delay(5); +*/ +// *******Raspberry Pi Unicode sequence to give a backslash is Control+Shift+u 5c Enter***************************** + Keyboard.press(MODIFIERKEY_LEFT_CTRL); // Push and hold Left Control + delay(5); + Keyboard.press(MODIFIERKEY_LEFT_SHIFT); // Push and hold Left Shift + delay(5); + Keyboard.press(KEY_U); // Push u + delay(5); + Keyboard.release(KEY_U); // Release u + delay(5); + Keyboard.release(MODIFIERKEY_LEFT_CTRL); // Release Left Control + delay(5); + Keyboard.release(MODIFIERKEY_LEFT_SHIFT); // Release Left Shift + delay(5); + Keyboard.press(KEY_5); // Push 5 + delay(5); + Keyboard.release(KEY_5); // Release 5 + delay(5); + Keyboard.press(KEY_C); // Push c + delay(5); + Keyboard.release(KEY_C); // Release c + delay(5); + Keyboard.press(KEY_ENTER); // Push Enter + delay(5); + Keyboard.release(KEY_ENTER); // Release Enter + delay(5); + } + else if (normal[x][y] == KEY_X) { // Fn is pressed but no media key so check if KEY_X is pressed +// if using this keyboard on a Windows PC, uncomment the following Alt code section and comment out the unicode section +// *******Windows PC Alt Code sequence to give a | is Alt 124******************************* +/* Keyboard.press(MODIFIERKEY_LEFT_ALT); // Push and hold Left Alt + delay(5); + Keyboard.press(KEYPAD_1); // Push 1 + delay(5); + Keyboard.release(KEYPAD_1); // Release 1 + delay(5); + Keyboard.press(KEYPAD_2); // Push 2 + delay(5); + Keyboard.release(KEYPAD_2); // Release 2 + delay(5); + Keyboard.press(KEYPAD_4); // Push 4 + delay(5); + Keyboard.release(KEYPAD_4); // Release 4 + delay(5); + Keyboard.release(MODIFIERKEY_LEFT_ALT); Release Left Alt + delay(5); +*/ +// *******Raspberry Pi Unicode sequence to give a | is Control+Shift+u 7c Enter***************************** + Keyboard.press(MODIFIERKEY_LEFT_CTRL); // Push and hold Left Control + delay(5); + Keyboard.press(MODIFIERKEY_LEFT_SHIFT); // Push and hold Left Shift + delay(5); + Keyboard.press(KEY_U); // Push u + delay(5); + Keyboard.release(KEY_U); // Release u + delay(5); + Keyboard.release(MODIFIERKEY_LEFT_CTRL); // Release Left Control + delay(5); + Keyboard.release(MODIFIERKEY_LEFT_SHIFT); // Release Left Shift + delay(5); + Keyboard.press(KEY_7); // Push 7 + delay(5); + Keyboard.release(KEY_7); // Release 7 + delay(5); + Keyboard.press(KEY_C); // Push c + delay(5); + Keyboard.release(KEY_C); // Release c + delay(5); + Keyboard.press(KEY_ENTER); // Push Enter + delay(5); + Keyboard.release(KEY_ENTER); // Release Enter + delay(5); + } + } + else if (digitalRead(Col_IO[y]) && (!old_key[x][y])) { //check if key is not pressed, but was previously pressed + old_key[x][y] = HIGH; // Save state of key as "not pressed" + if (Fn_pressed) { // Fn is not pressed + if (keyboard_leds & 1) { // test if Num Lock is turned on + clear_slot(numlock[x][y]); //clear slot with key name from numlock matrix + send_normals(); // send all slots over USB including the key that just got released + } + else { + clear_slot(normal[x][y]); //clear slot with key name from normal matrix + send_normals(); // send all slots over USB including the key that just got released + } + } + } + } +// **************end of normal and media key section +// + } + go_z(Row_IO[x]); // De-activate Row (send it to hi-z) + } +// +// **********keyboard scan complete +// +// Turn on the LED on the Teensy for Caps Lock based on bit 1 in the keyboard_leds variable controlled by the USB host computer +// + if (keyboard_leds & 1<<1) { // mask off all bits but D1 and test if set + go_1(CAPS_LED); // turn on the LED + } + else { + go_0(CAPS_LED); // turn off the LED + } +// +// Turn on the LED on the Teensy for Num Lock based on bit 0 in the keyboard_leds variable controlled by the USB host computer +// + if (keyboard_leds & 1) { // mask off all bits but D0 and test if set + go_1(NUM_LED); // turn on the Num Lock LED + } + else { + go_0(NUM_LED); // turn off the Num Lock LED + } +// + delay(25); // The overall keyboard scanning rate is about 30ms +}