From b095347ac22e43b6ba93ba11f81fc4b5eaba48c9 Mon Sep 17 00:00:00 2001 From: MRNIU Date: Mon, 16 Mar 2020 15:09:10 +0800 Subject: [PATCH 01/25] Refer to HID to improve the code --- src/Keyboard.cpp | 361 ++++------- src/Keyboard.h | 60 +- src/KeyboardLayouts/ImprovedKeylayouts.h | 684 +++++++++++++++++++++ src/KeyboardLayouts/ImprovedKeylayoutsDE.h | 461 ++++++++++++++ src/KeyboardLayouts/ImprovedKeylayoutsUS.h | 626 +++++++++++++++++++ 5 files changed, 1897 insertions(+), 295 deletions(-) create mode 100644 src/KeyboardLayouts/ImprovedKeylayouts.h create mode 100644 src/KeyboardLayouts/ImprovedKeylayoutsDE.h create mode 100644 src/KeyboardLayouts/ImprovedKeylayoutsUS.h diff --git a/src/Keyboard.cpp b/src/Keyboard.cpp index 4a948f6..dfe5074 100644 --- a/src/Keyboard.cpp +++ b/src/Keyboard.cpp @@ -28,39 +28,47 @@ // Keyboard static const uint8_t _hidReportDescriptor[] PROGMEM = { - - // Keyboard - 0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 47 - 0x09, 0x06, // USAGE (Keyboard) - 0xa1, 0x01, // COLLECTION (Application) - 0x85, 0x02, // REPORT_ID (2) - 0x05, 0x07, // USAGE_PAGE (Keyboard) - - 0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl) - 0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI) - 0x15, 0x00, // LOGICAL_MINIMUM (0) - 0x25, 0x01, // LOGICAL_MAXIMUM (1) - 0x75, 0x01, // REPORT_SIZE (1) - - 0x95, 0x08, // REPORT_COUNT (8) - 0x81, 0x02, // INPUT (Data,Var,Abs) - 0x95, 0x01, // REPORT_COUNT (1) - 0x75, 0x08, // REPORT_SIZE (8) - 0x81, 0x03, // INPUT (Cnst,Var,Abs) - - 0x95, 0x06, // REPORT_COUNT (6) - 0x75, 0x08, // REPORT_SIZE (8) - 0x15, 0x00, // LOGICAL_MINIMUM (0) - 0x25, 0x73, // LOGICAL_MAXIMUM (115) - 0x05, 0x07, // USAGE_PAGE (Keyboard) - - 0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated)) - 0x29, 0x73, // USAGE_MAXIMUM (Keyboard Application) - 0x81, 0x00, // INPUT (Data,Ary,Abs) - 0xc0, // END_COLLECTION + // Keyboard + 0x05, 0x01, /* USAGE_PAGE (Generic Desktop) 47 */ + 0x09, 0x06, /* USAGE (Keyboard) */ + 0xa1, 0x01, /* COLLECTION (Application) */ + 0x85, HID_REPORTID_KEYBOARD, /* REPORT_ID TODO order important? */ + 0x05, 0x07, /* USAGE_PAGE (Keyboard) */ + + /* Keyboard Modifiers (shift, alt, ...) */ + 0x19, 0xe0, /* USAGE_MINIMUM (Keyboard LeftControl) */ + 0x29, 0xe7, /* USAGE_MAXIMUM (Keyboard Right GUI) */ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ + 0x75, 0x01, /* REPORT_SIZE (1) */ + 0x95, 0x08, /* REPORT_COUNT (8) */ + 0x81, 0x02, /* INPUT (Data,Var,Abs) */ + + /* Reserved byte, used for consumer reports, only works with linux */ + 0x05, 0x0C, /* Usage Page (Consumer) */ + 0x95, 0x01, /* REPORT_COUNT (1) */ + 0x75, 0x08, /* REPORT_SIZE (8) */ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x26, 0xFF, 0x00, /* LOGICAL_MAXIMUM (255) */ + 0x19, 0x00, /* USAGE_MINIMUM (0) */ + 0x29, 0xFF, /* USAGE_MAXIMUM (255) */ + 0x81, 0x00, /* INPUT (Data,Ary,Abs) */ + + /* 6 Keyboard keys */ + 0x05, 0x07, /* USAGE_PAGE (Keyboard) */ + 0x95, 0x06, /* REPORT_COUNT (6) */ + 0x75, 0x08, /* REPORT_SIZE (8) */ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x26, 0xE7, 0x00, /* LOGICAL_MAXIMUM (231) */ + 0x19, 0x00, /* USAGE_MINIMUM (Reserved (no event indicated)) */ + 0x29, 0xE7, /* USAGE_MAXIMUM (Keyboard Right GUI) */ + 0x81, 0x00, /* INPUT (Data,Ary,Abs) */ + + /* End */ + 0xc0 /* END_COLLECTION */ }; -Keyboard_::Keyboard_(void) +Keyboard_::Keyboard_(void) { static HIDSubDescriptor node(_hidReportDescriptor, sizeof(_hidReportDescriptor)); HID().AppendDescriptor(&node); @@ -79,233 +87,109 @@ void Keyboard_::sendReport(KeyReport* keys) HID().SendReport(2,keys,sizeof(KeyReport)); } -extern -const uint8_t _asciimap[128] PROGMEM; - -#define SHIFT 0x80 -const uint8_t _asciimap[128] = +size_t Keyboard_::set(KeyboardKeycode k, bool s) { - 0x00, // NUL - 0x00, // SOH - 0x00, // STX - 0x00, // ETX - 0x00, // EOT - 0x00, // ENQ - 0x00, // ACK - 0x00, // BEL - 0x2a, // BS Backspace - 0x2b, // TAB Tab - 0x28, // LF Enter - 0x00, // VT - 0x00, // FF - 0x00, // CR - 0x00, // SO - 0x00, // SI - 0x00, // DEL - 0x00, // DC1 - 0x00, // DC2 - 0x00, // DC3 - 0x00, // DC4 - 0x00, // NAK - 0x00, // SYN - 0x00, // ETB - 0x00, // CAN - 0x00, // EM - 0x00, // SUB - 0x00, // ESC - 0x00, // FS - 0x00, // GS - 0x00, // RS - 0x00, // US - - 0x2c, // ' ' - 0x1e|SHIFT, // ! - 0x34|SHIFT, // " - 0x20|SHIFT, // # - 0x21|SHIFT, // $ - 0x22|SHIFT, // % - 0x24|SHIFT, // & - 0x34, // ' - 0x26|SHIFT, // ( - 0x27|SHIFT, // ) - 0x25|SHIFT, // * - 0x2e|SHIFT, // + - 0x36, // , - 0x2d, // - - 0x37, // . - 0x38, // / - 0x27, // 0 - 0x1e, // 1 - 0x1f, // 2 - 0x20, // 3 - 0x21, // 4 - 0x22, // 5 - 0x23, // 6 - 0x24, // 7 - 0x25, // 8 - 0x26, // 9 - 0x33|SHIFT, // : - 0x33, // ; - 0x36|SHIFT, // < - 0x2e, // = - 0x37|SHIFT, // > - 0x38|SHIFT, // ? - 0x1f|SHIFT, // @ - 0x04|SHIFT, // A - 0x05|SHIFT, // B - 0x06|SHIFT, // C - 0x07|SHIFT, // D - 0x08|SHIFT, // E - 0x09|SHIFT, // F - 0x0a|SHIFT, // G - 0x0b|SHIFT, // H - 0x0c|SHIFT, // I - 0x0d|SHIFT, // J - 0x0e|SHIFT, // K - 0x0f|SHIFT, // L - 0x10|SHIFT, // M - 0x11|SHIFT, // N - 0x12|SHIFT, // O - 0x13|SHIFT, // P - 0x14|SHIFT, // Q - 0x15|SHIFT, // R - 0x16|SHIFT, // S - 0x17|SHIFT, // T - 0x18|SHIFT, // U - 0x19|SHIFT, // V - 0x1a|SHIFT, // W - 0x1b|SHIFT, // X - 0x1c|SHIFT, // Y - 0x1d|SHIFT, // Z - 0x2f, // [ - 0x31, // bslash - 0x30, // ] - 0x23|SHIFT, // ^ - 0x2d|SHIFT, // _ - 0x35, // ` - 0x04, // a - 0x05, // b - 0x06, // c - 0x07, // d - 0x08, // e - 0x09, // f - 0x0a, // g - 0x0b, // h - 0x0c, // i - 0x0d, // j - 0x0e, // k - 0x0f, // l - 0x10, // m - 0x11, // n - 0x12, // o - 0x13, // p - 0x14, // q - 0x15, // r - 0x16, // s - 0x17, // t - 0x18, // u - 0x19, // v - 0x1a, // w - 0x1b, // x - 0x1c, // y - 0x1d, // z - 0x2f|SHIFT, // { - 0x31|SHIFT, // | - 0x30|SHIFT, // } - 0x35|SHIFT, // ~ - 0 // DEL -}; + // It's a modifier key + if(k >= KEY_LEFT_CTRL && k <= KEY_RIGHT_GUI) + { + // Convert key into bitfield (0 - 7) + k = KeyboardKeycode(uint8_t(k) - uint8_t(KEY_LEFT_CTRL)); + if(s){ + _keyReport.modifiers |= (1 << k); + } + else{ + _keyReport.modifiers &= ~(1 << k); + } + return 1; + } + // Its a normal key + else{ + // get size of keycodes during compile time + const uint8_t keycodesSize = sizeof(_keyReport.keycodes); + + // if we are adding an element to keycodes + if (s){ + // iterate through the keycodes + for (uint8_t i = 0; i < keycodesSize; i++) + { + auto key = _keyReport.keycodes[i]; + // if target key is found + if (key == uint8_t(k)) { + // do nothing and exit + return 1; + } + } + // iterate through the keycodes again, this only happens if no existing + // keycodes matches k + for (uint8_t i = 0; i < keycodesSize; i++) + { + auto key = _keyReport.keycodes[i]; + // if first instance of empty slot is found + if (key == KEY_RESERVED) { + // change empty slot to k and exit + _keyReport.keycodes[i] = k; + return 1; + } + } + } else { // we are removing k from keycodes + // iterate through the keycodes + for (uint8_t i = 0; i < keycodesSize; i++) + { + auto key = _keyReport.keycodes[i]; + // if target key is found + if (key == k) { + // remove target and exit + _keyReport.keycodes[i] = KEY_RESERVED; + return 1; + } + } + } + } + // No empty/pressed key was found + return 0; +} uint8_t USBPutChar(uint8_t c); // press() adds the specified key (printing, non-printing, or modifier) -// to the persistent key report and sends the report. Because of the way -// USB HID works, the host acts like the key remains pressed until we +// to the persistent key report and sends the report. Because of the way +// USB HID works, the host acts like the key remains pressed until we // call release(), releaseAll(), or otherwise clear the report and resend. -size_t Keyboard_::press(uint8_t k) +size_t Keyboard_::press(uint8_t k) { - uint8_t i; - if (k >= 136) { // it's a non-printing key (not a modifier) - k = k - 136; - } else if (k >= 128) { // it's a modifier key - _keyReport.modifiers |= (1<<(k-128)); - k = 0; - } else { // it's a printing key - k = pgm_read_byte(_asciimap + k); - if (!k) { - setWriteError(); - return 0; - } - if (k & 0x80) { // it's a capital letter or other character reached with shift - _keyReport.modifiers |= 0x02; // the left shift modifier - k &= 0x7F; - } + // Press key and send report to host + uint8_t i; + auto ret = set((KeyboardKeycode)k, true); + if(ret){ + sendReport(&_keyReport); + return 1; } - - // Add k to the key report only if it's not already present - // and if there is an empty slot. - if (_keyReport.keys[0] != k && _keyReport.keys[1] != k && - _keyReport.keys[2] != k && _keyReport.keys[3] != k && - _keyReport.keys[4] != k && _keyReport.keys[5] != k) { - - for (i=0; i<6; i++) { - if (_keyReport.keys[i] == 0x00) { - _keyReport.keys[i] = k; - break; - } - } - if (i == 6) { - setWriteError(); - return 0; - } - } - sendReport(&_keyReport); - return 1; + return 0; } // release() takes the specified key out of the persistent key report and // sends the report. This tells the OS the key is no longer pressed and that // it shouldn't be repeated any more. -size_t Keyboard_::release(uint8_t k) +size_t Keyboard_::release(uint8_t k) { - uint8_t i; - if (k >= 136) { // it's a non-printing key (not a modifier) - k = k - 136; - } else if (k >= 128) { // it's a modifier key - _keyReport.modifiers &= ~(1<<(k-128)); - k = 0; - } else { // it's a printing key - k = pgm_read_byte(_asciimap + k); - if (!k) { - return 0; - } - if (k & 0x80) { // it's a capital letter or other character reached with shift - _keyReport.modifiers &= ~(0x02); // the left shift modifier - k &= 0x7F; - } - } - - // Test the key report to see if k is present. Clear it if it exists. - // Check all positions in case the key is present more than once (which it shouldn't be) - for (i=0; i<6; i++) { - if (0 != k && _keyReport.keys[i] == k) { - _keyReport.keys[i] = 0x00; - } + uint8_t i; + auto ret = set((KeyboardKeycode)k, false); + if(ret){ + sendReport(&_keyReport); + return 1; } - - sendReport(&_keyReport); - return 1; + return 0; } void Keyboard_::releaseAll(void) { - _keyReport.keys[0] = 0; - _keyReport.keys[1] = 0; - _keyReport.keys[2] = 0; - _keyReport.keys[3] = 0; - _keyReport.keys[4] = 0; - _keyReport.keys[5] = 0; + _keyReport.keycodes[0] = 0; + _keyReport.keycodes[1] = 0; + _keyReport.keycodes[2] = 0; + _keyReport.keycodes[3] = 0; + _keyReport.keycodes[4] = 0; + _keyReport.keycodes[5] = 0; _keyReport.modifiers = 0; sendReport(&_keyReport); } @@ -335,4 +219,3 @@ size_t Keyboard_::write(const uint8_t *buffer, size_t size) { Keyboard_ Keyboard; #endif - diff --git a/src/Keyboard.h b/src/Keyboard.h index 96882d8..0171fce 100644 --- a/src/Keyboard.h +++ b/src/Keyboard.h @@ -22,7 +22,7 @@ #ifndef KEYBOARD_h #define KEYBOARD_h -#include "HID.h" +// #include "HID.h" #if !defined(_USING_HID) @@ -30,66 +30,14 @@ #else -//================================================================================ -//================================================================================ -// Keyboard - -#define KEY_LEFT_CTRL 0x80 -#define KEY_LEFT_SHIFT 0x81 -#define KEY_LEFT_ALT 0x82 -#define KEY_LEFT_GUI 0x83 -#define KEY_RIGHT_CTRL 0x84 -#define KEY_RIGHT_SHIFT 0x85 -#define KEY_RIGHT_ALT 0x86 -#define KEY_RIGHT_GUI 0x87 - -#define KEY_UP_ARROW 0xDA -#define KEY_DOWN_ARROW 0xD9 -#define KEY_LEFT_ARROW 0xD8 -#define KEY_RIGHT_ARROW 0xD7 -#define KEY_BACKSPACE 0xB2 -#define KEY_TAB 0xB3 -#define KEY_RETURN 0xB0 -#define KEY_ESC 0xB1 -#define KEY_INSERT 0xD1 -#define KEY_DELETE 0xD4 -#define KEY_PAGE_UP 0xD3 -#define KEY_PAGE_DOWN 0xD6 -#define KEY_HOME 0xD2 -#define KEY_END 0xD5 -#define KEY_CAPS_LOCK 0xC1 -#define KEY_F1 0xC2 -#define KEY_F2 0xC3 -#define KEY_F3 0xC4 -#define KEY_F4 0xC5 -#define KEY_F5 0xC6 -#define KEY_F6 0xC7 -#define KEY_F7 0xC8 -#define KEY_F8 0xC9 -#define KEY_F9 0xCA -#define KEY_F10 0xCB -#define KEY_F11 0xCC -#define KEY_F12 0xCD -#define KEY_F13 0xF0 -#define KEY_F14 0xF1 -#define KEY_F15 0xF2 -#define KEY_F16 0xF3 -#define KEY_F17 0xF4 -#define KEY_F18 0xF5 -#define KEY_F19 0xF6 -#define KEY_F20 0xF7 -#define KEY_F21 0xF8 -#define KEY_F22 0xF9 -#define KEY_F23 0xFA -#define KEY_F24 0xFB - +#include "./KeyboardLayouts/ImprovedKeylayouts.h" // Low level key report: up to 6 keys and shift, ctrl etc at once typedef struct { uint8_t modifiers; uint8_t reserved; - uint8_t keys[6]; + uint8_t keycodes[6]; } KeyReport; class Keyboard_ : public Print @@ -97,6 +45,7 @@ class Keyboard_ : public Print private: KeyReport _keyReport; void sendReport(KeyReport* keys); + size_t set(KeyboardKeycode k, bool s); public: Keyboard_(void); void begin(void); @@ -111,4 +60,3 @@ extern Keyboard_ Keyboard; #endif #endif - diff --git a/src/KeyboardLayouts/ImprovedKeylayouts.h b/src/KeyboardLayouts/ImprovedKeylayouts.h new file mode 100644 index 0000000..4698164 --- /dev/null +++ b/src/KeyboardLayouts/ImprovedKeylayouts.h @@ -0,0 +1,684 @@ +/* +Copyright (c) 2014-2015 NicoHood +See the readme for credit to other people. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +// Include guard +#pragma once + +// Keyboard Modifiers +enum KeyboardMods : uint16_t { + MOD_LEFT_CTRL = (1 << 8), + MOD_LEFT_SHIFT = (1 << 9), + MOD_LEFT_ALT = (1 << 10), + MOD_LEFT_GUI = (1 << 11), + MOD_RIGHT_CTRL = (1 << 12), + MOD_RIGHT_SHIFT = (1 << 13), + MOD_RIGHT_ALT = (1 << 14), + MOD_RIGHT_GUI = (uint16_t)(1 << 15), +}; + +// Keyboard Leds +enum KeyboardLeds : uint8_t { + LED_NUM_LOCK = (1 << 0), + LED_CAPS_LOCK = (1 << 1), + LED_SCROLL_LOCK = (1 << 2), + LED_COMPOSE = (1 << 3), + LED_KANA = (1 << 4), + LED_POWER = (1 << 5), + LED_SHIFT = (1 << 6), + LED_DO_NOT_DISTURB = (1 << 7), +}; + +#ifndef HID_CUSTOM_LAYOUT + #define HID_CUSTOM_LAYOUT + #define LAYOUT_US_ENGLISH + #pragma message "Using default ASCII layout for keyboard modules" +#else + #pragma message "Using custom layout for keyboard modules" +#endif + +#if defined(LAYOUT_US_ENGLISH) + #include "ImprovedKeylayoutsUS.h" +#elif defined(LAYOUT_CANADIAN_FRENCH) +#elif defined(LAYOUT_CANADIAN_MULTILINGUAL) +#elif defined(LAYOUT_DANISH) +#elif defined(LAYOUT_FINNISH) +#elif defined(LAYOUT_FRENCH) +#elif defined(LAYOUT_FRENCH_BELGIAN) +#elif defined(LAYOUT_FRENCH_SWISS) +#elif defined(LAYOUT_GERMAN) + #include "ImprovedKeylayoutsDE.h" +#elif defined(LAYOUT_GERMAN_MAC) +#elif defined(LAYOUT_GERMAN_SWISS) +#elif defined(LAYOUT_ICELANDIC) +#elif defined(LAYOUT_IRISH) +#elif defined(LAYOUT_ITALIAN) +#elif defined(LAYOUT_NORWEGIAN) +#elif defined(LAYOUT_PORTUGUESE) +#elif defined(LAYOUT_PORTUGUESE_BRAZILIAN) +#elif defined(LAYOUT_SPANISH) +#elif defined(LAYOUT_SPANISH_LATIN_AMERICA) +#elif defined(LAYOUT_SWEDISH) +#elif defined(LAYOUT_TURKISH) +#elif defined(LAYOUT_UNITED_KINGDOM) +#elif defined(LAYOUT_US_INTERNATIONAL) +#endif + +// Hut1_12v2.pdf +/* +enum KeyboardKeycode : uint8_t { + KEY_RESERVED = 0, + KEY_ERROR_ROLLOVER = 1, + KEY_POST_FAIL = 2, + KEY_ERROR_UNDEFINED = 3, + KEY_A = 4, + KEY_B = 5, + KEY_C = 6, + KEY_D = 7, + KEY_E = 8, + KEY_F = 9, + KEY_G = 10, + KEY_H = 11, + KEY_I = 12, + KEY_J = 13, + KEY_K = 14, + KEY_L = 15, + KEY_M = 16, + KEY_N = 17, + KEY_O = 18, + KEY_P = 19, + KEY_Q = 20, + KEY_R = 21, + KEY_S = 22, + KEY_T = 23, + KEY_U = 24, + KEY_V = 25, + KEY_W = 26, + KEY_X = 27, + KEY_Y = 28, + KEY_Z = 29, + KEY_1 = 30, + KEY_2 = 31, + KEY_3 = 32, + KEY_4 = 33, + KEY_5 = 34, + KEY_6 = 35, + KEY_7 = 36, + KEY_8 = 37, + KEY_9 = 38, + KEY_0 = 39, + KEY_ENTER = 40, + KEY_RETURN = 40, // Alias + KEY_ESC = 41, + KEY_BACKSPACE = 42, + KEY_TAB = 43, + KEY_SPACE = 44, + KEY_MINUS = 45, + KEY_EQUAL = 46, + KEY_LEFT_BRACE = 47, + KEY_RIGHT_BRACE = 48, + KEY_BACKSLASH = 49, + KEY_NON_US_NUM = 50, + KEY_SEMICOLON = 51, + KEY_QUOTE = 52, + KEY_TILDE = 53, + KEY_COMMA = 54, + KEY_PERIOD = 55, + KEY_SLASH = 56, + KEY_CAPS_LOCK = 0x39, + KEY_F1 = 0x3A, + KEY_F2 = 0x3B, + KEY_F3 = 0x3C, + KEY_F4 = 0x3D, + KEY_F5 = 0x3E, + KEY_F6 = 0x3F, + KEY_F7 = 0x40, + KEY_F8 = 0x41, + KEY_F9 = 0x42, + KEY_F10 = 0x43, + KEY_F11 = 0x44, + KEY_F12 = 0x45, + KEY_PRINT = 0x46, + KEY_PRINTSCREEN = 0x46, // Alias + KEY_SCROLL_LOCK = 0x47, + KEY_PAUSE = 0x48, + KEY_INSERT = 0x49, + KEY_HOME = 0x4A, + KEY_PAGE_UP = 0x4B, + KEY_DELETE = 0x4C, + KEY_END = 0x4D, + KEY_PAGE_DOWN = 0x4E, + KEY_RIGHT_ARROW = 0x4F, + KEY_LEFT_ARROW = 0x50, + KEY_DOWN_ARROW = 0x51, + KEY_UP_ARROW = 0x52, + KEY_RIGHT = 0x4F, // Alias + KEY_LEFT = 0x50, // Alias + KEY_DOWN = 0x51, // Alias + KEY_UP = 0x52, // Alias + KEY_NUM_LOCK = 0x53, + KEYPAD_DIVIDE = 0x54, + KEYPAD_MULTIPLY = 0x55, + KEYPAD_SUBTRACT = 0x56, + KEYPAD_ADD = 0x57, + KEYPAD_ENTER = 0x58, + KEYPAD_1 = 0x59, + KEYPAD_2 = 0x5A, + KEYPAD_3 = 0x5B, + KEYPAD_4 = 0x5C, + KEYPAD_5 = 0x5D, + KEYPAD_6 = 0x5E, + KEYPAD_7 = 0x5F, + KEYPAD_8 = 0x60, + KEYPAD_9 = 0x61, + KEYPAD_0 = 0x62, + KEYPAD_DOT = 0x63, + KEY_NON_US = 0x64, + KEY_APPLICATION = 0x65, // Context menu/right click + KEY_MENU = 0x65, // Alias + + // Most of the following keys will only work with Linux or not at all. + // F13+ keys are mostly used for laptop functions like ECO key. + KEY_POWER = 0x66, // PowerOff (Ubuntu) + KEY_PAD_EQUALS = 0x67, // Dont confuse with KEYPAD_EQUAL_SIGN + KEY_F13 = 0x68, // Tools (Ubunutu) + KEY_F14 = 0x69, // Launch5 (Ubuntu) + KEY_F15 = 0x6A, // Launch6 (Ubuntu) + KEY_F16 = 0x6B, // Launch7 (Ubuntu) + KEY_F17 = 0x6C, // Launch8 (Ubuntu) + KEY_F18 = 0x6D, // Launch9 (Ubuntu) + KEY_F19 = 0x6E, // Disabled (Ubuntu) + KEY_F20 = 0x6F, // AudioMicMute (Ubuntu) + KEY_F21 = 0x70, // Touchpad toggle (Ubuntu) + KEY_F22 = 0x71, // TouchpadOn (Ubuntu) + KEY_F23 = 0x72, // TouchpadOff Ubuntu) + KEY_F24 = 0x73, // Disabled (Ubuntu) + KEY_EXECUTE = 0x74, // Open (Ubuntu) + KEY_HELP = 0x75, // Help (Ubuntu) + KEY_MENU2 = 0x76, // Disabled (Ubuntu) + KEY_SELECT = 0x77, // Disabled (Ubuntu) + KEY_STOP = 0x78, // Cancel (Ubuntu) + KEY_AGAIN = 0x79, // Redo (Ubuntu) + KEY_UNDO = 0x7A, // Undo (Ubuntu) + KEY_CUT = 0x7B, // Cut (Ubuntu) + KEY_COPY = 0x7C, // Copy (Ubuntu) + KEY_PASTE = 0x7D, // Paste (Ubuntu) + KEY_FIND = 0x7E, // Find (Ubuntu) + KEY_MUTE = 0x7F, + KEY_VOLUME_MUTE = 0x7F, // Alias + KEY_VOLUME_UP = 0x80, + KEY_VOLUME_DOWN = 0x81, + KEY_LOCKING_CAPS_LOCK = 0x82, // Disabled (Ubuntu) + KEY_LOCKING_NUM_LOCK = 0x83, // Disabled (Ubuntu) + KEY_LOCKING_SCROLL_LOCK = 0x84, // Disabled (Ubuntu) + KEYPAD_COMMA = 0x85, // . + KEYPAD_EQUAL_SIGN = 0x86, // Disabled (Ubuntu), Dont confuse with KEYPAD_EQUAL + KEY_INTERNATIONAL1 = 0x87, // Disabled (Ubuntu) + KEY_INTERNATIONAL2 = 0x88, // Hiragana Katakana (Ubuntu) + KEY_INTERNATIONAL3 = 0x89, // Disabled (Ubuntu) + KEY_INTERNATIONAL4 = 0x8A, // Henkan (Ubuntu) + KEY_INTERNATIONAL5 = 0x8B, // Muhenkan (Ubuntu) + KEY_INTERNATIONAL6 = 0x8C, // Disabled (Ubuntu) + KEY_INTERNATIONAL7 = 0x8D, // Disabled (Ubuntu) + KEY_INTERNATIONAL8 = 0x8E, // Disabled (Ubuntu) + KEY_INTERNATIONAL9 = 0x8F, // Disabled (Ubuntu) + KEY_LANG1 = 0x90, // Disabled (Ubuntu) + KEY_LANG2 = 0x91, // Disabled (Ubuntu) + KEY_LANG3 = 0x92, // Katana (Ubuntu) + KEY_LANG4 = 0x93, // Hiragana (Ubuntu) + KEY_LANG5 = 0x94, // Disabled (Ubuntu) + KEY_LANG6 = 0x95, // Disabled (Ubuntu) + KEY_LANG7 = 0x96, // Disabled (Ubuntu) + KEY_LANG8 = 0x97, // Disabled (Ubuntu) + KEY_LANG9 = 0x98, // Disabled (Ubuntu) + KEY_ALTERNATE_ERASE = 0x99, // Disabled (Ubuntu) + KEY_SYSREQ_ATTENTION = 0x9A, // Disabled (Ubuntu) + KEY_CANCEL = 0x9B, // Disabled (Ubuntu) + KEY_CLEAR = 0x9C, // Delete (Ubuntu) + KEY_PRIOR = 0x9D, // Disabled (Ubuntu) + KEY_RETURN2 = 0x9E, // Disabled (Ubuntu), Do not confuse this with KEY_ENTER + KEY_SEPARATOR = 0x9F, // Disabled (Ubuntu) + KEY_OUT = 0xA0, // Disabled (Ubuntu) + KEY_OPER = 0xA1, // Disabled (Ubuntu) + KEY_CLEAR_AGAIN = 0xA2, // Disabled (Ubuntu) + KEY_CRSEL_PROPS = 0xA3, // Disabled (Ubuntu) + KEY_EXSEL = 0xA4, // Disabled (Ubuntu) + + KEY_PAD_00 = 0xB0, // Disabled (Ubuntu) + KEY_PAD_000 = 0xB1, // Disabled (Ubuntu) + KEY_THOUSANDS_SEPARATOR = 0xB2, // Disabled (Ubuntu) + KEY_DECIMAL_SEPARATOR = 0xB3, // Disabled (Ubuntu) + KEY_CURRENCY_UNIT = 0xB4, // Disabled (Ubuntu) + KEY_CURRENCY_SUB_UNIT = 0xB5, // Disabled (Ubuntu) + KEYPAD_LEFT_BRACE = 0xB6, // ( + KEYPAD_RIGHT_BRACE = 0xB7, // ) + KEYPAD_LEFT_CURLY_BRACE = 0xB8, // Disabled (Ubuntu) + KEYPAD_RIGHT_CURLY_BRACE = 0xB9, // Disabled (Ubuntu) + KEYPAD_TAB = 0xBA, // Disabled (Ubuntu) + KEYPAD_BACKSPACE = 0xBB, // Disabled (Ubuntu) + KEYPAD_A = 0xBC, // Disabled (Ubuntu) + KEYPAD_B = 0xBD, // Disabled (Ubuntu) + KEYPAD_C = 0xBE, // Disabled (Ubuntu) + KEYPAD_D = 0xBF, // Disabled (Ubuntu) + KEYPAD_E = 0xC0, // Disabled (Ubuntu) + KEYPAD_F = 0xC1, // Disabled (Ubuntu) + KEYPAD_XOR = 0xC2, // Disabled (Ubuntu) + KEYPAD_CARET = 0xC3, // Disabled (Ubuntu) + KEYPAD_PERCENT = 0xC4, // Disabled (Ubuntu) + KEYPAD_LESS_THAN = 0xC5, // Disabled (Ubuntu) + KEYPAD_GREATER_THAN = 0xC6, // Disabled (Ubuntu) + KEYPAD_AMPERSAND = 0xC7, // Disabled (Ubuntu) + KEYPAD_DOUBLEAMPERSAND = 0xC8, // Disabled (Ubuntu) + KEYPAD_PIPE = 0xC9, // Disabled (Ubuntu) + KEYPAD_DOUBLEPIPE = 0xCA, // Disabled (Ubuntu) + KEYPAD_COLON = 0xCB, // Disabled (Ubuntu) + KEYPAD_POUND_SIGN = 0xCC, // Disabled (Ubuntu) + KEYPAD_SPACE = 0xCD, // Disabled (Ubuntu) + KEYPAD_AT_SIGN = 0xCE, // Disabled (Ubuntu) + KEYPAD_EXCLAMATION_POINT = 0xCF, // Disabled (Ubuntu) + KEYPAD_MEMORY_STORE = 0xD0, // Disabled (Ubuntu) + KEYPAD_MEMORY_RECALL = 0xD1, // Disabled (Ubuntu) + KEYPAD_MEMORY_CLEAR = 0xD2, // Disabled (Ubuntu) + KEYPAD_MEMORY_ADD = 0xD3, // Disabled (Ubuntu) + KEYPAD_MEMORY_SUBTRACT = 0xD4, // Disabled (Ubuntu) + KEYPAD_MEMORY_MULTIPLY = 0xD5, // Disabled (Ubuntu) + KEYPAD_MEMORY_DIVIDE = 0xD6, // Disabled (Ubuntu) + KEYPAD_PLUS_MINUS = 0xD7, // Disabled (Ubuntu) + KEYPAD_CLEAR = 0xD8, // Delete (Ubuntu) + KEYPAD_CLEAR_ENTRY = 0xD9, // Disabled (Ubuntu) + KEYPAD_BINARY = 0xDA, // Disabled (Ubuntu) + KEYPAD_OCTAL = 0xDB, // Disabled (Ubuntu) + KEYPAD_DECIMAL = 0xDC, // Disabled (Ubuntu) + KEYPAD_HEXADECIMAL = 0xDD, // Disabled (Ubuntu) + + KEY_LEFT_CTRL = 0xE0, + KEY_LEFT_SHIFT = 0xE1, + KEY_LEFT_ALT = 0xE2, + KEY_LEFT_GUI = 0xE3, + KEY_LEFT_WINDOWS = 0xE3, // Alias + KEY_RIGHT_CTRL = 0xE4, + KEY_RIGHT_SHIFT = 0xE5, + KEY_RIGHT_ALT = 0xE6, + KEY_RIGHT_GUI = 0xE7, + KEY_RIGHT_WINDOWS = 0xE7, // Alias + + // Keyboard HID mappings + + // Reserved (no_event_indicated) + HID_KEYBOARD_ERROR_ROLLOVER = 0x01, + HID_KEYBOARD_POST_FAIL = 0x02, + HID_KEYBOARD_ERROR_UNDEFINED = 0x03, + HID_KEYBOARD_A_AND_A = 0x04, + HID_KEYBOARD_B_AND_B = 0x05, + HID_KEYBOARD_C_AND_C = 0x06, + HID_KEYBOARD_D_AND_D = 0x07, + HID_KEYBOARD_E_AND_E = 0x08, + HID_KEYBOARD_F_AND_F = 0x09, + HID_KEYBOARD_G_AND_G = 0x0A, + HID_KEYBOARD_H_AND_H = 0x0B, + HID_KEYBOARD_I_AND_I = 0x0C, + HID_KEYBOARD_J_AND_J = 0x0D, + HID_KEYBOARD_K_AND_K = 0x0E, + HID_KEYBOARD_L_AND_L = 0x0F, + HID_KEYBOARD_M_AND_M = 0x10, + HID_KEYBOARD_N_AND_N = 0x11, + HID_KEYBOARD_O_AND_O = 0x12, + HID_KEYBOARD_P_AND_P = 0x13, + HID_KEYBOARD_Q_AND_Q = 0x14, + HID_KEYBOARD_R_AND_R = 0x15, + HID_KEYBOARD_S_AND_S = 0x16, + HID_KEYBOARD_T_AND_T = 0x17, + HID_KEYBOARD_U_AND_U = 0x18, + HID_KEYBOARD_V_AND_V = 0x19, + HID_KEYBOARD_W_AND_W = 0x1A, + HID_KEYBOARD_X_AND_X = 0x1B, + HID_KEYBOARD_Y_AND_Y = 0x1C, + HID_KEYBOARD_Z_AND_Z = 0x1D, + HID_KEYBOARD_1_AND_EXCLAMATION_POINT = 0x1E, + HID_KEYBOARD_2_AND_AT = 0x1F, + HID_KEYBOARD_3_AND_POUND = 0x20, + HID_KEYBOARD_4_AND_DOLLAR = 0x21, + HID_KEYBOARD_5_AND_PERCENT = 0x22, + HID_KEYBOARD_6_AND_CARAT = 0x23, + HID_KEYBOARD_7_AND_AMPERSAND = 0x24, + HID_KEYBOARD_8_AND_ASTERISK = 0x25, + HID_KEYBOARD_9_AND_LEFT_PAREN = 0x26, + HID_KEYBOARD_0_AND_RIGHT_PAREN = 0x27, + HID_KEYBOARD_ENTER = 0x28, // (MARKED AS ENTER_SLASH_RETURN) + HID_KEYBOARD_ESCAPE = 0x29, + HID_KEYBOARD_DELETE = 0x2A, // (BACKSPACE) + HID_KEYBOARD_TAB = 0x2B, + HID_KEYBOARD_SPACEBAR = 0x2C, + HID_KEYBOARD_MINUS_AND_UNDERSCORE = 0x2D, // (UNDERSCORE) + HID_KEYBOARD_EQUALS_AND_PLUS = 0x2E, + HID_KEYBOARD_LEFT_BRACKET_AND_LEFT_CURLY_BRACE = 0x2F, + HID_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_CURLY_BRACE = 0x30, + HID_KEYBOARD_BACKSLASH_AND_PIPE = 0x31, + HID_KEYBOARD_NON_US_POUND_AND_TILDE = 0x32, + HID_KEYBOARD_SEMICOLON_AND_COLON = 0x33, + HID_KEYBOARD_QUOTE_AND_DOUBLEQUOTE = 0x34, + HID_KEYBOARD_GRAVE_ACCENT_AND_TILDE = 0x35, + HID_KEYBOARD_COMMA_AND_LESS_THAN = 0x36, + HID_KEYBOARD_PERIOD_AND_GREATER_THAN = 0x37, + HID_KEYBOARD_SLASH_AND_QUESTION_MARK = 0x38, + HID_KEYBOARD_CAPS_LOCK = 0x39, + HID_KEYBOARD_F1 = 0x3A, + HID_KEYBOARD_F2 = 0x3B, + HID_KEYBOARD_F3 = 0x3C, + HID_KEYBOARD_F4 = 0x3D, + HID_KEYBOARD_F5 = 0x3E, + HID_KEYBOARD_F6 = 0x3F, + HID_KEYBOARD_F7 = 0x40, + HID_KEYBOARD_F8 = 0x41, + HID_KEYBOARD_F9 = 0x42, + HID_KEYBOARD_F10 = 0x43, + HID_KEYBOARD_F11 = 0x44, + HID_KEYBOARD_F12 = 0x45, + HID_KEYBOARD_PRINTSCREEN = 0x46, + HID_KEYBOARD_SCROLL_LOCK = 0x47, + HID_KEYBOARD_PAUSE = 0x48, + HID_KEYBOARD_INSERT = 0x49, + HID_KEYBOARD_HOME = 0x4A, + HID_KEYBOARD_PAGE_UP = 0x4B, + HID_KEYBOARD_DELETE_FORWARD = 0x4C, + HID_KEYBOARD_END = 0x4D, + HID_KEYBOARD_PAGE_DOWN = 0x4E, + HID_KEYBOARD_RIGHTARROW = 0x4F, + HID_KEYBOARD_LEFTARROW = 0x50, + HID_KEYBOARD_DOWNARROW = 0x51, + HID_KEYBOARD_UPARROW = 0x52, + HID_KEYPAD_NUM_LOCK_AND_CLEAR = 0x53, + HID_KEYPAD_DIVIDE = 0x54, + HID_KEYPAD_MULTIPLY = 0x55, + HID_KEYPAD_SUBTRACT = 0x56, + HID_KEYPAD_ADD = 0x57, + HID_KEYPAD_ENTER = 0x58, + HID_KEYPAD_1_AND_END = 0x59, + HID_KEYPAD_2_AND_DOWN_ARROW = 0x5A, + HID_KEYPAD_3_AND_PAGE_DOWN = 0x5B, + HID_KEYPAD_4_AND_LEFT_ARROW = 0x5C, + HID_KEYPAD_5 = 0x5D, + HID_KEYPAD_6_AND_RIGHT_ARROW = 0x5E, + HID_KEYPAD_7_AND_HOME = 0x5F, + HID_KEYPAD_8_AND_UP_ARROW = 0x60, + HID_KEYPAD_9_AND_PAGE_UP = 0x61, + HID_KEYPAD_0_AND_INSERT = 0x62, + HID_KEYPAD_PERIOD_AND_DELETE = 0x63, + HID_KEYBOARD_NON_US_BACKSLASH_AND_PIPE = 0x64, + HID_KEYBOARD_APPLICATION = 0x65, + HID_KEYBOARD_POWER = 0x66, + HID_KEYPAD_EQUALS = 0x67, + HID_KEYBOARD_F13 = 0x68, + HID_KEYBOARD_F14 = 0x69, + HID_KEYBOARD_F15 = 0x6A, + HID_KEYBOARD_F16 = 0x6B, + HID_KEYBOARD_F17 = 0x6C, + HID_KEYBOARD_F18 = 0x6D, + HID_KEYBOARD_F19 = 0x6E, + HID_KEYBOARD_F20 = 0x6F, + HID_KEYBOARD_F21 = 0x70, + HID_KEYBOARD_F22 = 0x71, + HID_KEYBOARD_F23 = 0x72, + HID_KEYBOARD_F24 = 0x73, + HID_KEYBOARD_EXECUTE = 0x74, + HID_KEYBOARD_HELP = 0x75, + HID_KEYBOARD_MENU = 0x76, + HID_KEYBOARD_SELECT = 0x77, + HID_KEYBOARD_STOP = 0x78, + HID_KEYBOARD_AGAIN = 0x79, + HID_KEYBOARD_UNDO = 0x7A, + HID_KEYBOARD_CUT = 0x7B, + HID_KEYBOARD_COPY = 0x7C, + HID_KEYBOARD_PASTE = 0x7D, + HID_KEYBOARD_FIND = 0x7E, + HID_KEYBOARD_MUTE = 0x7F, + HID_KEYBOARD_VOLUME_UP = 0x80, + HID_KEYBOARD_VOLUME_DOWN = 0x81, + HID_KEYBOARD_LOCKING_CAPS_LOCK = 0x82, + HID_KEYBOARD_LOCKING_NUM_LOCK = 0x83, + HID_KEYBOARD_LOCKING_SCROLL_LOCK = 0x84, + HID_KEYPAD_COMMA = 0x85, + HID_KEYPAD_EQUAL_SIGN = 0x86, + HID_KEYBOARD_INTERNATIONAL1 = 0x87, + HID_KEYBOARD_INTERNATIONAL2 = 0x88, + HID_KEYBOARD_INTERNATIONAL3 = 0x89, + HID_KEYBOARD_INTERNATIONAL4 = 0x8A, + HID_KEYBOARD_INTERNATIONAL5 = 0x8B, + HID_KEYBOARD_INTERNATIONAL6 = 0x8C, + HID_KEYBOARD_INTERNATIONAL7 = 0x8D, + HID_KEYBOARD_INTERNATIONAL8 = 0x8E, + HID_KEYBOARD_INTERNATIONAL9 = 0x8F, + HID_KEYBOARD_LANG1 = 0x90, + HID_KEYBOARD_LANG2 = 0x91, + HID_KEYBOARD_LANG3 = 0x92, + HID_KEYBOARD_LANG4 = 0x93, + HID_KEYBOARD_LANG5 = 0x94, + HID_KEYBOARD_LANG6 = 0x95, + HID_KEYBOARD_LANG7 = 0x96, + HID_KEYBOARD_LANG8 = 0x97, + HID_KEYBOARD_LANG9 = 0x98, + HID_KEYBOARD_ALTERNATE_ERASE = 0x99, + HID_KEYBOARD_SYSREQ_SLASH_ATTENTION = 0x9A, + HID_KEYBOARD_CANCEL = 0x9B, + HID_KEYBOARD_CLEAR = 0x9C, + HID_KEYBOARD_PRIOR = 0x9D, + HID_KEYBOARD_RETURN = 0x9E, + HID_KEYBOARD_SEPARATOR = 0x9F, + HID_KEYBOARD_OUT = 0xA0, + HID_KEYBOARD_OPER = 0xA1, + HID_KEYBOARD_CLEAR_SLASH_AGAIN = 0xA2, + HID_KEYBOARD_CRSEL_SLASH_PROPS = 0xA3, + HID_KEYBOARD_EXSEL = 0xA4, + // Reserved 0xA5-AF + HID_KEYPAD_00 = 0xB0, + HID_KEYPAD_000 = 0xB1, + HID_THOUSANDS_SEPARATOR = 0xB2, + HID_DECIMAL_SEPARATOR = 0xB3, + HID_CURRENCY_UNIT = 0xB4, + HID_CURRENCY_SUBUNIT = 0xB5, + HID_KEYPAD_LEFT_PAREN = 0xB6, + HID_KEYPAD_RIGHT_PAREN = 0xB7, + HID_KEYPAD_LEFT_CURLY_BRACE = 0xB8, + HID_KEYPAD_RIGHT_CURLY_BRACE = 0xB9, + HID_KEYPAD_TAB = 0xBA, + HID_KEYPAD_BACKSPACE = 0xBB, + HID_KEYPAD_A = 0xBC, + HID_KEYPAD_B = 0xBD, + HID_KEYPAD_C = 0xBE, + HID_KEYPAD_D = 0xBF, + HID_KEYPAD_E = 0xC0, + HID_KEYPAD_F = 0xC1, + HID_KEYPAD_XOR = 0xC2, + HID_KEYPAD_CARAT = 0xC3, + HID_KEYPAD_PERCENT = 0xC4, + HID_KEYPAD_LESS_THAN = 0xC5, + HID_KEYPAD_GREATER_THAN = 0xC6, + HID_KEYPAD_AMPERSAND = 0xC7, + HID_KEYPAD_DOUBLEAMPERSAND = 0xC8, + HID_KEYPAD_PIPE = 0xC9, + HID_KEYPAD_DOUBLEPIPE = 0xCA, + HID_KEYPAD_COLON = 0xCB, + HID_KEYPAD_POUND_SIGN = 0xCC, + HID_KEYPAD_SPACE = 0xCD, + HID_KEYPAD_AT_SIGN = 0xCE, + HID_KEYPAD_EXCLAMATION_POINT = 0xCF, + HID_KEYPAD_MEMORY_STORE = 0xD0, + HID_KEYPAD_MEMORY_RECALL = 0xD1, + HID_KEYPAD_MEMORY_CLEAR = 0xD2, + HID_KEYPAD_MEMORY_ADD = 0xD3, + HID_KEYPAD_MEMORY_SUBTRACT = 0xD4, + HID_KEYPAD_MEMORY_MULTIPLY = 0xD5, + HID_KEYPAD_MEMORY_DIVIDE = 0xD6, + HID_KEYPAD_PLUS_SLASH_MINUS = 0xD7, + HID_KEYPAD_CLEAR = 0xD8, + HID_KEYPAD_CLEAR_ENTRY = 0xD9, + HID_KEYPAD_BINARY = 0xDA, + HID_KEYPAD_OCTAL = 0xDB, + HID_KEYPAD_DECIMAL = 0xDC, + HID_KEYPAD_HEXADECIMAL = 0xDD, + + // 0xDE-0xDF - RESERVED + HID_KEYBOARD_LEFT_CONTROL = 0xE0, + HID_KEYBOARD_LEFT_SHIFT = 0xE1, + HID_KEYBOARD_LEFT_ALT = 0xE2, + HID_KEYBOARD_LEFT_GUI = 0xE3, + HID_KEYBOARD_RIGHT_CONTROL = 0xE4, + HID_KEYBOARD_RIGHT_SHIFT = 0xE5, + HID_KEYBOARD_RIGHT_ALT = 0xE6, + HID_KEYBOARD_RIGHT_GUI = 0xE7, +}; +*/ + +/* +static const uint16_t _asciimap[] PROGMEM = +{ + KEY_RESERVED, // NUL + KEY_RESERVED, // SOH + KEY_RESERVED, // STX + KEY_RESERVED, // ETX + KEY_RESERVED, // EOT + KEY_RESERVED, // ENQ + KEY_RESERVED, // ACK + KEY_RESERVED, // BEL + KEY_BACKSPACE, // BS Backspace + KEY_TAB, // TAB Tab + KEY_ENTER, // LF Enter + KEY_RESERVED, // VT + KEY_RESERVED, // FF + KEY_RESERVED, // CR + KEY_RESERVED, // SO + KEY_RESERVED, // SI + KEY_RESERVED, // DEL + KEY_RESERVED, // DC1 + KEY_RESERVED, // DC2 + KEY_RESERVED, // DC3 + KEY_RESERVED, // DC4 + KEY_RESERVED, // NAK + KEY_RESERVED, // SYN + KEY_RESERVED, // ETB + KEY_RESERVED, // CAN + KEY_RESERVED, // EM + KEY_RESERVED, // SUB + KEY_RESERVED, // ESC + KEY_RESERVED, // FS + KEY_RESERVED, // GS + KEY_RESERVED, // RS + KEY_RESERVED, // US + + KEY_SPACE, // ' ' Space + KEY_1|SHIFT, // ! + KEY_QUOTE|SHIFT, // " + KEY_3|SHIFT, // # + KEY_4|SHIFT, // $ + KEY_5|SHIFT, // % + KEY_7|SHIFT, // & + KEY_QUOTE, // ' + KEY_9|SHIFT, // ( + KEY_0|SHIFT, // ) + KEY_8|SHIFT, // * + KEY_EQUAL|SHIFT, // + + KEY_COMMA, // , + KEY_MINUS, // - + KEY_PERIOD, // . + KEY_SLASH, // / + KEY_0, // 0 + KEY_1, // 1 + KEY_2, // 2 + KEY_3, // 3 + KEY_4, // 4 + KEY_5, // 5 + KEY_6, // 6 + KEY_7, // 7 + KEY_8, // 8 + KEY_9, // 9 + KEY_SEMICOLON|SHIFT, // : + KEY_SEMICOLON, // ; + KEY_COMMA|SHIFT, // < + KEY_EQUAL, // = + KEY_PERIOD|SHIFT, // > + KEY_SLASH|SHIFT, // ? + KEY_2|SHIFT, // @ + KEY_A|SHIFT, // A + KEY_B|SHIFT, // B + KEY_C|SHIFT, // C + KEY_D|SHIFT, // D + KEY_E|SHIFT, // E + KEY_F|SHIFT, // F + KEY_G|SHIFT, // G + KEY_H|SHIFT, // H + KEY_I|SHIFT, // I + KEY_J|SHIFT, // J + KEY_K|SHIFT, // K + KEY_L|SHIFT, // L + KEY_M|SHIFT, // M + KEY_N|SHIFT, // N + KEY_O|SHIFT, // O + KEY_P|SHIFT, // P + KEY_Q|SHIFT, // Q + KEY_R|SHIFT, // R + KEY_S|SHIFT, // S + KEY_T|SHIFT, // T + KEY_U|SHIFT, // U + KEY_V|SHIFT, // V + KEY_W|SHIFT, // W + KEY_X|SHIFT, // X + KEY_Y|SHIFT, // Y + KEY_Z|SHIFT, // Z + KEY_LEFT_BRACE, // [ + KEY_BACKSLASH, // bslash + KEY_RIGHT_BRACE, // ] + KEY_6|SHIFT, // ^ + KEY_MINUS|SHIFT, // _ + KEY_TILDE, // ` + KEY_A, // a + KEY_B, // b + KEY_C, // c + KEY_D, // d + KEY_E, // e + KEY_F, // f + KEY_G, // g + KEY_H, // h + KEY_I, // i + KEY_J, // j + KEY_K, // k + KEY_L, // l + KEY_M, // m + KEY_N, // n + KEY_O, // o + KEY_P, // p + KEY_Q, // q + KEY_R, // r + KEY_S, // s + KEY_T, // t + KEY_U, // u + KEY_V, // v + KEY_W, // w + KEY_X, // x + KEY_Y, // y + KEY_Z, // z + KEY_LEFT_BRACE|SHIFT, // { + KEY_BACKSLASH|SHIFT, // | + KEY_RIGHT_BRACE|SHIFT, // } + KEY_TILDE|SHIFT, // ~ + KEY_RESERVED // DEL +}; +*/ diff --git a/src/KeyboardLayouts/ImprovedKeylayoutsDE.h b/src/KeyboardLayouts/ImprovedKeylayoutsDE.h new file mode 100644 index 0000000..d9ba969 --- /dev/null +++ b/src/KeyboardLayouts/ImprovedKeylayoutsDE.h @@ -0,0 +1,461 @@ +/* +Copyright (c) 2014-2015 NicoHood +See the readme for credit to other people. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +// Include guard +#pragma once + +#include "ImprovedKeylayouts.h" + +// Hut1_12v2.pdf + +enum KeyboardKeycode : uint8_t { + KEY_RESERVED = 0, + KEY_ERROR_ROLLOVER = 1, + KEY_POST_FAIL = 2, + KEY_ERROR_UNDEFINED = 3, + KEY_A = 4, + KEY_B = 5, + KEY_C = 6, + KEY_D = 7, + KEY_E = 8, + KEY_F = 9, + KEY_G = 10, + KEY_H = 11, + KEY_I = 12, + KEY_J = 13, + KEY_K = 14, + KEY_L = 15, + KEY_M = 16, + KEY_N = 17, + KEY_O = 18, + KEY_P = 19, + KEY_Q = 20, + KEY_R = 21, + KEY_S = 22, + KEY_T = 23, + KEY_U = 24, + KEY_V = 25, + KEY_W = 26, + KEY_X = 27, + KEY_Y = 29, + KEY_Z = 28, + KEY_1 = 30, + KEY_2 = 31, + KEY_3 = 32, + KEY_4 = 33, + KEY_5 = 34, + KEY_6 = 35, + KEY_7 = 36, + KEY_8 = 37, + KEY_9 = 38, + KEY_0 = 39, + KEY_ENTER = 40, + KEY_RETURN = 40, // Alias + KEY_ESC = 41, + KEY_BACKSPACE = 42, + KEY_TAB = 43, + KEY_SPACE = 44, + KEY_SZ = 45, + KEY_ACCENT = 46, + KEY_UE = 47, + KEY_PLUS = 48, + KEY_HASHTAG2 = 49, + KEY_HASHTAG = 50, + KEY_OE = 51, + KEY_AE = 52, + KEY_DACH = 53, + KEY_COMMA = 54, + KEY_PERIOD = 55, + KEY_MINUS = 56, + KEY_CAPS_LOCK = 0x39, + KEY_F1 = 0x3A, + KEY_F2 = 0x3B, + KEY_F3 = 0x3C, + KEY_F4 = 0x3D, + KEY_F5 = 0x3E, + KEY_F6 = 0x3F, + KEY_F7 = 0x40, + KEY_F8 = 0x41, + KEY_F9 = 0x42, + KEY_F10 = 0x43, + KEY_F11 = 0x44, + KEY_F12 = 0x45, + KEY_PRINT = 0x46, + KEY_PRINTSCREEN = 0x46, // Alias + KEY_SCROLL_LOCK = 0x47, + KEY_PAUSE = 0x48, + KEY_INSERT = 0x49, + KEY_HOME = 0x4A, + KEY_PAGE_UP = 0x4B, + KEY_DELETE = 0x4C, + KEY_END = 0x4D, + KEY_PAGE_DOWN = 0x4E, + KEY_RIGHT_ARROW = 0x4F, + KEY_LEFT_ARROW = 0x50, + KEY_DOWN_ARROW = 0x51, + KEY_UP_ARROW = 0x52, + KEY_RIGHT = 0x4F, // Alias + KEY_LEFT = 0x50, // Alias + KEY_DOWN = 0x51, // Alias + KEY_UP = 0x52, // Alias + KEY_NUM_LOCK = 0x53, + KEYPAD_DIVIDE = 0x54, + KEYPAD_MULTIPLY = 0x55, + KEYPAD_SUBTRACT = 0x56, + KEYPAD_ADD = 0x57, + KEYPAD_ENTER = 0x58, + KEYPAD_1 = 0x59, + KEYPAD_2 = 0x5A, + KEYPAD_3 = 0x5B, + KEYPAD_4 = 0x5C, + KEYPAD_5 = 0x5D, + KEYPAD_6 = 0x5E, + KEYPAD_7 = 0x5F, + KEYPAD_8 = 0x60, + KEYPAD_9 = 0x61, + KEYPAD_0 = 0x62, + KEYPAD_DOT = 0x63, + KEY_SMALLER = 0x64, + KEY_APPLICATION = 0x65, // Context menu/right click + KEY_MENU = 0x65, // Alias + + // Most of the following keys will only work with Linux or not at all. + // F13+ keys are mostly used for laptop functions like ECO key. + KEY_POWER = 0x66, // PowerOff (Ubuntu) + KEY_PAD_EQUALS = 0x67, // Dont confuse with KEYPAD_EQUAL_SIGN + KEY_F13 = 0x68, // Tools (Ubunutu) + KEY_F14 = 0x69, // Launch5 (Ubuntu) + KEY_F15 = 0x6A, // Launch6 (Ubuntu) + KEY_F16 = 0x6B, // Launch7 (Ubuntu) + KEY_F17 = 0x6C, // Launch8 (Ubuntu) + KEY_F18 = 0x6D, // Launch9 (Ubuntu) + KEY_F19 = 0x6E, // Disabled (Ubuntu) + KEY_F20 = 0x6F, // AudioMicMute (Ubuntu) + KEY_F21 = 0x70, // Touchpad toggle (Ubuntu) + KEY_F22 = 0x71, // TouchpadOn (Ubuntu) + KEY_F23 = 0x72, // TouchpadOff Ubuntu) + KEY_F24 = 0x73, // Disabled (Ubuntu) + KEY_EXECUTE = 0x74, // Open (Ubuntu) + KEY_HELP = 0x75, // Help (Ubuntu) + KEY_MENU2 = 0x76, // Disabled (Ubuntu) + KEY_SELECT = 0x77, // Disabled (Ubuntu) + KEY_STOP = 0x78, // Cancel (Ubuntu) + KEY_AGAIN = 0x79, // Redo (Ubuntu) + KEY_UNDO = 0x7A, // Undo (Ubuntu) + KEY_CUT = 0x7B, // Cut (Ubuntu) + KEY_COPY = 0x7C, // Copy (Ubuntu) + KEY_PASTE = 0x7D, // Paste (Ubuntu) + KEY_FIND = 0x7E, // Find (Ubuntu) + KEY_MUTE = 0x7F, + KEY_VOLUME_MUTE = 0x7F, // Alias + KEY_VOLUME_UP = 0x80, + KEY_VOLUME_DOWN = 0x81, + KEY_LOCKING_CAPS_LOCK = 0x82, // Disabled (Ubuntu) + KEY_LOCKING_NUM_LOCK = 0x83, // Disabled (Ubuntu) + KEY_LOCKING_SCROLL_LOCK = 0x84, // Disabled (Ubuntu) + KEYPAD_COMMA = 0x85, // . + KEYPAD_EQUAL_SIGN = 0x86, // Disabled (Ubuntu), Dont confuse with KEYPAD_EQUAL + KEY_INTERNATIONAL1 = 0x87, // Disabled (Ubuntu) + KEY_INTERNATIONAL2 = 0x88, // Hiragana Katakana (Ubuntu) + KEY_INTERNATIONAL3 = 0x89, // Disabled (Ubuntu) + KEY_INTERNATIONAL4 = 0x8A, // Henkan (Ubuntu) + KEY_INTERNATIONAL5 = 0x8B, // Muhenkan (Ubuntu) + KEY_INTERNATIONAL6 = 0x8C, // Disabled (Ubuntu) + KEY_INTERNATIONAL7 = 0x8D, // Disabled (Ubuntu) + KEY_INTERNATIONAL8 = 0x8E, // Disabled (Ubuntu) + KEY_INTERNATIONAL9 = 0x8F, // Disabled (Ubuntu) + KEY_LANG1 = 0x90, // Disabled (Ubuntu) + KEY_LANG2 = 0x91, // Disabled (Ubuntu) + KEY_LANG3 = 0x92, // Katana (Ubuntu) + KEY_LANG4 = 0x93, // Hiragana (Ubuntu) + KEY_LANG5 = 0x94, // Disabled (Ubuntu) + KEY_LANG6 = 0x95, // Disabled (Ubuntu) + KEY_LANG7 = 0x96, // Disabled (Ubuntu) + KEY_LANG8 = 0x97, // Disabled (Ubuntu) + KEY_LANG9 = 0x98, // Disabled (Ubuntu) + KEY_ALTERNATE_ERASE = 0x99, // Disabled (Ubuntu) + KEY_SYSREQ_ATTENTION = 0x9A, // Disabled (Ubuntu) + KEY_CANCEL = 0x9B, // Disabled (Ubuntu) + KEY_CLEAR = 0x9C, // Delete (Ubuntu) + KEY_PRIOR = 0x9D, // Disabled (Ubuntu) + KEY_RETURN2 = 0x9E, // Disabled (Ubuntu), Do not confuse this with KEY_ENTER + KEY_SEPARATOR = 0x9F, // Disabled (Ubuntu) + KEY_OUT = 0xA0, // Disabled (Ubuntu) + KEY_OPER = 0xA1, // Disabled (Ubuntu) + KEY_CLEAR_AGAIN = 0xA2, // Disabled (Ubuntu) + KEY_CRSEL_PROPS = 0xA3, // Disabled (Ubuntu) + KEY_EXSEL = 0xA4, // Disabled (Ubuntu) + + KEY_PAD_00 = 0xB0, // Disabled (Ubuntu) + KEY_PAD_000 = 0xB1, // Disabled (Ubuntu) + KEY_THOUSANDS_SEPARATOR = 0xB2, // Disabled (Ubuntu) + KEY_DECIMAL_SEPARATOR = 0xB3, // Disabled (Ubuntu) + KEY_CURRENCY_UNIT = 0xB4, // Disabled (Ubuntu) + KEY_CURRENCY_SUB_UNIT = 0xB5, // Disabled (Ubuntu) + KEYPAD_LEFT_BRACE = 0xB6, // ( + KEYPAD_RIGHT_BRACE = 0xB7, // ) + KEYPAD_LEFT_CURLY_BRACE = 0xB8, // Disabled (Ubuntu) + KEYPAD_RIGHT_CURLY_BRACE = 0xB9, // Disabled (Ubuntu) + KEYPAD_TAB = 0xBA, // Disabled (Ubuntu) + KEYPAD_BACKSPACE = 0xBB, // Disabled (Ubuntu) + KEYPAD_A = 0xBC, // Disabled (Ubuntu) + KEYPAD_B = 0xBD, // Disabled (Ubuntu) + KEYPAD_C = 0xBE, // Disabled (Ubuntu) + KEYPAD_D = 0xBF, // Disabled (Ubuntu) + KEYPAD_E = 0xC0, // Disabled (Ubuntu) + KEYPAD_F = 0xC1, // Disabled (Ubuntu) + KEYPAD_XOR = 0xC2, // Disabled (Ubuntu) + KEYPAD_CARET = 0xC3, // Disabled (Ubuntu) + KEYPAD_PERCENT = 0xC4, // Disabled (Ubuntu) + KEYPAD_LESS_THAN = 0xC5, // Disabled (Ubuntu) + KEYPAD_GREATER_THAN = 0xC6, // Disabled (Ubuntu) + KEYPAD_AMPERSAND = 0xC7, // Disabled (Ubuntu) + KEYPAD_DOUBLEAMPERSAND = 0xC8, // Disabled (Ubuntu) + KEYPAD_PIPE = 0xC9, // Disabled (Ubuntu) + KEYPAD_DOUBLEPIPE = 0xCA, // Disabled (Ubuntu) + KEYPAD_COLON = 0xCB, // Disabled (Ubuntu) + KEYPAD_POUND_SIGN = 0xCC, // Disabled (Ubuntu) + KEYPAD_SPACE = 0xCD, // Disabled (Ubuntu) + KEYPAD_AT_SIGN = 0xCE, // Disabled (Ubuntu) + KEYPAD_EXCLAMATION_POINT = 0xCF, // Disabled (Ubuntu) + KEYPAD_MEMORY_STORE = 0xD0, // Disabled (Ubuntu) + KEYPAD_MEMORY_RECALL = 0xD1, // Disabled (Ubuntu) + KEYPAD_MEMORY_CLEAR = 0xD2, // Disabled (Ubuntu) + KEYPAD_MEMORY_ADD = 0xD3, // Disabled (Ubuntu) + KEYPAD_MEMORY_SUBTRACT = 0xD4, // Disabled (Ubuntu) + KEYPAD_MEMORY_MULTIPLY = 0xD5, // Disabled (Ubuntu) + KEYPAD_MEMORY_DIVIDE = 0xD6, // Disabled (Ubuntu) + KEYPAD_PLUS_MINUS = 0xD7, // Disabled (Ubuntu) + KEYPAD_CLEAR = 0xD8, // Delete (Ubuntu) + KEYPAD_CLEAR_ENTRY = 0xD9, // Disabled (Ubuntu) + KEYPAD_BINARY = 0xDA, // Disabled (Ubuntu) + KEYPAD_OCTAL = 0xDB, // Disabled (Ubuntu) + KEYPAD_DECIMAL = 0xDC, // Disabled (Ubuntu) + KEYPAD_HEXADECIMAL = 0xDD, // Disabled (Ubuntu) + + KEY_LEFT_CTRL = 0xE0, + KEY_LEFT_SHIFT = 0xE1, + KEY_LEFT_ALT = 0xE2, + KEY_LEFT_GUI = 0xE3, + KEY_LEFT_WINDOWS = 0xE3, // Alias + KEY_RIGHT_CTRL = 0xE4, + KEY_RIGHT_SHIFT = 0xE5, + KEY_RIGHT_ALT = 0xE6, + KEY_RIGHT_GUI = 0xE7, + KEY_RIGHT_WINDOWS = 0xE7, // Alias + + // Keyboard HID mappings + + // Reserved 0xA5-AF + HID_KEYPAD_00 = 0xB0, + HID_KEYPAD_000 = 0xB1, + HID_THOUSANDS_SEPARATOR = 0xB2, + HID_DECIMAL_SEPARATOR = 0xB3, + HID_CURRENCY_UNIT = 0xB4, + HID_CURRENCY_SUBUNIT = 0xB5, + HID_KEYPAD_LEFT_PAREN = 0xB6, + HID_KEYPAD_RIGHT_PAREN = 0xB7, + HID_KEYPAD_LEFT_CURLY_BRACE = 0xB8, + HID_KEYPAD_RIGHT_CURLY_BRACE = 0xB9, + HID_KEYPAD_TAB = 0xBA, + HID_KEYPAD_BACKSPACE = 0xBB, + HID_KEYPAD_A = 0xBC, + HID_KEYPAD_B = 0xBD, + HID_KEYPAD_C = 0xBE, + HID_KEYPAD_D = 0xBF, + HID_KEYPAD_E = 0xC0, + HID_KEYPAD_F = 0xC1, + HID_KEYPAD_XOR = 0xC2, + HID_KEYPAD_CARAT = 0xC3, + HID_KEYPAD_PERCENT = 0xC4, + HID_KEYPAD_LESS_THAN = 0xC5, + HID_KEYPAD_GREATER_THAN = 0xC6, + HID_KEYPAD_AMPERSAND = 0xC7, + HID_KEYPAD_DOUBLEAMPERSAND = 0xC8, + HID_KEYPAD_PIPE = 0xC9, + HID_KEYPAD_DOUBLEPIPE = 0xCA, + HID_KEYPAD_COLON = 0xCB, + HID_KEYPAD_POUND_SIGN = 0xCC, + HID_KEYPAD_SPACE = 0xCD, + HID_KEYPAD_AT_SIGN = 0xCE, + HID_KEYPAD_EXCLAMATION_POINT = 0xCF, + HID_KEYPAD_MEMORY_STORE = 0xD0, + HID_KEYPAD_MEMORY_RECALL = 0xD1, + HID_KEYPAD_MEMORY_CLEAR = 0xD2, + HID_KEYPAD_MEMORY_ADD = 0xD3, + HID_KEYPAD_MEMORY_SUBTRACT = 0xD4, + HID_KEYPAD_MEMORY_MULTIPLY = 0xD5, + HID_KEYPAD_MEMORY_DIVIDE = 0xD6, + HID_KEYPAD_PLUS_SLASH_MINUS = 0xD7, + HID_KEYPAD_CLEAR = 0xD8, + HID_KEYPAD_CLEAR_ENTRY = 0xD9, + HID_KEYPAD_BINARY = 0xDA, + HID_KEYPAD_OCTAL = 0xDB, + HID_KEYPAD_DECIMAL = 0xDC, + HID_KEYPAD_HEXADECIMAL = 0xDD, + + // 0xDE-0xDF - RESERVED + HID_KEYBOARD_LEFT_CONTROL = 0xE0, + HID_KEYBOARD_LEFT_SHIFT = 0xE1, + HID_KEYBOARD_LEFT_ALT = 0xE2, + HID_KEYBOARD_LEFT_GUI = 0xE3, + HID_KEYBOARD_RIGHT_CONTROL = 0xE4, + HID_KEYBOARD_RIGHT_SHIFT = 0xE5, + HID_KEYBOARD_RIGHT_ALT = 0xE6, + HID_KEYBOARD_RIGHT_GUI = 0xE7, +}; + + + +static const uint16_t _asciimap[] PROGMEM = +{ + KEY_RESERVED, // NUL + KEY_RESERVED, // SOH + KEY_RESERVED, // STX + KEY_RESERVED, // ETX + KEY_RESERVED, // EOT + KEY_RESERVED, // ENQ + KEY_RESERVED, // ACK + KEY_RESERVED, // BEL + KEY_BACKSPACE, // BS Backspace + KEY_TAB, // TAB Tab + KEY_ENTER, // LF Enter + KEY_RESERVED, // VT + KEY_RESERVED, // FF + KEY_RESERVED, // CR + KEY_RESERVED, // SO + KEY_RESERVED, // SI + KEY_RESERVED, // DEL + KEY_RESERVED, // DC1 + KEY_RESERVED, // DC2 + KEY_RESERVED, // DC3 + KEY_RESERVED, // DC4 + KEY_RESERVED, // NAK + KEY_RESERVED, // SYN + KEY_RESERVED, // ETB + KEY_RESERVED, // CAN + KEY_RESERVED, // EM + KEY_RESERVED, // SUB + KEY_RESERVED, // ESC + KEY_RESERVED, // FS + KEY_RESERVED, // GS + KEY_RESERVED, // RS + KEY_RESERVED, // US + + KEY_SPACE, // ' ' Space + KEY_1|MOD_LEFT_SHIFT, // ! + KEY_2|MOD_LEFT_SHIFT, // " + KEY_HASHTAG, // # + KEY_4|MOD_LEFT_SHIFT, // $ + KEY_5|MOD_LEFT_SHIFT, // % + KEY_6|MOD_LEFT_SHIFT, // & + KEY_HASHTAG|MOD_LEFT_SHIFT, // ' + KEY_8|MOD_LEFT_SHIFT, // ( + KEY_9|MOD_LEFT_SHIFT, // ) + KEY_PLUS|MOD_LEFT_SHIFT, // * + KEY_PLUS, // + + KEY_COMMA, // , + KEY_MINUS, // - + KEY_PERIOD, // . + KEY_7|MOD_LEFT_SHIFT, // / + KEY_0, // 0 + KEY_1, // 1 + KEY_2, // 2 + KEY_3, // 3 + KEY_4, // 4 + KEY_5, // 5 + KEY_6, // 6 + KEY_7, // 7 + KEY_8, // 8 + KEY_9, // 9 + KEY_PERIOD|MOD_LEFT_SHIFT, // : + KEY_COMMA|MOD_LEFT_SHIFT, // ; + KEY_SMALLER, // < + KEY_0|MOD_LEFT_SHIFT, // = + KEY_SMALLER|MOD_LEFT_SHIFT, // > + KEY_SZ|MOD_LEFT_SHIFT, // ? + KEY_Q|MOD_RIGHT_ALT, // @ + KEY_A|MOD_LEFT_SHIFT, // A + KEY_B|MOD_LEFT_SHIFT, // B + KEY_C|MOD_LEFT_SHIFT, // C + KEY_D|MOD_LEFT_SHIFT, // D + KEY_E|MOD_LEFT_SHIFT, // E + KEY_F|MOD_LEFT_SHIFT, // F + KEY_G|MOD_LEFT_SHIFT, // G + KEY_H|MOD_LEFT_SHIFT, // H + KEY_I|MOD_LEFT_SHIFT, // I + KEY_J|MOD_LEFT_SHIFT, // J + KEY_K|MOD_LEFT_SHIFT, // K + KEY_L|MOD_LEFT_SHIFT, // L + KEY_M|MOD_LEFT_SHIFT, // M + KEY_N|MOD_LEFT_SHIFT, // N + KEY_O|MOD_LEFT_SHIFT, // O + KEY_P|MOD_LEFT_SHIFT, // P + KEY_Q|MOD_LEFT_SHIFT, // Q + KEY_R|MOD_LEFT_SHIFT, // R + KEY_S|MOD_LEFT_SHIFT, // S + KEY_T|MOD_LEFT_SHIFT, // T + KEY_U|MOD_LEFT_SHIFT, // U + KEY_V|MOD_LEFT_SHIFT, // V + KEY_W|MOD_LEFT_SHIFT, // W + KEY_X|MOD_LEFT_SHIFT, // X + KEY_Y|MOD_LEFT_SHIFT, // Y + KEY_Z|MOD_LEFT_SHIFT, // Z + KEY_8|MOD_RIGHT_ALT, // [ + KEY_SZ|MOD_RIGHT_ALT, // bslash + KEY_9|MOD_RIGHT_ALT, // ] + KEY_6|MOD_LEFT_SHIFT, // ^ + KEY_MINUS|MOD_LEFT_SHIFT, // _ + KEY_ACCENT|MOD_LEFT_SHIFT, // ` + KEY_A, // a + KEY_B, // b + KEY_C, // c + KEY_D, // d + KEY_E, // e + KEY_F, // f + KEY_G, // g + KEY_H, // h + KEY_I, // i + KEY_J, // j + KEY_K, // k + KEY_L, // l + KEY_M, // m + KEY_N, // n + KEY_O, // o + KEY_P, // p + KEY_Q, // q + KEY_R, // r + KEY_S, // s + KEY_T, // t + KEY_U, // u + KEY_V, // v + KEY_W, // w + KEY_X, // x + KEY_Y, // y + KEY_Z, // z + KEY_7|MOD_RIGHT_ALT, // { + KEY_SMALLER|MOD_RIGHT_ALT, // | + KEY_0|MOD_RIGHT_ALT, // } + KEY_PLUS|MOD_RIGHT_ALT, // ~ + KEY_RESERVED // DEL +}; diff --git a/src/KeyboardLayouts/ImprovedKeylayoutsUS.h b/src/KeyboardLayouts/ImprovedKeylayoutsUS.h new file mode 100644 index 0000000..4f87b30 --- /dev/null +++ b/src/KeyboardLayouts/ImprovedKeylayoutsUS.h @@ -0,0 +1,626 @@ +/* +Copyright (c) 2014-2015 NicoHood +See the readme for credit to other people. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +// Include guard +#pragma once + +#include "ImprovedKeylayouts.h" + +// Hut1_12v2.pdf + +enum KeyboardKeycode : uint8_t { + KEY_RESERVED = 0, + KEY_ERROR_ROLLOVER = 1, + KEY_POST_FAIL = 2, + KEY_ERROR_UNDEFINED = 3, + KEY_A = 4, + KEY_B = 5, + KEY_C = 6, + KEY_D = 7, + KEY_E = 8, + KEY_F = 9, + KEY_G = 10, + KEY_H = 11, + KEY_I = 12, + KEY_J = 13, + KEY_K = 14, + KEY_L = 15, + KEY_M = 16, + KEY_N = 17, + KEY_O = 18, + KEY_P = 19, + KEY_Q = 20, + KEY_R = 21, + KEY_S = 22, + KEY_T = 23, + KEY_U = 24, + KEY_V = 25, + KEY_W = 26, + KEY_X = 27, + KEY_Y = 28, + KEY_Z = 29, + KEY_1 = 30, + KEY_2 = 31, + KEY_3 = 32, + KEY_4 = 33, + KEY_5 = 34, + KEY_6 = 35, + KEY_7 = 36, + KEY_8 = 37, + KEY_9 = 38, + KEY_0 = 39, + KEY_ENTER = 40, + KEY_RETURN = 40, // Alias + KEY_ESC = 41, + KEY_BACKSPACE = 42, + KEY_TAB = 43, + KEY_SPACE = 44, + KEY_MINUS = 45, + KEY_EQUAL = 46, + KEY_LEFT_BRACE = 47, + KEY_RIGHT_BRACE = 48, + KEY_BACKSLASH = 49, + KEY_NON_US_NUM = 50, + KEY_SEMICOLON = 51, + KEY_QUOTE = 52, + KEY_TILDE = 53, + KEY_COMMA = 54, + KEY_PERIOD = 55, + KEY_SLASH = 56, + KEY_CAPS_LOCK = 0x39, + KEY_F1 = 0x3A, + KEY_F2 = 0x3B, + KEY_F3 = 0x3C, + KEY_F4 = 0x3D, + KEY_F5 = 0x3E, + KEY_F6 = 0x3F, + KEY_F7 = 0x40, + KEY_F8 = 0x41, + KEY_F9 = 0x42, + KEY_F10 = 0x43, + KEY_F11 = 0x44, + KEY_F12 = 0x45, + KEY_PRINT = 0x46, + KEY_PRINTSCREEN = 0x46, // Alias + KEY_SCROLL_LOCK = 0x47, + KEY_PAUSE = 0x48, + KEY_INSERT = 0x49, + KEY_HOME = 0x4A, + KEY_PAGE_UP = 0x4B, + KEY_DELETE = 0x4C, + KEY_END = 0x4D, + KEY_PAGE_DOWN = 0x4E, + KEY_RIGHT_ARROW = 0x4F, + KEY_LEFT_ARROW = 0x50, + KEY_DOWN_ARROW = 0x51, + KEY_UP_ARROW = 0x52, + KEY_RIGHT = 0x4F, // Alias + KEY_LEFT = 0x50, // Alias + KEY_DOWN = 0x51, // Alias + KEY_UP = 0x52, // Alias + KEY_NUM_LOCK = 0x53, + KEYPAD_DIVIDE = 0x54, + KEYPAD_MULTIPLY = 0x55, + KEYPAD_SUBTRACT = 0x56, + KEYPAD_ADD = 0x57, + KEYPAD_ENTER = 0x58, + KEYPAD_1 = 0x59, + KEYPAD_2 = 0x5A, + KEYPAD_3 = 0x5B, + KEYPAD_4 = 0x5C, + KEYPAD_5 = 0x5D, + KEYPAD_6 = 0x5E, + KEYPAD_7 = 0x5F, + KEYPAD_8 = 0x60, + KEYPAD_9 = 0x61, + KEYPAD_0 = 0x62, + KEYPAD_DOT = 0x63, + KEY_NON_US = 0x64, + KEY_APPLICATION = 0x65, // Context menu/right click + KEY_MENU = 0x65, // Alias + + // Most of the following keys will only work with Linux or not at all. + // F13+ keys are mostly used for laptop functions like ECO key. + KEY_POWER = 0x66, // PowerOff (Ubuntu) + KEY_PAD_EQUALS = 0x67, // Dont confuse with KEYPAD_EQUAL_SIGN + KEY_F13 = 0x68, // Tools (Ubunutu) + KEY_F14 = 0x69, // Launch5 (Ubuntu) + KEY_F15 = 0x6A, // Launch6 (Ubuntu) + KEY_F16 = 0x6B, // Launch7 (Ubuntu) + KEY_F17 = 0x6C, // Launch8 (Ubuntu) + KEY_F18 = 0x6D, // Launch9 (Ubuntu) + KEY_F19 = 0x6E, // Disabled (Ubuntu) + KEY_F20 = 0x6F, // AudioMicMute (Ubuntu) + KEY_F21 = 0x70, // Touchpad toggle (Ubuntu) + KEY_F22 = 0x71, // TouchpadOn (Ubuntu) + KEY_F23 = 0x72, // TouchpadOff Ubuntu) + KEY_F24 = 0x73, // Disabled (Ubuntu) + KEY_EXECUTE = 0x74, // Open (Ubuntu) + KEY_HELP = 0x75, // Help (Ubuntu) + KEY_MENU2 = 0x76, // Disabled (Ubuntu) + KEY_SELECT = 0x77, // Disabled (Ubuntu) + KEY_STOP = 0x78, // Cancel (Ubuntu) + KEY_AGAIN = 0x79, // Redo (Ubuntu) + KEY_UNDO = 0x7A, // Undo (Ubuntu) + KEY_CUT = 0x7B, // Cut (Ubuntu) + KEY_COPY = 0x7C, // Copy (Ubuntu) + KEY_PASTE = 0x7D, // Paste (Ubuntu) + KEY_FIND = 0x7E, // Find (Ubuntu) + KEY_MUTE = 0x7F, + KEY_VOLUME_MUTE = 0x7F, // Alias + KEY_VOLUME_UP = 0x80, + KEY_VOLUME_DOWN = 0x81, + KEY_LOCKING_CAPS_LOCK = 0x82, // Disabled (Ubuntu) + KEY_LOCKING_NUM_LOCK = 0x83, // Disabled (Ubuntu) + KEY_LOCKING_SCROLL_LOCK = 0x84, // Disabled (Ubuntu) + KEYPAD_COMMA = 0x85, // . + KEYPAD_EQUAL_SIGN = 0x86, // Disabled (Ubuntu), Dont confuse with KEYPAD_EQUAL + KEY_INTERNATIONAL1 = 0x87, // Disabled (Ubuntu) + KEY_INTERNATIONAL2 = 0x88, // Hiragana Katakana (Ubuntu) + KEY_INTERNATIONAL3 = 0x89, // Disabled (Ubuntu) + KEY_INTERNATIONAL4 = 0x8A, // Henkan (Ubuntu) + KEY_INTERNATIONAL5 = 0x8B, // Muhenkan (Ubuntu) + KEY_INTERNATIONAL6 = 0x8C, // Disabled (Ubuntu) + KEY_INTERNATIONAL7 = 0x8D, // Disabled (Ubuntu) + KEY_INTERNATIONAL8 = 0x8E, // Disabled (Ubuntu) + KEY_INTERNATIONAL9 = 0x8F, // Disabled (Ubuntu) + KEY_LANG1 = 0x90, // Disabled (Ubuntu) + KEY_LANG2 = 0x91, // Disabled (Ubuntu) + KEY_LANG3 = 0x92, // Katana (Ubuntu) + KEY_LANG4 = 0x93, // Hiragana (Ubuntu) + KEY_LANG5 = 0x94, // Disabled (Ubuntu) + KEY_LANG6 = 0x95, // Disabled (Ubuntu) + KEY_LANG7 = 0x96, // Disabled (Ubuntu) + KEY_LANG8 = 0x97, // Disabled (Ubuntu) + KEY_LANG9 = 0x98, // Disabled (Ubuntu) + KEY_ALTERNATE_ERASE = 0x99, // Disabled (Ubuntu) + KEY_SYSREQ_ATTENTION = 0x9A, // Disabled (Ubuntu) + KEY_CANCEL = 0x9B, // Disabled (Ubuntu) + KEY_CLEAR = 0x9C, // Delete (Ubuntu) + KEY_PRIOR = 0x9D, // Disabled (Ubuntu) + KEY_RETURN2 = 0x9E, // Disabled (Ubuntu), Do not confuse this with KEY_ENTER + KEY_SEPARATOR = 0x9F, // Disabled (Ubuntu) + KEY_OUT = 0xA0, // Disabled (Ubuntu) + KEY_OPER = 0xA1, // Disabled (Ubuntu) + KEY_CLEAR_AGAIN = 0xA2, // Disabled (Ubuntu) + KEY_CRSEL_PROPS = 0xA3, // Disabled (Ubuntu) + KEY_EXSEL = 0xA4, // Disabled (Ubuntu) + + KEY_PAD_00 = 0xB0, // Disabled (Ubuntu) + KEY_PAD_000 = 0xB1, // Disabled (Ubuntu) + KEY_THOUSANDS_SEPARATOR = 0xB2, // Disabled (Ubuntu) + KEY_DECIMAL_SEPARATOR = 0xB3, // Disabled (Ubuntu) + KEY_CURRENCY_UNIT = 0xB4, // Disabled (Ubuntu) + KEY_CURRENCY_SUB_UNIT = 0xB5, // Disabled (Ubuntu) + KEYPAD_LEFT_BRACE = 0xB6, // ( + KEYPAD_RIGHT_BRACE = 0xB7, // ) + KEYPAD_LEFT_CURLY_BRACE = 0xB8, // Disabled (Ubuntu) + KEYPAD_RIGHT_CURLY_BRACE = 0xB9, // Disabled (Ubuntu) + KEYPAD_TAB = 0xBA, // Disabled (Ubuntu) + KEYPAD_BACKSPACE = 0xBB, // Disabled (Ubuntu) + KEYPAD_A = 0xBC, // Disabled (Ubuntu) + KEYPAD_B = 0xBD, // Disabled (Ubuntu) + KEYPAD_C = 0xBE, // Disabled (Ubuntu) + KEYPAD_D = 0xBF, // Disabled (Ubuntu) + KEYPAD_E = 0xC0, // Disabled (Ubuntu) + KEYPAD_F = 0xC1, // Disabled (Ubuntu) + KEYPAD_XOR = 0xC2, // Disabled (Ubuntu) + KEYPAD_CARET = 0xC3, // Disabled (Ubuntu) + KEYPAD_PERCENT = 0xC4, // Disabled (Ubuntu) + KEYPAD_LESS_THAN = 0xC5, // Disabled (Ubuntu) + KEYPAD_GREATER_THAN = 0xC6, // Disabled (Ubuntu) + KEYPAD_AMPERSAND = 0xC7, // Disabled (Ubuntu) + KEYPAD_DOUBLEAMPERSAND = 0xC8, // Disabled (Ubuntu) + KEYPAD_PIPE = 0xC9, // Disabled (Ubuntu) + KEYPAD_DOUBLEPIPE = 0xCA, // Disabled (Ubuntu) + KEYPAD_COLON = 0xCB, // Disabled (Ubuntu) + KEYPAD_POUND_SIGN = 0xCC, // Disabled (Ubuntu) + KEYPAD_SPACE = 0xCD, // Disabled (Ubuntu) + KEYPAD_AT_SIGN = 0xCE, // Disabled (Ubuntu) + KEYPAD_EXCLAMATION_POINT = 0xCF, // Disabled (Ubuntu) + KEYPAD_MEMORY_STORE = 0xD0, // Disabled (Ubuntu) + KEYPAD_MEMORY_RECALL = 0xD1, // Disabled (Ubuntu) + KEYPAD_MEMORY_CLEAR = 0xD2, // Disabled (Ubuntu) + KEYPAD_MEMORY_ADD = 0xD3, // Disabled (Ubuntu) + KEYPAD_MEMORY_SUBTRACT = 0xD4, // Disabled (Ubuntu) + KEYPAD_MEMORY_MULTIPLY = 0xD5, // Disabled (Ubuntu) + KEYPAD_MEMORY_DIVIDE = 0xD6, // Disabled (Ubuntu) + KEYPAD_PLUS_MINUS = 0xD7, // Disabled (Ubuntu) + KEYPAD_CLEAR = 0xD8, // Delete (Ubuntu) + KEYPAD_CLEAR_ENTRY = 0xD9, // Disabled (Ubuntu) + KEYPAD_BINARY = 0xDA, // Disabled (Ubuntu) + KEYPAD_OCTAL = 0xDB, // Disabled (Ubuntu) + KEYPAD_DECIMAL = 0xDC, // Disabled (Ubuntu) + KEYPAD_HEXADECIMAL = 0xDD, // Disabled (Ubuntu) + + KEY_LEFT_CTRL = 0xE0, + KEY_LEFT_SHIFT = 0xE1, + KEY_LEFT_ALT = 0xE2, + KEY_LEFT_GUI = 0xE3, + KEY_LEFT_WINDOWS = 0xE3, // Alias + KEY_RIGHT_CTRL = 0xE4, + KEY_RIGHT_SHIFT = 0xE5, + KEY_RIGHT_ALT = 0xE6, + KEY_RIGHT_GUI = 0xE7, + KEY_RIGHT_WINDOWS = 0xE7, // Alias + + // Keyboard HID mappings + + // Reserved (no_event_indicated) + HID_KEYBOARD_ERROR_ROLLOVER = 0x01, + HID_KEYBOARD_POST_FAIL = 0x02, + HID_KEYBOARD_ERROR_UNDEFINED = 0x03, + HID_KEYBOARD_A_AND_A = 0x04, + HID_KEYBOARD_B_AND_B = 0x05, + HID_KEYBOARD_C_AND_C = 0x06, + HID_KEYBOARD_D_AND_D = 0x07, + HID_KEYBOARD_E_AND_E = 0x08, + HID_KEYBOARD_F_AND_F = 0x09, + HID_KEYBOARD_G_AND_G = 0x0A, + HID_KEYBOARD_H_AND_H = 0x0B, + HID_KEYBOARD_I_AND_I = 0x0C, + HID_KEYBOARD_J_AND_J = 0x0D, + HID_KEYBOARD_K_AND_K = 0x0E, + HID_KEYBOARD_L_AND_L = 0x0F, + HID_KEYBOARD_M_AND_M = 0x10, + HID_KEYBOARD_N_AND_N = 0x11, + HID_KEYBOARD_O_AND_O = 0x12, + HID_KEYBOARD_P_AND_P = 0x13, + HID_KEYBOARD_Q_AND_Q = 0x14, + HID_KEYBOARD_R_AND_R = 0x15, + HID_KEYBOARD_S_AND_S = 0x16, + HID_KEYBOARD_T_AND_T = 0x17, + HID_KEYBOARD_U_AND_U = 0x18, + HID_KEYBOARD_V_AND_V = 0x19, + HID_KEYBOARD_W_AND_W = 0x1A, + HID_KEYBOARD_X_AND_X = 0x1B, + HID_KEYBOARD_Y_AND_Y = 0x1C, + HID_KEYBOARD_Z_AND_Z = 0x1D, + HID_KEYBOARD_1_AND_EXCLAMATION_POINT = 0x1E, + HID_KEYBOARD_2_AND_AT = 0x1F, + HID_KEYBOARD_3_AND_POUND = 0x20, + HID_KEYBOARD_4_AND_DOLLAR = 0x21, + HID_KEYBOARD_5_AND_PERCENT = 0x22, + HID_KEYBOARD_6_AND_CARAT = 0x23, + HID_KEYBOARD_7_AND_AMPERSAND = 0x24, + HID_KEYBOARD_8_AND_ASTERISK = 0x25, + HID_KEYBOARD_9_AND_LEFT_PAREN = 0x26, + HID_KEYBOARD_0_AND_RIGHT_PAREN = 0x27, + HID_KEYBOARD_ENTER = 0x28, // (MARKED AS ENTER_SLASH_RETURN) + HID_KEYBOARD_ESCAPE = 0x29, + HID_KEYBOARD_DELETE = 0x2A, // (BACKSPACE) + HID_KEYBOARD_TAB = 0x2B, + HID_KEYBOARD_SPACEBAR = 0x2C, + HID_KEYBOARD_MINUS_AND_UNDERSCORE = 0x2D, // (UNDERSCORE) + HID_KEYBOARD_EQUALS_AND_PLUS = 0x2E, + HID_KEYBOARD_LEFT_BRACKET_AND_LEFT_CURLY_BRACE = 0x2F, + HID_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_CURLY_BRACE = 0x30, + HID_KEYBOARD_BACKSLASH_AND_PIPE = 0x31, + HID_KEYBOARD_NON_US_POUND_AND_TILDE = 0x32, + HID_KEYBOARD_SEMICOLON_AND_COLON = 0x33, + HID_KEYBOARD_QUOTE_AND_DOUBLEQUOTE = 0x34, + HID_KEYBOARD_GRAVE_ACCENT_AND_TILDE = 0x35, + HID_KEYBOARD_COMMA_AND_LESS_THAN = 0x36, + HID_KEYBOARD_PERIOD_AND_GREATER_THAN = 0x37, + HID_KEYBOARD_SLASH_AND_QUESTION_MARK = 0x38, + HID_KEYBOARD_CAPS_LOCK = 0x39, + HID_KEYBOARD_F1 = 0x3A, + HID_KEYBOARD_F2 = 0x3B, + HID_KEYBOARD_F3 = 0x3C, + HID_KEYBOARD_F4 = 0x3D, + HID_KEYBOARD_F5 = 0x3E, + HID_KEYBOARD_F6 = 0x3F, + HID_KEYBOARD_F7 = 0x40, + HID_KEYBOARD_F8 = 0x41, + HID_KEYBOARD_F9 = 0x42, + HID_KEYBOARD_F10 = 0x43, + HID_KEYBOARD_F11 = 0x44, + HID_KEYBOARD_F12 = 0x45, + HID_KEYBOARD_PRINTSCREEN = 0x46, + HID_KEYBOARD_SCROLL_LOCK = 0x47, + HID_KEYBOARD_PAUSE = 0x48, + HID_KEYBOARD_INSERT = 0x49, + HID_KEYBOARD_HOME = 0x4A, + HID_KEYBOARD_PAGE_UP = 0x4B, + HID_KEYBOARD_DELETE_FORWARD = 0x4C, + HID_KEYBOARD_END = 0x4D, + HID_KEYBOARD_PAGE_DOWN = 0x4E, + HID_KEYBOARD_RIGHTARROW = 0x4F, + HID_KEYBOARD_LEFTARROW = 0x50, + HID_KEYBOARD_DOWNARROW = 0x51, + HID_KEYBOARD_UPARROW = 0x52, + HID_KEYPAD_NUM_LOCK_AND_CLEAR = 0x53, + HID_KEYPAD_DIVIDE = 0x54, + HID_KEYPAD_MULTIPLY = 0x55, + HID_KEYPAD_SUBTRACT = 0x56, + HID_KEYPAD_ADD = 0x57, + HID_KEYPAD_ENTER = 0x58, + HID_KEYPAD_1_AND_END = 0x59, + HID_KEYPAD_2_AND_DOWN_ARROW = 0x5A, + HID_KEYPAD_3_AND_PAGE_DOWN = 0x5B, + HID_KEYPAD_4_AND_LEFT_ARROW = 0x5C, + HID_KEYPAD_5 = 0x5D, + HID_KEYPAD_6_AND_RIGHT_ARROW = 0x5E, + HID_KEYPAD_7_AND_HOME = 0x5F, + HID_KEYPAD_8_AND_UP_ARROW = 0x60, + HID_KEYPAD_9_AND_PAGE_UP = 0x61, + HID_KEYPAD_0_AND_INSERT = 0x62, + HID_KEYPAD_PERIOD_AND_DELETE = 0x63, + HID_KEYBOARD_NON_US_BACKSLASH_AND_PIPE = 0x64, + HID_KEYBOARD_APPLICATION = 0x65, + HID_KEYBOARD_POWER = 0x66, + HID_KEYPAD_EQUALS = 0x67, + HID_KEYBOARD_F13 = 0x68, + HID_KEYBOARD_F14 = 0x69, + HID_KEYBOARD_F15 = 0x6A, + HID_KEYBOARD_F16 = 0x6B, + HID_KEYBOARD_F17 = 0x6C, + HID_KEYBOARD_F18 = 0x6D, + HID_KEYBOARD_F19 = 0x6E, + HID_KEYBOARD_F20 = 0x6F, + HID_KEYBOARD_F21 = 0x70, + HID_KEYBOARD_F22 = 0x71, + HID_KEYBOARD_F23 = 0x72, + HID_KEYBOARD_F24 = 0x73, + HID_KEYBOARD_EXECUTE = 0x74, + HID_KEYBOARD_HELP = 0x75, + HID_KEYBOARD_MENU = 0x76, + HID_KEYBOARD_SELECT = 0x77, + HID_KEYBOARD_STOP = 0x78, + HID_KEYBOARD_AGAIN = 0x79, + HID_KEYBOARD_UNDO = 0x7A, + HID_KEYBOARD_CUT = 0x7B, + HID_KEYBOARD_COPY = 0x7C, + HID_KEYBOARD_PASTE = 0x7D, + HID_KEYBOARD_FIND = 0x7E, + HID_KEYBOARD_MUTE = 0x7F, + HID_KEYBOARD_VOLUME_UP = 0x80, + HID_KEYBOARD_VOLUME_DOWN = 0x81, + HID_KEYBOARD_LOCKING_CAPS_LOCK = 0x82, + HID_KEYBOARD_LOCKING_NUM_LOCK = 0x83, + HID_KEYBOARD_LOCKING_SCROLL_LOCK = 0x84, + HID_KEYPAD_COMMA = 0x85, + HID_KEYPAD_EQUAL_SIGN = 0x86, + HID_KEYBOARD_INTERNATIONAL1 = 0x87, + HID_KEYBOARD_INTERNATIONAL2 = 0x88, + HID_KEYBOARD_INTERNATIONAL3 = 0x89, + HID_KEYBOARD_INTERNATIONAL4 = 0x8A, + HID_KEYBOARD_INTERNATIONAL5 = 0x8B, + HID_KEYBOARD_INTERNATIONAL6 = 0x8C, + HID_KEYBOARD_INTERNATIONAL7 = 0x8D, + HID_KEYBOARD_INTERNATIONAL8 = 0x8E, + HID_KEYBOARD_INTERNATIONAL9 = 0x8F, + HID_KEYBOARD_LANG1 = 0x90, + HID_KEYBOARD_LANG2 = 0x91, + HID_KEYBOARD_LANG3 = 0x92, + HID_KEYBOARD_LANG4 = 0x93, + HID_KEYBOARD_LANG5 = 0x94, + HID_KEYBOARD_LANG6 = 0x95, + HID_KEYBOARD_LANG7 = 0x96, + HID_KEYBOARD_LANG8 = 0x97, + HID_KEYBOARD_LANG9 = 0x98, + HID_KEYBOARD_ALTERNATE_ERASE = 0x99, + HID_KEYBOARD_SYSREQ_SLASH_ATTENTION = 0x9A, + HID_KEYBOARD_CANCEL = 0x9B, + HID_KEYBOARD_CLEAR = 0x9C, + HID_KEYBOARD_PRIOR = 0x9D, + HID_KEYBOARD_RETURN = 0x9E, + HID_KEYBOARD_SEPARATOR = 0x9F, + HID_KEYBOARD_OUT = 0xA0, + HID_KEYBOARD_OPER = 0xA1, + HID_KEYBOARD_CLEAR_SLASH_AGAIN = 0xA2, + HID_KEYBOARD_CRSEL_SLASH_PROPS = 0xA3, + HID_KEYBOARD_EXSEL = 0xA4, + // Reserved 0xA5-AF + HID_KEYPAD_00 = 0xB0, + HID_KEYPAD_000 = 0xB1, + HID_THOUSANDS_SEPARATOR = 0xB2, + HID_DECIMAL_SEPARATOR = 0xB3, + HID_CURRENCY_UNIT = 0xB4, + HID_CURRENCY_SUBUNIT = 0xB5, + HID_KEYPAD_LEFT_PAREN = 0xB6, + HID_KEYPAD_RIGHT_PAREN = 0xB7, + HID_KEYPAD_LEFT_CURLY_BRACE = 0xB8, + HID_KEYPAD_RIGHT_CURLY_BRACE = 0xB9, + HID_KEYPAD_TAB = 0xBA, + HID_KEYPAD_BACKSPACE = 0xBB, + HID_KEYPAD_A = 0xBC, + HID_KEYPAD_B = 0xBD, + HID_KEYPAD_C = 0xBE, + HID_KEYPAD_D = 0xBF, + HID_KEYPAD_E = 0xC0, + HID_KEYPAD_F = 0xC1, + HID_KEYPAD_XOR = 0xC2, + HID_KEYPAD_CARAT = 0xC3, + HID_KEYPAD_PERCENT = 0xC4, + HID_KEYPAD_LESS_THAN = 0xC5, + HID_KEYPAD_GREATER_THAN = 0xC6, + HID_KEYPAD_AMPERSAND = 0xC7, + HID_KEYPAD_DOUBLEAMPERSAND = 0xC8, + HID_KEYPAD_PIPE = 0xC9, + HID_KEYPAD_DOUBLEPIPE = 0xCA, + HID_KEYPAD_COLON = 0xCB, + HID_KEYPAD_POUND_SIGN = 0xCC, + HID_KEYPAD_SPACE = 0xCD, + HID_KEYPAD_AT_SIGN = 0xCE, + HID_KEYPAD_EXCLAMATION_POINT = 0xCF, + HID_KEYPAD_MEMORY_STORE = 0xD0, + HID_KEYPAD_MEMORY_RECALL = 0xD1, + HID_KEYPAD_MEMORY_CLEAR = 0xD2, + HID_KEYPAD_MEMORY_ADD = 0xD3, + HID_KEYPAD_MEMORY_SUBTRACT = 0xD4, + HID_KEYPAD_MEMORY_MULTIPLY = 0xD5, + HID_KEYPAD_MEMORY_DIVIDE = 0xD6, + HID_KEYPAD_PLUS_SLASH_MINUS = 0xD7, + HID_KEYPAD_CLEAR = 0xD8, + HID_KEYPAD_CLEAR_ENTRY = 0xD9, + HID_KEYPAD_BINARY = 0xDA, + HID_KEYPAD_OCTAL = 0xDB, + HID_KEYPAD_DECIMAL = 0xDC, + HID_KEYPAD_HEXADECIMAL = 0xDD, + + // 0xDE-0xDF - RESERVED + HID_KEYBOARD_LEFT_CONTROL = 0xE0, + HID_KEYBOARD_LEFT_SHIFT = 0xE1, + HID_KEYBOARD_LEFT_ALT = 0xE2, + HID_KEYBOARD_LEFT_GUI = 0xE3, + HID_KEYBOARD_RIGHT_CONTROL = 0xE4, + HID_KEYBOARD_RIGHT_SHIFT = 0xE5, + HID_KEYBOARD_RIGHT_ALT = 0xE6, + HID_KEYBOARD_RIGHT_GUI = 0xE7, +}; + + + +static const uint16_t _asciimap[] PROGMEM = +{ + KEY_RESERVED, // NUL + KEY_RESERVED, // SOH + KEY_RESERVED, // STX + KEY_RESERVED, // ETX + KEY_RESERVED, // EOT + KEY_RESERVED, // ENQ + KEY_RESERVED, // ACK + KEY_RESERVED, // BEL + KEY_BACKSPACE, // BS Backspace + KEY_TAB, // TAB Tab + KEY_ENTER, // LF Enter + KEY_RESERVED, // VT + KEY_RESERVED, // FF + KEY_RESERVED, // CR + KEY_RESERVED, // SO + KEY_RESERVED, // SI + KEY_RESERVED, // DEL + KEY_RESERVED, // DC1 + KEY_RESERVED, // DC2 + KEY_RESERVED, // DC3 + KEY_RESERVED, // DC4 + KEY_RESERVED, // NAK + KEY_RESERVED, // SYN + KEY_RESERVED, // ETB + KEY_RESERVED, // CAN + KEY_RESERVED, // EM + KEY_RESERVED, // SUB + KEY_RESERVED, // ESC + KEY_RESERVED, // FS + KEY_RESERVED, // GS + KEY_RESERVED, // RS + KEY_RESERVED, // US + + KEY_SPACE, // ' ' Space + KEY_1|MOD_LEFT_SHIFT, // ! + KEY_QUOTE|MOD_LEFT_SHIFT, // " + KEY_3|MOD_LEFT_SHIFT, // # + KEY_4|MOD_LEFT_SHIFT, // $ + KEY_5|MOD_LEFT_SHIFT, // % + KEY_7|MOD_LEFT_SHIFT, // & + KEY_QUOTE, // ' + KEY_9|MOD_LEFT_SHIFT, // ( + KEY_0|MOD_LEFT_SHIFT, // ) + KEY_8|MOD_LEFT_SHIFT, // * + KEY_EQUAL|MOD_LEFT_SHIFT, // + + KEY_COMMA, // , + KEY_MINUS, // - + KEY_PERIOD, // . + KEY_SLASH, // / + KEY_0, // 0 + KEY_1, // 1 + KEY_2, // 2 + KEY_3, // 3 + KEY_4, // 4 + KEY_5, // 5 + KEY_6, // 6 + KEY_7, // 7 + KEY_8, // 8 + KEY_9, // 9 + KEY_SEMICOLON|MOD_LEFT_SHIFT, // : + KEY_SEMICOLON, // ; + KEY_COMMA|MOD_LEFT_SHIFT, // < + KEY_EQUAL, // = + KEY_PERIOD|MOD_LEFT_SHIFT, // > + KEY_SLASH|MOD_LEFT_SHIFT, // ? + KEY_2|MOD_LEFT_SHIFT, // @ + KEY_A|MOD_LEFT_SHIFT, // A + KEY_B|MOD_LEFT_SHIFT, // B + KEY_C|MOD_LEFT_SHIFT, // C + KEY_D|MOD_LEFT_SHIFT, // D + KEY_E|MOD_LEFT_SHIFT, // E + KEY_F|MOD_LEFT_SHIFT, // F + KEY_G|MOD_LEFT_SHIFT, // G + KEY_H|MOD_LEFT_SHIFT, // H + KEY_I|MOD_LEFT_SHIFT, // I + KEY_J|MOD_LEFT_SHIFT, // J + KEY_K|MOD_LEFT_SHIFT, // K + KEY_L|MOD_LEFT_SHIFT, // L + KEY_M|MOD_LEFT_SHIFT, // M + KEY_N|MOD_LEFT_SHIFT, // N + KEY_O|MOD_LEFT_SHIFT, // O + KEY_P|MOD_LEFT_SHIFT, // P + KEY_Q|MOD_LEFT_SHIFT, // Q + KEY_R|MOD_LEFT_SHIFT, // R + KEY_S|MOD_LEFT_SHIFT, // S + KEY_T|MOD_LEFT_SHIFT, // T + KEY_U|MOD_LEFT_SHIFT, // U + KEY_V|MOD_LEFT_SHIFT, // V + KEY_W|MOD_LEFT_SHIFT, // W + KEY_X|MOD_LEFT_SHIFT, // X + KEY_Y|MOD_LEFT_SHIFT, // Y + KEY_Z|MOD_LEFT_SHIFT, // Z + KEY_LEFT_BRACE, // [ + KEY_BACKSLASH, // bslash + KEY_RIGHT_BRACE, // ] + KEY_6|MOD_LEFT_SHIFT, // ^ + KEY_MINUS|MOD_LEFT_SHIFT, // _ + KEY_TILDE, // ` + KEY_A, // a + KEY_B, // b + KEY_C, // c + KEY_D, // d + KEY_E, // e + KEY_F, // f + KEY_G, // g + KEY_H, // h + KEY_I, // i + KEY_J, // j + KEY_K, // k + KEY_L, // l + KEY_M, // m + KEY_N, // n + KEY_O, // o + KEY_P, // p + KEY_Q, // q + KEY_R, // r + KEY_S, // s + KEY_T, // t + KEY_U, // u + KEY_V, // v + KEY_W, // w + KEY_X, // x + KEY_Y, // y + KEY_Z, // z + KEY_LEFT_BRACE|MOD_LEFT_SHIFT, // { + KEY_BACKSLASH|MOD_LEFT_SHIFT, // | + KEY_RIGHT_BRACE|MOD_LEFT_SHIFT, // } + KEY_TILDE|MOD_LEFT_SHIFT, // ~ + KEY_RESERVED // DEL +}; From 1bf6501678505725adfa2a784a0611196eb25856 Mon Sep 17 00:00:00 2001 From: MRNIU Date: Wed, 25 Mar 2020 08:39:30 +0800 Subject: [PATCH 02/25] Update comments --- src/Keyboard.cpp | 3 +- src/Keyboard.h | 5 +- src/KeyboardLayouts/ImprovedKeylayouts.h | 600 ----------------------- 3 files changed, 4 insertions(+), 604 deletions(-) diff --git a/src/Keyboard.cpp b/src/Keyboard.cpp index dfe5074..be3a699 100644 --- a/src/Keyboard.cpp +++ b/src/Keyboard.cpp @@ -3,7 +3,8 @@ Copyright (c) 2015, Arduino LLC Original code (pre-library): Copyright (c) 2011, Peter Barrett - + Contributor: MRNIU + This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either diff --git a/src/Keyboard.h b/src/Keyboard.h index 0171fce..94f4bbd 100644 --- a/src/Keyboard.h +++ b/src/Keyboard.h @@ -3,7 +3,8 @@ Copyright (c) 2015, Arduino LLC Original code (pre-library): Copyright (c) 2011, Peter Barrett - + Contributor: MRNIU + This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either @@ -22,8 +23,6 @@ #ifndef KEYBOARD_h #define KEYBOARD_h -// #include "HID.h" - #if !defined(_USING_HID) #warning "Using legacy HID core (non pluggable)" diff --git a/src/KeyboardLayouts/ImprovedKeylayouts.h b/src/KeyboardLayouts/ImprovedKeylayouts.h index 4698164..31b053e 100644 --- a/src/KeyboardLayouts/ImprovedKeylayouts.h +++ b/src/KeyboardLayouts/ImprovedKeylayouts.h @@ -82,603 +82,3 @@ enum KeyboardLeds : uint8_t { #elif defined(LAYOUT_UNITED_KINGDOM) #elif defined(LAYOUT_US_INTERNATIONAL) #endif - -// Hut1_12v2.pdf -/* -enum KeyboardKeycode : uint8_t { - KEY_RESERVED = 0, - KEY_ERROR_ROLLOVER = 1, - KEY_POST_FAIL = 2, - KEY_ERROR_UNDEFINED = 3, - KEY_A = 4, - KEY_B = 5, - KEY_C = 6, - KEY_D = 7, - KEY_E = 8, - KEY_F = 9, - KEY_G = 10, - KEY_H = 11, - KEY_I = 12, - KEY_J = 13, - KEY_K = 14, - KEY_L = 15, - KEY_M = 16, - KEY_N = 17, - KEY_O = 18, - KEY_P = 19, - KEY_Q = 20, - KEY_R = 21, - KEY_S = 22, - KEY_T = 23, - KEY_U = 24, - KEY_V = 25, - KEY_W = 26, - KEY_X = 27, - KEY_Y = 28, - KEY_Z = 29, - KEY_1 = 30, - KEY_2 = 31, - KEY_3 = 32, - KEY_4 = 33, - KEY_5 = 34, - KEY_6 = 35, - KEY_7 = 36, - KEY_8 = 37, - KEY_9 = 38, - KEY_0 = 39, - KEY_ENTER = 40, - KEY_RETURN = 40, // Alias - KEY_ESC = 41, - KEY_BACKSPACE = 42, - KEY_TAB = 43, - KEY_SPACE = 44, - KEY_MINUS = 45, - KEY_EQUAL = 46, - KEY_LEFT_BRACE = 47, - KEY_RIGHT_BRACE = 48, - KEY_BACKSLASH = 49, - KEY_NON_US_NUM = 50, - KEY_SEMICOLON = 51, - KEY_QUOTE = 52, - KEY_TILDE = 53, - KEY_COMMA = 54, - KEY_PERIOD = 55, - KEY_SLASH = 56, - KEY_CAPS_LOCK = 0x39, - KEY_F1 = 0x3A, - KEY_F2 = 0x3B, - KEY_F3 = 0x3C, - KEY_F4 = 0x3D, - KEY_F5 = 0x3E, - KEY_F6 = 0x3F, - KEY_F7 = 0x40, - KEY_F8 = 0x41, - KEY_F9 = 0x42, - KEY_F10 = 0x43, - KEY_F11 = 0x44, - KEY_F12 = 0x45, - KEY_PRINT = 0x46, - KEY_PRINTSCREEN = 0x46, // Alias - KEY_SCROLL_LOCK = 0x47, - KEY_PAUSE = 0x48, - KEY_INSERT = 0x49, - KEY_HOME = 0x4A, - KEY_PAGE_UP = 0x4B, - KEY_DELETE = 0x4C, - KEY_END = 0x4D, - KEY_PAGE_DOWN = 0x4E, - KEY_RIGHT_ARROW = 0x4F, - KEY_LEFT_ARROW = 0x50, - KEY_DOWN_ARROW = 0x51, - KEY_UP_ARROW = 0x52, - KEY_RIGHT = 0x4F, // Alias - KEY_LEFT = 0x50, // Alias - KEY_DOWN = 0x51, // Alias - KEY_UP = 0x52, // Alias - KEY_NUM_LOCK = 0x53, - KEYPAD_DIVIDE = 0x54, - KEYPAD_MULTIPLY = 0x55, - KEYPAD_SUBTRACT = 0x56, - KEYPAD_ADD = 0x57, - KEYPAD_ENTER = 0x58, - KEYPAD_1 = 0x59, - KEYPAD_2 = 0x5A, - KEYPAD_3 = 0x5B, - KEYPAD_4 = 0x5C, - KEYPAD_5 = 0x5D, - KEYPAD_6 = 0x5E, - KEYPAD_7 = 0x5F, - KEYPAD_8 = 0x60, - KEYPAD_9 = 0x61, - KEYPAD_0 = 0x62, - KEYPAD_DOT = 0x63, - KEY_NON_US = 0x64, - KEY_APPLICATION = 0x65, // Context menu/right click - KEY_MENU = 0x65, // Alias - - // Most of the following keys will only work with Linux or not at all. - // F13+ keys are mostly used for laptop functions like ECO key. - KEY_POWER = 0x66, // PowerOff (Ubuntu) - KEY_PAD_EQUALS = 0x67, // Dont confuse with KEYPAD_EQUAL_SIGN - KEY_F13 = 0x68, // Tools (Ubunutu) - KEY_F14 = 0x69, // Launch5 (Ubuntu) - KEY_F15 = 0x6A, // Launch6 (Ubuntu) - KEY_F16 = 0x6B, // Launch7 (Ubuntu) - KEY_F17 = 0x6C, // Launch8 (Ubuntu) - KEY_F18 = 0x6D, // Launch9 (Ubuntu) - KEY_F19 = 0x6E, // Disabled (Ubuntu) - KEY_F20 = 0x6F, // AudioMicMute (Ubuntu) - KEY_F21 = 0x70, // Touchpad toggle (Ubuntu) - KEY_F22 = 0x71, // TouchpadOn (Ubuntu) - KEY_F23 = 0x72, // TouchpadOff Ubuntu) - KEY_F24 = 0x73, // Disabled (Ubuntu) - KEY_EXECUTE = 0x74, // Open (Ubuntu) - KEY_HELP = 0x75, // Help (Ubuntu) - KEY_MENU2 = 0x76, // Disabled (Ubuntu) - KEY_SELECT = 0x77, // Disabled (Ubuntu) - KEY_STOP = 0x78, // Cancel (Ubuntu) - KEY_AGAIN = 0x79, // Redo (Ubuntu) - KEY_UNDO = 0x7A, // Undo (Ubuntu) - KEY_CUT = 0x7B, // Cut (Ubuntu) - KEY_COPY = 0x7C, // Copy (Ubuntu) - KEY_PASTE = 0x7D, // Paste (Ubuntu) - KEY_FIND = 0x7E, // Find (Ubuntu) - KEY_MUTE = 0x7F, - KEY_VOLUME_MUTE = 0x7F, // Alias - KEY_VOLUME_UP = 0x80, - KEY_VOLUME_DOWN = 0x81, - KEY_LOCKING_CAPS_LOCK = 0x82, // Disabled (Ubuntu) - KEY_LOCKING_NUM_LOCK = 0x83, // Disabled (Ubuntu) - KEY_LOCKING_SCROLL_LOCK = 0x84, // Disabled (Ubuntu) - KEYPAD_COMMA = 0x85, // . - KEYPAD_EQUAL_SIGN = 0x86, // Disabled (Ubuntu), Dont confuse with KEYPAD_EQUAL - KEY_INTERNATIONAL1 = 0x87, // Disabled (Ubuntu) - KEY_INTERNATIONAL2 = 0x88, // Hiragana Katakana (Ubuntu) - KEY_INTERNATIONAL3 = 0x89, // Disabled (Ubuntu) - KEY_INTERNATIONAL4 = 0x8A, // Henkan (Ubuntu) - KEY_INTERNATIONAL5 = 0x8B, // Muhenkan (Ubuntu) - KEY_INTERNATIONAL6 = 0x8C, // Disabled (Ubuntu) - KEY_INTERNATIONAL7 = 0x8D, // Disabled (Ubuntu) - KEY_INTERNATIONAL8 = 0x8E, // Disabled (Ubuntu) - KEY_INTERNATIONAL9 = 0x8F, // Disabled (Ubuntu) - KEY_LANG1 = 0x90, // Disabled (Ubuntu) - KEY_LANG2 = 0x91, // Disabled (Ubuntu) - KEY_LANG3 = 0x92, // Katana (Ubuntu) - KEY_LANG4 = 0x93, // Hiragana (Ubuntu) - KEY_LANG5 = 0x94, // Disabled (Ubuntu) - KEY_LANG6 = 0x95, // Disabled (Ubuntu) - KEY_LANG7 = 0x96, // Disabled (Ubuntu) - KEY_LANG8 = 0x97, // Disabled (Ubuntu) - KEY_LANG9 = 0x98, // Disabled (Ubuntu) - KEY_ALTERNATE_ERASE = 0x99, // Disabled (Ubuntu) - KEY_SYSREQ_ATTENTION = 0x9A, // Disabled (Ubuntu) - KEY_CANCEL = 0x9B, // Disabled (Ubuntu) - KEY_CLEAR = 0x9C, // Delete (Ubuntu) - KEY_PRIOR = 0x9D, // Disabled (Ubuntu) - KEY_RETURN2 = 0x9E, // Disabled (Ubuntu), Do not confuse this with KEY_ENTER - KEY_SEPARATOR = 0x9F, // Disabled (Ubuntu) - KEY_OUT = 0xA0, // Disabled (Ubuntu) - KEY_OPER = 0xA1, // Disabled (Ubuntu) - KEY_CLEAR_AGAIN = 0xA2, // Disabled (Ubuntu) - KEY_CRSEL_PROPS = 0xA3, // Disabled (Ubuntu) - KEY_EXSEL = 0xA4, // Disabled (Ubuntu) - - KEY_PAD_00 = 0xB0, // Disabled (Ubuntu) - KEY_PAD_000 = 0xB1, // Disabled (Ubuntu) - KEY_THOUSANDS_SEPARATOR = 0xB2, // Disabled (Ubuntu) - KEY_DECIMAL_SEPARATOR = 0xB3, // Disabled (Ubuntu) - KEY_CURRENCY_UNIT = 0xB4, // Disabled (Ubuntu) - KEY_CURRENCY_SUB_UNIT = 0xB5, // Disabled (Ubuntu) - KEYPAD_LEFT_BRACE = 0xB6, // ( - KEYPAD_RIGHT_BRACE = 0xB7, // ) - KEYPAD_LEFT_CURLY_BRACE = 0xB8, // Disabled (Ubuntu) - KEYPAD_RIGHT_CURLY_BRACE = 0xB9, // Disabled (Ubuntu) - KEYPAD_TAB = 0xBA, // Disabled (Ubuntu) - KEYPAD_BACKSPACE = 0xBB, // Disabled (Ubuntu) - KEYPAD_A = 0xBC, // Disabled (Ubuntu) - KEYPAD_B = 0xBD, // Disabled (Ubuntu) - KEYPAD_C = 0xBE, // Disabled (Ubuntu) - KEYPAD_D = 0xBF, // Disabled (Ubuntu) - KEYPAD_E = 0xC0, // Disabled (Ubuntu) - KEYPAD_F = 0xC1, // Disabled (Ubuntu) - KEYPAD_XOR = 0xC2, // Disabled (Ubuntu) - KEYPAD_CARET = 0xC3, // Disabled (Ubuntu) - KEYPAD_PERCENT = 0xC4, // Disabled (Ubuntu) - KEYPAD_LESS_THAN = 0xC5, // Disabled (Ubuntu) - KEYPAD_GREATER_THAN = 0xC6, // Disabled (Ubuntu) - KEYPAD_AMPERSAND = 0xC7, // Disabled (Ubuntu) - KEYPAD_DOUBLEAMPERSAND = 0xC8, // Disabled (Ubuntu) - KEYPAD_PIPE = 0xC9, // Disabled (Ubuntu) - KEYPAD_DOUBLEPIPE = 0xCA, // Disabled (Ubuntu) - KEYPAD_COLON = 0xCB, // Disabled (Ubuntu) - KEYPAD_POUND_SIGN = 0xCC, // Disabled (Ubuntu) - KEYPAD_SPACE = 0xCD, // Disabled (Ubuntu) - KEYPAD_AT_SIGN = 0xCE, // Disabled (Ubuntu) - KEYPAD_EXCLAMATION_POINT = 0xCF, // Disabled (Ubuntu) - KEYPAD_MEMORY_STORE = 0xD0, // Disabled (Ubuntu) - KEYPAD_MEMORY_RECALL = 0xD1, // Disabled (Ubuntu) - KEYPAD_MEMORY_CLEAR = 0xD2, // Disabled (Ubuntu) - KEYPAD_MEMORY_ADD = 0xD3, // Disabled (Ubuntu) - KEYPAD_MEMORY_SUBTRACT = 0xD4, // Disabled (Ubuntu) - KEYPAD_MEMORY_MULTIPLY = 0xD5, // Disabled (Ubuntu) - KEYPAD_MEMORY_DIVIDE = 0xD6, // Disabled (Ubuntu) - KEYPAD_PLUS_MINUS = 0xD7, // Disabled (Ubuntu) - KEYPAD_CLEAR = 0xD8, // Delete (Ubuntu) - KEYPAD_CLEAR_ENTRY = 0xD9, // Disabled (Ubuntu) - KEYPAD_BINARY = 0xDA, // Disabled (Ubuntu) - KEYPAD_OCTAL = 0xDB, // Disabled (Ubuntu) - KEYPAD_DECIMAL = 0xDC, // Disabled (Ubuntu) - KEYPAD_HEXADECIMAL = 0xDD, // Disabled (Ubuntu) - - KEY_LEFT_CTRL = 0xE0, - KEY_LEFT_SHIFT = 0xE1, - KEY_LEFT_ALT = 0xE2, - KEY_LEFT_GUI = 0xE3, - KEY_LEFT_WINDOWS = 0xE3, // Alias - KEY_RIGHT_CTRL = 0xE4, - KEY_RIGHT_SHIFT = 0xE5, - KEY_RIGHT_ALT = 0xE6, - KEY_RIGHT_GUI = 0xE7, - KEY_RIGHT_WINDOWS = 0xE7, // Alias - - // Keyboard HID mappings - - // Reserved (no_event_indicated) - HID_KEYBOARD_ERROR_ROLLOVER = 0x01, - HID_KEYBOARD_POST_FAIL = 0x02, - HID_KEYBOARD_ERROR_UNDEFINED = 0x03, - HID_KEYBOARD_A_AND_A = 0x04, - HID_KEYBOARD_B_AND_B = 0x05, - HID_KEYBOARD_C_AND_C = 0x06, - HID_KEYBOARD_D_AND_D = 0x07, - HID_KEYBOARD_E_AND_E = 0x08, - HID_KEYBOARD_F_AND_F = 0x09, - HID_KEYBOARD_G_AND_G = 0x0A, - HID_KEYBOARD_H_AND_H = 0x0B, - HID_KEYBOARD_I_AND_I = 0x0C, - HID_KEYBOARD_J_AND_J = 0x0D, - HID_KEYBOARD_K_AND_K = 0x0E, - HID_KEYBOARD_L_AND_L = 0x0F, - HID_KEYBOARD_M_AND_M = 0x10, - HID_KEYBOARD_N_AND_N = 0x11, - HID_KEYBOARD_O_AND_O = 0x12, - HID_KEYBOARD_P_AND_P = 0x13, - HID_KEYBOARD_Q_AND_Q = 0x14, - HID_KEYBOARD_R_AND_R = 0x15, - HID_KEYBOARD_S_AND_S = 0x16, - HID_KEYBOARD_T_AND_T = 0x17, - HID_KEYBOARD_U_AND_U = 0x18, - HID_KEYBOARD_V_AND_V = 0x19, - HID_KEYBOARD_W_AND_W = 0x1A, - HID_KEYBOARD_X_AND_X = 0x1B, - HID_KEYBOARD_Y_AND_Y = 0x1C, - HID_KEYBOARD_Z_AND_Z = 0x1D, - HID_KEYBOARD_1_AND_EXCLAMATION_POINT = 0x1E, - HID_KEYBOARD_2_AND_AT = 0x1F, - HID_KEYBOARD_3_AND_POUND = 0x20, - HID_KEYBOARD_4_AND_DOLLAR = 0x21, - HID_KEYBOARD_5_AND_PERCENT = 0x22, - HID_KEYBOARD_6_AND_CARAT = 0x23, - HID_KEYBOARD_7_AND_AMPERSAND = 0x24, - HID_KEYBOARD_8_AND_ASTERISK = 0x25, - HID_KEYBOARD_9_AND_LEFT_PAREN = 0x26, - HID_KEYBOARD_0_AND_RIGHT_PAREN = 0x27, - HID_KEYBOARD_ENTER = 0x28, // (MARKED AS ENTER_SLASH_RETURN) - HID_KEYBOARD_ESCAPE = 0x29, - HID_KEYBOARD_DELETE = 0x2A, // (BACKSPACE) - HID_KEYBOARD_TAB = 0x2B, - HID_KEYBOARD_SPACEBAR = 0x2C, - HID_KEYBOARD_MINUS_AND_UNDERSCORE = 0x2D, // (UNDERSCORE) - HID_KEYBOARD_EQUALS_AND_PLUS = 0x2E, - HID_KEYBOARD_LEFT_BRACKET_AND_LEFT_CURLY_BRACE = 0x2F, - HID_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_CURLY_BRACE = 0x30, - HID_KEYBOARD_BACKSLASH_AND_PIPE = 0x31, - HID_KEYBOARD_NON_US_POUND_AND_TILDE = 0x32, - HID_KEYBOARD_SEMICOLON_AND_COLON = 0x33, - HID_KEYBOARD_QUOTE_AND_DOUBLEQUOTE = 0x34, - HID_KEYBOARD_GRAVE_ACCENT_AND_TILDE = 0x35, - HID_KEYBOARD_COMMA_AND_LESS_THAN = 0x36, - HID_KEYBOARD_PERIOD_AND_GREATER_THAN = 0x37, - HID_KEYBOARD_SLASH_AND_QUESTION_MARK = 0x38, - HID_KEYBOARD_CAPS_LOCK = 0x39, - HID_KEYBOARD_F1 = 0x3A, - HID_KEYBOARD_F2 = 0x3B, - HID_KEYBOARD_F3 = 0x3C, - HID_KEYBOARD_F4 = 0x3D, - HID_KEYBOARD_F5 = 0x3E, - HID_KEYBOARD_F6 = 0x3F, - HID_KEYBOARD_F7 = 0x40, - HID_KEYBOARD_F8 = 0x41, - HID_KEYBOARD_F9 = 0x42, - HID_KEYBOARD_F10 = 0x43, - HID_KEYBOARD_F11 = 0x44, - HID_KEYBOARD_F12 = 0x45, - HID_KEYBOARD_PRINTSCREEN = 0x46, - HID_KEYBOARD_SCROLL_LOCK = 0x47, - HID_KEYBOARD_PAUSE = 0x48, - HID_KEYBOARD_INSERT = 0x49, - HID_KEYBOARD_HOME = 0x4A, - HID_KEYBOARD_PAGE_UP = 0x4B, - HID_KEYBOARD_DELETE_FORWARD = 0x4C, - HID_KEYBOARD_END = 0x4D, - HID_KEYBOARD_PAGE_DOWN = 0x4E, - HID_KEYBOARD_RIGHTARROW = 0x4F, - HID_KEYBOARD_LEFTARROW = 0x50, - HID_KEYBOARD_DOWNARROW = 0x51, - HID_KEYBOARD_UPARROW = 0x52, - HID_KEYPAD_NUM_LOCK_AND_CLEAR = 0x53, - HID_KEYPAD_DIVIDE = 0x54, - HID_KEYPAD_MULTIPLY = 0x55, - HID_KEYPAD_SUBTRACT = 0x56, - HID_KEYPAD_ADD = 0x57, - HID_KEYPAD_ENTER = 0x58, - HID_KEYPAD_1_AND_END = 0x59, - HID_KEYPAD_2_AND_DOWN_ARROW = 0x5A, - HID_KEYPAD_3_AND_PAGE_DOWN = 0x5B, - HID_KEYPAD_4_AND_LEFT_ARROW = 0x5C, - HID_KEYPAD_5 = 0x5D, - HID_KEYPAD_6_AND_RIGHT_ARROW = 0x5E, - HID_KEYPAD_7_AND_HOME = 0x5F, - HID_KEYPAD_8_AND_UP_ARROW = 0x60, - HID_KEYPAD_9_AND_PAGE_UP = 0x61, - HID_KEYPAD_0_AND_INSERT = 0x62, - HID_KEYPAD_PERIOD_AND_DELETE = 0x63, - HID_KEYBOARD_NON_US_BACKSLASH_AND_PIPE = 0x64, - HID_KEYBOARD_APPLICATION = 0x65, - HID_KEYBOARD_POWER = 0x66, - HID_KEYPAD_EQUALS = 0x67, - HID_KEYBOARD_F13 = 0x68, - HID_KEYBOARD_F14 = 0x69, - HID_KEYBOARD_F15 = 0x6A, - HID_KEYBOARD_F16 = 0x6B, - HID_KEYBOARD_F17 = 0x6C, - HID_KEYBOARD_F18 = 0x6D, - HID_KEYBOARD_F19 = 0x6E, - HID_KEYBOARD_F20 = 0x6F, - HID_KEYBOARD_F21 = 0x70, - HID_KEYBOARD_F22 = 0x71, - HID_KEYBOARD_F23 = 0x72, - HID_KEYBOARD_F24 = 0x73, - HID_KEYBOARD_EXECUTE = 0x74, - HID_KEYBOARD_HELP = 0x75, - HID_KEYBOARD_MENU = 0x76, - HID_KEYBOARD_SELECT = 0x77, - HID_KEYBOARD_STOP = 0x78, - HID_KEYBOARD_AGAIN = 0x79, - HID_KEYBOARD_UNDO = 0x7A, - HID_KEYBOARD_CUT = 0x7B, - HID_KEYBOARD_COPY = 0x7C, - HID_KEYBOARD_PASTE = 0x7D, - HID_KEYBOARD_FIND = 0x7E, - HID_KEYBOARD_MUTE = 0x7F, - HID_KEYBOARD_VOLUME_UP = 0x80, - HID_KEYBOARD_VOLUME_DOWN = 0x81, - HID_KEYBOARD_LOCKING_CAPS_LOCK = 0x82, - HID_KEYBOARD_LOCKING_NUM_LOCK = 0x83, - HID_KEYBOARD_LOCKING_SCROLL_LOCK = 0x84, - HID_KEYPAD_COMMA = 0x85, - HID_KEYPAD_EQUAL_SIGN = 0x86, - HID_KEYBOARD_INTERNATIONAL1 = 0x87, - HID_KEYBOARD_INTERNATIONAL2 = 0x88, - HID_KEYBOARD_INTERNATIONAL3 = 0x89, - HID_KEYBOARD_INTERNATIONAL4 = 0x8A, - HID_KEYBOARD_INTERNATIONAL5 = 0x8B, - HID_KEYBOARD_INTERNATIONAL6 = 0x8C, - HID_KEYBOARD_INTERNATIONAL7 = 0x8D, - HID_KEYBOARD_INTERNATIONAL8 = 0x8E, - HID_KEYBOARD_INTERNATIONAL9 = 0x8F, - HID_KEYBOARD_LANG1 = 0x90, - HID_KEYBOARD_LANG2 = 0x91, - HID_KEYBOARD_LANG3 = 0x92, - HID_KEYBOARD_LANG4 = 0x93, - HID_KEYBOARD_LANG5 = 0x94, - HID_KEYBOARD_LANG6 = 0x95, - HID_KEYBOARD_LANG7 = 0x96, - HID_KEYBOARD_LANG8 = 0x97, - HID_KEYBOARD_LANG9 = 0x98, - HID_KEYBOARD_ALTERNATE_ERASE = 0x99, - HID_KEYBOARD_SYSREQ_SLASH_ATTENTION = 0x9A, - HID_KEYBOARD_CANCEL = 0x9B, - HID_KEYBOARD_CLEAR = 0x9C, - HID_KEYBOARD_PRIOR = 0x9D, - HID_KEYBOARD_RETURN = 0x9E, - HID_KEYBOARD_SEPARATOR = 0x9F, - HID_KEYBOARD_OUT = 0xA0, - HID_KEYBOARD_OPER = 0xA1, - HID_KEYBOARD_CLEAR_SLASH_AGAIN = 0xA2, - HID_KEYBOARD_CRSEL_SLASH_PROPS = 0xA3, - HID_KEYBOARD_EXSEL = 0xA4, - // Reserved 0xA5-AF - HID_KEYPAD_00 = 0xB0, - HID_KEYPAD_000 = 0xB1, - HID_THOUSANDS_SEPARATOR = 0xB2, - HID_DECIMAL_SEPARATOR = 0xB3, - HID_CURRENCY_UNIT = 0xB4, - HID_CURRENCY_SUBUNIT = 0xB5, - HID_KEYPAD_LEFT_PAREN = 0xB6, - HID_KEYPAD_RIGHT_PAREN = 0xB7, - HID_KEYPAD_LEFT_CURLY_BRACE = 0xB8, - HID_KEYPAD_RIGHT_CURLY_BRACE = 0xB9, - HID_KEYPAD_TAB = 0xBA, - HID_KEYPAD_BACKSPACE = 0xBB, - HID_KEYPAD_A = 0xBC, - HID_KEYPAD_B = 0xBD, - HID_KEYPAD_C = 0xBE, - HID_KEYPAD_D = 0xBF, - HID_KEYPAD_E = 0xC0, - HID_KEYPAD_F = 0xC1, - HID_KEYPAD_XOR = 0xC2, - HID_KEYPAD_CARAT = 0xC3, - HID_KEYPAD_PERCENT = 0xC4, - HID_KEYPAD_LESS_THAN = 0xC5, - HID_KEYPAD_GREATER_THAN = 0xC6, - HID_KEYPAD_AMPERSAND = 0xC7, - HID_KEYPAD_DOUBLEAMPERSAND = 0xC8, - HID_KEYPAD_PIPE = 0xC9, - HID_KEYPAD_DOUBLEPIPE = 0xCA, - HID_KEYPAD_COLON = 0xCB, - HID_KEYPAD_POUND_SIGN = 0xCC, - HID_KEYPAD_SPACE = 0xCD, - HID_KEYPAD_AT_SIGN = 0xCE, - HID_KEYPAD_EXCLAMATION_POINT = 0xCF, - HID_KEYPAD_MEMORY_STORE = 0xD0, - HID_KEYPAD_MEMORY_RECALL = 0xD1, - HID_KEYPAD_MEMORY_CLEAR = 0xD2, - HID_KEYPAD_MEMORY_ADD = 0xD3, - HID_KEYPAD_MEMORY_SUBTRACT = 0xD4, - HID_KEYPAD_MEMORY_MULTIPLY = 0xD5, - HID_KEYPAD_MEMORY_DIVIDE = 0xD6, - HID_KEYPAD_PLUS_SLASH_MINUS = 0xD7, - HID_KEYPAD_CLEAR = 0xD8, - HID_KEYPAD_CLEAR_ENTRY = 0xD9, - HID_KEYPAD_BINARY = 0xDA, - HID_KEYPAD_OCTAL = 0xDB, - HID_KEYPAD_DECIMAL = 0xDC, - HID_KEYPAD_HEXADECIMAL = 0xDD, - - // 0xDE-0xDF - RESERVED - HID_KEYBOARD_LEFT_CONTROL = 0xE0, - HID_KEYBOARD_LEFT_SHIFT = 0xE1, - HID_KEYBOARD_LEFT_ALT = 0xE2, - HID_KEYBOARD_LEFT_GUI = 0xE3, - HID_KEYBOARD_RIGHT_CONTROL = 0xE4, - HID_KEYBOARD_RIGHT_SHIFT = 0xE5, - HID_KEYBOARD_RIGHT_ALT = 0xE6, - HID_KEYBOARD_RIGHT_GUI = 0xE7, -}; -*/ - -/* -static const uint16_t _asciimap[] PROGMEM = -{ - KEY_RESERVED, // NUL - KEY_RESERVED, // SOH - KEY_RESERVED, // STX - KEY_RESERVED, // ETX - KEY_RESERVED, // EOT - KEY_RESERVED, // ENQ - KEY_RESERVED, // ACK - KEY_RESERVED, // BEL - KEY_BACKSPACE, // BS Backspace - KEY_TAB, // TAB Tab - KEY_ENTER, // LF Enter - KEY_RESERVED, // VT - KEY_RESERVED, // FF - KEY_RESERVED, // CR - KEY_RESERVED, // SO - KEY_RESERVED, // SI - KEY_RESERVED, // DEL - KEY_RESERVED, // DC1 - KEY_RESERVED, // DC2 - KEY_RESERVED, // DC3 - KEY_RESERVED, // DC4 - KEY_RESERVED, // NAK - KEY_RESERVED, // SYN - KEY_RESERVED, // ETB - KEY_RESERVED, // CAN - KEY_RESERVED, // EM - KEY_RESERVED, // SUB - KEY_RESERVED, // ESC - KEY_RESERVED, // FS - KEY_RESERVED, // GS - KEY_RESERVED, // RS - KEY_RESERVED, // US - - KEY_SPACE, // ' ' Space - KEY_1|SHIFT, // ! - KEY_QUOTE|SHIFT, // " - KEY_3|SHIFT, // # - KEY_4|SHIFT, // $ - KEY_5|SHIFT, // % - KEY_7|SHIFT, // & - KEY_QUOTE, // ' - KEY_9|SHIFT, // ( - KEY_0|SHIFT, // ) - KEY_8|SHIFT, // * - KEY_EQUAL|SHIFT, // + - KEY_COMMA, // , - KEY_MINUS, // - - KEY_PERIOD, // . - KEY_SLASH, // / - KEY_0, // 0 - KEY_1, // 1 - KEY_2, // 2 - KEY_3, // 3 - KEY_4, // 4 - KEY_5, // 5 - KEY_6, // 6 - KEY_7, // 7 - KEY_8, // 8 - KEY_9, // 9 - KEY_SEMICOLON|SHIFT, // : - KEY_SEMICOLON, // ; - KEY_COMMA|SHIFT, // < - KEY_EQUAL, // = - KEY_PERIOD|SHIFT, // > - KEY_SLASH|SHIFT, // ? - KEY_2|SHIFT, // @ - KEY_A|SHIFT, // A - KEY_B|SHIFT, // B - KEY_C|SHIFT, // C - KEY_D|SHIFT, // D - KEY_E|SHIFT, // E - KEY_F|SHIFT, // F - KEY_G|SHIFT, // G - KEY_H|SHIFT, // H - KEY_I|SHIFT, // I - KEY_J|SHIFT, // J - KEY_K|SHIFT, // K - KEY_L|SHIFT, // L - KEY_M|SHIFT, // M - KEY_N|SHIFT, // N - KEY_O|SHIFT, // O - KEY_P|SHIFT, // P - KEY_Q|SHIFT, // Q - KEY_R|SHIFT, // R - KEY_S|SHIFT, // S - KEY_T|SHIFT, // T - KEY_U|SHIFT, // U - KEY_V|SHIFT, // V - KEY_W|SHIFT, // W - KEY_X|SHIFT, // X - KEY_Y|SHIFT, // Y - KEY_Z|SHIFT, // Z - KEY_LEFT_BRACE, // [ - KEY_BACKSLASH, // bslash - KEY_RIGHT_BRACE, // ] - KEY_6|SHIFT, // ^ - KEY_MINUS|SHIFT, // _ - KEY_TILDE, // ` - KEY_A, // a - KEY_B, // b - KEY_C, // c - KEY_D, // d - KEY_E, // e - KEY_F, // f - KEY_G, // g - KEY_H, // h - KEY_I, // i - KEY_J, // j - KEY_K, // k - KEY_L, // l - KEY_M, // m - KEY_N, // n - KEY_O, // o - KEY_P, // p - KEY_Q, // q - KEY_R, // r - KEY_S, // s - KEY_T, // t - KEY_U, // u - KEY_V, // v - KEY_W, // w - KEY_X, // x - KEY_Y, // y - KEY_Z, // z - KEY_LEFT_BRACE|SHIFT, // { - KEY_BACKSLASH|SHIFT, // | - KEY_RIGHT_BRACE|SHIFT, // } - KEY_TILDE|SHIFT, // ~ - KEY_RESERVED // DEL -}; -*/ From 5678f8262946d4eada9b12aa761fd3185d3bf0f7 Mon Sep 17 00:00:00 2001 From: MRNIU Date: Wed, 25 Mar 2020 08:45:02 +0800 Subject: [PATCH 03/25] Update library info --- library.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library.properties b/library.properties index 21db3d1..b751812 100644 --- a/library.properties +++ b/library.properties @@ -1,6 +1,6 @@ name=Keyboard -version=1.0.2 -author=Arduino +version=1.0.3 +author=Arduino, MRNIU maintainer=Arduino sentence=Allows an Arduino/Genuino board with USB capabilites to act as a Keyboard. paragraph=This library plugs on the HID library. It can be used with or without other HID-based libraries (Mouse, Gamepad etc) From 94f55a33f8492bfe64a857d6cfac587d9166b938 Mon Sep 17 00:00:00 2001 From: MRNIU Date: Wed, 25 Mar 2020 08:50:34 +0800 Subject: [PATCH 04/25] Add README --- src/README.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/README.md diff --git a/src/README.md b/src/README.md new file mode 100644 index 0000000..a6317c3 --- /dev/null +++ b/src/README.md @@ -0,0 +1,34 @@ += Keyboard Library for Arduino = + +This library allows an Arduino board with USB capabilities to act as a Keyboard. + +For more information about this library please visit us at +https://www.arduino.cc/reference/en/language/functions/usb/keyboard/ + += Contributors = + +Original code (pre-library): Peter Barrett + +Contributor: MRNIU + += Usage = + +See examples/Serial/Serial.ino + +== License == + +Copyright (c) Arduino LLC. All right reserved. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA From 93ece8dd51a8671f5ed195859fa9d11eafaa6763 Mon Sep 17 00:00:00 2001 From: MRNIU Date: Wed, 25 Mar 2020 09:43:01 +0800 Subject: [PATCH 05/25] Cleanup code style --- src/Keyboard.cpp | 142 +-- src/Keyboard.h | 66 +- src/KeyboardLayouts/ImprovedKeylayoutsDE.h | 824 +++++++------- src/KeyboardLayouts/ImprovedKeylayoutsUS.h | 1152 ++++++++++---------- 4 files changed, 1092 insertions(+), 1092 deletions(-) diff --git a/src/Keyboard.cpp b/src/Keyboard.cpp index be3a699..28d5c11 100644 --- a/src/Keyboard.cpp +++ b/src/Keyboard.cpp @@ -1,23 +1,23 @@ /* - Keyboard.cpp - - Copyright (c) 2015, Arduino LLC - Original code (pre-library): Copyright (c) 2011, Peter Barrett - Contributor: MRNIU - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +Keyboard.cpp + +Copyright (c) 2015, Arduino LLC +Original code (pre-library): Copyright (c) 2011, Peter Barrett +Contributor: MRNIU + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "Keyboard.h" @@ -29,44 +29,44 @@ // Keyboard static const uint8_t _hidReportDescriptor[] PROGMEM = { - // Keyboard - 0x05, 0x01, /* USAGE_PAGE (Generic Desktop) 47 */ - 0x09, 0x06, /* USAGE (Keyboard) */ - 0xa1, 0x01, /* COLLECTION (Application) */ - 0x85, HID_REPORTID_KEYBOARD, /* REPORT_ID TODO order important? */ - 0x05, 0x07, /* USAGE_PAGE (Keyboard) */ - - /* Keyboard Modifiers (shift, alt, ...) */ - 0x19, 0xe0, /* USAGE_MINIMUM (Keyboard LeftControl) */ - 0x29, 0xe7, /* USAGE_MAXIMUM (Keyboard Right GUI) */ - 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ - 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ - 0x75, 0x01, /* REPORT_SIZE (1) */ - 0x95, 0x08, /* REPORT_COUNT (8) */ - 0x81, 0x02, /* INPUT (Data,Var,Abs) */ - - /* Reserved byte, used for consumer reports, only works with linux */ - 0x05, 0x0C, /* Usage Page (Consumer) */ - 0x95, 0x01, /* REPORT_COUNT (1) */ - 0x75, 0x08, /* REPORT_SIZE (8) */ - 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ - 0x26, 0xFF, 0x00, /* LOGICAL_MAXIMUM (255) */ - 0x19, 0x00, /* USAGE_MINIMUM (0) */ - 0x29, 0xFF, /* USAGE_MAXIMUM (255) */ - 0x81, 0x00, /* INPUT (Data,Ary,Abs) */ - - /* 6 Keyboard keys */ - 0x05, 0x07, /* USAGE_PAGE (Keyboard) */ - 0x95, 0x06, /* REPORT_COUNT (6) */ - 0x75, 0x08, /* REPORT_SIZE (8) */ - 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ - 0x26, 0xE7, 0x00, /* LOGICAL_MAXIMUM (231) */ - 0x19, 0x00, /* USAGE_MINIMUM (Reserved (no event indicated)) */ - 0x29, 0xE7, /* USAGE_MAXIMUM (Keyboard Right GUI) */ - 0x81, 0x00, /* INPUT (Data,Ary,Abs) */ - - /* End */ - 0xc0 /* END_COLLECTION */ + // Keyboard + 0x05, 0x01, /* USAGE_PAGE (Generic Desktop) 47 */ + 0x09, 0x06, /* USAGE (Keyboard) */ + 0xa1, 0x01, /* COLLECTION (Application) */ + 0x85, HID_REPORTID_KEYBOARD, /* REPORT_ID TODO order important? */ + 0x05, 0x07, /* USAGE_PAGE (Keyboard) */ + + /* Keyboard Modifiers (shift, alt, ...) */ + 0x19, 0xe0, /* USAGE_MINIMUM (Keyboard LeftControl) */ + 0x29, 0xe7, /* USAGE_MAXIMUM (Keyboard Right GUI) */ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ + 0x75, 0x01, /* REPORT_SIZE (1) */ + 0x95, 0x08, /* REPORT_COUNT (8) */ + 0x81, 0x02, /* INPUT (Data,Var,Abs) */ + + /* Reserved byte, used for consumer reports, only works with linux */ + 0x05, 0x0C, /* Usage Page (Consumer) */ + 0x95, 0x01, /* REPORT_COUNT (1) */ + 0x75, 0x08, /* REPORT_SIZE (8) */ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x26, 0xFF, 0x00, /* LOGICAL_MAXIMUM (255) */ + 0x19, 0x00, /* USAGE_MINIMUM (0) */ + 0x29, 0xFF, /* USAGE_MAXIMUM (255) */ + 0x81, 0x00, /* INPUT (Data,Ary,Abs) */ + + /* 6 Keyboard keys */ + 0x05, 0x07, /* USAGE_PAGE (Keyboard) */ + 0x95, 0x06, /* REPORT_COUNT (6) */ + 0x75, 0x08, /* REPORT_SIZE (8) */ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x26, 0xE7, 0x00, /* LOGICAL_MAXIMUM (231) */ + 0x19, 0x00, /* USAGE_MINIMUM (Reserved (no event indicated)) */ + 0x29, 0xE7, /* USAGE_MAXIMUM (Keyboard Right GUI) */ + 0x81, 0x00, /* INPUT (Data,Ary,Abs) */ + + /* End */ + 0xc0 /* END_COLLECTION */ }; Keyboard_::Keyboard_(void) @@ -159,14 +159,14 @@ uint8_t USBPutChar(uint8_t c); // call release(), releaseAll(), or otherwise clear the report and resend. size_t Keyboard_::press(uint8_t k) { - // Press key and send report to host - uint8_t i; + // Press key and send report to host + uint8_t i; auto ret = set((KeyboardKeycode)k, true); if(ret){ - sendReport(&_keyReport); - return 1; + sendReport(&_keyReport); + return 1; } - return 0; + return 0; } // release() takes the specified key out of the persistent key report and @@ -174,11 +174,11 @@ size_t Keyboard_::press(uint8_t k) // it shouldn't be repeated any more. size_t Keyboard_::release(uint8_t k) { - uint8_t i; + uint8_t i; auto ret = set((KeyboardKeycode)k, false); - if(ret){ - sendReport(&_keyReport); - return 1; + if(ret){ + sendReport(&_keyReport); + return 1; } return 0; } @@ -197,9 +197,9 @@ void Keyboard_::releaseAll(void) size_t Keyboard_::write(uint8_t c) { - uint8_t p = press(c); // Keydown - release(c); // Keyup - return p; // just return the result of press() since release() almost always returns 1 + uint8_t p = press(c); // Keydown + release(c); // Keyup + return p; // just return the result of press() since release() almost always returns 1 } size_t Keyboard_::write(const uint8_t *buffer, size_t size) { @@ -207,9 +207,9 @@ size_t Keyboard_::write(const uint8_t *buffer, size_t size) { while (size--) { if (*buffer != '\r') { if (write(*buffer)) { - n++; + n++; } else { - break; + break; } } buffer++; diff --git a/src/Keyboard.h b/src/Keyboard.h index 94f4bbd..29121f8 100644 --- a/src/Keyboard.h +++ b/src/Keyboard.h @@ -1,23 +1,23 @@ /* - Keyboard.h - - Copyright (c) 2015, Arduino LLC - Original code (pre-library): Copyright (c) 2011, Peter Barrett - Contributor: MRNIU - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +Keyboard.h + +Copyright (c) 2015, Arduino LLC +Original code (pre-library): Copyright (c) 2011, Peter Barrett +Contributor: MRNIU + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef KEYBOARD_h @@ -34,26 +34,26 @@ // Low level key report: up to 6 keys and shift, ctrl etc at once typedef struct { - uint8_t modifiers; - uint8_t reserved; - uint8_t keycodes[6]; + uint8_t modifiers; + uint8_t reserved; + uint8_t keycodes[6]; } KeyReport; class Keyboard_ : public Print { private: - KeyReport _keyReport; - void sendReport(KeyReport* keys); - size_t set(KeyboardKeycode k, bool s); + KeyReport _keyReport; + void sendReport(KeyReport* keys); + size_t set(KeyboardKeycode k, bool s); public: - Keyboard_(void); - void begin(void); - void end(void); - size_t write(uint8_t k); - size_t write(const uint8_t *buffer, size_t size); - size_t press(uint8_t k); - size_t release(uint8_t k); - void releaseAll(void); + Keyboard_(void); + void begin(void); + void end(void); + size_t write(uint8_t k); + size_t write(const uint8_t *buffer, size_t size); + size_t press(uint8_t k); + size_t release(uint8_t k); + void releaseAll(void); }; extern Keyboard_ Keyboard; diff --git a/src/KeyboardLayouts/ImprovedKeylayoutsDE.h b/src/KeyboardLayouts/ImprovedKeylayoutsDE.h index d9ba969..d813b8e 100644 --- a/src/KeyboardLayouts/ImprovedKeylayoutsDE.h +++ b/src/KeyboardLayouts/ImprovedKeylayoutsDE.h @@ -33,429 +33,429 @@ enum KeyboardKeycode : uint8_t { KEY_ERROR_ROLLOVER = 1, KEY_POST_FAIL = 2, KEY_ERROR_UNDEFINED = 3, - KEY_A = 4, - KEY_B = 5, - KEY_C = 6, - KEY_D = 7, - KEY_E = 8, - KEY_F = 9, - KEY_G = 10, - KEY_H = 11, - KEY_I = 12, - KEY_J = 13, - KEY_K = 14, - KEY_L = 15, - KEY_M = 16, - KEY_N = 17, - KEY_O = 18, - KEY_P = 19, - KEY_Q = 20, - KEY_R = 21, - KEY_S = 22, - KEY_T = 23, - KEY_U = 24, - KEY_V = 25, - KEY_W = 26, - KEY_X = 27, - KEY_Y = 29, - KEY_Z = 28, - KEY_1 = 30, - KEY_2 = 31, - KEY_3 = 32, - KEY_4 = 33, - KEY_5 = 34, - KEY_6 = 35, - KEY_7 = 36, - KEY_8 = 37, - KEY_9 = 38, - KEY_0 = 39, - KEY_ENTER = 40, - KEY_RETURN = 40, // Alias - KEY_ESC = 41, - KEY_BACKSPACE = 42, - KEY_TAB = 43, - KEY_SPACE = 44, - KEY_SZ = 45, - KEY_ACCENT = 46, - KEY_UE = 47, - KEY_PLUS = 48, - KEY_HASHTAG2 = 49, - KEY_HASHTAG = 50, - KEY_OE = 51, - KEY_AE = 52, - KEY_DACH = 53, - KEY_COMMA = 54, - KEY_PERIOD = 55, - KEY_MINUS = 56, - KEY_CAPS_LOCK = 0x39, - KEY_F1 = 0x3A, - KEY_F2 = 0x3B, - KEY_F3 = 0x3C, - KEY_F4 = 0x3D, - KEY_F5 = 0x3E, - KEY_F6 = 0x3F, - KEY_F7 = 0x40, - KEY_F8 = 0x41, - KEY_F9 = 0x42, - KEY_F10 = 0x43, - KEY_F11 = 0x44, - KEY_F12 = 0x45, - KEY_PRINT = 0x46, - KEY_PRINTSCREEN = 0x46, // Alias - KEY_SCROLL_LOCK = 0x47, - KEY_PAUSE = 0x48, - KEY_INSERT = 0x49, - KEY_HOME = 0x4A, - KEY_PAGE_UP = 0x4B, - KEY_DELETE = 0x4C, - KEY_END = 0x4D, - KEY_PAGE_DOWN = 0x4E, - KEY_RIGHT_ARROW = 0x4F, - KEY_LEFT_ARROW = 0x50, - KEY_DOWN_ARROW = 0x51, - KEY_UP_ARROW = 0x52, - KEY_RIGHT = 0x4F, // Alias - KEY_LEFT = 0x50, // Alias - KEY_DOWN = 0x51, // Alias - KEY_UP = 0x52, // Alias - KEY_NUM_LOCK = 0x53, - KEYPAD_DIVIDE = 0x54, - KEYPAD_MULTIPLY = 0x55, - KEYPAD_SUBTRACT = 0x56, - KEYPAD_ADD = 0x57, - KEYPAD_ENTER = 0x58, - KEYPAD_1 = 0x59, - KEYPAD_2 = 0x5A, - KEYPAD_3 = 0x5B, - KEYPAD_4 = 0x5C, - KEYPAD_5 = 0x5D, - KEYPAD_6 = 0x5E, - KEYPAD_7 = 0x5F, - KEYPAD_8 = 0x60, - KEYPAD_9 = 0x61, - KEYPAD_0 = 0x62, - KEYPAD_DOT = 0x63, - KEY_SMALLER = 0x64, - KEY_APPLICATION = 0x65, // Context menu/right click - KEY_MENU = 0x65, // Alias + KEY_A = 4, + KEY_B = 5, + KEY_C = 6, + KEY_D = 7, + KEY_E = 8, + KEY_F = 9, + KEY_G = 10, + KEY_H = 11, + KEY_I = 12, + KEY_J = 13, + KEY_K = 14, + KEY_L = 15, + KEY_M = 16, + KEY_N = 17, + KEY_O = 18, + KEY_P = 19, + KEY_Q = 20, + KEY_R = 21, + KEY_S = 22, + KEY_T = 23, + KEY_U = 24, + KEY_V = 25, + KEY_W = 26, + KEY_X = 27, + KEY_Y = 29, + KEY_Z = 28, + KEY_1 = 30, + KEY_2 = 31, + KEY_3 = 32, + KEY_4 = 33, + KEY_5 = 34, + KEY_6 = 35, + KEY_7 = 36, + KEY_8 = 37, + KEY_9 = 38, + KEY_0 = 39, + KEY_ENTER = 40, + KEY_RETURN = 40, // Alias + KEY_ESC = 41, + KEY_BACKSPACE = 42, + KEY_TAB = 43, + KEY_SPACE = 44, + KEY_SZ = 45, + KEY_ACCENT = 46, + KEY_UE = 47, + KEY_PLUS = 48, + KEY_HASHTAG2 = 49, + KEY_HASHTAG = 50, + KEY_OE = 51, + KEY_AE = 52, + KEY_DACH = 53, + KEY_COMMA = 54, + KEY_PERIOD = 55, + KEY_MINUS = 56, + KEY_CAPS_LOCK = 0x39, + KEY_F1 = 0x3A, + KEY_F2 = 0x3B, + KEY_F3 = 0x3C, + KEY_F4 = 0x3D, + KEY_F5 = 0x3E, + KEY_F6 = 0x3F, + KEY_F7 = 0x40, + KEY_F8 = 0x41, + KEY_F9 = 0x42, + KEY_F10 = 0x43, + KEY_F11 = 0x44, + KEY_F12 = 0x45, + KEY_PRINT = 0x46, + KEY_PRINTSCREEN = 0x46, // Alias + KEY_SCROLL_LOCK = 0x47, + KEY_PAUSE = 0x48, + KEY_INSERT = 0x49, + KEY_HOME = 0x4A, + KEY_PAGE_UP = 0x4B, + KEY_DELETE = 0x4C, + KEY_END = 0x4D, + KEY_PAGE_DOWN = 0x4E, + KEY_RIGHT_ARROW = 0x4F, + KEY_LEFT_ARROW = 0x50, + KEY_DOWN_ARROW = 0x51, + KEY_UP_ARROW = 0x52, + KEY_RIGHT = 0x4F, // Alias + KEY_LEFT = 0x50, // Alias + KEY_DOWN = 0x51, // Alias + KEY_UP = 0x52, // Alias + KEY_NUM_LOCK = 0x53, + KEYPAD_DIVIDE = 0x54, + KEYPAD_MULTIPLY = 0x55, + KEYPAD_SUBTRACT = 0x56, + KEYPAD_ADD = 0x57, + KEYPAD_ENTER = 0x58, + KEYPAD_1 = 0x59, + KEYPAD_2 = 0x5A, + KEYPAD_3 = 0x5B, + KEYPAD_4 = 0x5C, + KEYPAD_5 = 0x5D, + KEYPAD_6 = 0x5E, + KEYPAD_7 = 0x5F, + KEYPAD_8 = 0x60, + KEYPAD_9 = 0x61, + KEYPAD_0 = 0x62, + KEYPAD_DOT = 0x63, + KEY_SMALLER = 0x64, + KEY_APPLICATION = 0x65, // Context menu/right click + KEY_MENU = 0x65, // Alias - // Most of the following keys will only work with Linux or not at all. - // F13+ keys are mostly used for laptop functions like ECO key. - KEY_POWER = 0x66, // PowerOff (Ubuntu) - KEY_PAD_EQUALS = 0x67, // Dont confuse with KEYPAD_EQUAL_SIGN - KEY_F13 = 0x68, // Tools (Ubunutu) - KEY_F14 = 0x69, // Launch5 (Ubuntu) - KEY_F15 = 0x6A, // Launch6 (Ubuntu) - KEY_F16 = 0x6B, // Launch7 (Ubuntu) - KEY_F17 = 0x6C, // Launch8 (Ubuntu) - KEY_F18 = 0x6D, // Launch9 (Ubuntu) - KEY_F19 = 0x6E, // Disabled (Ubuntu) - KEY_F20 = 0x6F, // AudioMicMute (Ubuntu) - KEY_F21 = 0x70, // Touchpad toggle (Ubuntu) - KEY_F22 = 0x71, // TouchpadOn (Ubuntu) - KEY_F23 = 0x72, // TouchpadOff Ubuntu) - KEY_F24 = 0x73, // Disabled (Ubuntu) - KEY_EXECUTE = 0x74, // Open (Ubuntu) - KEY_HELP = 0x75, // Help (Ubuntu) - KEY_MENU2 = 0x76, // Disabled (Ubuntu) - KEY_SELECT = 0x77, // Disabled (Ubuntu) - KEY_STOP = 0x78, // Cancel (Ubuntu) - KEY_AGAIN = 0x79, // Redo (Ubuntu) - KEY_UNDO = 0x7A, // Undo (Ubuntu) - KEY_CUT = 0x7B, // Cut (Ubuntu) - KEY_COPY = 0x7C, // Copy (Ubuntu) - KEY_PASTE = 0x7D, // Paste (Ubuntu) - KEY_FIND = 0x7E, // Find (Ubuntu) - KEY_MUTE = 0x7F, - KEY_VOLUME_MUTE = 0x7F, // Alias - KEY_VOLUME_UP = 0x80, - KEY_VOLUME_DOWN = 0x81, - KEY_LOCKING_CAPS_LOCK = 0x82, // Disabled (Ubuntu) - KEY_LOCKING_NUM_LOCK = 0x83, // Disabled (Ubuntu) - KEY_LOCKING_SCROLL_LOCK = 0x84, // Disabled (Ubuntu) - KEYPAD_COMMA = 0x85, // . - KEYPAD_EQUAL_SIGN = 0x86, // Disabled (Ubuntu), Dont confuse with KEYPAD_EQUAL - KEY_INTERNATIONAL1 = 0x87, // Disabled (Ubuntu) - KEY_INTERNATIONAL2 = 0x88, // Hiragana Katakana (Ubuntu) - KEY_INTERNATIONAL3 = 0x89, // Disabled (Ubuntu) - KEY_INTERNATIONAL4 = 0x8A, // Henkan (Ubuntu) - KEY_INTERNATIONAL5 = 0x8B, // Muhenkan (Ubuntu) - KEY_INTERNATIONAL6 = 0x8C, // Disabled (Ubuntu) - KEY_INTERNATIONAL7 = 0x8D, // Disabled (Ubuntu) - KEY_INTERNATIONAL8 = 0x8E, // Disabled (Ubuntu) - KEY_INTERNATIONAL9 = 0x8F, // Disabled (Ubuntu) - KEY_LANG1 = 0x90, // Disabled (Ubuntu) - KEY_LANG2 = 0x91, // Disabled (Ubuntu) - KEY_LANG3 = 0x92, // Katana (Ubuntu) - KEY_LANG4 = 0x93, // Hiragana (Ubuntu) - KEY_LANG5 = 0x94, // Disabled (Ubuntu) - KEY_LANG6 = 0x95, // Disabled (Ubuntu) - KEY_LANG7 = 0x96, // Disabled (Ubuntu) - KEY_LANG8 = 0x97, // Disabled (Ubuntu) - KEY_LANG9 = 0x98, // Disabled (Ubuntu) - KEY_ALTERNATE_ERASE = 0x99, // Disabled (Ubuntu) - KEY_SYSREQ_ATTENTION = 0x9A, // Disabled (Ubuntu) - KEY_CANCEL = 0x9B, // Disabled (Ubuntu) - KEY_CLEAR = 0x9C, // Delete (Ubuntu) - KEY_PRIOR = 0x9D, // Disabled (Ubuntu) - KEY_RETURN2 = 0x9E, // Disabled (Ubuntu), Do not confuse this with KEY_ENTER - KEY_SEPARATOR = 0x9F, // Disabled (Ubuntu) - KEY_OUT = 0xA0, // Disabled (Ubuntu) - KEY_OPER = 0xA1, // Disabled (Ubuntu) - KEY_CLEAR_AGAIN = 0xA2, // Disabled (Ubuntu) - KEY_CRSEL_PROPS = 0xA3, // Disabled (Ubuntu) - KEY_EXSEL = 0xA4, // Disabled (Ubuntu) + // Most of the following keys will only work with Linux or not at all. + // F13+ keys are mostly used for laptop functions like ECO key. + KEY_POWER = 0x66, // PowerOff (Ubuntu) + KEY_PAD_EQUALS = 0x67, // Dont confuse with KEYPAD_EQUAL_SIGN + KEY_F13 = 0x68, // Tools (Ubunutu) + KEY_F14 = 0x69, // Launch5 (Ubuntu) + KEY_F15 = 0x6A, // Launch6 (Ubuntu) + KEY_F16 = 0x6B, // Launch7 (Ubuntu) + KEY_F17 = 0x6C, // Launch8 (Ubuntu) + KEY_F18 = 0x6D, // Launch9 (Ubuntu) + KEY_F19 = 0x6E, // Disabled (Ubuntu) + KEY_F20 = 0x6F, // AudioMicMute (Ubuntu) + KEY_F21 = 0x70, // Touchpad toggle (Ubuntu) + KEY_F22 = 0x71, // TouchpadOn (Ubuntu) + KEY_F23 = 0x72, // TouchpadOff Ubuntu) + KEY_F24 = 0x73, // Disabled (Ubuntu) + KEY_EXECUTE = 0x74, // Open (Ubuntu) + KEY_HELP = 0x75, // Help (Ubuntu) + KEY_MENU2 = 0x76, // Disabled (Ubuntu) + KEY_SELECT = 0x77, // Disabled (Ubuntu) + KEY_STOP = 0x78, // Cancel (Ubuntu) + KEY_AGAIN = 0x79, // Redo (Ubuntu) + KEY_UNDO = 0x7A, // Undo (Ubuntu) + KEY_CUT = 0x7B, // Cut (Ubuntu) + KEY_COPY = 0x7C, // Copy (Ubuntu) + KEY_PASTE = 0x7D, // Paste (Ubuntu) + KEY_FIND = 0x7E, // Find (Ubuntu) + KEY_MUTE = 0x7F, + KEY_VOLUME_MUTE = 0x7F, // Alias + KEY_VOLUME_UP = 0x80, + KEY_VOLUME_DOWN = 0x81, + KEY_LOCKING_CAPS_LOCK = 0x82, // Disabled (Ubuntu) + KEY_LOCKING_NUM_LOCK = 0x83, // Disabled (Ubuntu) + KEY_LOCKING_SCROLL_LOCK = 0x84, // Disabled (Ubuntu) + KEYPAD_COMMA = 0x85, // . + KEYPAD_EQUAL_SIGN = 0x86, // Disabled (Ubuntu), Dont confuse with KEYPAD_EQUAL + KEY_INTERNATIONAL1 = 0x87, // Disabled (Ubuntu) + KEY_INTERNATIONAL2 = 0x88, // Hiragana Katakana (Ubuntu) + KEY_INTERNATIONAL3 = 0x89, // Disabled (Ubuntu) + KEY_INTERNATIONAL4 = 0x8A, // Henkan (Ubuntu) + KEY_INTERNATIONAL5 = 0x8B, // Muhenkan (Ubuntu) + KEY_INTERNATIONAL6 = 0x8C, // Disabled (Ubuntu) + KEY_INTERNATIONAL7 = 0x8D, // Disabled (Ubuntu) + KEY_INTERNATIONAL8 = 0x8E, // Disabled (Ubuntu) + KEY_INTERNATIONAL9 = 0x8F, // Disabled (Ubuntu) + KEY_LANG1 = 0x90, // Disabled (Ubuntu) + KEY_LANG2 = 0x91, // Disabled (Ubuntu) + KEY_LANG3 = 0x92, // Katana (Ubuntu) + KEY_LANG4 = 0x93, // Hiragana (Ubuntu) + KEY_LANG5 = 0x94, // Disabled (Ubuntu) + KEY_LANG6 = 0x95, // Disabled (Ubuntu) + KEY_LANG7 = 0x96, // Disabled (Ubuntu) + KEY_LANG8 = 0x97, // Disabled (Ubuntu) + KEY_LANG9 = 0x98, // Disabled (Ubuntu) + KEY_ALTERNATE_ERASE = 0x99, // Disabled (Ubuntu) + KEY_SYSREQ_ATTENTION = 0x9A, // Disabled (Ubuntu) + KEY_CANCEL = 0x9B, // Disabled (Ubuntu) + KEY_CLEAR = 0x9C, // Delete (Ubuntu) + KEY_PRIOR = 0x9D, // Disabled (Ubuntu) + KEY_RETURN2 = 0x9E, // Disabled (Ubuntu), Do not confuse this with KEY_ENTER + KEY_SEPARATOR = 0x9F, // Disabled (Ubuntu) + KEY_OUT = 0xA0, // Disabled (Ubuntu) + KEY_OPER = 0xA1, // Disabled (Ubuntu) + KEY_CLEAR_AGAIN = 0xA2, // Disabled (Ubuntu) + KEY_CRSEL_PROPS = 0xA3, // Disabled (Ubuntu) + KEY_EXSEL = 0xA4, // Disabled (Ubuntu) - KEY_PAD_00 = 0xB0, // Disabled (Ubuntu) - KEY_PAD_000 = 0xB1, // Disabled (Ubuntu) - KEY_THOUSANDS_SEPARATOR = 0xB2, // Disabled (Ubuntu) - KEY_DECIMAL_SEPARATOR = 0xB3, // Disabled (Ubuntu) - KEY_CURRENCY_UNIT = 0xB4, // Disabled (Ubuntu) - KEY_CURRENCY_SUB_UNIT = 0xB5, // Disabled (Ubuntu) - KEYPAD_LEFT_BRACE = 0xB6, // ( - KEYPAD_RIGHT_BRACE = 0xB7, // ) - KEYPAD_LEFT_CURLY_BRACE = 0xB8, // Disabled (Ubuntu) - KEYPAD_RIGHT_CURLY_BRACE = 0xB9, // Disabled (Ubuntu) - KEYPAD_TAB = 0xBA, // Disabled (Ubuntu) - KEYPAD_BACKSPACE = 0xBB, // Disabled (Ubuntu) - KEYPAD_A = 0xBC, // Disabled (Ubuntu) - KEYPAD_B = 0xBD, // Disabled (Ubuntu) - KEYPAD_C = 0xBE, // Disabled (Ubuntu) - KEYPAD_D = 0xBF, // Disabled (Ubuntu) - KEYPAD_E = 0xC0, // Disabled (Ubuntu) - KEYPAD_F = 0xC1, // Disabled (Ubuntu) - KEYPAD_XOR = 0xC2, // Disabled (Ubuntu) - KEYPAD_CARET = 0xC3, // Disabled (Ubuntu) - KEYPAD_PERCENT = 0xC4, // Disabled (Ubuntu) - KEYPAD_LESS_THAN = 0xC5, // Disabled (Ubuntu) - KEYPAD_GREATER_THAN = 0xC6, // Disabled (Ubuntu) - KEYPAD_AMPERSAND = 0xC7, // Disabled (Ubuntu) - KEYPAD_DOUBLEAMPERSAND = 0xC8, // Disabled (Ubuntu) - KEYPAD_PIPE = 0xC9, // Disabled (Ubuntu) - KEYPAD_DOUBLEPIPE = 0xCA, // Disabled (Ubuntu) - KEYPAD_COLON = 0xCB, // Disabled (Ubuntu) - KEYPAD_POUND_SIGN = 0xCC, // Disabled (Ubuntu) - KEYPAD_SPACE = 0xCD, // Disabled (Ubuntu) - KEYPAD_AT_SIGN = 0xCE, // Disabled (Ubuntu) - KEYPAD_EXCLAMATION_POINT = 0xCF, // Disabled (Ubuntu) - KEYPAD_MEMORY_STORE = 0xD0, // Disabled (Ubuntu) - KEYPAD_MEMORY_RECALL = 0xD1, // Disabled (Ubuntu) - KEYPAD_MEMORY_CLEAR = 0xD2, // Disabled (Ubuntu) - KEYPAD_MEMORY_ADD = 0xD3, // Disabled (Ubuntu) - KEYPAD_MEMORY_SUBTRACT = 0xD4, // Disabled (Ubuntu) - KEYPAD_MEMORY_MULTIPLY = 0xD5, // Disabled (Ubuntu) - KEYPAD_MEMORY_DIVIDE = 0xD6, // Disabled (Ubuntu) - KEYPAD_PLUS_MINUS = 0xD7, // Disabled (Ubuntu) - KEYPAD_CLEAR = 0xD8, // Delete (Ubuntu) - KEYPAD_CLEAR_ENTRY = 0xD9, // Disabled (Ubuntu) - KEYPAD_BINARY = 0xDA, // Disabled (Ubuntu) - KEYPAD_OCTAL = 0xDB, // Disabled (Ubuntu) - KEYPAD_DECIMAL = 0xDC, // Disabled (Ubuntu) - KEYPAD_HEXADECIMAL = 0xDD, // Disabled (Ubuntu) + KEY_PAD_00 = 0xB0, // Disabled (Ubuntu) + KEY_PAD_000 = 0xB1, // Disabled (Ubuntu) + KEY_THOUSANDS_SEPARATOR = 0xB2, // Disabled (Ubuntu) + KEY_DECIMAL_SEPARATOR = 0xB3, // Disabled (Ubuntu) + KEY_CURRENCY_UNIT = 0xB4, // Disabled (Ubuntu) + KEY_CURRENCY_SUB_UNIT = 0xB5, // Disabled (Ubuntu) + KEYPAD_LEFT_BRACE = 0xB6, // ( + KEYPAD_RIGHT_BRACE = 0xB7, // ) + KEYPAD_LEFT_CURLY_BRACE = 0xB8, // Disabled (Ubuntu) + KEYPAD_RIGHT_CURLY_BRACE = 0xB9, // Disabled (Ubuntu) + KEYPAD_TAB = 0xBA, // Disabled (Ubuntu) + KEYPAD_BACKSPACE = 0xBB, // Disabled (Ubuntu) + KEYPAD_A = 0xBC, // Disabled (Ubuntu) + KEYPAD_B = 0xBD, // Disabled (Ubuntu) + KEYPAD_C = 0xBE, // Disabled (Ubuntu) + KEYPAD_D = 0xBF, // Disabled (Ubuntu) + KEYPAD_E = 0xC0, // Disabled (Ubuntu) + KEYPAD_F = 0xC1, // Disabled (Ubuntu) + KEYPAD_XOR = 0xC2, // Disabled (Ubuntu) + KEYPAD_CARET = 0xC3, // Disabled (Ubuntu) + KEYPAD_PERCENT = 0xC4, // Disabled (Ubuntu) + KEYPAD_LESS_THAN = 0xC5, // Disabled (Ubuntu) + KEYPAD_GREATER_THAN = 0xC6, // Disabled (Ubuntu) + KEYPAD_AMPERSAND = 0xC7, // Disabled (Ubuntu) + KEYPAD_DOUBLEAMPERSAND = 0xC8, // Disabled (Ubuntu) + KEYPAD_PIPE = 0xC9, // Disabled (Ubuntu) + KEYPAD_DOUBLEPIPE = 0xCA, // Disabled (Ubuntu) + KEYPAD_COLON = 0xCB, // Disabled (Ubuntu) + KEYPAD_POUND_SIGN = 0xCC, // Disabled (Ubuntu) + KEYPAD_SPACE = 0xCD, // Disabled (Ubuntu) + KEYPAD_AT_SIGN = 0xCE, // Disabled (Ubuntu) + KEYPAD_EXCLAMATION_POINT = 0xCF, // Disabled (Ubuntu) + KEYPAD_MEMORY_STORE = 0xD0, // Disabled (Ubuntu) + KEYPAD_MEMORY_RECALL = 0xD1, // Disabled (Ubuntu) + KEYPAD_MEMORY_CLEAR = 0xD2, // Disabled (Ubuntu) + KEYPAD_MEMORY_ADD = 0xD3, // Disabled (Ubuntu) + KEYPAD_MEMORY_SUBTRACT = 0xD4, // Disabled (Ubuntu) + KEYPAD_MEMORY_MULTIPLY = 0xD5, // Disabled (Ubuntu) + KEYPAD_MEMORY_DIVIDE = 0xD6, // Disabled (Ubuntu) + KEYPAD_PLUS_MINUS = 0xD7, // Disabled (Ubuntu) + KEYPAD_CLEAR = 0xD8, // Delete (Ubuntu) + KEYPAD_CLEAR_ENTRY = 0xD9, // Disabled (Ubuntu) + KEYPAD_BINARY = 0xDA, // Disabled (Ubuntu) + KEYPAD_OCTAL = 0xDB, // Disabled (Ubuntu) + KEYPAD_DECIMAL = 0xDC, // Disabled (Ubuntu) + KEYPAD_HEXADECIMAL = 0xDD, // Disabled (Ubuntu) - KEY_LEFT_CTRL = 0xE0, - KEY_LEFT_SHIFT = 0xE1, - KEY_LEFT_ALT = 0xE2, - KEY_LEFT_GUI = 0xE3, - KEY_LEFT_WINDOWS = 0xE3, // Alias - KEY_RIGHT_CTRL = 0xE4, - KEY_RIGHT_SHIFT = 0xE5, - KEY_RIGHT_ALT = 0xE6, - KEY_RIGHT_GUI = 0xE7, - KEY_RIGHT_WINDOWS = 0xE7, // Alias + KEY_LEFT_CTRL = 0xE0, + KEY_LEFT_SHIFT = 0xE1, + KEY_LEFT_ALT = 0xE2, + KEY_LEFT_GUI = 0xE3, + KEY_LEFT_WINDOWS = 0xE3, // Alias + KEY_RIGHT_CTRL = 0xE4, + KEY_RIGHT_SHIFT = 0xE5, + KEY_RIGHT_ALT = 0xE6, + KEY_RIGHT_GUI = 0xE7, + KEY_RIGHT_WINDOWS = 0xE7, // Alias - // Keyboard HID mappings + // Keyboard HID mappings - // Reserved 0xA5-AF - HID_KEYPAD_00 = 0xB0, - HID_KEYPAD_000 = 0xB1, - HID_THOUSANDS_SEPARATOR = 0xB2, - HID_DECIMAL_SEPARATOR = 0xB3, - HID_CURRENCY_UNIT = 0xB4, - HID_CURRENCY_SUBUNIT = 0xB5, - HID_KEYPAD_LEFT_PAREN = 0xB6, - HID_KEYPAD_RIGHT_PAREN = 0xB7, - HID_KEYPAD_LEFT_CURLY_BRACE = 0xB8, - HID_KEYPAD_RIGHT_CURLY_BRACE = 0xB9, - HID_KEYPAD_TAB = 0xBA, - HID_KEYPAD_BACKSPACE = 0xBB, - HID_KEYPAD_A = 0xBC, - HID_KEYPAD_B = 0xBD, - HID_KEYPAD_C = 0xBE, - HID_KEYPAD_D = 0xBF, - HID_KEYPAD_E = 0xC0, - HID_KEYPAD_F = 0xC1, - HID_KEYPAD_XOR = 0xC2, - HID_KEYPAD_CARAT = 0xC3, - HID_KEYPAD_PERCENT = 0xC4, - HID_KEYPAD_LESS_THAN = 0xC5, - HID_KEYPAD_GREATER_THAN = 0xC6, - HID_KEYPAD_AMPERSAND = 0xC7, - HID_KEYPAD_DOUBLEAMPERSAND = 0xC8, - HID_KEYPAD_PIPE = 0xC9, - HID_KEYPAD_DOUBLEPIPE = 0xCA, - HID_KEYPAD_COLON = 0xCB, - HID_KEYPAD_POUND_SIGN = 0xCC, - HID_KEYPAD_SPACE = 0xCD, - HID_KEYPAD_AT_SIGN = 0xCE, - HID_KEYPAD_EXCLAMATION_POINT = 0xCF, - HID_KEYPAD_MEMORY_STORE = 0xD0, - HID_KEYPAD_MEMORY_RECALL = 0xD1, - HID_KEYPAD_MEMORY_CLEAR = 0xD2, - HID_KEYPAD_MEMORY_ADD = 0xD3, - HID_KEYPAD_MEMORY_SUBTRACT = 0xD4, - HID_KEYPAD_MEMORY_MULTIPLY = 0xD5, - HID_KEYPAD_MEMORY_DIVIDE = 0xD6, - HID_KEYPAD_PLUS_SLASH_MINUS = 0xD7, - HID_KEYPAD_CLEAR = 0xD8, - HID_KEYPAD_CLEAR_ENTRY = 0xD9, - HID_KEYPAD_BINARY = 0xDA, - HID_KEYPAD_OCTAL = 0xDB, - HID_KEYPAD_DECIMAL = 0xDC, - HID_KEYPAD_HEXADECIMAL = 0xDD, + // Reserved 0xA5-AF + HID_KEYPAD_00 = 0xB0, + HID_KEYPAD_000 = 0xB1, + HID_THOUSANDS_SEPARATOR = 0xB2, + HID_DECIMAL_SEPARATOR = 0xB3, + HID_CURRENCY_UNIT = 0xB4, + HID_CURRENCY_SUBUNIT = 0xB5, + HID_KEYPAD_LEFT_PAREN = 0xB6, + HID_KEYPAD_RIGHT_PAREN = 0xB7, + HID_KEYPAD_LEFT_CURLY_BRACE = 0xB8, + HID_KEYPAD_RIGHT_CURLY_BRACE = 0xB9, + HID_KEYPAD_TAB = 0xBA, + HID_KEYPAD_BACKSPACE = 0xBB, + HID_KEYPAD_A = 0xBC, + HID_KEYPAD_B = 0xBD, + HID_KEYPAD_C = 0xBE, + HID_KEYPAD_D = 0xBF, + HID_KEYPAD_E = 0xC0, + HID_KEYPAD_F = 0xC1, + HID_KEYPAD_XOR = 0xC2, + HID_KEYPAD_CARAT = 0xC3, + HID_KEYPAD_PERCENT = 0xC4, + HID_KEYPAD_LESS_THAN = 0xC5, + HID_KEYPAD_GREATER_THAN = 0xC6, + HID_KEYPAD_AMPERSAND = 0xC7, + HID_KEYPAD_DOUBLEAMPERSAND = 0xC8, + HID_KEYPAD_PIPE = 0xC9, + HID_KEYPAD_DOUBLEPIPE = 0xCA, + HID_KEYPAD_COLON = 0xCB, + HID_KEYPAD_POUND_SIGN = 0xCC, + HID_KEYPAD_SPACE = 0xCD, + HID_KEYPAD_AT_SIGN = 0xCE, + HID_KEYPAD_EXCLAMATION_POINT = 0xCF, + HID_KEYPAD_MEMORY_STORE = 0xD0, + HID_KEYPAD_MEMORY_RECALL = 0xD1, + HID_KEYPAD_MEMORY_CLEAR = 0xD2, + HID_KEYPAD_MEMORY_ADD = 0xD3, + HID_KEYPAD_MEMORY_SUBTRACT = 0xD4, + HID_KEYPAD_MEMORY_MULTIPLY = 0xD5, + HID_KEYPAD_MEMORY_DIVIDE = 0xD6, + HID_KEYPAD_PLUS_SLASH_MINUS = 0xD7, + HID_KEYPAD_CLEAR = 0xD8, + HID_KEYPAD_CLEAR_ENTRY = 0xD9, + HID_KEYPAD_BINARY = 0xDA, + HID_KEYPAD_OCTAL = 0xDB, + HID_KEYPAD_DECIMAL = 0xDC, + HID_KEYPAD_HEXADECIMAL = 0xDD, - // 0xDE-0xDF - RESERVED - HID_KEYBOARD_LEFT_CONTROL = 0xE0, - HID_KEYBOARD_LEFT_SHIFT = 0xE1, - HID_KEYBOARD_LEFT_ALT = 0xE2, - HID_KEYBOARD_LEFT_GUI = 0xE3, - HID_KEYBOARD_RIGHT_CONTROL = 0xE4, - HID_KEYBOARD_RIGHT_SHIFT = 0xE5, - HID_KEYBOARD_RIGHT_ALT = 0xE6, - HID_KEYBOARD_RIGHT_GUI = 0xE7, + // 0xDE-0xDF - RESERVED + HID_KEYBOARD_LEFT_CONTROL = 0xE0, + HID_KEYBOARD_LEFT_SHIFT = 0xE1, + HID_KEYBOARD_LEFT_ALT = 0xE2, + HID_KEYBOARD_LEFT_GUI = 0xE3, + HID_KEYBOARD_RIGHT_CONTROL = 0xE4, + HID_KEYBOARD_RIGHT_SHIFT = 0xE5, + HID_KEYBOARD_RIGHT_ALT = 0xE6, + HID_KEYBOARD_RIGHT_GUI = 0xE7, }; static const uint16_t _asciimap[] PROGMEM = { - KEY_RESERVED, // NUL - KEY_RESERVED, // SOH - KEY_RESERVED, // STX - KEY_RESERVED, // ETX - KEY_RESERVED, // EOT - KEY_RESERVED, // ENQ - KEY_RESERVED, // ACK - KEY_RESERVED, // BEL - KEY_BACKSPACE, // BS Backspace - KEY_TAB, // TAB Tab - KEY_ENTER, // LF Enter - KEY_RESERVED, // VT - KEY_RESERVED, // FF - KEY_RESERVED, // CR - KEY_RESERVED, // SO - KEY_RESERVED, // SI - KEY_RESERVED, // DEL - KEY_RESERVED, // DC1 - KEY_RESERVED, // DC2 - KEY_RESERVED, // DC3 - KEY_RESERVED, // DC4 - KEY_RESERVED, // NAK - KEY_RESERVED, // SYN - KEY_RESERVED, // ETB - KEY_RESERVED, // CAN - KEY_RESERVED, // EM - KEY_RESERVED, // SUB - KEY_RESERVED, // ESC - KEY_RESERVED, // FS - KEY_RESERVED, // GS - KEY_RESERVED, // RS - KEY_RESERVED, // US + KEY_RESERVED, // NUL + KEY_RESERVED, // SOH + KEY_RESERVED, // STX + KEY_RESERVED, // ETX + KEY_RESERVED, // EOT + KEY_RESERVED, // ENQ + KEY_RESERVED, // ACK + KEY_RESERVED, // BEL + KEY_BACKSPACE, // BS Backspace + KEY_TAB, // TAB Tab + KEY_ENTER, // LF Enter + KEY_RESERVED, // VT + KEY_RESERVED, // FF + KEY_RESERVED, // CR + KEY_RESERVED, // SO + KEY_RESERVED, // SI + KEY_RESERVED, // DEL + KEY_RESERVED, // DC1 + KEY_RESERVED, // DC2 + KEY_RESERVED, // DC3 + KEY_RESERVED, // DC4 + KEY_RESERVED, // NAK + KEY_RESERVED, // SYN + KEY_RESERVED, // ETB + KEY_RESERVED, // CAN + KEY_RESERVED, // EM + KEY_RESERVED, // SUB + KEY_RESERVED, // ESC + KEY_RESERVED, // FS + KEY_RESERVED, // GS + KEY_RESERVED, // RS + KEY_RESERVED, // US - KEY_SPACE, // ' ' Space - KEY_1|MOD_LEFT_SHIFT, // ! - KEY_2|MOD_LEFT_SHIFT, // " - KEY_HASHTAG, // # - KEY_4|MOD_LEFT_SHIFT, // $ - KEY_5|MOD_LEFT_SHIFT, // % - KEY_6|MOD_LEFT_SHIFT, // & - KEY_HASHTAG|MOD_LEFT_SHIFT, // ' - KEY_8|MOD_LEFT_SHIFT, // ( - KEY_9|MOD_LEFT_SHIFT, // ) - KEY_PLUS|MOD_LEFT_SHIFT, // * - KEY_PLUS, // + - KEY_COMMA, // , - KEY_MINUS, // - - KEY_PERIOD, // . - KEY_7|MOD_LEFT_SHIFT, // / - KEY_0, // 0 - KEY_1, // 1 - KEY_2, // 2 - KEY_3, // 3 - KEY_4, // 4 - KEY_5, // 5 - KEY_6, // 6 - KEY_7, // 7 - KEY_8, // 8 - KEY_9, // 9 - KEY_PERIOD|MOD_LEFT_SHIFT, // : - KEY_COMMA|MOD_LEFT_SHIFT, // ; - KEY_SMALLER, // < - KEY_0|MOD_LEFT_SHIFT, // = - KEY_SMALLER|MOD_LEFT_SHIFT, // > - KEY_SZ|MOD_LEFT_SHIFT, // ? - KEY_Q|MOD_RIGHT_ALT, // @ - KEY_A|MOD_LEFT_SHIFT, // A - KEY_B|MOD_LEFT_SHIFT, // B - KEY_C|MOD_LEFT_SHIFT, // C - KEY_D|MOD_LEFT_SHIFT, // D - KEY_E|MOD_LEFT_SHIFT, // E - KEY_F|MOD_LEFT_SHIFT, // F - KEY_G|MOD_LEFT_SHIFT, // G - KEY_H|MOD_LEFT_SHIFT, // H - KEY_I|MOD_LEFT_SHIFT, // I - KEY_J|MOD_LEFT_SHIFT, // J - KEY_K|MOD_LEFT_SHIFT, // K - KEY_L|MOD_LEFT_SHIFT, // L - KEY_M|MOD_LEFT_SHIFT, // M - KEY_N|MOD_LEFT_SHIFT, // N - KEY_O|MOD_LEFT_SHIFT, // O - KEY_P|MOD_LEFT_SHIFT, // P - KEY_Q|MOD_LEFT_SHIFT, // Q - KEY_R|MOD_LEFT_SHIFT, // R - KEY_S|MOD_LEFT_SHIFT, // S - KEY_T|MOD_LEFT_SHIFT, // T - KEY_U|MOD_LEFT_SHIFT, // U - KEY_V|MOD_LEFT_SHIFT, // V - KEY_W|MOD_LEFT_SHIFT, // W - KEY_X|MOD_LEFT_SHIFT, // X - KEY_Y|MOD_LEFT_SHIFT, // Y - KEY_Z|MOD_LEFT_SHIFT, // Z - KEY_8|MOD_RIGHT_ALT, // [ - KEY_SZ|MOD_RIGHT_ALT, // bslash - KEY_9|MOD_RIGHT_ALT, // ] - KEY_6|MOD_LEFT_SHIFT, // ^ - KEY_MINUS|MOD_LEFT_SHIFT, // _ - KEY_ACCENT|MOD_LEFT_SHIFT, // ` - KEY_A, // a - KEY_B, // b - KEY_C, // c - KEY_D, // d - KEY_E, // e - KEY_F, // f - KEY_G, // g - KEY_H, // h - KEY_I, // i - KEY_J, // j - KEY_K, // k - KEY_L, // l - KEY_M, // m - KEY_N, // n - KEY_O, // o - KEY_P, // p - KEY_Q, // q - KEY_R, // r - KEY_S, // s - KEY_T, // t - KEY_U, // u - KEY_V, // v - KEY_W, // w - KEY_X, // x - KEY_Y, // y - KEY_Z, // z - KEY_7|MOD_RIGHT_ALT, // { - KEY_SMALLER|MOD_RIGHT_ALT, // | - KEY_0|MOD_RIGHT_ALT, // } - KEY_PLUS|MOD_RIGHT_ALT, // ~ - KEY_RESERVED // DEL + KEY_SPACE, // ' ' Space + KEY_1|MOD_LEFT_SHIFT, // ! + KEY_2|MOD_LEFT_SHIFT, // " + KEY_HASHTAG, // # + KEY_4|MOD_LEFT_SHIFT, // $ + KEY_5|MOD_LEFT_SHIFT, // % + KEY_6|MOD_LEFT_SHIFT, // & + KEY_HASHTAG|MOD_LEFT_SHIFT, // ' + KEY_8|MOD_LEFT_SHIFT, // ( + KEY_9|MOD_LEFT_SHIFT, // ) + KEY_PLUS|MOD_LEFT_SHIFT, // * + KEY_PLUS, // + + KEY_COMMA, // , + KEY_MINUS, // - + KEY_PERIOD, // . + KEY_7|MOD_LEFT_SHIFT, // / + KEY_0, // 0 + KEY_1, // 1 + KEY_2, // 2 + KEY_3, // 3 + KEY_4, // 4 + KEY_5, // 5 + KEY_6, // 6 + KEY_7, // 7 + KEY_8, // 8 + KEY_9, // 9 + KEY_PERIOD|MOD_LEFT_SHIFT, // : + KEY_COMMA|MOD_LEFT_SHIFT, // ; + KEY_SMALLER, // < + KEY_0|MOD_LEFT_SHIFT, // = + KEY_SMALLER|MOD_LEFT_SHIFT, // > + KEY_SZ|MOD_LEFT_SHIFT, // ? + KEY_Q|MOD_RIGHT_ALT, // @ + KEY_A|MOD_LEFT_SHIFT, // A + KEY_B|MOD_LEFT_SHIFT, // B + KEY_C|MOD_LEFT_SHIFT, // C + KEY_D|MOD_LEFT_SHIFT, // D + KEY_E|MOD_LEFT_SHIFT, // E + KEY_F|MOD_LEFT_SHIFT, // F + KEY_G|MOD_LEFT_SHIFT, // G + KEY_H|MOD_LEFT_SHIFT, // H + KEY_I|MOD_LEFT_SHIFT, // I + KEY_J|MOD_LEFT_SHIFT, // J + KEY_K|MOD_LEFT_SHIFT, // K + KEY_L|MOD_LEFT_SHIFT, // L + KEY_M|MOD_LEFT_SHIFT, // M + KEY_N|MOD_LEFT_SHIFT, // N + KEY_O|MOD_LEFT_SHIFT, // O + KEY_P|MOD_LEFT_SHIFT, // P + KEY_Q|MOD_LEFT_SHIFT, // Q + KEY_R|MOD_LEFT_SHIFT, // R + KEY_S|MOD_LEFT_SHIFT, // S + KEY_T|MOD_LEFT_SHIFT, // T + KEY_U|MOD_LEFT_SHIFT, // U + KEY_V|MOD_LEFT_SHIFT, // V + KEY_W|MOD_LEFT_SHIFT, // W + KEY_X|MOD_LEFT_SHIFT, // X + KEY_Y|MOD_LEFT_SHIFT, // Y + KEY_Z|MOD_LEFT_SHIFT, // Z + KEY_8|MOD_RIGHT_ALT, // [ + KEY_SZ|MOD_RIGHT_ALT, // bslash + KEY_9|MOD_RIGHT_ALT, // ] + KEY_6|MOD_LEFT_SHIFT, // ^ + KEY_MINUS|MOD_LEFT_SHIFT, // _ + KEY_ACCENT|MOD_LEFT_SHIFT, // ` + KEY_A, // a + KEY_B, // b + KEY_C, // c + KEY_D, // d + KEY_E, // e + KEY_F, // f + KEY_G, // g + KEY_H, // h + KEY_I, // i + KEY_J, // j + KEY_K, // k + KEY_L, // l + KEY_M, // m + KEY_N, // n + KEY_O, // o + KEY_P, // p + KEY_Q, // q + KEY_R, // r + KEY_S, // s + KEY_T, // t + KEY_U, // u + KEY_V, // v + KEY_W, // w + KEY_X, // x + KEY_Y, // y + KEY_Z, // z + KEY_7|MOD_RIGHT_ALT, // { + KEY_SMALLER|MOD_RIGHT_ALT, // | + KEY_0|MOD_RIGHT_ALT, // } + KEY_PLUS|MOD_RIGHT_ALT, // ~ + KEY_RESERVED // DEL }; diff --git a/src/KeyboardLayouts/ImprovedKeylayoutsUS.h b/src/KeyboardLayouts/ImprovedKeylayoutsUS.h index 4f87b30..cb52ec3 100644 --- a/src/KeyboardLayouts/ImprovedKeylayoutsUS.h +++ b/src/KeyboardLayouts/ImprovedKeylayoutsUS.h @@ -33,594 +33,594 @@ enum KeyboardKeycode : uint8_t { KEY_ERROR_ROLLOVER = 1, KEY_POST_FAIL = 2, KEY_ERROR_UNDEFINED = 3, - KEY_A = 4, - KEY_B = 5, - KEY_C = 6, - KEY_D = 7, - KEY_E = 8, - KEY_F = 9, - KEY_G = 10, - KEY_H = 11, - KEY_I = 12, - KEY_J = 13, - KEY_K = 14, - KEY_L = 15, - KEY_M = 16, - KEY_N = 17, - KEY_O = 18, - KEY_P = 19, - KEY_Q = 20, - KEY_R = 21, - KEY_S = 22, - KEY_T = 23, - KEY_U = 24, - KEY_V = 25, - KEY_W = 26, - KEY_X = 27, - KEY_Y = 28, - KEY_Z = 29, - KEY_1 = 30, - KEY_2 = 31, - KEY_3 = 32, - KEY_4 = 33, - KEY_5 = 34, - KEY_6 = 35, - KEY_7 = 36, - KEY_8 = 37, - KEY_9 = 38, - KEY_0 = 39, - KEY_ENTER = 40, - KEY_RETURN = 40, // Alias - KEY_ESC = 41, - KEY_BACKSPACE = 42, - KEY_TAB = 43, - KEY_SPACE = 44, - KEY_MINUS = 45, - KEY_EQUAL = 46, - KEY_LEFT_BRACE = 47, - KEY_RIGHT_BRACE = 48, - KEY_BACKSLASH = 49, - KEY_NON_US_NUM = 50, - KEY_SEMICOLON = 51, - KEY_QUOTE = 52, - KEY_TILDE = 53, - KEY_COMMA = 54, - KEY_PERIOD = 55, - KEY_SLASH = 56, - KEY_CAPS_LOCK = 0x39, - KEY_F1 = 0x3A, - KEY_F2 = 0x3B, - KEY_F3 = 0x3C, - KEY_F4 = 0x3D, - KEY_F5 = 0x3E, - KEY_F6 = 0x3F, - KEY_F7 = 0x40, - KEY_F8 = 0x41, - KEY_F9 = 0x42, - KEY_F10 = 0x43, - KEY_F11 = 0x44, - KEY_F12 = 0x45, - KEY_PRINT = 0x46, - KEY_PRINTSCREEN = 0x46, // Alias - KEY_SCROLL_LOCK = 0x47, - KEY_PAUSE = 0x48, - KEY_INSERT = 0x49, - KEY_HOME = 0x4A, - KEY_PAGE_UP = 0x4B, - KEY_DELETE = 0x4C, - KEY_END = 0x4D, - KEY_PAGE_DOWN = 0x4E, - KEY_RIGHT_ARROW = 0x4F, - KEY_LEFT_ARROW = 0x50, - KEY_DOWN_ARROW = 0x51, - KEY_UP_ARROW = 0x52, - KEY_RIGHT = 0x4F, // Alias - KEY_LEFT = 0x50, // Alias - KEY_DOWN = 0x51, // Alias - KEY_UP = 0x52, // Alias - KEY_NUM_LOCK = 0x53, - KEYPAD_DIVIDE = 0x54, - KEYPAD_MULTIPLY = 0x55, - KEYPAD_SUBTRACT = 0x56, - KEYPAD_ADD = 0x57, - KEYPAD_ENTER = 0x58, - KEYPAD_1 = 0x59, - KEYPAD_2 = 0x5A, - KEYPAD_3 = 0x5B, - KEYPAD_4 = 0x5C, - KEYPAD_5 = 0x5D, - KEYPAD_6 = 0x5E, - KEYPAD_7 = 0x5F, - KEYPAD_8 = 0x60, - KEYPAD_9 = 0x61, - KEYPAD_0 = 0x62, - KEYPAD_DOT = 0x63, - KEY_NON_US = 0x64, - KEY_APPLICATION = 0x65, // Context menu/right click - KEY_MENU = 0x65, // Alias + KEY_A = 4, + KEY_B = 5, + KEY_C = 6, + KEY_D = 7, + KEY_E = 8, + KEY_F = 9, + KEY_G = 10, + KEY_H = 11, + KEY_I = 12, + KEY_J = 13, + KEY_K = 14, + KEY_L = 15, + KEY_M = 16, + KEY_N = 17, + KEY_O = 18, + KEY_P = 19, + KEY_Q = 20, + KEY_R = 21, + KEY_S = 22, + KEY_T = 23, + KEY_U = 24, + KEY_V = 25, + KEY_W = 26, + KEY_X = 27, + KEY_Y = 28, + KEY_Z = 29, + KEY_1 = 30, + KEY_2 = 31, + KEY_3 = 32, + KEY_4 = 33, + KEY_5 = 34, + KEY_6 = 35, + KEY_7 = 36, + KEY_8 = 37, + KEY_9 = 38, + KEY_0 = 39, + KEY_ENTER = 40, + KEY_RETURN = 40, // Alias + KEY_ESC = 41, + KEY_BACKSPACE = 42, + KEY_TAB = 43, + KEY_SPACE = 44, + KEY_MINUS = 45, + KEY_EQUAL = 46, + KEY_LEFT_BRACE = 47, + KEY_RIGHT_BRACE = 48, + KEY_BACKSLASH = 49, + KEY_NON_US_NUM = 50, + KEY_SEMICOLON = 51, + KEY_QUOTE = 52, + KEY_TILDE = 53, + KEY_COMMA = 54, + KEY_PERIOD = 55, + KEY_SLASH = 56, + KEY_CAPS_LOCK = 0x39, + KEY_F1 = 0x3A, + KEY_F2 = 0x3B, + KEY_F3 = 0x3C, + KEY_F4 = 0x3D, + KEY_F5 = 0x3E, + KEY_F6 = 0x3F, + KEY_F7 = 0x40, + KEY_F8 = 0x41, + KEY_F9 = 0x42, + KEY_F10 = 0x43, + KEY_F11 = 0x44, + KEY_F12 = 0x45, + KEY_PRINT = 0x46, + KEY_PRINTSCREEN = 0x46, // Alias + KEY_SCROLL_LOCK = 0x47, + KEY_PAUSE = 0x48, + KEY_INSERT = 0x49, + KEY_HOME = 0x4A, + KEY_PAGE_UP = 0x4B, + KEY_DELETE = 0x4C, + KEY_END = 0x4D, + KEY_PAGE_DOWN = 0x4E, + KEY_RIGHT_ARROW = 0x4F, + KEY_LEFT_ARROW = 0x50, + KEY_DOWN_ARROW = 0x51, + KEY_UP_ARROW = 0x52, + KEY_RIGHT = 0x4F, // Alias + KEY_LEFT = 0x50, // Alias + KEY_DOWN = 0x51, // Alias + KEY_UP = 0x52, // Alias + KEY_NUM_LOCK = 0x53, + KEYPAD_DIVIDE = 0x54, + KEYPAD_MULTIPLY = 0x55, + KEYPAD_SUBTRACT = 0x56, + KEYPAD_ADD = 0x57, + KEYPAD_ENTER = 0x58, + KEYPAD_1 = 0x59, + KEYPAD_2 = 0x5A, + KEYPAD_3 = 0x5B, + KEYPAD_4 = 0x5C, + KEYPAD_5 = 0x5D, + KEYPAD_6 = 0x5E, + KEYPAD_7 = 0x5F, + KEYPAD_8 = 0x60, + KEYPAD_9 = 0x61, + KEYPAD_0 = 0x62, + KEYPAD_DOT = 0x63, + KEY_NON_US = 0x64, + KEY_APPLICATION = 0x65, // Context menu/right click + KEY_MENU = 0x65, // Alias - // Most of the following keys will only work with Linux or not at all. - // F13+ keys are mostly used for laptop functions like ECO key. - KEY_POWER = 0x66, // PowerOff (Ubuntu) - KEY_PAD_EQUALS = 0x67, // Dont confuse with KEYPAD_EQUAL_SIGN - KEY_F13 = 0x68, // Tools (Ubunutu) - KEY_F14 = 0x69, // Launch5 (Ubuntu) - KEY_F15 = 0x6A, // Launch6 (Ubuntu) - KEY_F16 = 0x6B, // Launch7 (Ubuntu) - KEY_F17 = 0x6C, // Launch8 (Ubuntu) - KEY_F18 = 0x6D, // Launch9 (Ubuntu) - KEY_F19 = 0x6E, // Disabled (Ubuntu) - KEY_F20 = 0x6F, // AudioMicMute (Ubuntu) - KEY_F21 = 0x70, // Touchpad toggle (Ubuntu) - KEY_F22 = 0x71, // TouchpadOn (Ubuntu) - KEY_F23 = 0x72, // TouchpadOff Ubuntu) - KEY_F24 = 0x73, // Disabled (Ubuntu) - KEY_EXECUTE = 0x74, // Open (Ubuntu) - KEY_HELP = 0x75, // Help (Ubuntu) - KEY_MENU2 = 0x76, // Disabled (Ubuntu) - KEY_SELECT = 0x77, // Disabled (Ubuntu) - KEY_STOP = 0x78, // Cancel (Ubuntu) - KEY_AGAIN = 0x79, // Redo (Ubuntu) - KEY_UNDO = 0x7A, // Undo (Ubuntu) - KEY_CUT = 0x7B, // Cut (Ubuntu) - KEY_COPY = 0x7C, // Copy (Ubuntu) - KEY_PASTE = 0x7D, // Paste (Ubuntu) - KEY_FIND = 0x7E, // Find (Ubuntu) - KEY_MUTE = 0x7F, - KEY_VOLUME_MUTE = 0x7F, // Alias - KEY_VOLUME_UP = 0x80, - KEY_VOLUME_DOWN = 0x81, - KEY_LOCKING_CAPS_LOCK = 0x82, // Disabled (Ubuntu) - KEY_LOCKING_NUM_LOCK = 0x83, // Disabled (Ubuntu) - KEY_LOCKING_SCROLL_LOCK = 0x84, // Disabled (Ubuntu) - KEYPAD_COMMA = 0x85, // . - KEYPAD_EQUAL_SIGN = 0x86, // Disabled (Ubuntu), Dont confuse with KEYPAD_EQUAL - KEY_INTERNATIONAL1 = 0x87, // Disabled (Ubuntu) - KEY_INTERNATIONAL2 = 0x88, // Hiragana Katakana (Ubuntu) - KEY_INTERNATIONAL3 = 0x89, // Disabled (Ubuntu) - KEY_INTERNATIONAL4 = 0x8A, // Henkan (Ubuntu) - KEY_INTERNATIONAL5 = 0x8B, // Muhenkan (Ubuntu) - KEY_INTERNATIONAL6 = 0x8C, // Disabled (Ubuntu) - KEY_INTERNATIONAL7 = 0x8D, // Disabled (Ubuntu) - KEY_INTERNATIONAL8 = 0x8E, // Disabled (Ubuntu) - KEY_INTERNATIONAL9 = 0x8F, // Disabled (Ubuntu) - KEY_LANG1 = 0x90, // Disabled (Ubuntu) - KEY_LANG2 = 0x91, // Disabled (Ubuntu) - KEY_LANG3 = 0x92, // Katana (Ubuntu) - KEY_LANG4 = 0x93, // Hiragana (Ubuntu) - KEY_LANG5 = 0x94, // Disabled (Ubuntu) - KEY_LANG6 = 0x95, // Disabled (Ubuntu) - KEY_LANG7 = 0x96, // Disabled (Ubuntu) - KEY_LANG8 = 0x97, // Disabled (Ubuntu) - KEY_LANG9 = 0x98, // Disabled (Ubuntu) - KEY_ALTERNATE_ERASE = 0x99, // Disabled (Ubuntu) - KEY_SYSREQ_ATTENTION = 0x9A, // Disabled (Ubuntu) - KEY_CANCEL = 0x9B, // Disabled (Ubuntu) - KEY_CLEAR = 0x9C, // Delete (Ubuntu) - KEY_PRIOR = 0x9D, // Disabled (Ubuntu) - KEY_RETURN2 = 0x9E, // Disabled (Ubuntu), Do not confuse this with KEY_ENTER - KEY_SEPARATOR = 0x9F, // Disabled (Ubuntu) - KEY_OUT = 0xA0, // Disabled (Ubuntu) - KEY_OPER = 0xA1, // Disabled (Ubuntu) - KEY_CLEAR_AGAIN = 0xA2, // Disabled (Ubuntu) - KEY_CRSEL_PROPS = 0xA3, // Disabled (Ubuntu) - KEY_EXSEL = 0xA4, // Disabled (Ubuntu) + // Most of the following keys will only work with Linux or not at all. + // F13+ keys are mostly used for laptop functions like ECO key. + KEY_POWER = 0x66, // PowerOff (Ubuntu) + KEY_PAD_EQUALS = 0x67, // Dont confuse with KEYPAD_EQUAL_SIGN + KEY_F13 = 0x68, // Tools (Ubunutu) + KEY_F14 = 0x69, // Launch5 (Ubuntu) + KEY_F15 = 0x6A, // Launch6 (Ubuntu) + KEY_F16 = 0x6B, // Launch7 (Ubuntu) + KEY_F17 = 0x6C, // Launch8 (Ubuntu) + KEY_F18 = 0x6D, // Launch9 (Ubuntu) + KEY_F19 = 0x6E, // Disabled (Ubuntu) + KEY_F20 = 0x6F, // AudioMicMute (Ubuntu) + KEY_F21 = 0x70, // Touchpad toggle (Ubuntu) + KEY_F22 = 0x71, // TouchpadOn (Ubuntu) + KEY_F23 = 0x72, // TouchpadOff Ubuntu) + KEY_F24 = 0x73, // Disabled (Ubuntu) + KEY_EXECUTE = 0x74, // Open (Ubuntu) + KEY_HELP = 0x75, // Help (Ubuntu) + KEY_MENU2 = 0x76, // Disabled (Ubuntu) + KEY_SELECT = 0x77, // Disabled (Ubuntu) + KEY_STOP = 0x78, // Cancel (Ubuntu) + KEY_AGAIN = 0x79, // Redo (Ubuntu) + KEY_UNDO = 0x7A, // Undo (Ubuntu) + KEY_CUT = 0x7B, // Cut (Ubuntu) + KEY_COPY = 0x7C, // Copy (Ubuntu) + KEY_PASTE = 0x7D, // Paste (Ubuntu) + KEY_FIND = 0x7E, // Find (Ubuntu) + KEY_MUTE = 0x7F, + KEY_VOLUME_MUTE = 0x7F, // Alias + KEY_VOLUME_UP = 0x80, + KEY_VOLUME_DOWN = 0x81, + KEY_LOCKING_CAPS_LOCK = 0x82, // Disabled (Ubuntu) + KEY_LOCKING_NUM_LOCK = 0x83, // Disabled (Ubuntu) + KEY_LOCKING_SCROLL_LOCK = 0x84, // Disabled (Ubuntu) + KEYPAD_COMMA = 0x85, // . + KEYPAD_EQUAL_SIGN = 0x86, // Disabled (Ubuntu), Dont confuse with KEYPAD_EQUAL + KEY_INTERNATIONAL1 = 0x87, // Disabled (Ubuntu) + KEY_INTERNATIONAL2 = 0x88, // Hiragana Katakana (Ubuntu) + KEY_INTERNATIONAL3 = 0x89, // Disabled (Ubuntu) + KEY_INTERNATIONAL4 = 0x8A, // Henkan (Ubuntu) + KEY_INTERNATIONAL5 = 0x8B, // Muhenkan (Ubuntu) + KEY_INTERNATIONAL6 = 0x8C, // Disabled (Ubuntu) + KEY_INTERNATIONAL7 = 0x8D, // Disabled (Ubuntu) + KEY_INTERNATIONAL8 = 0x8E, // Disabled (Ubuntu) + KEY_INTERNATIONAL9 = 0x8F, // Disabled (Ubuntu) + KEY_LANG1 = 0x90, // Disabled (Ubuntu) + KEY_LANG2 = 0x91, // Disabled (Ubuntu) + KEY_LANG3 = 0x92, // Katana (Ubuntu) + KEY_LANG4 = 0x93, // Hiragana (Ubuntu) + KEY_LANG5 = 0x94, // Disabled (Ubuntu) + KEY_LANG6 = 0x95, // Disabled (Ubuntu) + KEY_LANG7 = 0x96, // Disabled (Ubuntu) + KEY_LANG8 = 0x97, // Disabled (Ubuntu) + KEY_LANG9 = 0x98, // Disabled (Ubuntu) + KEY_ALTERNATE_ERASE = 0x99, // Disabled (Ubuntu) + KEY_SYSREQ_ATTENTION = 0x9A, // Disabled (Ubuntu) + KEY_CANCEL = 0x9B, // Disabled (Ubuntu) + KEY_CLEAR = 0x9C, // Delete (Ubuntu) + KEY_PRIOR = 0x9D, // Disabled (Ubuntu) + KEY_RETURN2 = 0x9E, // Disabled (Ubuntu), Do not confuse this with KEY_ENTER + KEY_SEPARATOR = 0x9F, // Disabled (Ubuntu) + KEY_OUT = 0xA0, // Disabled (Ubuntu) + KEY_OPER = 0xA1, // Disabled (Ubuntu) + KEY_CLEAR_AGAIN = 0xA2, // Disabled (Ubuntu) + KEY_CRSEL_PROPS = 0xA3, // Disabled (Ubuntu) + KEY_EXSEL = 0xA4, // Disabled (Ubuntu) - KEY_PAD_00 = 0xB0, // Disabled (Ubuntu) - KEY_PAD_000 = 0xB1, // Disabled (Ubuntu) - KEY_THOUSANDS_SEPARATOR = 0xB2, // Disabled (Ubuntu) - KEY_DECIMAL_SEPARATOR = 0xB3, // Disabled (Ubuntu) - KEY_CURRENCY_UNIT = 0xB4, // Disabled (Ubuntu) - KEY_CURRENCY_SUB_UNIT = 0xB5, // Disabled (Ubuntu) - KEYPAD_LEFT_BRACE = 0xB6, // ( - KEYPAD_RIGHT_BRACE = 0xB7, // ) - KEYPAD_LEFT_CURLY_BRACE = 0xB8, // Disabled (Ubuntu) - KEYPAD_RIGHT_CURLY_BRACE = 0xB9, // Disabled (Ubuntu) - KEYPAD_TAB = 0xBA, // Disabled (Ubuntu) - KEYPAD_BACKSPACE = 0xBB, // Disabled (Ubuntu) - KEYPAD_A = 0xBC, // Disabled (Ubuntu) - KEYPAD_B = 0xBD, // Disabled (Ubuntu) - KEYPAD_C = 0xBE, // Disabled (Ubuntu) - KEYPAD_D = 0xBF, // Disabled (Ubuntu) - KEYPAD_E = 0xC0, // Disabled (Ubuntu) - KEYPAD_F = 0xC1, // Disabled (Ubuntu) - KEYPAD_XOR = 0xC2, // Disabled (Ubuntu) - KEYPAD_CARET = 0xC3, // Disabled (Ubuntu) - KEYPAD_PERCENT = 0xC4, // Disabled (Ubuntu) - KEYPAD_LESS_THAN = 0xC5, // Disabled (Ubuntu) - KEYPAD_GREATER_THAN = 0xC6, // Disabled (Ubuntu) - KEYPAD_AMPERSAND = 0xC7, // Disabled (Ubuntu) - KEYPAD_DOUBLEAMPERSAND = 0xC8, // Disabled (Ubuntu) - KEYPAD_PIPE = 0xC9, // Disabled (Ubuntu) - KEYPAD_DOUBLEPIPE = 0xCA, // Disabled (Ubuntu) - KEYPAD_COLON = 0xCB, // Disabled (Ubuntu) - KEYPAD_POUND_SIGN = 0xCC, // Disabled (Ubuntu) - KEYPAD_SPACE = 0xCD, // Disabled (Ubuntu) - KEYPAD_AT_SIGN = 0xCE, // Disabled (Ubuntu) - KEYPAD_EXCLAMATION_POINT = 0xCF, // Disabled (Ubuntu) - KEYPAD_MEMORY_STORE = 0xD0, // Disabled (Ubuntu) - KEYPAD_MEMORY_RECALL = 0xD1, // Disabled (Ubuntu) - KEYPAD_MEMORY_CLEAR = 0xD2, // Disabled (Ubuntu) - KEYPAD_MEMORY_ADD = 0xD3, // Disabled (Ubuntu) - KEYPAD_MEMORY_SUBTRACT = 0xD4, // Disabled (Ubuntu) - KEYPAD_MEMORY_MULTIPLY = 0xD5, // Disabled (Ubuntu) - KEYPAD_MEMORY_DIVIDE = 0xD6, // Disabled (Ubuntu) - KEYPAD_PLUS_MINUS = 0xD7, // Disabled (Ubuntu) - KEYPAD_CLEAR = 0xD8, // Delete (Ubuntu) - KEYPAD_CLEAR_ENTRY = 0xD9, // Disabled (Ubuntu) - KEYPAD_BINARY = 0xDA, // Disabled (Ubuntu) - KEYPAD_OCTAL = 0xDB, // Disabled (Ubuntu) - KEYPAD_DECIMAL = 0xDC, // Disabled (Ubuntu) - KEYPAD_HEXADECIMAL = 0xDD, // Disabled (Ubuntu) + KEY_PAD_00 = 0xB0, // Disabled (Ubuntu) + KEY_PAD_000 = 0xB1, // Disabled (Ubuntu) + KEY_THOUSANDS_SEPARATOR = 0xB2, // Disabled (Ubuntu) + KEY_DECIMAL_SEPARATOR = 0xB3, // Disabled (Ubuntu) + KEY_CURRENCY_UNIT = 0xB4, // Disabled (Ubuntu) + KEY_CURRENCY_SUB_UNIT = 0xB5, // Disabled (Ubuntu) + KEYPAD_LEFT_BRACE = 0xB6, // ( + KEYPAD_RIGHT_BRACE = 0xB7, // ) + KEYPAD_LEFT_CURLY_BRACE = 0xB8, // Disabled (Ubuntu) + KEYPAD_RIGHT_CURLY_BRACE = 0xB9, // Disabled (Ubuntu) + KEYPAD_TAB = 0xBA, // Disabled (Ubuntu) + KEYPAD_BACKSPACE = 0xBB, // Disabled (Ubuntu) + KEYPAD_A = 0xBC, // Disabled (Ubuntu) + KEYPAD_B = 0xBD, // Disabled (Ubuntu) + KEYPAD_C = 0xBE, // Disabled (Ubuntu) + KEYPAD_D = 0xBF, // Disabled (Ubuntu) + KEYPAD_E = 0xC0, // Disabled (Ubuntu) + KEYPAD_F = 0xC1, // Disabled (Ubuntu) + KEYPAD_XOR = 0xC2, // Disabled (Ubuntu) + KEYPAD_CARET = 0xC3, // Disabled (Ubuntu) + KEYPAD_PERCENT = 0xC4, // Disabled (Ubuntu) + KEYPAD_LESS_THAN = 0xC5, // Disabled (Ubuntu) + KEYPAD_GREATER_THAN = 0xC6, // Disabled (Ubuntu) + KEYPAD_AMPERSAND = 0xC7, // Disabled (Ubuntu) + KEYPAD_DOUBLEAMPERSAND = 0xC8, // Disabled (Ubuntu) + KEYPAD_PIPE = 0xC9, // Disabled (Ubuntu) + KEYPAD_DOUBLEPIPE = 0xCA, // Disabled (Ubuntu) + KEYPAD_COLON = 0xCB, // Disabled (Ubuntu) + KEYPAD_POUND_SIGN = 0xCC, // Disabled (Ubuntu) + KEYPAD_SPACE = 0xCD, // Disabled (Ubuntu) + KEYPAD_AT_SIGN = 0xCE, // Disabled (Ubuntu) + KEYPAD_EXCLAMATION_POINT = 0xCF, // Disabled (Ubuntu) + KEYPAD_MEMORY_STORE = 0xD0, // Disabled (Ubuntu) + KEYPAD_MEMORY_RECALL = 0xD1, // Disabled (Ubuntu) + KEYPAD_MEMORY_CLEAR = 0xD2, // Disabled (Ubuntu) + KEYPAD_MEMORY_ADD = 0xD3, // Disabled (Ubuntu) + KEYPAD_MEMORY_SUBTRACT = 0xD4, // Disabled (Ubuntu) + KEYPAD_MEMORY_MULTIPLY = 0xD5, // Disabled (Ubuntu) + KEYPAD_MEMORY_DIVIDE = 0xD6, // Disabled (Ubuntu) + KEYPAD_PLUS_MINUS = 0xD7, // Disabled (Ubuntu) + KEYPAD_CLEAR = 0xD8, // Delete (Ubuntu) + KEYPAD_CLEAR_ENTRY = 0xD9, // Disabled (Ubuntu) + KEYPAD_BINARY = 0xDA, // Disabled (Ubuntu) + KEYPAD_OCTAL = 0xDB, // Disabled (Ubuntu) + KEYPAD_DECIMAL = 0xDC, // Disabled (Ubuntu) + KEYPAD_HEXADECIMAL = 0xDD, // Disabled (Ubuntu) - KEY_LEFT_CTRL = 0xE0, - KEY_LEFT_SHIFT = 0xE1, - KEY_LEFT_ALT = 0xE2, - KEY_LEFT_GUI = 0xE3, - KEY_LEFT_WINDOWS = 0xE3, // Alias - KEY_RIGHT_CTRL = 0xE4, - KEY_RIGHT_SHIFT = 0xE5, - KEY_RIGHT_ALT = 0xE6, - KEY_RIGHT_GUI = 0xE7, - KEY_RIGHT_WINDOWS = 0xE7, // Alias + KEY_LEFT_CTRL = 0xE0, + KEY_LEFT_SHIFT = 0xE1, + KEY_LEFT_ALT = 0xE2, + KEY_LEFT_GUI = 0xE3, + KEY_LEFT_WINDOWS = 0xE3, // Alias + KEY_RIGHT_CTRL = 0xE4, + KEY_RIGHT_SHIFT = 0xE5, + KEY_RIGHT_ALT = 0xE6, + KEY_RIGHT_GUI = 0xE7, + KEY_RIGHT_WINDOWS = 0xE7, // Alias - // Keyboard HID mappings + // Keyboard HID mappings - // Reserved (no_event_indicated) - HID_KEYBOARD_ERROR_ROLLOVER = 0x01, - HID_KEYBOARD_POST_FAIL = 0x02, - HID_KEYBOARD_ERROR_UNDEFINED = 0x03, - HID_KEYBOARD_A_AND_A = 0x04, - HID_KEYBOARD_B_AND_B = 0x05, - HID_KEYBOARD_C_AND_C = 0x06, - HID_KEYBOARD_D_AND_D = 0x07, - HID_KEYBOARD_E_AND_E = 0x08, - HID_KEYBOARD_F_AND_F = 0x09, - HID_KEYBOARD_G_AND_G = 0x0A, - HID_KEYBOARD_H_AND_H = 0x0B, - HID_KEYBOARD_I_AND_I = 0x0C, - HID_KEYBOARD_J_AND_J = 0x0D, - HID_KEYBOARD_K_AND_K = 0x0E, - HID_KEYBOARD_L_AND_L = 0x0F, - HID_KEYBOARD_M_AND_M = 0x10, - HID_KEYBOARD_N_AND_N = 0x11, - HID_KEYBOARD_O_AND_O = 0x12, - HID_KEYBOARD_P_AND_P = 0x13, - HID_KEYBOARD_Q_AND_Q = 0x14, - HID_KEYBOARD_R_AND_R = 0x15, - HID_KEYBOARD_S_AND_S = 0x16, - HID_KEYBOARD_T_AND_T = 0x17, - HID_KEYBOARD_U_AND_U = 0x18, - HID_KEYBOARD_V_AND_V = 0x19, - HID_KEYBOARD_W_AND_W = 0x1A, - HID_KEYBOARD_X_AND_X = 0x1B, - HID_KEYBOARD_Y_AND_Y = 0x1C, - HID_KEYBOARD_Z_AND_Z = 0x1D, - HID_KEYBOARD_1_AND_EXCLAMATION_POINT = 0x1E, - HID_KEYBOARD_2_AND_AT = 0x1F, - HID_KEYBOARD_3_AND_POUND = 0x20, - HID_KEYBOARD_4_AND_DOLLAR = 0x21, - HID_KEYBOARD_5_AND_PERCENT = 0x22, - HID_KEYBOARD_6_AND_CARAT = 0x23, - HID_KEYBOARD_7_AND_AMPERSAND = 0x24, - HID_KEYBOARD_8_AND_ASTERISK = 0x25, - HID_KEYBOARD_9_AND_LEFT_PAREN = 0x26, - HID_KEYBOARD_0_AND_RIGHT_PAREN = 0x27, - HID_KEYBOARD_ENTER = 0x28, // (MARKED AS ENTER_SLASH_RETURN) - HID_KEYBOARD_ESCAPE = 0x29, - HID_KEYBOARD_DELETE = 0x2A, // (BACKSPACE) - HID_KEYBOARD_TAB = 0x2B, - HID_KEYBOARD_SPACEBAR = 0x2C, - HID_KEYBOARD_MINUS_AND_UNDERSCORE = 0x2D, // (UNDERSCORE) - HID_KEYBOARD_EQUALS_AND_PLUS = 0x2E, - HID_KEYBOARD_LEFT_BRACKET_AND_LEFT_CURLY_BRACE = 0x2F, - HID_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_CURLY_BRACE = 0x30, - HID_KEYBOARD_BACKSLASH_AND_PIPE = 0x31, - HID_KEYBOARD_NON_US_POUND_AND_TILDE = 0x32, - HID_KEYBOARD_SEMICOLON_AND_COLON = 0x33, - HID_KEYBOARD_QUOTE_AND_DOUBLEQUOTE = 0x34, - HID_KEYBOARD_GRAVE_ACCENT_AND_TILDE = 0x35, - HID_KEYBOARD_COMMA_AND_LESS_THAN = 0x36, - HID_KEYBOARD_PERIOD_AND_GREATER_THAN = 0x37, - HID_KEYBOARD_SLASH_AND_QUESTION_MARK = 0x38, - HID_KEYBOARD_CAPS_LOCK = 0x39, - HID_KEYBOARD_F1 = 0x3A, - HID_KEYBOARD_F2 = 0x3B, - HID_KEYBOARD_F3 = 0x3C, - HID_KEYBOARD_F4 = 0x3D, - HID_KEYBOARD_F5 = 0x3E, - HID_KEYBOARD_F6 = 0x3F, - HID_KEYBOARD_F7 = 0x40, - HID_KEYBOARD_F8 = 0x41, - HID_KEYBOARD_F9 = 0x42, - HID_KEYBOARD_F10 = 0x43, - HID_KEYBOARD_F11 = 0x44, - HID_KEYBOARD_F12 = 0x45, - HID_KEYBOARD_PRINTSCREEN = 0x46, - HID_KEYBOARD_SCROLL_LOCK = 0x47, - HID_KEYBOARD_PAUSE = 0x48, - HID_KEYBOARD_INSERT = 0x49, - HID_KEYBOARD_HOME = 0x4A, - HID_KEYBOARD_PAGE_UP = 0x4B, - HID_KEYBOARD_DELETE_FORWARD = 0x4C, - HID_KEYBOARD_END = 0x4D, - HID_KEYBOARD_PAGE_DOWN = 0x4E, - HID_KEYBOARD_RIGHTARROW = 0x4F, - HID_KEYBOARD_LEFTARROW = 0x50, - HID_KEYBOARD_DOWNARROW = 0x51, - HID_KEYBOARD_UPARROW = 0x52, - HID_KEYPAD_NUM_LOCK_AND_CLEAR = 0x53, - HID_KEYPAD_DIVIDE = 0x54, - HID_KEYPAD_MULTIPLY = 0x55, - HID_KEYPAD_SUBTRACT = 0x56, - HID_KEYPAD_ADD = 0x57, - HID_KEYPAD_ENTER = 0x58, - HID_KEYPAD_1_AND_END = 0x59, - HID_KEYPAD_2_AND_DOWN_ARROW = 0x5A, - HID_KEYPAD_3_AND_PAGE_DOWN = 0x5B, - HID_KEYPAD_4_AND_LEFT_ARROW = 0x5C, - HID_KEYPAD_5 = 0x5D, - HID_KEYPAD_6_AND_RIGHT_ARROW = 0x5E, - HID_KEYPAD_7_AND_HOME = 0x5F, - HID_KEYPAD_8_AND_UP_ARROW = 0x60, - HID_KEYPAD_9_AND_PAGE_UP = 0x61, - HID_KEYPAD_0_AND_INSERT = 0x62, - HID_KEYPAD_PERIOD_AND_DELETE = 0x63, - HID_KEYBOARD_NON_US_BACKSLASH_AND_PIPE = 0x64, - HID_KEYBOARD_APPLICATION = 0x65, - HID_KEYBOARD_POWER = 0x66, - HID_KEYPAD_EQUALS = 0x67, - HID_KEYBOARD_F13 = 0x68, - HID_KEYBOARD_F14 = 0x69, - HID_KEYBOARD_F15 = 0x6A, - HID_KEYBOARD_F16 = 0x6B, - HID_KEYBOARD_F17 = 0x6C, - HID_KEYBOARD_F18 = 0x6D, - HID_KEYBOARD_F19 = 0x6E, - HID_KEYBOARD_F20 = 0x6F, - HID_KEYBOARD_F21 = 0x70, - HID_KEYBOARD_F22 = 0x71, - HID_KEYBOARD_F23 = 0x72, - HID_KEYBOARD_F24 = 0x73, - HID_KEYBOARD_EXECUTE = 0x74, - HID_KEYBOARD_HELP = 0x75, - HID_KEYBOARD_MENU = 0x76, - HID_KEYBOARD_SELECT = 0x77, - HID_KEYBOARD_STOP = 0x78, - HID_KEYBOARD_AGAIN = 0x79, - HID_KEYBOARD_UNDO = 0x7A, - HID_KEYBOARD_CUT = 0x7B, - HID_KEYBOARD_COPY = 0x7C, - HID_KEYBOARD_PASTE = 0x7D, - HID_KEYBOARD_FIND = 0x7E, - HID_KEYBOARD_MUTE = 0x7F, - HID_KEYBOARD_VOLUME_UP = 0x80, - HID_KEYBOARD_VOLUME_DOWN = 0x81, - HID_KEYBOARD_LOCKING_CAPS_LOCK = 0x82, - HID_KEYBOARD_LOCKING_NUM_LOCK = 0x83, - HID_KEYBOARD_LOCKING_SCROLL_LOCK = 0x84, - HID_KEYPAD_COMMA = 0x85, - HID_KEYPAD_EQUAL_SIGN = 0x86, - HID_KEYBOARD_INTERNATIONAL1 = 0x87, - HID_KEYBOARD_INTERNATIONAL2 = 0x88, - HID_KEYBOARD_INTERNATIONAL3 = 0x89, - HID_KEYBOARD_INTERNATIONAL4 = 0x8A, - HID_KEYBOARD_INTERNATIONAL5 = 0x8B, - HID_KEYBOARD_INTERNATIONAL6 = 0x8C, - HID_KEYBOARD_INTERNATIONAL7 = 0x8D, - HID_KEYBOARD_INTERNATIONAL8 = 0x8E, - HID_KEYBOARD_INTERNATIONAL9 = 0x8F, - HID_KEYBOARD_LANG1 = 0x90, - HID_KEYBOARD_LANG2 = 0x91, - HID_KEYBOARD_LANG3 = 0x92, - HID_KEYBOARD_LANG4 = 0x93, - HID_KEYBOARD_LANG5 = 0x94, - HID_KEYBOARD_LANG6 = 0x95, - HID_KEYBOARD_LANG7 = 0x96, - HID_KEYBOARD_LANG8 = 0x97, - HID_KEYBOARD_LANG9 = 0x98, - HID_KEYBOARD_ALTERNATE_ERASE = 0x99, - HID_KEYBOARD_SYSREQ_SLASH_ATTENTION = 0x9A, - HID_KEYBOARD_CANCEL = 0x9B, - HID_KEYBOARD_CLEAR = 0x9C, - HID_KEYBOARD_PRIOR = 0x9D, - HID_KEYBOARD_RETURN = 0x9E, - HID_KEYBOARD_SEPARATOR = 0x9F, - HID_KEYBOARD_OUT = 0xA0, - HID_KEYBOARD_OPER = 0xA1, - HID_KEYBOARD_CLEAR_SLASH_AGAIN = 0xA2, - HID_KEYBOARD_CRSEL_SLASH_PROPS = 0xA3, - HID_KEYBOARD_EXSEL = 0xA4, - // Reserved 0xA5-AF - HID_KEYPAD_00 = 0xB0, - HID_KEYPAD_000 = 0xB1, - HID_THOUSANDS_SEPARATOR = 0xB2, - HID_DECIMAL_SEPARATOR = 0xB3, - HID_CURRENCY_UNIT = 0xB4, - HID_CURRENCY_SUBUNIT = 0xB5, - HID_KEYPAD_LEFT_PAREN = 0xB6, - HID_KEYPAD_RIGHT_PAREN = 0xB7, - HID_KEYPAD_LEFT_CURLY_BRACE = 0xB8, - HID_KEYPAD_RIGHT_CURLY_BRACE = 0xB9, - HID_KEYPAD_TAB = 0xBA, - HID_KEYPAD_BACKSPACE = 0xBB, - HID_KEYPAD_A = 0xBC, - HID_KEYPAD_B = 0xBD, - HID_KEYPAD_C = 0xBE, - HID_KEYPAD_D = 0xBF, - HID_KEYPAD_E = 0xC0, - HID_KEYPAD_F = 0xC1, - HID_KEYPAD_XOR = 0xC2, - HID_KEYPAD_CARAT = 0xC3, - HID_KEYPAD_PERCENT = 0xC4, - HID_KEYPAD_LESS_THAN = 0xC5, - HID_KEYPAD_GREATER_THAN = 0xC6, - HID_KEYPAD_AMPERSAND = 0xC7, - HID_KEYPAD_DOUBLEAMPERSAND = 0xC8, - HID_KEYPAD_PIPE = 0xC9, - HID_KEYPAD_DOUBLEPIPE = 0xCA, - HID_KEYPAD_COLON = 0xCB, - HID_KEYPAD_POUND_SIGN = 0xCC, - HID_KEYPAD_SPACE = 0xCD, - HID_KEYPAD_AT_SIGN = 0xCE, - HID_KEYPAD_EXCLAMATION_POINT = 0xCF, - HID_KEYPAD_MEMORY_STORE = 0xD0, - HID_KEYPAD_MEMORY_RECALL = 0xD1, - HID_KEYPAD_MEMORY_CLEAR = 0xD2, - HID_KEYPAD_MEMORY_ADD = 0xD3, - HID_KEYPAD_MEMORY_SUBTRACT = 0xD4, - HID_KEYPAD_MEMORY_MULTIPLY = 0xD5, - HID_KEYPAD_MEMORY_DIVIDE = 0xD6, - HID_KEYPAD_PLUS_SLASH_MINUS = 0xD7, - HID_KEYPAD_CLEAR = 0xD8, - HID_KEYPAD_CLEAR_ENTRY = 0xD9, - HID_KEYPAD_BINARY = 0xDA, - HID_KEYPAD_OCTAL = 0xDB, - HID_KEYPAD_DECIMAL = 0xDC, - HID_KEYPAD_HEXADECIMAL = 0xDD, + // Reserved (no_event_indicated) + HID_KEYBOARD_ERROR_ROLLOVER = 0x01, + HID_KEYBOARD_POST_FAIL = 0x02, + HID_KEYBOARD_ERROR_UNDEFINED = 0x03, + HID_KEYBOARD_A_AND_A = 0x04, + HID_KEYBOARD_B_AND_B = 0x05, + HID_KEYBOARD_C_AND_C = 0x06, + HID_KEYBOARD_D_AND_D = 0x07, + HID_KEYBOARD_E_AND_E = 0x08, + HID_KEYBOARD_F_AND_F = 0x09, + HID_KEYBOARD_G_AND_G = 0x0A, + HID_KEYBOARD_H_AND_H = 0x0B, + HID_KEYBOARD_I_AND_I = 0x0C, + HID_KEYBOARD_J_AND_J = 0x0D, + HID_KEYBOARD_K_AND_K = 0x0E, + HID_KEYBOARD_L_AND_L = 0x0F, + HID_KEYBOARD_M_AND_M = 0x10, + HID_KEYBOARD_N_AND_N = 0x11, + HID_KEYBOARD_O_AND_O = 0x12, + HID_KEYBOARD_P_AND_P = 0x13, + HID_KEYBOARD_Q_AND_Q = 0x14, + HID_KEYBOARD_R_AND_R = 0x15, + HID_KEYBOARD_S_AND_S = 0x16, + HID_KEYBOARD_T_AND_T = 0x17, + HID_KEYBOARD_U_AND_U = 0x18, + HID_KEYBOARD_V_AND_V = 0x19, + HID_KEYBOARD_W_AND_W = 0x1A, + HID_KEYBOARD_X_AND_X = 0x1B, + HID_KEYBOARD_Y_AND_Y = 0x1C, + HID_KEYBOARD_Z_AND_Z = 0x1D, + HID_KEYBOARD_1_AND_EXCLAMATION_POINT = 0x1E, + HID_KEYBOARD_2_AND_AT = 0x1F, + HID_KEYBOARD_3_AND_POUND = 0x20, + HID_KEYBOARD_4_AND_DOLLAR = 0x21, + HID_KEYBOARD_5_AND_PERCENT = 0x22, + HID_KEYBOARD_6_AND_CARAT = 0x23, + HID_KEYBOARD_7_AND_AMPERSAND = 0x24, + HID_KEYBOARD_8_AND_ASTERISK = 0x25, + HID_KEYBOARD_9_AND_LEFT_PAREN = 0x26, + HID_KEYBOARD_0_AND_RIGHT_PAREN = 0x27, + HID_KEYBOARD_ENTER = 0x28, // (MARKED AS ENTER_SLASH_RETURN) + HID_KEYBOARD_ESCAPE = 0x29, + HID_KEYBOARD_DELETE = 0x2A, // (BACKSPACE) + HID_KEYBOARD_TAB = 0x2B, + HID_KEYBOARD_SPACEBAR = 0x2C, + HID_KEYBOARD_MINUS_AND_UNDERSCORE = 0x2D, // (UNDERSCORE) + HID_KEYBOARD_EQUALS_AND_PLUS = 0x2E, + HID_KEYBOARD_LEFT_BRACKET_AND_LEFT_CURLY_BRACE = 0x2F, + HID_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_CURLY_BRACE = 0x30, + HID_KEYBOARD_BACKSLASH_AND_PIPE = 0x31, + HID_KEYBOARD_NON_US_POUND_AND_TILDE = 0x32, + HID_KEYBOARD_SEMICOLON_AND_COLON = 0x33, + HID_KEYBOARD_QUOTE_AND_DOUBLEQUOTE = 0x34, + HID_KEYBOARD_GRAVE_ACCENT_AND_TILDE = 0x35, + HID_KEYBOARD_COMMA_AND_LESS_THAN = 0x36, + HID_KEYBOARD_PERIOD_AND_GREATER_THAN = 0x37, + HID_KEYBOARD_SLASH_AND_QUESTION_MARK = 0x38, + HID_KEYBOARD_CAPS_LOCK = 0x39, + HID_KEYBOARD_F1 = 0x3A, + HID_KEYBOARD_F2 = 0x3B, + HID_KEYBOARD_F3 = 0x3C, + HID_KEYBOARD_F4 = 0x3D, + HID_KEYBOARD_F5 = 0x3E, + HID_KEYBOARD_F6 = 0x3F, + HID_KEYBOARD_F7 = 0x40, + HID_KEYBOARD_F8 = 0x41, + HID_KEYBOARD_F9 = 0x42, + HID_KEYBOARD_F10 = 0x43, + HID_KEYBOARD_F11 = 0x44, + HID_KEYBOARD_F12 = 0x45, + HID_KEYBOARD_PRINTSCREEN = 0x46, + HID_KEYBOARD_SCROLL_LOCK = 0x47, + HID_KEYBOARD_PAUSE = 0x48, + HID_KEYBOARD_INSERT = 0x49, + HID_KEYBOARD_HOME = 0x4A, + HID_KEYBOARD_PAGE_UP = 0x4B, + HID_KEYBOARD_DELETE_FORWARD = 0x4C, + HID_KEYBOARD_END = 0x4D, + HID_KEYBOARD_PAGE_DOWN = 0x4E, + HID_KEYBOARD_RIGHTARROW = 0x4F, + HID_KEYBOARD_LEFTARROW = 0x50, + HID_KEYBOARD_DOWNARROW = 0x51, + HID_KEYBOARD_UPARROW = 0x52, + HID_KEYPAD_NUM_LOCK_AND_CLEAR = 0x53, + HID_KEYPAD_DIVIDE = 0x54, + HID_KEYPAD_MULTIPLY = 0x55, + HID_KEYPAD_SUBTRACT = 0x56, + HID_KEYPAD_ADD = 0x57, + HID_KEYPAD_ENTER = 0x58, + HID_KEYPAD_1_AND_END = 0x59, + HID_KEYPAD_2_AND_DOWN_ARROW = 0x5A, + HID_KEYPAD_3_AND_PAGE_DOWN = 0x5B, + HID_KEYPAD_4_AND_LEFT_ARROW = 0x5C, + HID_KEYPAD_5 = 0x5D, + HID_KEYPAD_6_AND_RIGHT_ARROW = 0x5E, + HID_KEYPAD_7_AND_HOME = 0x5F, + HID_KEYPAD_8_AND_UP_ARROW = 0x60, + HID_KEYPAD_9_AND_PAGE_UP = 0x61, + HID_KEYPAD_0_AND_INSERT = 0x62, + HID_KEYPAD_PERIOD_AND_DELETE = 0x63, + HID_KEYBOARD_NON_US_BACKSLASH_AND_PIPE = 0x64, + HID_KEYBOARD_APPLICATION = 0x65, + HID_KEYBOARD_POWER = 0x66, + HID_KEYPAD_EQUALS = 0x67, + HID_KEYBOARD_F13 = 0x68, + HID_KEYBOARD_F14 = 0x69, + HID_KEYBOARD_F15 = 0x6A, + HID_KEYBOARD_F16 = 0x6B, + HID_KEYBOARD_F17 = 0x6C, + HID_KEYBOARD_F18 = 0x6D, + HID_KEYBOARD_F19 = 0x6E, + HID_KEYBOARD_F20 = 0x6F, + HID_KEYBOARD_F21 = 0x70, + HID_KEYBOARD_F22 = 0x71, + HID_KEYBOARD_F23 = 0x72, + HID_KEYBOARD_F24 = 0x73, + HID_KEYBOARD_EXECUTE= 0x74, + HID_KEYBOARD_HELP = 0x75, + HID_KEYBOARD_MENU = 0x76, + HID_KEYBOARD_SELECT = 0x77, + HID_KEYBOARD_STOP = 0x78, + HID_KEYBOARD_AGAIN = 0x79, + HID_KEYBOARD_UNDO = 0x7A, + HID_KEYBOARD_CUT = 0x7B, + HID_KEYBOARD_COPY = 0x7C, + HID_KEYBOARD_PASTE = 0x7D, + HID_KEYBOARD_FIND = 0x7E, + HID_KEYBOARD_MUTE = 0x7F, + HID_KEYBOARD_VOLUME_UP = 0x80, + HID_KEYBOARD_VOLUME_DOWN = 0x81, + HID_KEYBOARD_LOCKING_CAPS_LOCK = 0x82, + HID_KEYBOARD_LOCKING_NUM_LOCK = 0x83, + HID_KEYBOARD_LOCKING_SCROLL_LOCK= 0x84, + HID_KEYPAD_COMMA = 0x85, + HID_KEYPAD_EQUAL_SIGN = 0x86, + HID_KEYBOARD_INTERNATIONAL1 = 0x87, + HID_KEYBOARD_INTERNATIONAL2 = 0x88, + HID_KEYBOARD_INTERNATIONAL3 = 0x89, + HID_KEYBOARD_INTERNATIONAL4 = 0x8A, + HID_KEYBOARD_INTERNATIONAL5 = 0x8B, + HID_KEYBOARD_INTERNATIONAL6 = 0x8C, + HID_KEYBOARD_INTERNATIONAL7 = 0x8D, + HID_KEYBOARD_INTERNATIONAL8 = 0x8E, + HID_KEYBOARD_INTERNATIONAL9 = 0x8F, + HID_KEYBOARD_LANG1 = 0x90, + HID_KEYBOARD_LANG2 = 0x91, + HID_KEYBOARD_LANG3 = 0x92, + HID_KEYBOARD_LANG4 = 0x93, + HID_KEYBOARD_LANG5 = 0x94, + HID_KEYBOARD_LANG6 = 0x95, + HID_KEYBOARD_LANG7 = 0x96, + HID_KEYBOARD_LANG8 = 0x97, + HID_KEYBOARD_LANG9 = 0x98, + HID_KEYBOARD_ALTERNATE_ERASE = 0x99, + HID_KEYBOARD_SYSREQ_SLASH_ATTENTION = 0x9A, + HID_KEYBOARD_CANCEL = 0x9B, + HID_KEYBOARD_CLEAR = 0x9C, + HID_KEYBOARD_PRIOR = 0x9D, + HID_KEYBOARD_RETURN = 0x9E, + HID_KEYBOARD_SEPARATOR = 0x9F, + HID_KEYBOARD_OUT = 0xA0, + HID_KEYBOARD_OPER = 0xA1, + HID_KEYBOARD_CLEAR_SLASH_AGAIN = 0xA2, + HID_KEYBOARD_CRSEL_SLASH_PROPS = 0xA3, + HID_KEYBOARD_EXSEL = 0xA4, + // Reserved 0xA5-AF + HID_KEYPAD_00 = 0xB0, + HID_KEYPAD_000 = 0xB1, + HID_THOUSANDS_SEPARATOR = 0xB2, + HID_DECIMAL_SEPARATOR = 0xB3, + HID_CURRENCY_UNIT = 0xB4, + HID_CURRENCY_SUBUNIT = 0xB5, + HID_KEYPAD_LEFT_PAREN = 0xB6, + HID_KEYPAD_RIGHT_PAREN = 0xB7, + HID_KEYPAD_LEFT_CURLY_BRACE = 0xB8, + HID_KEYPAD_RIGHT_CURLY_BRACE = 0xB9, + HID_KEYPAD_TAB = 0xBA, + HID_KEYPAD_BACKSPACE = 0xBB, + HID_KEYPAD_A = 0xBC, + HID_KEYPAD_B = 0xBD, + HID_KEYPAD_C = 0xBE, + HID_KEYPAD_D = 0xBF, + HID_KEYPAD_E = 0xC0, + HID_KEYPAD_F = 0xC1, + HID_KEYPAD_XOR = 0xC2, + HID_KEYPAD_CARAT = 0xC3, + HID_KEYPAD_PERCENT = 0xC4, + HID_KEYPAD_LESS_THAN = 0xC5, + HID_KEYPAD_GREATER_THAN = 0xC6, + HID_KEYPAD_AMPERSAND = 0xC7, + HID_KEYPAD_DOUBLEAMPERSAND = 0xC8, + HID_KEYPAD_PIPE = 0xC9, + HID_KEYPAD_DOUBLEPIPE = 0xCA, + HID_KEYPAD_COLON = 0xCB, + HID_KEYPAD_POUND_SIGN = 0xCC, + HID_KEYPAD_SPACE = 0xCD, + HID_KEYPAD_AT_SIGN = 0xCE, + HID_KEYPAD_EXCLAMATION_POINT = 0xCF, + HID_KEYPAD_MEMORY_STORE = 0xD0, + HID_KEYPAD_MEMORY_RECALL = 0xD1, + HID_KEYPAD_MEMORY_CLEAR = 0xD2, + HID_KEYPAD_MEMORY_ADD = 0xD3, + HID_KEYPAD_MEMORY_SUBTRACT = 0xD4, + HID_KEYPAD_MEMORY_MULTIPLY = 0xD5, + HID_KEYPAD_MEMORY_DIVIDE = 0xD6, + HID_KEYPAD_PLUS_SLASH_MINUS = 0xD7, + HID_KEYPAD_CLEAR = 0xD8, + HID_KEYPAD_CLEAR_ENTRY = 0xD9, + HID_KEYPAD_BINARY = 0xDA, + HID_KEYPAD_OCTAL = 0xDB, + HID_KEYPAD_DECIMAL = 0xDC, + HID_KEYPAD_HEXADECIMAL = 0xDD, - // 0xDE-0xDF - RESERVED - HID_KEYBOARD_LEFT_CONTROL = 0xE0, - HID_KEYBOARD_LEFT_SHIFT = 0xE1, - HID_KEYBOARD_LEFT_ALT = 0xE2, - HID_KEYBOARD_LEFT_GUI = 0xE3, - HID_KEYBOARD_RIGHT_CONTROL = 0xE4, - HID_KEYBOARD_RIGHT_SHIFT = 0xE5, - HID_KEYBOARD_RIGHT_ALT = 0xE6, - HID_KEYBOARD_RIGHT_GUI = 0xE7, + // 0xDE-0xDF - RESERVED + HID_KEYBOARD_LEFT_CONTROL = 0xE0, + HID_KEYBOARD_LEFT_SHIFT = 0xE1, + HID_KEYBOARD_LEFT_ALT = 0xE2, + HID_KEYBOARD_LEFT_GUI = 0xE3, + HID_KEYBOARD_RIGHT_CONTROL = 0xE4, + HID_KEYBOARD_RIGHT_SHIFT = 0xE5, + HID_KEYBOARD_RIGHT_ALT = 0xE6, + HID_KEYBOARD_RIGHT_GUI = 0xE7, }; static const uint16_t _asciimap[] PROGMEM = { - KEY_RESERVED, // NUL - KEY_RESERVED, // SOH - KEY_RESERVED, // STX - KEY_RESERVED, // ETX - KEY_RESERVED, // EOT - KEY_RESERVED, // ENQ - KEY_RESERVED, // ACK - KEY_RESERVED, // BEL - KEY_BACKSPACE, // BS Backspace - KEY_TAB, // TAB Tab - KEY_ENTER, // LF Enter - KEY_RESERVED, // VT - KEY_RESERVED, // FF - KEY_RESERVED, // CR - KEY_RESERVED, // SO - KEY_RESERVED, // SI - KEY_RESERVED, // DEL - KEY_RESERVED, // DC1 - KEY_RESERVED, // DC2 - KEY_RESERVED, // DC3 - KEY_RESERVED, // DC4 - KEY_RESERVED, // NAK - KEY_RESERVED, // SYN - KEY_RESERVED, // ETB - KEY_RESERVED, // CAN - KEY_RESERVED, // EM - KEY_RESERVED, // SUB - KEY_RESERVED, // ESC - KEY_RESERVED, // FS - KEY_RESERVED, // GS - KEY_RESERVED, // RS - KEY_RESERVED, // US + KEY_RESERVED, // NUL + KEY_RESERVED, // SOH + KEY_RESERVED, // STX + KEY_RESERVED, // ETX + KEY_RESERVED, // EOT + KEY_RESERVED, // ENQ + KEY_RESERVED, // ACK + KEY_RESERVED, // BEL + KEY_BACKSPACE, // BS Backspace + KEY_TAB, // TAB Tab + KEY_ENTER, // LF Enter + KEY_RESERVED, // VT + KEY_RESERVED, // FF + KEY_RESERVED, // CR + KEY_RESERVED, // SO + KEY_RESERVED, // SI + KEY_RESERVED, // DEL + KEY_RESERVED, // DC1 + KEY_RESERVED, // DC2 + KEY_RESERVED, // DC3 + KEY_RESERVED, // DC4 + KEY_RESERVED, // NAK + KEY_RESERVED, // SYN + KEY_RESERVED, // ETB + KEY_RESERVED, // CAN + KEY_RESERVED, // EM + KEY_RESERVED, // SUB + KEY_RESERVED, // ESC + KEY_RESERVED, // FS + KEY_RESERVED, // GS + KEY_RESERVED, // RS + KEY_RESERVED, // US - KEY_SPACE, // ' ' Space - KEY_1|MOD_LEFT_SHIFT, // ! - KEY_QUOTE|MOD_LEFT_SHIFT, // " - KEY_3|MOD_LEFT_SHIFT, // # - KEY_4|MOD_LEFT_SHIFT, // $ - KEY_5|MOD_LEFT_SHIFT, // % - KEY_7|MOD_LEFT_SHIFT, // & - KEY_QUOTE, // ' - KEY_9|MOD_LEFT_SHIFT, // ( - KEY_0|MOD_LEFT_SHIFT, // ) - KEY_8|MOD_LEFT_SHIFT, // * - KEY_EQUAL|MOD_LEFT_SHIFT, // + - KEY_COMMA, // , - KEY_MINUS, // - - KEY_PERIOD, // . - KEY_SLASH, // / - KEY_0, // 0 - KEY_1, // 1 - KEY_2, // 2 - KEY_3, // 3 - KEY_4, // 4 - KEY_5, // 5 - KEY_6, // 6 - KEY_7, // 7 - KEY_8, // 8 - KEY_9, // 9 + KEY_SPACE, // ' ' Space + KEY_1|MOD_LEFT_SHIFT, // ! + KEY_QUOTE|MOD_LEFT_SHIFT, // " + KEY_3|MOD_LEFT_SHIFT, // # + KEY_4|MOD_LEFT_SHIFT, // $ + KEY_5|MOD_LEFT_SHIFT, // % + KEY_7|MOD_LEFT_SHIFT, // & + KEY_QUOTE, // ' + KEY_9|MOD_LEFT_SHIFT, // ( + KEY_0|MOD_LEFT_SHIFT, // ) + KEY_8|MOD_LEFT_SHIFT, // * + KEY_EQUAL|MOD_LEFT_SHIFT, // + + KEY_COMMA, // , + KEY_MINUS, // - + KEY_PERIOD, // . + KEY_SLASH, // / + KEY_0, // 0 + KEY_1, // 1 + KEY_2, // 2 + KEY_3, // 3 + KEY_4, // 4 + KEY_5, // 5 + KEY_6, // 6 + KEY_7, // 7 + KEY_8, // 8 + KEY_9, // 9 KEY_SEMICOLON|MOD_LEFT_SHIFT, // : - KEY_SEMICOLON, // ; - KEY_COMMA|MOD_LEFT_SHIFT, // < - KEY_EQUAL, // = - KEY_PERIOD|MOD_LEFT_SHIFT, // > - KEY_SLASH|MOD_LEFT_SHIFT, // ? - KEY_2|MOD_LEFT_SHIFT, // @ - KEY_A|MOD_LEFT_SHIFT, // A - KEY_B|MOD_LEFT_SHIFT, // B - KEY_C|MOD_LEFT_SHIFT, // C - KEY_D|MOD_LEFT_SHIFT, // D - KEY_E|MOD_LEFT_SHIFT, // E - KEY_F|MOD_LEFT_SHIFT, // F - KEY_G|MOD_LEFT_SHIFT, // G - KEY_H|MOD_LEFT_SHIFT, // H - KEY_I|MOD_LEFT_SHIFT, // I - KEY_J|MOD_LEFT_SHIFT, // J - KEY_K|MOD_LEFT_SHIFT, // K - KEY_L|MOD_LEFT_SHIFT, // L - KEY_M|MOD_LEFT_SHIFT, // M - KEY_N|MOD_LEFT_SHIFT, // N - KEY_O|MOD_LEFT_SHIFT, // O - KEY_P|MOD_LEFT_SHIFT, // P - KEY_Q|MOD_LEFT_SHIFT, // Q - KEY_R|MOD_LEFT_SHIFT, // R - KEY_S|MOD_LEFT_SHIFT, // S - KEY_T|MOD_LEFT_SHIFT, // T - KEY_U|MOD_LEFT_SHIFT, // U - KEY_V|MOD_LEFT_SHIFT, // V - KEY_W|MOD_LEFT_SHIFT, // W - KEY_X|MOD_LEFT_SHIFT, // X - KEY_Y|MOD_LEFT_SHIFT, // Y - KEY_Z|MOD_LEFT_SHIFT, // Z - KEY_LEFT_BRACE, // [ - KEY_BACKSLASH, // bslash - KEY_RIGHT_BRACE, // ] - KEY_6|MOD_LEFT_SHIFT, // ^ - KEY_MINUS|MOD_LEFT_SHIFT, // _ - KEY_TILDE, // ` - KEY_A, // a - KEY_B, // b - KEY_C, // c - KEY_D, // d - KEY_E, // e - KEY_F, // f - KEY_G, // g - KEY_H, // h - KEY_I, // i - KEY_J, // j - KEY_K, // k - KEY_L, // l - KEY_M, // m - KEY_N, // n - KEY_O, // o - KEY_P, // p - KEY_Q, // q - KEY_R, // r - KEY_S, // s - KEY_T, // t - KEY_U, // u - KEY_V, // v - KEY_W, // w - KEY_X, // x - KEY_Y, // y - KEY_Z, // z - KEY_LEFT_BRACE|MOD_LEFT_SHIFT, // { - KEY_BACKSLASH|MOD_LEFT_SHIFT, // | - KEY_RIGHT_BRACE|MOD_LEFT_SHIFT, // } - KEY_TILDE|MOD_LEFT_SHIFT, // ~ - KEY_RESERVED // DEL + KEY_SEMICOLON, // ; + KEY_COMMA|MOD_LEFT_SHIFT, // < + KEY_EQUAL, // = + KEY_PERIOD|MOD_LEFT_SHIFT, // > + KEY_SLASH|MOD_LEFT_SHIFT, // ? + KEY_2|MOD_LEFT_SHIFT, // @ + KEY_A|MOD_LEFT_SHIFT, // A + KEY_B|MOD_LEFT_SHIFT, // B + KEY_C|MOD_LEFT_SHIFT, // C + KEY_D|MOD_LEFT_SHIFT, // D + KEY_E|MOD_LEFT_SHIFT, // E + KEY_F|MOD_LEFT_SHIFT, // F + KEY_G|MOD_LEFT_SHIFT, // G + KEY_H|MOD_LEFT_SHIFT, // H + KEY_I|MOD_LEFT_SHIFT, // I + KEY_J|MOD_LEFT_SHIFT, // J + KEY_K|MOD_LEFT_SHIFT, // K + KEY_L|MOD_LEFT_SHIFT, // L + KEY_M|MOD_LEFT_SHIFT, // M + KEY_N|MOD_LEFT_SHIFT, // N + KEY_O|MOD_LEFT_SHIFT, // O + KEY_P|MOD_LEFT_SHIFT, // P + KEY_Q|MOD_LEFT_SHIFT, // Q + KEY_R|MOD_LEFT_SHIFT, // R + KEY_S|MOD_LEFT_SHIFT, // S + KEY_T|MOD_LEFT_SHIFT, // T + KEY_U|MOD_LEFT_SHIFT, // U + KEY_V|MOD_LEFT_SHIFT, // V + KEY_W|MOD_LEFT_SHIFT, // W + KEY_X|MOD_LEFT_SHIFT, // X + KEY_Y|MOD_LEFT_SHIFT, // Y + KEY_Z|MOD_LEFT_SHIFT, // Z + KEY_LEFT_BRACE, // [ + KEY_BACKSLASH, // bslash + KEY_RIGHT_BRACE, // ] + KEY_6|MOD_LEFT_SHIFT, // ^ + KEY_MINUS|MOD_LEFT_SHIFT, // _ + KEY_TILDE, // ` + KEY_A, // a + KEY_B, // b + KEY_C, // c + KEY_D, // d + KEY_E, // e + KEY_F, // f + KEY_G, // g + KEY_H, // h + KEY_I, // i + KEY_J, // j + KEY_K, // k + KEY_L, // l + KEY_M, // m + KEY_N, // n + KEY_O, // o + KEY_P, // p + KEY_Q, // q + KEY_R, // r + KEY_S, // s + KEY_T, // t + KEY_U, // u + KEY_V, // v + KEY_W, // w + KEY_X, // x + KEY_Y, // y + KEY_Z, // z + KEY_LEFT_BRACE|MOD_LEFT_SHIFT, // { + KEY_BACKSLASH|MOD_LEFT_SHIFT, // | + KEY_RIGHT_BRACE|MOD_LEFT_SHIFT, // } + KEY_TILDE|MOD_LEFT_SHIFT, // ~ + KEY_RESERVED // DEL }; From de2ae168fd22bc3d0fcb4efcbea25a09db86defb Mon Sep 17 00:00:00 2001 From: MRNIU Date: Thu, 26 Mar 2020 20:51:58 +0800 Subject: [PATCH 06/25] Include HID.h --- src/Keyboard.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Keyboard.h b/src/Keyboard.h index 29121f8..0d0826d 100644 --- a/src/Keyboard.h +++ b/src/Keyboard.h @@ -23,6 +23,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #ifndef KEYBOARD_h #define KEYBOARD_h +#include "HID.h" + #if !defined(_USING_HID) #warning "Using legacy HID core (non pluggable)" From fb0854e2f50f09c343f504c170d1a73b3afd010b Mon Sep 17 00:00:00 2001 From: MRNIU Date: Sat, 18 Apr 2020 11:46:53 +0800 Subject: [PATCH 07/25] Fix library.properties --- library.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library.properties b/library.properties index b751812..4373325 100644 --- a/library.properties +++ b/library.properties @@ -1,6 +1,6 @@ name=Keyboard -version=1.0.3 -author=Arduino, MRNIU +version=1.0.2 +author=MRNIU maintainer=Arduino sentence=Allows an Arduino/Genuino board with USB capabilites to act as a Keyboard. paragraph=This library plugs on the HID library. It can be used with or without other HID-based libraries (Mouse, Gamepad etc) From fcceb2355513766f92c43ebf496bbb5595b496b8 Mon Sep 17 00:00:00 2001 From: MRNIU Date: Sat, 18 Apr 2020 11:49:41 +0800 Subject: [PATCH 08/25] Fix src/Keyboard.cpp code style --- src/Keyboard.cpp | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/Keyboard.cpp b/src/Keyboard.cpp index 28d5c11..23196ce 100644 --- a/src/Keyboard.cpp +++ b/src/Keyboard.cpp @@ -1,23 +1,23 @@ /* -Keyboard.cpp + Keyboard.cpp -Copyright (c) 2015, Arduino LLC -Original code (pre-library): Copyright (c) 2011, Peter Barrett -Contributor: MRNIU + Copyright (c) 2015, Arduino LLC + Original code (pre-library): Copyright (c) 2011, Peter Barrett + Contributor: MRNIU -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "Keyboard.h" From 9723863da52b1ecbfd193abdade5bcca9bf2831f Mon Sep 17 00:00:00 2001 From: MRNIU Date: Sat, 18 Apr 2020 11:50:43 +0800 Subject: [PATCH 09/25] Fix src/Keyboard.h code style --- src/Keyboard.h | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/Keyboard.h b/src/Keyboard.h index 0d0826d..8d3fdae 100644 --- a/src/Keyboard.h +++ b/src/Keyboard.h @@ -1,23 +1,23 @@ /* -Keyboard.h + Keyboard.h -Copyright (c) 2015, Arduino LLC -Original code (pre-library): Copyright (c) 2011, Peter Barrett -Contributor: MRNIU + Copyright (c) 2015, Arduino LLC + Original code (pre-library): Copyright (c) 2011, Peter Barrett + Contributor: MRNIU -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef KEYBOARD_h From c147ae3d7236558f51d99afb1b9f18d79b0e3875 Mon Sep 17 00:00:00 2001 From: MRNIU Date: Sun, 19 Apr 2020 11:19:22 +0800 Subject: [PATCH 10/25] Update README, change contributor info --- README.adoc | 10 ++++++++++ src/KeyboardLayouts/README.adoc | 27 ++++++++++++++++++++++++++ src/README.md | 34 --------------------------------- 3 files changed, 37 insertions(+), 34 deletions(-) create mode 100644 src/KeyboardLayouts/README.adoc delete mode 100644 src/README.md diff --git a/README.adoc b/README.adoc index 816b2ee..a6317c3 100644 --- a/README.adoc +++ b/README.adoc @@ -5,6 +5,16 @@ This library allows an Arduino board with USB capabilities to act as a Keyboard. For more information about this library please visit us at https://www.arduino.cc/reference/en/language/functions/usb/keyboard/ += Contributors = + +Original code (pre-library): Peter Barrett + +Contributor: MRNIU + += Usage = + +See examples/Serial/Serial.ino + == License == Copyright (c) Arduino LLC. All right reserved. diff --git a/src/KeyboardLayouts/README.adoc b/src/KeyboardLayouts/README.adoc new file mode 100644 index 0000000..33d82d2 --- /dev/null +++ b/src/KeyboardLayouts/README.adoc @@ -0,0 +1,27 @@ += Contributors = + +Original code (pre-library): NicoHood + +Contributor: MRNIU + +== License == + +Copyright (c) 2014-2015 NicoHood + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/README.md b/src/README.md deleted file mode 100644 index a6317c3..0000000 --- a/src/README.md +++ /dev/null @@ -1,34 +0,0 @@ -= Keyboard Library for Arduino = - -This library allows an Arduino board with USB capabilities to act as a Keyboard. - -For more information about this library please visit us at -https://www.arduino.cc/reference/en/language/functions/usb/keyboard/ - -= Contributors = - -Original code (pre-library): Peter Barrett - -Contributor: MRNIU - -= Usage = - -See examples/Serial/Serial.ino - -== License == - -Copyright (c) Arduino LLC. All right reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA From 22f7380f88e1efc2a3ce25d52747bb4fab998a09 Mon Sep 17 00:00:00 2001 From: MRNIU Date: Sun, 19 Apr 2020 11:25:26 +0800 Subject: [PATCH 11/25] Fix typo --- src/Keyboard.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Keyboard.cpp b/src/Keyboard.cpp index 23196ce..6accf2d 100644 --- a/src/Keyboard.cpp +++ b/src/Keyboard.cpp @@ -103,7 +103,7 @@ size_t Keyboard_::set(KeyboardKeycode k, bool s) } return 1; } - // Its a normal key + // It's a normal key else{ // get size of keycodes during compile time const uint8_t keycodesSize = sizeof(_keyReport.keycodes); From 29c29e4b6ca1567ab5449be2572616138b04f4bb Mon Sep 17 00:00:00 2001 From: MRNIU Date: Sun, 19 Apr 2020 11:25:59 +0800 Subject: [PATCH 12/25] Remove unused variable --- src/Keyboard.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Keyboard.cpp b/src/Keyboard.cpp index 6accf2d..75f9a2f 100644 --- a/src/Keyboard.cpp +++ b/src/Keyboard.cpp @@ -160,7 +160,6 @@ uint8_t USBPutChar(uint8_t c); size_t Keyboard_::press(uint8_t k) { // Press key and send report to host - uint8_t i; auto ret = set((KeyboardKeycode)k, true); if(ret){ sendReport(&_keyReport); @@ -174,7 +173,6 @@ size_t Keyboard_::press(uint8_t k) // it shouldn't be repeated any more. size_t Keyboard_::release(uint8_t k) { - uint8_t i; auto ret = set((KeyboardKeycode)k, false); if(ret){ sendReport(&_keyReport); From a590ad4c243bfdbca37acb2133b23b3553abaa66 Mon Sep 17 00:00:00 2001 From: MRNIU Date: Sun, 19 Apr 2020 12:14:05 +0800 Subject: [PATCH 13/25] Replace `tab` with `space` --- src/Keyboard.cpp | 274 ++--- src/Keyboard.h | 28 +- src/KeyboardLayouts/ImprovedKeylayouts.h | 44 +- src/KeyboardLayouts/ImprovedKeylayoutsDE.h | 832 +++++++------- src/KeyboardLayouts/ImprovedKeylayoutsUS.h | 1162 ++++++++++---------- 5 files changed, 1170 insertions(+), 1170 deletions(-) diff --git a/src/Keyboard.cpp b/src/Keyboard.cpp index 75f9a2f..69898bf 100644 --- a/src/Keyboard.cpp +++ b/src/Keyboard.cpp @@ -26,53 +26,53 @@ //================================================================================ //================================================================================ -// Keyboard +// Keyboard static const uint8_t _hidReportDescriptor[] PROGMEM = { - // Keyboard - 0x05, 0x01, /* USAGE_PAGE (Generic Desktop) 47 */ - 0x09, 0x06, /* USAGE (Keyboard) */ - 0xa1, 0x01, /* COLLECTION (Application) */ - 0x85, HID_REPORTID_KEYBOARD, /* REPORT_ID TODO order important? */ - 0x05, 0x07, /* USAGE_PAGE (Keyboard) */ - - /* Keyboard Modifiers (shift, alt, ...) */ - 0x19, 0xe0, /* USAGE_MINIMUM (Keyboard LeftControl) */ - 0x29, 0xe7, /* USAGE_MAXIMUM (Keyboard Right GUI) */ - 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ - 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ - 0x75, 0x01, /* REPORT_SIZE (1) */ - 0x95, 0x08, /* REPORT_COUNT (8) */ - 0x81, 0x02, /* INPUT (Data,Var,Abs) */ - - /* Reserved byte, used for consumer reports, only works with linux */ - 0x05, 0x0C, /* Usage Page (Consumer) */ - 0x95, 0x01, /* REPORT_COUNT (1) */ - 0x75, 0x08, /* REPORT_SIZE (8) */ - 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ - 0x26, 0xFF, 0x00, /* LOGICAL_MAXIMUM (255) */ - 0x19, 0x00, /* USAGE_MINIMUM (0) */ - 0x29, 0xFF, /* USAGE_MAXIMUM (255) */ - 0x81, 0x00, /* INPUT (Data,Ary,Abs) */ - - /* 6 Keyboard keys */ - 0x05, 0x07, /* USAGE_PAGE (Keyboard) */ - 0x95, 0x06, /* REPORT_COUNT (6) */ - 0x75, 0x08, /* REPORT_SIZE (8) */ - 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ - 0x26, 0xE7, 0x00, /* LOGICAL_MAXIMUM (231) */ - 0x19, 0x00, /* USAGE_MINIMUM (Reserved (no event indicated)) */ - 0x29, 0xE7, /* USAGE_MAXIMUM (Keyboard Right GUI) */ - 0x81, 0x00, /* INPUT (Data,Ary,Abs) */ - - /* End */ - 0xc0 /* END_COLLECTION */ + // Keyboard + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 47 + 0x09, 0x06, // USAGE (Keyboard) + 0xa1, 0x01, // COLLECTION (Application) + 0x85, HID_REPORTID_KEYBOARD, // REPORT_ID TODO order important? + 0x05, 0x07, // USAGE_PAGE (Keyboard) + + // Keyboard Modifiers (shift, alt, ...) + 0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl) + 0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x75, 0x01, // REPORT_SIZE (1) + 0x95, 0x08, // REPORT_COUNT (8) + 0x81, 0x02, // INPUT (Data,Var,Abs) + + // Reserved byte, used for consumer reports, only works with linux + 0x05, 0x0C, // Usage Page (Consumer) + 0x95, 0x01, // REPORT_COUNT (1) + 0x75, 0x08, // REPORT_SIZE (8) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x26, 0xFF, 0x00, // LOGICAL_MAXIMUM (255) + 0x19, 0x00, // USAGE_MINIMUM (0) + 0x29, 0xFF, // USAGE_MAXIMUM (255) + 0x81, 0x00, // INPUT (Data,Ary,Abs) + + // 6 Keyboard keys + 0x05, 0x07, // USAGE_PAGE (Keyboard) + 0x95, 0x06, // REPORT_COUNT (6) + 0x75, 0x08, // REPORT_SIZE (8) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x26, 0xE7, 0x00, // LOGICAL_MAXIMUM (231) + 0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated)) + 0x29, 0xE7, // USAGE_MAXIMUM (Keyboard Right GUI) + 0x81, 0x00, // INPUT (Data,Ary,Abs) + + // End + 0xc0 // END_COLLECTION }; Keyboard_::Keyboard_(void) { - static HIDSubDescriptor node(_hidReportDescriptor, sizeof(_hidReportDescriptor)); - HID().AppendDescriptor(&node); + static HIDSubDescriptor node(_hidReportDescriptor, sizeof(_hidReportDescriptor)); + HID().AppendDescriptor(&node); } void Keyboard_::begin(void) @@ -85,70 +85,70 @@ void Keyboard_::end(void) void Keyboard_::sendReport(KeyReport* keys) { - HID().SendReport(2,keys,sizeof(KeyReport)); + HID().SendReport(2,keys,sizeof(KeyReport)); } size_t Keyboard_::set(KeyboardKeycode k, bool s) { - // It's a modifier key - if(k >= KEY_LEFT_CTRL && k <= KEY_RIGHT_GUI) - { - // Convert key into bitfield (0 - 7) - k = KeyboardKeycode(uint8_t(k) - uint8_t(KEY_LEFT_CTRL)); - if(s){ - _keyReport.modifiers |= (1 << k); - } - else{ - _keyReport.modifiers &= ~(1 << k); - } - return 1; - } - // It's a normal key - else{ - // get size of keycodes during compile time - const uint8_t keycodesSize = sizeof(_keyReport.keycodes); - - // if we are adding an element to keycodes - if (s){ - // iterate through the keycodes - for (uint8_t i = 0; i < keycodesSize; i++) - { - auto key = _keyReport.keycodes[i]; - // if target key is found - if (key == uint8_t(k)) { - // do nothing and exit - return 1; - } - } - // iterate through the keycodes again, this only happens if no existing - // keycodes matches k - for (uint8_t i = 0; i < keycodesSize; i++) - { - auto key = _keyReport.keycodes[i]; - // if first instance of empty slot is found - if (key == KEY_RESERVED) { - // change empty slot to k and exit - _keyReport.keycodes[i] = k; - return 1; - } - } - } else { // we are removing k from keycodes - // iterate through the keycodes - for (uint8_t i = 0; i < keycodesSize; i++) - { - auto key = _keyReport.keycodes[i]; - // if target key is found - if (key == k) { - // remove target and exit - _keyReport.keycodes[i] = KEY_RESERVED; - return 1; - } - } - } - } - - // No empty/pressed key was found - return 0; + // It's a modifier key + if(k >= KEY_LEFT_CTRL && k <= KEY_RIGHT_GUI) + { + // Convert key into bitfield (0 - 7) + k = KeyboardKeycode(uint8_t(k) - uint8_t(KEY_LEFT_CTRL)); + if(s){ + _keyReport.modifiers |= (1 << k); + } + else{ + _keyReport.modifiers &= ~(1 << k); + } + return 1; + } + // It's a normal key + else{ + // get size of keycodes during compile time + const uint8_t keycodesSize = sizeof(_keyReport.keycodes); + + // if we are adding an element to keycodes + if (s){ + // iterate through the keycodes + for (uint8_t i = 0; i < keycodesSize; i++) + { + auto key = _keyReport.keycodes[i]; + // if target key is found + if (key == uint8_t(k)) { + // do nothing and exit + return 1; + } + } + // iterate through the keycodes again, this only happens if no existing + // keycodes matches k + for (uint8_t i = 0; i < keycodesSize; i++) + { + auto key = _keyReport.keycodes[i]; + // if first instance of empty slot is found + if (key == KEY_RESERVED) { + // change empty slot to k and exit + _keyReport.keycodes[i] = k; + return 1; + } + } + } else { // we are removing k from keycodes + // iterate through the keycodes + for (uint8_t i = 0; i < keycodesSize; i++) + { + auto key = _keyReport.keycodes[i]; + // if target key is found + if (key == k) { + // remove target and exit + _keyReport.keycodes[i] = KEY_RESERVED; + return 1; + } + } + } + } + + // No empty/pressed key was found + return 0; } uint8_t USBPutChar(uint8_t c); @@ -159,13 +159,13 @@ uint8_t USBPutChar(uint8_t c); // call release(), releaseAll(), or otherwise clear the report and resend. size_t Keyboard_::press(uint8_t k) { - // Press key and send report to host - auto ret = set((KeyboardKeycode)k, true); - if(ret){ - sendReport(&_keyReport); - return 1; - } - return 0; + // Press key and send report to host + auto ret = set((KeyboardKeycode)k, true); + if(ret){ + sendReport(&_keyReport); + return 1; + } + return 0; } // release() takes the specified key out of the persistent key report and @@ -173,46 +173,46 @@ size_t Keyboard_::press(uint8_t k) // it shouldn't be repeated any more. size_t Keyboard_::release(uint8_t k) { - auto ret = set((KeyboardKeycode)k, false); - if(ret){ - sendReport(&_keyReport); - return 1; - } - return 0; + auto ret = set((KeyboardKeycode)k, false); + if(ret){ + sendReport(&_keyReport); + return 1; + } + return 0; } void Keyboard_::releaseAll(void) { - _keyReport.keycodes[0] = 0; - _keyReport.keycodes[1] = 0; - _keyReport.keycodes[2] = 0; - _keyReport.keycodes[3] = 0; - _keyReport.keycodes[4] = 0; - _keyReport.keycodes[5] = 0; - _keyReport.modifiers = 0; - sendReport(&_keyReport); + _keyReport.keycodes[0] = 0; + _keyReport.keycodes[1] = 0; + _keyReport.keycodes[2] = 0; + _keyReport.keycodes[3] = 0; + _keyReport.keycodes[4] = 0; + _keyReport.keycodes[5] = 0; + _keyReport.modifiers = 0; + sendReport(&_keyReport); } size_t Keyboard_::write(uint8_t c) { - uint8_t p = press(c); // Keydown - release(c); // Keyup - return p; // just return the result of press() since release() almost always returns 1 + uint8_t p = press(c); // Keydown + release(c); // Keyup + return p; // just return the result of press() since release() almost always returns 1 } size_t Keyboard_::write(const uint8_t *buffer, size_t size) { - size_t n = 0; - while (size--) { - if (*buffer != '\r') { - if (write(*buffer)) { - n++; - } else { - break; - } - } - buffer++; - } - return n; + size_t n = 0; + while (size--) { + if (*buffer != '\r') { + if (write(*buffer)) { + n++; + } else { + break; + } + } + buffer++; + } + return n; } Keyboard_ Keyboard; diff --git a/src/Keyboard.h b/src/Keyboard.h index 8d3fdae..75cbe68 100644 --- a/src/Keyboard.h +++ b/src/Keyboard.h @@ -36,26 +36,26 @@ // Low level key report: up to 6 keys and shift, ctrl etc at once typedef struct { - uint8_t modifiers; - uint8_t reserved; - uint8_t keycodes[6]; + uint8_t modifiers; + uint8_t reserved; + uint8_t keycodes[6]; } KeyReport; class Keyboard_ : public Print { private: - KeyReport _keyReport; - void sendReport(KeyReport* keys); - size_t set(KeyboardKeycode k, bool s); + KeyReport _keyReport; + void sendReport(KeyReport* keys); + size_t set(KeyboardKeycode k, bool s); public: - Keyboard_(void); - void begin(void); - void end(void); - size_t write(uint8_t k); - size_t write(const uint8_t *buffer, size_t size); - size_t press(uint8_t k); - size_t release(uint8_t k); - void releaseAll(void); + Keyboard_(void); + void begin(void); + void end(void); + size_t write(uint8_t k); + size_t write(const uint8_t *buffer, size_t size); + size_t press(uint8_t k); + size_t release(uint8_t k); + void releaseAll(void); }; extern Keyboard_ Keyboard; diff --git a/src/KeyboardLayouts/ImprovedKeylayouts.h b/src/KeyboardLayouts/ImprovedKeylayouts.h index 31b053e..f6a546f 100644 --- a/src/KeyboardLayouts/ImprovedKeylayouts.h +++ b/src/KeyboardLayouts/ImprovedKeylayouts.h @@ -26,38 +26,38 @@ THE SOFTWARE. // Keyboard Modifiers enum KeyboardMods : uint16_t { - MOD_LEFT_CTRL = (1 << 8), - MOD_LEFT_SHIFT = (1 << 9), - MOD_LEFT_ALT = (1 << 10), - MOD_LEFT_GUI = (1 << 11), - MOD_RIGHT_CTRL = (1 << 12), - MOD_RIGHT_SHIFT = (1 << 13), - MOD_RIGHT_ALT = (1 << 14), - MOD_RIGHT_GUI = (uint16_t)(1 << 15), + MOD_LEFT_CTRL = (1 << 8), + MOD_LEFT_SHIFT = (1 << 9), + MOD_LEFT_ALT = (1 << 10), + MOD_LEFT_GUI = (1 << 11), + MOD_RIGHT_CTRL = (1 << 12), + MOD_RIGHT_SHIFT = (1 << 13), + MOD_RIGHT_ALT = (1 << 14), + MOD_RIGHT_GUI = (uint16_t)(1 << 15), }; // Keyboard Leds enum KeyboardLeds : uint8_t { - LED_NUM_LOCK = (1 << 0), - LED_CAPS_LOCK = (1 << 1), - LED_SCROLL_LOCK = (1 << 2), - LED_COMPOSE = (1 << 3), - LED_KANA = (1 << 4), - LED_POWER = (1 << 5), - LED_SHIFT = (1 << 6), - LED_DO_NOT_DISTURB = (1 << 7), + LED_NUM_LOCK = (1 << 0), + LED_CAPS_LOCK = (1 << 1), + LED_SCROLL_LOCK = (1 << 2), + LED_COMPOSE = (1 << 3), + LED_KANA = (1 << 4), + LED_POWER = (1 << 5), + LED_SHIFT = (1 << 6), + LED_DO_NOT_DISTURB = (1 << 7), }; #ifndef HID_CUSTOM_LAYOUT - #define HID_CUSTOM_LAYOUT - #define LAYOUT_US_ENGLISH - #pragma message "Using default ASCII layout for keyboard modules" + #define HID_CUSTOM_LAYOUT + #define LAYOUT_US_ENGLISH + #pragma message "Using default ASCII layout for keyboard modules" #else - #pragma message "Using custom layout for keyboard modules" + #pragma message "Using custom layout for keyboard modules" #endif #if defined(LAYOUT_US_ENGLISH) - #include "ImprovedKeylayoutsUS.h" + #include "ImprovedKeylayoutsUS.h" #elif defined(LAYOUT_CANADIAN_FRENCH) #elif defined(LAYOUT_CANADIAN_MULTILINGUAL) #elif defined(LAYOUT_DANISH) @@ -66,7 +66,7 @@ enum KeyboardLeds : uint8_t { #elif defined(LAYOUT_FRENCH_BELGIAN) #elif defined(LAYOUT_FRENCH_SWISS) #elif defined(LAYOUT_GERMAN) - #include "ImprovedKeylayoutsDE.h" + #include "ImprovedKeylayoutsDE.h" #elif defined(LAYOUT_GERMAN_MAC) #elif defined(LAYOUT_GERMAN_SWISS) #elif defined(LAYOUT_ICELANDIC) diff --git a/src/KeyboardLayouts/ImprovedKeylayoutsDE.h b/src/KeyboardLayouts/ImprovedKeylayoutsDE.h index d813b8e..d68037d 100644 --- a/src/KeyboardLayouts/ImprovedKeylayoutsDE.h +++ b/src/KeyboardLayouts/ImprovedKeylayoutsDE.h @@ -29,433 +29,433 @@ THE SOFTWARE. // Hut1_12v2.pdf enum KeyboardKeycode : uint8_t { - KEY_RESERVED = 0, - KEY_ERROR_ROLLOVER = 1, - KEY_POST_FAIL = 2, - KEY_ERROR_UNDEFINED = 3, - KEY_A = 4, - KEY_B = 5, - KEY_C = 6, - KEY_D = 7, - KEY_E = 8, - KEY_F = 9, - KEY_G = 10, - KEY_H = 11, - KEY_I = 12, - KEY_J = 13, - KEY_K = 14, - KEY_L = 15, - KEY_M = 16, - KEY_N = 17, - KEY_O = 18, - KEY_P = 19, - KEY_Q = 20, - KEY_R = 21, - KEY_S = 22, - KEY_T = 23, - KEY_U = 24, - KEY_V = 25, - KEY_W = 26, - KEY_X = 27, - KEY_Y = 29, - KEY_Z = 28, - KEY_1 = 30, - KEY_2 = 31, - KEY_3 = 32, - KEY_4 = 33, - KEY_5 = 34, - KEY_6 = 35, - KEY_7 = 36, - KEY_8 = 37, - KEY_9 = 38, - KEY_0 = 39, - KEY_ENTER = 40, - KEY_RETURN = 40, // Alias - KEY_ESC = 41, - KEY_BACKSPACE = 42, - KEY_TAB = 43, - KEY_SPACE = 44, - KEY_SZ = 45, - KEY_ACCENT = 46, - KEY_UE = 47, - KEY_PLUS = 48, - KEY_HASHTAG2 = 49, - KEY_HASHTAG = 50, - KEY_OE = 51, - KEY_AE = 52, - KEY_DACH = 53, - KEY_COMMA = 54, - KEY_PERIOD = 55, - KEY_MINUS = 56, - KEY_CAPS_LOCK = 0x39, - KEY_F1 = 0x3A, - KEY_F2 = 0x3B, - KEY_F3 = 0x3C, - KEY_F4 = 0x3D, - KEY_F5 = 0x3E, - KEY_F6 = 0x3F, - KEY_F7 = 0x40, - KEY_F8 = 0x41, - KEY_F9 = 0x42, - KEY_F10 = 0x43, - KEY_F11 = 0x44, - KEY_F12 = 0x45, - KEY_PRINT = 0x46, - KEY_PRINTSCREEN = 0x46, // Alias - KEY_SCROLL_LOCK = 0x47, - KEY_PAUSE = 0x48, - KEY_INSERT = 0x49, - KEY_HOME = 0x4A, - KEY_PAGE_UP = 0x4B, - KEY_DELETE = 0x4C, - KEY_END = 0x4D, - KEY_PAGE_DOWN = 0x4E, - KEY_RIGHT_ARROW = 0x4F, - KEY_LEFT_ARROW = 0x50, - KEY_DOWN_ARROW = 0x51, - KEY_UP_ARROW = 0x52, - KEY_RIGHT = 0x4F, // Alias - KEY_LEFT = 0x50, // Alias - KEY_DOWN = 0x51, // Alias - KEY_UP = 0x52, // Alias - KEY_NUM_LOCK = 0x53, - KEYPAD_DIVIDE = 0x54, - KEYPAD_MULTIPLY = 0x55, - KEYPAD_SUBTRACT = 0x56, - KEYPAD_ADD = 0x57, - KEYPAD_ENTER = 0x58, - KEYPAD_1 = 0x59, - KEYPAD_2 = 0x5A, - KEYPAD_3 = 0x5B, - KEYPAD_4 = 0x5C, - KEYPAD_5 = 0x5D, - KEYPAD_6 = 0x5E, - KEYPAD_7 = 0x5F, - KEYPAD_8 = 0x60, - KEYPAD_9 = 0x61, - KEYPAD_0 = 0x62, - KEYPAD_DOT = 0x63, - KEY_SMALLER = 0x64, - KEY_APPLICATION = 0x65, // Context menu/right click - KEY_MENU = 0x65, // Alias + KEY_RESERVED = 0, + KEY_ERROR_ROLLOVER = 1, + KEY_POST_FAIL = 2, + KEY_ERROR_UNDEFINED = 3, + KEY_A = 4, + KEY_B = 5, + KEY_C = 6, + KEY_D = 7, + KEY_E = 8, + KEY_F = 9, + KEY_G = 10, + KEY_H = 11, + KEY_I = 12, + KEY_J = 13, + KEY_K = 14, + KEY_L = 15, + KEY_M = 16, + KEY_N = 17, + KEY_O = 18, + KEY_P = 19, + KEY_Q = 20, + KEY_R = 21, + KEY_S = 22, + KEY_T = 23, + KEY_U = 24, + KEY_V = 25, + KEY_W = 26, + KEY_X = 27, + KEY_Y = 29, + KEY_Z = 28, + KEY_1 = 30, + KEY_2 = 31, + KEY_3 = 32, + KEY_4 = 33, + KEY_5 = 34, + KEY_6 = 35, + KEY_7 = 36, + KEY_8 = 37, + KEY_9 = 38, + KEY_0 = 39, + KEY_ENTER = 40, + KEY_RETURN = 40, // Alias + KEY_ESC = 41, + KEY_BACKSPACE = 42, + KEY_TAB = 43, + KEY_SPACE = 44, + KEY_SZ = 45, + KEY_ACCENT = 46, + KEY_UE = 47, + KEY_PLUS = 48, + KEY_HASHTAG2 = 49, + KEY_HASHTAG = 50, + KEY_OE = 51, + KEY_AE = 52, + KEY_DACH = 53, + KEY_COMMA = 54, + KEY_PERIOD = 55, + KEY_MINUS = 56, + KEY_CAPS_LOCK = 0x39, + KEY_F1 = 0x3A, + KEY_F2 = 0x3B, + KEY_F3 = 0x3C, + KEY_F4 = 0x3D, + KEY_F5 = 0x3E, + KEY_F6 = 0x3F, + KEY_F7 = 0x40, + KEY_F8 = 0x41, + KEY_F9 = 0x42, + KEY_F10 = 0x43, + KEY_F11 = 0x44, + KEY_F12 = 0x45, + KEY_PRINT = 0x46, + KEY_PRINTSCREEN = 0x46, // Alias + KEY_SCROLL_LOCK = 0x47, + KEY_PAUSE = 0x48, + KEY_INSERT = 0x49, + KEY_HOME = 0x4A, + KEY_PAGE_UP = 0x4B, + KEY_DELETE = 0x4C, + KEY_END = 0x4D, + KEY_PAGE_DOWN = 0x4E, + KEY_RIGHT_ARROW = 0x4F, + KEY_LEFT_ARROW = 0x50, + KEY_DOWN_ARROW = 0x51, + KEY_UP_ARROW = 0x52, + KEY_RIGHT = 0x4F, // Alias + KEY_LEFT = 0x50, // Alias + KEY_DOWN = 0x51, // Alias + KEY_UP = 0x52, // Alias + KEY_NUM_LOCK = 0x53, + KEYPAD_DIVIDE = 0x54, + KEYPAD_MULTIPLY = 0x55, + KEYPAD_SUBTRACT = 0x56, + KEYPAD_ADD = 0x57, + KEYPAD_ENTER = 0x58, + KEYPAD_1 = 0x59, + KEYPAD_2 = 0x5A, + KEYPAD_3 = 0x5B, + KEYPAD_4 = 0x5C, + KEYPAD_5 = 0x5D, + KEYPAD_6 = 0x5E, + KEYPAD_7 = 0x5F, + KEYPAD_8 = 0x60, + KEYPAD_9 = 0x61, + KEYPAD_0 = 0x62, + KEYPAD_DOT = 0x63, + KEY_SMALLER = 0x64, + KEY_APPLICATION = 0x65, // Context menu/right click + KEY_MENU = 0x65, // Alias - // Most of the following keys will only work with Linux or not at all. - // F13+ keys are mostly used for laptop functions like ECO key. - KEY_POWER = 0x66, // PowerOff (Ubuntu) - KEY_PAD_EQUALS = 0x67, // Dont confuse with KEYPAD_EQUAL_SIGN - KEY_F13 = 0x68, // Tools (Ubunutu) - KEY_F14 = 0x69, // Launch5 (Ubuntu) - KEY_F15 = 0x6A, // Launch6 (Ubuntu) - KEY_F16 = 0x6B, // Launch7 (Ubuntu) - KEY_F17 = 0x6C, // Launch8 (Ubuntu) - KEY_F18 = 0x6D, // Launch9 (Ubuntu) - KEY_F19 = 0x6E, // Disabled (Ubuntu) - KEY_F20 = 0x6F, // AudioMicMute (Ubuntu) - KEY_F21 = 0x70, // Touchpad toggle (Ubuntu) - KEY_F22 = 0x71, // TouchpadOn (Ubuntu) - KEY_F23 = 0x72, // TouchpadOff Ubuntu) - KEY_F24 = 0x73, // Disabled (Ubuntu) - KEY_EXECUTE = 0x74, // Open (Ubuntu) - KEY_HELP = 0x75, // Help (Ubuntu) - KEY_MENU2 = 0x76, // Disabled (Ubuntu) - KEY_SELECT = 0x77, // Disabled (Ubuntu) - KEY_STOP = 0x78, // Cancel (Ubuntu) - KEY_AGAIN = 0x79, // Redo (Ubuntu) - KEY_UNDO = 0x7A, // Undo (Ubuntu) - KEY_CUT = 0x7B, // Cut (Ubuntu) - KEY_COPY = 0x7C, // Copy (Ubuntu) - KEY_PASTE = 0x7D, // Paste (Ubuntu) - KEY_FIND = 0x7E, // Find (Ubuntu) - KEY_MUTE = 0x7F, - KEY_VOLUME_MUTE = 0x7F, // Alias - KEY_VOLUME_UP = 0x80, - KEY_VOLUME_DOWN = 0x81, - KEY_LOCKING_CAPS_LOCK = 0x82, // Disabled (Ubuntu) - KEY_LOCKING_NUM_LOCK = 0x83, // Disabled (Ubuntu) - KEY_LOCKING_SCROLL_LOCK = 0x84, // Disabled (Ubuntu) - KEYPAD_COMMA = 0x85, // . - KEYPAD_EQUAL_SIGN = 0x86, // Disabled (Ubuntu), Dont confuse with KEYPAD_EQUAL - KEY_INTERNATIONAL1 = 0x87, // Disabled (Ubuntu) - KEY_INTERNATIONAL2 = 0x88, // Hiragana Katakana (Ubuntu) - KEY_INTERNATIONAL3 = 0x89, // Disabled (Ubuntu) - KEY_INTERNATIONAL4 = 0x8A, // Henkan (Ubuntu) - KEY_INTERNATIONAL5 = 0x8B, // Muhenkan (Ubuntu) - KEY_INTERNATIONAL6 = 0x8C, // Disabled (Ubuntu) - KEY_INTERNATIONAL7 = 0x8D, // Disabled (Ubuntu) - KEY_INTERNATIONAL8 = 0x8E, // Disabled (Ubuntu) - KEY_INTERNATIONAL9 = 0x8F, // Disabled (Ubuntu) - KEY_LANG1 = 0x90, // Disabled (Ubuntu) - KEY_LANG2 = 0x91, // Disabled (Ubuntu) - KEY_LANG3 = 0x92, // Katana (Ubuntu) - KEY_LANG4 = 0x93, // Hiragana (Ubuntu) - KEY_LANG5 = 0x94, // Disabled (Ubuntu) - KEY_LANG6 = 0x95, // Disabled (Ubuntu) - KEY_LANG7 = 0x96, // Disabled (Ubuntu) - KEY_LANG8 = 0x97, // Disabled (Ubuntu) - KEY_LANG9 = 0x98, // Disabled (Ubuntu) - KEY_ALTERNATE_ERASE = 0x99, // Disabled (Ubuntu) - KEY_SYSREQ_ATTENTION = 0x9A, // Disabled (Ubuntu) - KEY_CANCEL = 0x9B, // Disabled (Ubuntu) - KEY_CLEAR = 0x9C, // Delete (Ubuntu) - KEY_PRIOR = 0x9D, // Disabled (Ubuntu) - KEY_RETURN2 = 0x9E, // Disabled (Ubuntu), Do not confuse this with KEY_ENTER - KEY_SEPARATOR = 0x9F, // Disabled (Ubuntu) - KEY_OUT = 0xA0, // Disabled (Ubuntu) - KEY_OPER = 0xA1, // Disabled (Ubuntu) - KEY_CLEAR_AGAIN = 0xA2, // Disabled (Ubuntu) - KEY_CRSEL_PROPS = 0xA3, // Disabled (Ubuntu) - KEY_EXSEL = 0xA4, // Disabled (Ubuntu) + // Most of the following keys will only work with Linux or not at all. + // F13+ keys are mostly used for laptop functions like ECO key. + KEY_POWER = 0x66, // PowerOff (Ubuntu) + KEY_PAD_EQUALS = 0x67, // Dont confuse with KEYPAD_EQUAL_SIGN + KEY_F13 = 0x68, // Tools (Ubunutu) + KEY_F14 = 0x69, // Launch5 (Ubuntu) + KEY_F15 = 0x6A, // Launch6 (Ubuntu) + KEY_F16 = 0x6B, // Launch7 (Ubuntu) + KEY_F17 = 0x6C, // Launch8 (Ubuntu) + KEY_F18 = 0x6D, // Launch9 (Ubuntu) + KEY_F19 = 0x6E, // Disabled (Ubuntu) + KEY_F20 = 0x6F, // AudioMicMute (Ubuntu) + KEY_F21 = 0x70, // Touchpad toggle (Ubuntu) + KEY_F22 = 0x71, // TouchpadOn (Ubuntu) + KEY_F23 = 0x72, // TouchpadOff Ubuntu) + KEY_F24 = 0x73, // Disabled (Ubuntu) + KEY_EXECUTE = 0x74, // Open (Ubuntu) + KEY_HELP = 0x75, // Help (Ubuntu) + KEY_MENU2 = 0x76, // Disabled (Ubuntu) + KEY_SELECT = 0x77, // Disabled (Ubuntu) + KEY_STOP = 0x78, // Cancel (Ubuntu) + KEY_AGAIN = 0x79, // Redo (Ubuntu) + KEY_UNDO = 0x7A, // Undo (Ubuntu) + KEY_CUT = 0x7B, // Cut (Ubuntu) + KEY_COPY = 0x7C, // Copy (Ubuntu) + KEY_PASTE = 0x7D, // Paste (Ubuntu) + KEY_FIND = 0x7E, // Find (Ubuntu) + KEY_MUTE = 0x7F, + KEY_VOLUME_MUTE = 0x7F, // Alias + KEY_VOLUME_UP = 0x80, + KEY_VOLUME_DOWN = 0x81, + KEY_LOCKING_CAPS_LOCK = 0x82, // Disabled (Ubuntu) + KEY_LOCKING_NUM_LOCK = 0x83, // Disabled (Ubuntu) + KEY_LOCKING_SCROLL_LOCK = 0x84, // Disabled (Ubuntu) + KEYPAD_COMMA = 0x85, // . + KEYPAD_EQUAL_SIGN = 0x86, // Disabled (Ubuntu), Dont confuse with KEYPAD_EQUAL + KEY_INTERNATIONAL1 = 0x87, // Disabled (Ubuntu) + KEY_INTERNATIONAL2 = 0x88, // Hiragana Katakana (Ubuntu) + KEY_INTERNATIONAL3 = 0x89, // Disabled (Ubuntu) + KEY_INTERNATIONAL4 = 0x8A, // Henkan (Ubuntu) + KEY_INTERNATIONAL5 = 0x8B, // Muhenkan (Ubuntu) + KEY_INTERNATIONAL6 = 0x8C, // Disabled (Ubuntu) + KEY_INTERNATIONAL7 = 0x8D, // Disabled (Ubuntu) + KEY_INTERNATIONAL8 = 0x8E, // Disabled (Ubuntu) + KEY_INTERNATIONAL9 = 0x8F, // Disabled (Ubuntu) + KEY_LANG1 = 0x90, // Disabled (Ubuntu) + KEY_LANG2 = 0x91, // Disabled (Ubuntu) + KEY_LANG3 = 0x92, // Katana (Ubuntu) + KEY_LANG4 = 0x93, // Hiragana (Ubuntu) + KEY_LANG5 = 0x94, // Disabled (Ubuntu) + KEY_LANG6 = 0x95, // Disabled (Ubuntu) + KEY_LANG7 = 0x96, // Disabled (Ubuntu) + KEY_LANG8 = 0x97, // Disabled (Ubuntu) + KEY_LANG9 = 0x98, // Disabled (Ubuntu) + KEY_ALTERNATE_ERASE = 0x99, // Disabled (Ubuntu) + KEY_SYSREQ_ATTENTION = 0x9A, // Disabled (Ubuntu) + KEY_CANCEL = 0x9B, // Disabled (Ubuntu) + KEY_CLEAR = 0x9C, // Delete (Ubuntu) + KEY_PRIOR = 0x9D, // Disabled (Ubuntu) + KEY_RETURN2 = 0x9E, // Disabled (Ubuntu), Do not confuse this with KEY_ENTER + KEY_SEPARATOR = 0x9F, // Disabled (Ubuntu) + KEY_OUT = 0xA0, // Disabled (Ubuntu) + KEY_OPER = 0xA1, // Disabled (Ubuntu) + KEY_CLEAR_AGAIN = 0xA2, // Disabled (Ubuntu) + KEY_CRSEL_PROPS = 0xA3, // Disabled (Ubuntu) + KEY_EXSEL = 0xA4, // Disabled (Ubuntu) - KEY_PAD_00 = 0xB0, // Disabled (Ubuntu) - KEY_PAD_000 = 0xB1, // Disabled (Ubuntu) - KEY_THOUSANDS_SEPARATOR = 0xB2, // Disabled (Ubuntu) - KEY_DECIMAL_SEPARATOR = 0xB3, // Disabled (Ubuntu) - KEY_CURRENCY_UNIT = 0xB4, // Disabled (Ubuntu) - KEY_CURRENCY_SUB_UNIT = 0xB5, // Disabled (Ubuntu) - KEYPAD_LEFT_BRACE = 0xB6, // ( - KEYPAD_RIGHT_BRACE = 0xB7, // ) - KEYPAD_LEFT_CURLY_BRACE = 0xB8, // Disabled (Ubuntu) - KEYPAD_RIGHT_CURLY_BRACE = 0xB9, // Disabled (Ubuntu) - KEYPAD_TAB = 0xBA, // Disabled (Ubuntu) - KEYPAD_BACKSPACE = 0xBB, // Disabled (Ubuntu) - KEYPAD_A = 0xBC, // Disabled (Ubuntu) - KEYPAD_B = 0xBD, // Disabled (Ubuntu) - KEYPAD_C = 0xBE, // Disabled (Ubuntu) - KEYPAD_D = 0xBF, // Disabled (Ubuntu) - KEYPAD_E = 0xC0, // Disabled (Ubuntu) - KEYPAD_F = 0xC1, // Disabled (Ubuntu) - KEYPAD_XOR = 0xC2, // Disabled (Ubuntu) - KEYPAD_CARET = 0xC3, // Disabled (Ubuntu) - KEYPAD_PERCENT = 0xC4, // Disabled (Ubuntu) - KEYPAD_LESS_THAN = 0xC5, // Disabled (Ubuntu) - KEYPAD_GREATER_THAN = 0xC6, // Disabled (Ubuntu) - KEYPAD_AMPERSAND = 0xC7, // Disabled (Ubuntu) - KEYPAD_DOUBLEAMPERSAND = 0xC8, // Disabled (Ubuntu) - KEYPAD_PIPE = 0xC9, // Disabled (Ubuntu) - KEYPAD_DOUBLEPIPE = 0xCA, // Disabled (Ubuntu) - KEYPAD_COLON = 0xCB, // Disabled (Ubuntu) - KEYPAD_POUND_SIGN = 0xCC, // Disabled (Ubuntu) - KEYPAD_SPACE = 0xCD, // Disabled (Ubuntu) - KEYPAD_AT_SIGN = 0xCE, // Disabled (Ubuntu) - KEYPAD_EXCLAMATION_POINT = 0xCF, // Disabled (Ubuntu) - KEYPAD_MEMORY_STORE = 0xD0, // Disabled (Ubuntu) - KEYPAD_MEMORY_RECALL = 0xD1, // Disabled (Ubuntu) - KEYPAD_MEMORY_CLEAR = 0xD2, // Disabled (Ubuntu) - KEYPAD_MEMORY_ADD = 0xD3, // Disabled (Ubuntu) - KEYPAD_MEMORY_SUBTRACT = 0xD4, // Disabled (Ubuntu) - KEYPAD_MEMORY_MULTIPLY = 0xD5, // Disabled (Ubuntu) - KEYPAD_MEMORY_DIVIDE = 0xD6, // Disabled (Ubuntu) - KEYPAD_PLUS_MINUS = 0xD7, // Disabled (Ubuntu) - KEYPAD_CLEAR = 0xD8, // Delete (Ubuntu) - KEYPAD_CLEAR_ENTRY = 0xD9, // Disabled (Ubuntu) - KEYPAD_BINARY = 0xDA, // Disabled (Ubuntu) - KEYPAD_OCTAL = 0xDB, // Disabled (Ubuntu) - KEYPAD_DECIMAL = 0xDC, // Disabled (Ubuntu) - KEYPAD_HEXADECIMAL = 0xDD, // Disabled (Ubuntu) + KEY_PAD_00 = 0xB0, // Disabled (Ubuntu) + KEY_PAD_000 = 0xB1, // Disabled (Ubuntu) + KEY_THOUSANDS_SEPARATOR = 0xB2, // Disabled (Ubuntu) + KEY_DECIMAL_SEPARATOR = 0xB3, // Disabled (Ubuntu) + KEY_CURRENCY_UNIT = 0xB4, // Disabled (Ubuntu) + KEY_CURRENCY_SUB_UNIT = 0xB5, // Disabled (Ubuntu) + KEYPAD_LEFT_BRACE = 0xB6, // ( + KEYPAD_RIGHT_BRACE = 0xB7, // ) + KEYPAD_LEFT_CURLY_BRACE = 0xB8, // Disabled (Ubuntu) + KEYPAD_RIGHT_CURLY_BRACE = 0xB9, // Disabled (Ubuntu) + KEYPAD_TAB = 0xBA, // Disabled (Ubuntu) + KEYPAD_BACKSPACE = 0xBB, // Disabled (Ubuntu) + KEYPAD_A = 0xBC, // Disabled (Ubuntu) + KEYPAD_B = 0xBD, // Disabled (Ubuntu) + KEYPAD_C = 0xBE, // Disabled (Ubuntu) + KEYPAD_D = 0xBF, // Disabled (Ubuntu) + KEYPAD_E = 0xC0, // Disabled (Ubuntu) + KEYPAD_F = 0xC1, // Disabled (Ubuntu) + KEYPAD_XOR = 0xC2, // Disabled (Ubuntu) + KEYPAD_CARET = 0xC3, // Disabled (Ubuntu) + KEYPAD_PERCENT = 0xC4, // Disabled (Ubuntu) + KEYPAD_LESS_THAN = 0xC5, // Disabled (Ubuntu) + KEYPAD_GREATER_THAN = 0xC6, // Disabled (Ubuntu) + KEYPAD_AMPERSAND = 0xC7, // Disabled (Ubuntu) + KEYPAD_DOUBLEAMPERSAND = 0xC8, // Disabled (Ubuntu) + KEYPAD_PIPE = 0xC9, // Disabled (Ubuntu) + KEYPAD_DOUBLEPIPE = 0xCA, // Disabled (Ubuntu) + KEYPAD_COLON = 0xCB, // Disabled (Ubuntu) + KEYPAD_POUND_SIGN = 0xCC, // Disabled (Ubuntu) + KEYPAD_SPACE = 0xCD, // Disabled (Ubuntu) + KEYPAD_AT_SIGN = 0xCE, // Disabled (Ubuntu) + KEYPAD_EXCLAMATION_POINT = 0xCF, // Disabled (Ubuntu) + KEYPAD_MEMORY_STORE = 0xD0, // Disabled (Ubuntu) + KEYPAD_MEMORY_RECALL = 0xD1, // Disabled (Ubuntu) + KEYPAD_MEMORY_CLEAR = 0xD2, // Disabled (Ubuntu) + KEYPAD_MEMORY_ADD = 0xD3, // Disabled (Ubuntu) + KEYPAD_MEMORY_SUBTRACT = 0xD4, // Disabled (Ubuntu) + KEYPAD_MEMORY_MULTIPLY = 0xD5, // Disabled (Ubuntu) + KEYPAD_MEMORY_DIVIDE = 0xD6, // Disabled (Ubuntu) + KEYPAD_PLUS_MINUS = 0xD7, // Disabled (Ubuntu) + KEYPAD_CLEAR = 0xD8, // Delete (Ubuntu) + KEYPAD_CLEAR_ENTRY = 0xD9, // Disabled (Ubuntu) + KEYPAD_BINARY = 0xDA, // Disabled (Ubuntu) + KEYPAD_OCTAL = 0xDB, // Disabled (Ubuntu) + KEYPAD_DECIMAL = 0xDC, // Disabled (Ubuntu) + KEYPAD_HEXADECIMAL = 0xDD, // Disabled (Ubuntu) - KEY_LEFT_CTRL = 0xE0, - KEY_LEFT_SHIFT = 0xE1, - KEY_LEFT_ALT = 0xE2, - KEY_LEFT_GUI = 0xE3, - KEY_LEFT_WINDOWS = 0xE3, // Alias - KEY_RIGHT_CTRL = 0xE4, - KEY_RIGHT_SHIFT = 0xE5, - KEY_RIGHT_ALT = 0xE6, - KEY_RIGHT_GUI = 0xE7, - KEY_RIGHT_WINDOWS = 0xE7, // Alias + KEY_LEFT_CTRL = 0xE0, + KEY_LEFT_SHIFT = 0xE1, + KEY_LEFT_ALT = 0xE2, + KEY_LEFT_GUI = 0xE3, + KEY_LEFT_WINDOWS = 0xE3, // Alias + KEY_RIGHT_CTRL = 0xE4, + KEY_RIGHT_SHIFT = 0xE5, + KEY_RIGHT_ALT = 0xE6, + KEY_RIGHT_GUI = 0xE7, + KEY_RIGHT_WINDOWS = 0xE7, // Alias - // Keyboard HID mappings + // Keyboard HID mappings - // Reserved 0xA5-AF - HID_KEYPAD_00 = 0xB0, - HID_KEYPAD_000 = 0xB1, - HID_THOUSANDS_SEPARATOR = 0xB2, - HID_DECIMAL_SEPARATOR = 0xB3, - HID_CURRENCY_UNIT = 0xB4, - HID_CURRENCY_SUBUNIT = 0xB5, - HID_KEYPAD_LEFT_PAREN = 0xB6, - HID_KEYPAD_RIGHT_PAREN = 0xB7, - HID_KEYPAD_LEFT_CURLY_BRACE = 0xB8, - HID_KEYPAD_RIGHT_CURLY_BRACE = 0xB9, - HID_KEYPAD_TAB = 0xBA, - HID_KEYPAD_BACKSPACE = 0xBB, - HID_KEYPAD_A = 0xBC, - HID_KEYPAD_B = 0xBD, - HID_KEYPAD_C = 0xBE, - HID_KEYPAD_D = 0xBF, - HID_KEYPAD_E = 0xC0, - HID_KEYPAD_F = 0xC1, - HID_KEYPAD_XOR = 0xC2, - HID_KEYPAD_CARAT = 0xC3, - HID_KEYPAD_PERCENT = 0xC4, - HID_KEYPAD_LESS_THAN = 0xC5, - HID_KEYPAD_GREATER_THAN = 0xC6, - HID_KEYPAD_AMPERSAND = 0xC7, - HID_KEYPAD_DOUBLEAMPERSAND = 0xC8, - HID_KEYPAD_PIPE = 0xC9, - HID_KEYPAD_DOUBLEPIPE = 0xCA, - HID_KEYPAD_COLON = 0xCB, - HID_KEYPAD_POUND_SIGN = 0xCC, - HID_KEYPAD_SPACE = 0xCD, - HID_KEYPAD_AT_SIGN = 0xCE, - HID_KEYPAD_EXCLAMATION_POINT = 0xCF, - HID_KEYPAD_MEMORY_STORE = 0xD0, - HID_KEYPAD_MEMORY_RECALL = 0xD1, - HID_KEYPAD_MEMORY_CLEAR = 0xD2, - HID_KEYPAD_MEMORY_ADD = 0xD3, - HID_KEYPAD_MEMORY_SUBTRACT = 0xD4, - HID_KEYPAD_MEMORY_MULTIPLY = 0xD5, - HID_KEYPAD_MEMORY_DIVIDE = 0xD6, - HID_KEYPAD_PLUS_SLASH_MINUS = 0xD7, - HID_KEYPAD_CLEAR = 0xD8, - HID_KEYPAD_CLEAR_ENTRY = 0xD9, - HID_KEYPAD_BINARY = 0xDA, - HID_KEYPAD_OCTAL = 0xDB, - HID_KEYPAD_DECIMAL = 0xDC, - HID_KEYPAD_HEXADECIMAL = 0xDD, + // Reserved 0xA5-AF + HID_KEYPAD_00 = 0xB0, + HID_KEYPAD_000 = 0xB1, + HID_THOUSANDS_SEPARATOR = 0xB2, + HID_DECIMAL_SEPARATOR = 0xB3, + HID_CURRENCY_UNIT = 0xB4, + HID_CURRENCY_SUBUNIT = 0xB5, + HID_KEYPAD_LEFT_PAREN = 0xB6, + HID_KEYPAD_RIGHT_PAREN = 0xB7, + HID_KEYPAD_LEFT_CURLY_BRACE = 0xB8, + HID_KEYPAD_RIGHT_CURLY_BRACE= 0xB9, + HID_KEYPAD_TAB = 0xBA, + HID_KEYPAD_BACKSPACE = 0xBB, + HID_KEYPAD_A = 0xBC, + HID_KEYPAD_B = 0xBD, + HID_KEYPAD_C = 0xBE, + HID_KEYPAD_D = 0xBF, + HID_KEYPAD_E = 0xC0, + HID_KEYPAD_F = 0xC1, + HID_KEYPAD_XOR = 0xC2, + HID_KEYPAD_CARAT = 0xC3, + HID_KEYPAD_PERCENT = 0xC4, + HID_KEYPAD_LESS_THAN = 0xC5, + HID_KEYPAD_GREATER_THAN = 0xC6, + HID_KEYPAD_AMPERSAND = 0xC7, + HID_KEYPAD_DOUBLEAMPERSAND = 0xC8, + HID_KEYPAD_PIPE = 0xC9, + HID_KEYPAD_DOUBLEPIPE = 0xCA, + HID_KEYPAD_COLON = 0xCB, + HID_KEYPAD_POUND_SIGN = 0xCC, + HID_KEYPAD_SPACE = 0xCD, + HID_KEYPAD_AT_SIGN = 0xCE, + HID_KEYPAD_EXCLAMATION_POINT= 0xCF, + HID_KEYPAD_MEMORY_STORE = 0xD0, + HID_KEYPAD_MEMORY_RECALL = 0xD1, + HID_KEYPAD_MEMORY_CLEAR = 0xD2, + HID_KEYPAD_MEMORY_ADD = 0xD3, + HID_KEYPAD_MEMORY_SUBTRACT = 0xD4, + HID_KEYPAD_MEMORY_MULTIPLY = 0xD5, + HID_KEYPAD_MEMORY_DIVIDE = 0xD6, + HID_KEYPAD_PLUS_SLASH_MINUS = 0xD7, + HID_KEYPAD_CLEAR = 0xD8, + HID_KEYPAD_CLEAR_ENTRY = 0xD9, + HID_KEYPAD_BINARY = 0xDA, + HID_KEYPAD_OCTAL = 0xDB, + HID_KEYPAD_DECIMAL = 0xDC, + HID_KEYPAD_HEXADECIMAL = 0xDD, - // 0xDE-0xDF - RESERVED - HID_KEYBOARD_LEFT_CONTROL = 0xE0, - HID_KEYBOARD_LEFT_SHIFT = 0xE1, - HID_KEYBOARD_LEFT_ALT = 0xE2, - HID_KEYBOARD_LEFT_GUI = 0xE3, - HID_KEYBOARD_RIGHT_CONTROL = 0xE4, - HID_KEYBOARD_RIGHT_SHIFT = 0xE5, - HID_KEYBOARD_RIGHT_ALT = 0xE6, - HID_KEYBOARD_RIGHT_GUI = 0xE7, + // 0xDE-0xDF - RESERVED + HID_KEYBOARD_LEFT_CONTROL = 0xE0, + HID_KEYBOARD_LEFT_SHIFT = 0xE1, + HID_KEYBOARD_LEFT_ALT = 0xE2, + HID_KEYBOARD_LEFT_GUI = 0xE3, + HID_KEYBOARD_RIGHT_CONTROL = 0xE4, + HID_KEYBOARD_RIGHT_SHIFT = 0xE5, + HID_KEYBOARD_RIGHT_ALT = 0xE6, + HID_KEYBOARD_RIGHT_GUI = 0xE7, }; static const uint16_t _asciimap[] PROGMEM = { - KEY_RESERVED, // NUL - KEY_RESERVED, // SOH - KEY_RESERVED, // STX - KEY_RESERVED, // ETX - KEY_RESERVED, // EOT - KEY_RESERVED, // ENQ - KEY_RESERVED, // ACK - KEY_RESERVED, // BEL - KEY_BACKSPACE, // BS Backspace - KEY_TAB, // TAB Tab - KEY_ENTER, // LF Enter - KEY_RESERVED, // VT - KEY_RESERVED, // FF - KEY_RESERVED, // CR - KEY_RESERVED, // SO - KEY_RESERVED, // SI - KEY_RESERVED, // DEL - KEY_RESERVED, // DC1 - KEY_RESERVED, // DC2 - KEY_RESERVED, // DC3 - KEY_RESERVED, // DC4 - KEY_RESERVED, // NAK - KEY_RESERVED, // SYN - KEY_RESERVED, // ETB - KEY_RESERVED, // CAN - KEY_RESERVED, // EM - KEY_RESERVED, // SUB - KEY_RESERVED, // ESC - KEY_RESERVED, // FS - KEY_RESERVED, // GS - KEY_RESERVED, // RS - KEY_RESERVED, // US + KEY_RESERVED, // NUL + KEY_RESERVED, // SOH + KEY_RESERVED, // STX + KEY_RESERVED, // ETX + KEY_RESERVED, // EOT + KEY_RESERVED, // ENQ + KEY_RESERVED, // ACK + KEY_RESERVED, // BEL + KEY_BACKSPACE, // BS Backspace + KEY_TAB, // TAB Tab + KEY_ENTER, // LF Enter + KEY_RESERVED, // VT + KEY_RESERVED, // FF + KEY_RESERVED, // CR + KEY_RESERVED, // SO + KEY_RESERVED, // SI + KEY_RESERVED, // DEL + KEY_RESERVED, // DC1 + KEY_RESERVED, // DC2 + KEY_RESERVED, // DC3 + KEY_RESERVED, // DC4 + KEY_RESERVED, // NAK + KEY_RESERVED, // SYN + KEY_RESERVED, // ETB + KEY_RESERVED, // CAN + KEY_RESERVED, // EM + KEY_RESERVED, // SUB + KEY_RESERVED, // ESC + KEY_RESERVED, // FS + KEY_RESERVED, // GS + KEY_RESERVED, // RS + KEY_RESERVED, // US - KEY_SPACE, // ' ' Space - KEY_1|MOD_LEFT_SHIFT, // ! - KEY_2|MOD_LEFT_SHIFT, // " - KEY_HASHTAG, // # - KEY_4|MOD_LEFT_SHIFT, // $ - KEY_5|MOD_LEFT_SHIFT, // % - KEY_6|MOD_LEFT_SHIFT, // & - KEY_HASHTAG|MOD_LEFT_SHIFT, // ' - KEY_8|MOD_LEFT_SHIFT, // ( - KEY_9|MOD_LEFT_SHIFT, // ) - KEY_PLUS|MOD_LEFT_SHIFT, // * - KEY_PLUS, // + - KEY_COMMA, // , - KEY_MINUS, // - - KEY_PERIOD, // . - KEY_7|MOD_LEFT_SHIFT, // / - KEY_0, // 0 - KEY_1, // 1 - KEY_2, // 2 - KEY_3, // 3 - KEY_4, // 4 - KEY_5, // 5 - KEY_6, // 6 - KEY_7, // 7 - KEY_8, // 8 - KEY_9, // 9 - KEY_PERIOD|MOD_LEFT_SHIFT, // : - KEY_COMMA|MOD_LEFT_SHIFT, // ; - KEY_SMALLER, // < - KEY_0|MOD_LEFT_SHIFT, // = - KEY_SMALLER|MOD_LEFT_SHIFT, // > - KEY_SZ|MOD_LEFT_SHIFT, // ? - KEY_Q|MOD_RIGHT_ALT, // @ - KEY_A|MOD_LEFT_SHIFT, // A - KEY_B|MOD_LEFT_SHIFT, // B - KEY_C|MOD_LEFT_SHIFT, // C - KEY_D|MOD_LEFT_SHIFT, // D - KEY_E|MOD_LEFT_SHIFT, // E - KEY_F|MOD_LEFT_SHIFT, // F - KEY_G|MOD_LEFT_SHIFT, // G - KEY_H|MOD_LEFT_SHIFT, // H - KEY_I|MOD_LEFT_SHIFT, // I - KEY_J|MOD_LEFT_SHIFT, // J - KEY_K|MOD_LEFT_SHIFT, // K - KEY_L|MOD_LEFT_SHIFT, // L - KEY_M|MOD_LEFT_SHIFT, // M - KEY_N|MOD_LEFT_SHIFT, // N - KEY_O|MOD_LEFT_SHIFT, // O - KEY_P|MOD_LEFT_SHIFT, // P - KEY_Q|MOD_LEFT_SHIFT, // Q - KEY_R|MOD_LEFT_SHIFT, // R - KEY_S|MOD_LEFT_SHIFT, // S - KEY_T|MOD_LEFT_SHIFT, // T - KEY_U|MOD_LEFT_SHIFT, // U - KEY_V|MOD_LEFT_SHIFT, // V - KEY_W|MOD_LEFT_SHIFT, // W - KEY_X|MOD_LEFT_SHIFT, // X - KEY_Y|MOD_LEFT_SHIFT, // Y - KEY_Z|MOD_LEFT_SHIFT, // Z - KEY_8|MOD_RIGHT_ALT, // [ - KEY_SZ|MOD_RIGHT_ALT, // bslash - KEY_9|MOD_RIGHT_ALT, // ] - KEY_6|MOD_LEFT_SHIFT, // ^ - KEY_MINUS|MOD_LEFT_SHIFT, // _ - KEY_ACCENT|MOD_LEFT_SHIFT, // ` - KEY_A, // a - KEY_B, // b - KEY_C, // c - KEY_D, // d - KEY_E, // e - KEY_F, // f - KEY_G, // g - KEY_H, // h - KEY_I, // i - KEY_J, // j - KEY_K, // k - KEY_L, // l - KEY_M, // m - KEY_N, // n - KEY_O, // o - KEY_P, // p - KEY_Q, // q - KEY_R, // r - KEY_S, // s - KEY_T, // t - KEY_U, // u - KEY_V, // v - KEY_W, // w - KEY_X, // x - KEY_Y, // y - KEY_Z, // z - KEY_7|MOD_RIGHT_ALT, // { - KEY_SMALLER|MOD_RIGHT_ALT, // | - KEY_0|MOD_RIGHT_ALT, // } - KEY_PLUS|MOD_RIGHT_ALT, // ~ - KEY_RESERVED // DEL + KEY_SPACE, // ' ' Space + KEY_1|MOD_LEFT_SHIFT, // ! + KEY_2|MOD_LEFT_SHIFT, // " + KEY_HASHTAG, // # + KEY_4|MOD_LEFT_SHIFT, // $ + KEY_5|MOD_LEFT_SHIFT, // % + KEY_6|MOD_LEFT_SHIFT, // & + KEY_HASHTAG|MOD_LEFT_SHIFT, // ' + KEY_8|MOD_LEFT_SHIFT, // ( + KEY_9|MOD_LEFT_SHIFT, // ) + KEY_PLUS|MOD_LEFT_SHIFT, // * + KEY_PLUS, // + + KEY_COMMA, // , + KEY_MINUS, // - + KEY_PERIOD, // . + KEY_7|MOD_LEFT_SHIFT, // / + KEY_0, // 0 + KEY_1, // 1 + KEY_2, // 2 + KEY_3, // 3 + KEY_4, // 4 + KEY_5, // 5 + KEY_6, // 6 + KEY_7, // 7 + KEY_8, // 8 + KEY_9, // 9 + KEY_PERIOD|MOD_LEFT_SHIFT, // : + KEY_COMMA|MOD_LEFT_SHIFT, // ; + KEY_SMALLER, // < + KEY_0|MOD_LEFT_SHIFT, // = + KEY_SMALLER|MOD_LEFT_SHIFT, // > + KEY_SZ|MOD_LEFT_SHIFT, // ? + KEY_Q|MOD_RIGHT_ALT, // @ + KEY_A|MOD_LEFT_SHIFT, // A + KEY_B|MOD_LEFT_SHIFT, // B + KEY_C|MOD_LEFT_SHIFT, // C + KEY_D|MOD_LEFT_SHIFT, // D + KEY_E|MOD_LEFT_SHIFT, // E + KEY_F|MOD_LEFT_SHIFT, // F + KEY_G|MOD_LEFT_SHIFT, // G + KEY_H|MOD_LEFT_SHIFT, // H + KEY_I|MOD_LEFT_SHIFT, // I + KEY_J|MOD_LEFT_SHIFT, // J + KEY_K|MOD_LEFT_SHIFT, // K + KEY_L|MOD_LEFT_SHIFT, // L + KEY_M|MOD_LEFT_SHIFT, // M + KEY_N|MOD_LEFT_SHIFT, // N + KEY_O|MOD_LEFT_SHIFT, // O + KEY_P|MOD_LEFT_SHIFT, // P + KEY_Q|MOD_LEFT_SHIFT, // Q + KEY_R|MOD_LEFT_SHIFT, // R + KEY_S|MOD_LEFT_SHIFT, // S + KEY_T|MOD_LEFT_SHIFT, // T + KEY_U|MOD_LEFT_SHIFT, // U + KEY_V|MOD_LEFT_SHIFT, // V + KEY_W|MOD_LEFT_SHIFT, // W + KEY_X|MOD_LEFT_SHIFT, // X + KEY_Y|MOD_LEFT_SHIFT, // Y + KEY_Z|MOD_LEFT_SHIFT, // Z + KEY_8|MOD_RIGHT_ALT, // [ + KEY_SZ|MOD_RIGHT_ALT, // bslash + KEY_9|MOD_RIGHT_ALT, // ] + KEY_6|MOD_LEFT_SHIFT, // ^ + KEY_MINUS|MOD_LEFT_SHIFT, // _ + KEY_ACCENT|MOD_LEFT_SHIFT, // ` + KEY_A, // a + KEY_B, // b + KEY_C, // c + KEY_D, // d + KEY_E, // e + KEY_F, // f + KEY_G, // g + KEY_H, // h + KEY_I, // i + KEY_J, // j + KEY_K, // k + KEY_L, // l + KEY_M, // m + KEY_N, // n + KEY_O, // o + KEY_P, // p + KEY_Q, // q + KEY_R, // r + KEY_S, // s + KEY_T, // t + KEY_U, // u + KEY_V, // v + KEY_W, // w + KEY_X, // x + KEY_Y, // y + KEY_Z, // z + KEY_7|MOD_RIGHT_ALT, // { + KEY_SMALLER|MOD_RIGHT_ALT, // | + KEY_0|MOD_RIGHT_ALT, // } + KEY_PLUS|MOD_RIGHT_ALT, // ~ + KEY_RESERVED // DEL }; diff --git a/src/KeyboardLayouts/ImprovedKeylayoutsUS.h b/src/KeyboardLayouts/ImprovedKeylayoutsUS.h index cb52ec3..0e96528 100644 --- a/src/KeyboardLayouts/ImprovedKeylayoutsUS.h +++ b/src/KeyboardLayouts/ImprovedKeylayoutsUS.h @@ -29,598 +29,598 @@ THE SOFTWARE. // Hut1_12v2.pdf enum KeyboardKeycode : uint8_t { - KEY_RESERVED = 0, - KEY_ERROR_ROLLOVER = 1, - KEY_POST_FAIL = 2, - KEY_ERROR_UNDEFINED = 3, - KEY_A = 4, - KEY_B = 5, - KEY_C = 6, - KEY_D = 7, - KEY_E = 8, - KEY_F = 9, - KEY_G = 10, - KEY_H = 11, - KEY_I = 12, - KEY_J = 13, - KEY_K = 14, - KEY_L = 15, - KEY_M = 16, - KEY_N = 17, - KEY_O = 18, - KEY_P = 19, - KEY_Q = 20, - KEY_R = 21, - KEY_S = 22, - KEY_T = 23, - KEY_U = 24, - KEY_V = 25, - KEY_W = 26, - KEY_X = 27, - KEY_Y = 28, - KEY_Z = 29, - KEY_1 = 30, - KEY_2 = 31, - KEY_3 = 32, - KEY_4 = 33, - KEY_5 = 34, - KEY_6 = 35, - KEY_7 = 36, - KEY_8 = 37, - KEY_9 = 38, - KEY_0 = 39, - KEY_ENTER = 40, - KEY_RETURN = 40, // Alias - KEY_ESC = 41, - KEY_BACKSPACE = 42, - KEY_TAB = 43, - KEY_SPACE = 44, - KEY_MINUS = 45, - KEY_EQUAL = 46, - KEY_LEFT_BRACE = 47, - KEY_RIGHT_BRACE = 48, - KEY_BACKSLASH = 49, - KEY_NON_US_NUM = 50, - KEY_SEMICOLON = 51, - KEY_QUOTE = 52, - KEY_TILDE = 53, - KEY_COMMA = 54, - KEY_PERIOD = 55, - KEY_SLASH = 56, - KEY_CAPS_LOCK = 0x39, - KEY_F1 = 0x3A, - KEY_F2 = 0x3B, - KEY_F3 = 0x3C, - KEY_F4 = 0x3D, - KEY_F5 = 0x3E, - KEY_F6 = 0x3F, - KEY_F7 = 0x40, - KEY_F8 = 0x41, - KEY_F9 = 0x42, - KEY_F10 = 0x43, - KEY_F11 = 0x44, - KEY_F12 = 0x45, - KEY_PRINT = 0x46, - KEY_PRINTSCREEN = 0x46, // Alias - KEY_SCROLL_LOCK = 0x47, - KEY_PAUSE = 0x48, - KEY_INSERT = 0x49, - KEY_HOME = 0x4A, - KEY_PAGE_UP = 0x4B, - KEY_DELETE = 0x4C, - KEY_END = 0x4D, - KEY_PAGE_DOWN = 0x4E, - KEY_RIGHT_ARROW = 0x4F, - KEY_LEFT_ARROW = 0x50, - KEY_DOWN_ARROW = 0x51, - KEY_UP_ARROW = 0x52, - KEY_RIGHT = 0x4F, // Alias - KEY_LEFT = 0x50, // Alias - KEY_DOWN = 0x51, // Alias - KEY_UP = 0x52, // Alias - KEY_NUM_LOCK = 0x53, - KEYPAD_DIVIDE = 0x54, - KEYPAD_MULTIPLY = 0x55, - KEYPAD_SUBTRACT = 0x56, - KEYPAD_ADD = 0x57, - KEYPAD_ENTER = 0x58, - KEYPAD_1 = 0x59, - KEYPAD_2 = 0x5A, - KEYPAD_3 = 0x5B, - KEYPAD_4 = 0x5C, - KEYPAD_5 = 0x5D, - KEYPAD_6 = 0x5E, - KEYPAD_7 = 0x5F, - KEYPAD_8 = 0x60, - KEYPAD_9 = 0x61, - KEYPAD_0 = 0x62, - KEYPAD_DOT = 0x63, - KEY_NON_US = 0x64, - KEY_APPLICATION = 0x65, // Context menu/right click - KEY_MENU = 0x65, // Alias + KEY_RESERVED = 0, + KEY_ERROR_ROLLOVER = 1, + KEY_POST_FAIL = 2, + KEY_ERROR_UNDEFINED = 3, + KEY_A = 4, + KEY_B = 5, + KEY_C = 6, + KEY_D = 7, + KEY_E = 8, + KEY_F = 9, + KEY_G = 10, + KEY_H = 11, + KEY_I = 12, + KEY_J = 13, + KEY_K = 14, + KEY_L = 15, + KEY_M = 16, + KEY_N = 17, + KEY_O = 18, + KEY_P = 19, + KEY_Q = 20, + KEY_R = 21, + KEY_S = 22, + KEY_T = 23, + KEY_U = 24, + KEY_V = 25, + KEY_W = 26, + KEY_X = 27, + KEY_Y = 28, + KEY_Z = 29, + KEY_1 = 30, + KEY_2 = 31, + KEY_3 = 32, + KEY_4 = 33, + KEY_5 = 34, + KEY_6 = 35, + KEY_7 = 36, + KEY_8 = 37, + KEY_9 = 38, + KEY_0 = 39, + KEY_ENTER = 40, + KEY_RETURN = 40, // Alias + KEY_ESC = 41, + KEY_BACKSPACE = 42, + KEY_TAB = 43, + KEY_SPACE = 44, + KEY_MINUS = 45, + KEY_EQUAL = 46, + KEY_LEFT_BRACE = 47, + KEY_RIGHT_BRACE = 48, + KEY_BACKSLASH = 49, + KEY_NON_US_NUM = 50, + KEY_SEMICOLON = 51, + KEY_QUOTE = 52, + KEY_TILDE = 53, + KEY_COMMA = 54, + KEY_PERIOD = 55, + KEY_SLASH = 56, + KEY_CAPS_LOCK = 0x39, + KEY_F1 = 0x3A, + KEY_F2 = 0x3B, + KEY_F3 = 0x3C, + KEY_F4 = 0x3D, + KEY_F5 = 0x3E, + KEY_F6 = 0x3F, + KEY_F7 = 0x40, + KEY_F8 = 0x41, + KEY_F9 = 0x42, + KEY_F10 = 0x43, + KEY_F11 = 0x44, + KEY_F12 = 0x45, + KEY_PRINT = 0x46, + KEY_PRINTSCREEN = 0x46, // Alias + KEY_SCROLL_LOCK = 0x47, + KEY_PAUSE = 0x48, + KEY_INSERT = 0x49, + KEY_HOME = 0x4A, + KEY_PAGE_UP = 0x4B, + KEY_DELETE = 0x4C, + KEY_END = 0x4D, + KEY_PAGE_DOWN = 0x4E, + KEY_RIGHT_ARROW = 0x4F, + KEY_LEFT_ARROW = 0x50, + KEY_DOWN_ARROW = 0x51, + KEY_UP_ARROW = 0x52, + KEY_RIGHT = 0x4F, // Alias + KEY_LEFT = 0x50, // Alias + KEY_DOWN = 0x51, // Alias + KEY_UP = 0x52, // Alias + KEY_NUM_LOCK = 0x53, + KEYPAD_DIVIDE = 0x54, + KEYPAD_MULTIPLY = 0x55, + KEYPAD_SUBTRACT = 0x56, + KEYPAD_ADD = 0x57, + KEYPAD_ENTER = 0x58, + KEYPAD_1 = 0x59, + KEYPAD_2 = 0x5A, + KEYPAD_3 = 0x5B, + KEYPAD_4 = 0x5C, + KEYPAD_5 = 0x5D, + KEYPAD_6 = 0x5E, + KEYPAD_7 = 0x5F, + KEYPAD_8 = 0x60, + KEYPAD_9 = 0x61, + KEYPAD_0 = 0x62, + KEYPAD_DOT = 0x63, + KEY_NON_US = 0x64, + KEY_APPLICATION = 0x65, // Context menu/right click + KEY_MENU = 0x65, // Alias - // Most of the following keys will only work with Linux or not at all. - // F13+ keys are mostly used for laptop functions like ECO key. - KEY_POWER = 0x66, // PowerOff (Ubuntu) - KEY_PAD_EQUALS = 0x67, // Dont confuse with KEYPAD_EQUAL_SIGN - KEY_F13 = 0x68, // Tools (Ubunutu) - KEY_F14 = 0x69, // Launch5 (Ubuntu) - KEY_F15 = 0x6A, // Launch6 (Ubuntu) - KEY_F16 = 0x6B, // Launch7 (Ubuntu) - KEY_F17 = 0x6C, // Launch8 (Ubuntu) - KEY_F18 = 0x6D, // Launch9 (Ubuntu) - KEY_F19 = 0x6E, // Disabled (Ubuntu) - KEY_F20 = 0x6F, // AudioMicMute (Ubuntu) - KEY_F21 = 0x70, // Touchpad toggle (Ubuntu) - KEY_F22 = 0x71, // TouchpadOn (Ubuntu) - KEY_F23 = 0x72, // TouchpadOff Ubuntu) - KEY_F24 = 0x73, // Disabled (Ubuntu) - KEY_EXECUTE = 0x74, // Open (Ubuntu) - KEY_HELP = 0x75, // Help (Ubuntu) - KEY_MENU2 = 0x76, // Disabled (Ubuntu) - KEY_SELECT = 0x77, // Disabled (Ubuntu) - KEY_STOP = 0x78, // Cancel (Ubuntu) - KEY_AGAIN = 0x79, // Redo (Ubuntu) - KEY_UNDO = 0x7A, // Undo (Ubuntu) - KEY_CUT = 0x7B, // Cut (Ubuntu) - KEY_COPY = 0x7C, // Copy (Ubuntu) - KEY_PASTE = 0x7D, // Paste (Ubuntu) - KEY_FIND = 0x7E, // Find (Ubuntu) - KEY_MUTE = 0x7F, - KEY_VOLUME_MUTE = 0x7F, // Alias - KEY_VOLUME_UP = 0x80, - KEY_VOLUME_DOWN = 0x81, - KEY_LOCKING_CAPS_LOCK = 0x82, // Disabled (Ubuntu) - KEY_LOCKING_NUM_LOCK = 0x83, // Disabled (Ubuntu) - KEY_LOCKING_SCROLL_LOCK = 0x84, // Disabled (Ubuntu) - KEYPAD_COMMA = 0x85, // . - KEYPAD_EQUAL_SIGN = 0x86, // Disabled (Ubuntu), Dont confuse with KEYPAD_EQUAL - KEY_INTERNATIONAL1 = 0x87, // Disabled (Ubuntu) - KEY_INTERNATIONAL2 = 0x88, // Hiragana Katakana (Ubuntu) - KEY_INTERNATIONAL3 = 0x89, // Disabled (Ubuntu) - KEY_INTERNATIONAL4 = 0x8A, // Henkan (Ubuntu) - KEY_INTERNATIONAL5 = 0x8B, // Muhenkan (Ubuntu) - KEY_INTERNATIONAL6 = 0x8C, // Disabled (Ubuntu) - KEY_INTERNATIONAL7 = 0x8D, // Disabled (Ubuntu) - KEY_INTERNATIONAL8 = 0x8E, // Disabled (Ubuntu) - KEY_INTERNATIONAL9 = 0x8F, // Disabled (Ubuntu) - KEY_LANG1 = 0x90, // Disabled (Ubuntu) - KEY_LANG2 = 0x91, // Disabled (Ubuntu) - KEY_LANG3 = 0x92, // Katana (Ubuntu) - KEY_LANG4 = 0x93, // Hiragana (Ubuntu) - KEY_LANG5 = 0x94, // Disabled (Ubuntu) - KEY_LANG6 = 0x95, // Disabled (Ubuntu) - KEY_LANG7 = 0x96, // Disabled (Ubuntu) - KEY_LANG8 = 0x97, // Disabled (Ubuntu) - KEY_LANG9 = 0x98, // Disabled (Ubuntu) - KEY_ALTERNATE_ERASE = 0x99, // Disabled (Ubuntu) - KEY_SYSREQ_ATTENTION = 0x9A, // Disabled (Ubuntu) - KEY_CANCEL = 0x9B, // Disabled (Ubuntu) - KEY_CLEAR = 0x9C, // Delete (Ubuntu) - KEY_PRIOR = 0x9D, // Disabled (Ubuntu) - KEY_RETURN2 = 0x9E, // Disabled (Ubuntu), Do not confuse this with KEY_ENTER - KEY_SEPARATOR = 0x9F, // Disabled (Ubuntu) - KEY_OUT = 0xA0, // Disabled (Ubuntu) - KEY_OPER = 0xA1, // Disabled (Ubuntu) - KEY_CLEAR_AGAIN = 0xA2, // Disabled (Ubuntu) - KEY_CRSEL_PROPS = 0xA3, // Disabled (Ubuntu) - KEY_EXSEL = 0xA4, // Disabled (Ubuntu) + // Most of the following keys will only work with Linux or not at all. + // F13+ keys are mostly used for laptop functions like ECO key. + KEY_POWER = 0x66, // PowerOff (Ubuntu) + KEY_PAD_EQUALS = 0x67, // Dont confuse with KEYPAD_EQUAL_SIGN + KEY_F13 = 0x68, // Tools (Ubunutu) + KEY_F14 = 0x69, // Launch5 (Ubuntu) + KEY_F15 = 0x6A, // Launch6 (Ubuntu) + KEY_F16 = 0x6B, // Launch7 (Ubuntu) + KEY_F17 = 0x6C, // Launch8 (Ubuntu) + KEY_F18 = 0x6D, // Launch9 (Ubuntu) + KEY_F19 = 0x6E, // Disabled (Ubuntu) + KEY_F20 = 0x6F, // AudioMicMute (Ubuntu) + KEY_F21 = 0x70, // Touchpad toggle (Ubuntu) + KEY_F22 = 0x71, // TouchpadOn (Ubuntu) + KEY_F23 = 0x72, // TouchpadOff Ubuntu) + KEY_F24 = 0x73, // Disabled (Ubuntu) + KEY_EXECUTE = 0x74, // Open (Ubuntu) + KEY_HELP = 0x75, // Help (Ubuntu) + KEY_MENU2 = 0x76, // Disabled (Ubuntu) + KEY_SELECT = 0x77, // Disabled (Ubuntu) + KEY_STOP = 0x78, // Cancel (Ubuntu) + KEY_AGAIN = 0x79, // Redo (Ubuntu) + KEY_UNDO = 0x7A, // Undo (Ubuntu) + KEY_CUT = 0x7B, // Cut (Ubuntu) + KEY_COPY = 0x7C, // Copy (Ubuntu) + KEY_PASTE = 0x7D, // Paste (Ubuntu) + KEY_FIND = 0x7E, // Find (Ubuntu) + KEY_MUTE = 0x7F, + KEY_VOLUME_MUTE = 0x7F, // Alias + KEY_VOLUME_UP = 0x80, + KEY_VOLUME_DOWN = 0x81, + KEY_LOCKING_CAPS_LOCK = 0x82, // Disabled (Ubuntu) + KEY_LOCKING_NUM_LOCK = 0x83, // Disabled (Ubuntu) + KEY_LOCKING_SCROLL_LOCK = 0x84, // Disabled (Ubuntu) + KEYPAD_COMMA = 0x85, + KEYPAD_EQUAL_SIGN = 0x86, // Disabled (Ubuntu), Dont confuse with KEYPAD_EQUAL + KEY_INTERNATIONAL1 = 0x87, // Disabled (Ubuntu) + KEY_INTERNATIONAL2 = 0x88, // Hiragana Katakana (Ubuntu) + KEY_INTERNATIONAL3 = 0x89, // Disabled (Ubuntu) + KEY_INTERNATIONAL4 = 0x8A, // Henkan (Ubuntu) + KEY_INTERNATIONAL5 = 0x8B, // Muhenkan (Ubuntu) + KEY_INTERNATIONAL6 = 0x8C, // Disabled (Ubuntu) + KEY_INTERNATIONAL7 = 0x8D, // Disabled (Ubuntu) + KEY_INTERNATIONAL8 = 0x8E, // Disabled (Ubuntu) + KEY_INTERNATIONAL9 = 0x8F, // Disabled (Ubuntu) + KEY_LANG1 = 0x90, // Disabled (Ubuntu) + KEY_LANG2 = 0x91, // Disabled (Ubuntu) + KEY_LANG3 = 0x92, // Katana (Ubuntu) + KEY_LANG4 = 0x93, // Hiragana (Ubuntu) + KEY_LANG5 = 0x94, // Disabled (Ubuntu) + KEY_LANG6 = 0x95, // Disabled (Ubuntu) + KEY_LANG7 = 0x96, // Disabled (Ubuntu) + KEY_LANG8 = 0x97, // Disabled (Ubuntu) + KEY_LANG9 = 0x98, // Disabled (Ubuntu) + KEY_ALTERNATE_ERASE = 0x99, // Disabled (Ubuntu) + KEY_SYSREQ_ATTENTION = 0x9A, // Disabled (Ubuntu) + KEY_CANCEL = 0x9B, // Disabled (Ubuntu) + KEY_CLEAR = 0x9C, // Delete (Ubuntu) + KEY_PRIOR = 0x9D, // Disabled (Ubuntu) + KEY_RETURN2 = 0x9E, // Disabled (Ubuntu), Do not confuse this with KEY_ENTER + KEY_SEPARATOR = 0x9F, // Disabled (Ubuntu) + KEY_OUT = 0xA0, // Disabled (Ubuntu) + KEY_OPER = 0xA1, // Disabled (Ubuntu) + KEY_CLEAR_AGAIN = 0xA2, // Disabled (Ubuntu) + KEY_CRSEL_PROPS = 0xA3, // Disabled (Ubuntu) + KEY_EXSEL = 0xA4, // Disabled (Ubuntu) - KEY_PAD_00 = 0xB0, // Disabled (Ubuntu) - KEY_PAD_000 = 0xB1, // Disabled (Ubuntu) - KEY_THOUSANDS_SEPARATOR = 0xB2, // Disabled (Ubuntu) - KEY_DECIMAL_SEPARATOR = 0xB3, // Disabled (Ubuntu) - KEY_CURRENCY_UNIT = 0xB4, // Disabled (Ubuntu) - KEY_CURRENCY_SUB_UNIT = 0xB5, // Disabled (Ubuntu) - KEYPAD_LEFT_BRACE = 0xB6, // ( - KEYPAD_RIGHT_BRACE = 0xB7, // ) - KEYPAD_LEFT_CURLY_BRACE = 0xB8, // Disabled (Ubuntu) - KEYPAD_RIGHT_CURLY_BRACE = 0xB9, // Disabled (Ubuntu) - KEYPAD_TAB = 0xBA, // Disabled (Ubuntu) - KEYPAD_BACKSPACE = 0xBB, // Disabled (Ubuntu) - KEYPAD_A = 0xBC, // Disabled (Ubuntu) - KEYPAD_B = 0xBD, // Disabled (Ubuntu) - KEYPAD_C = 0xBE, // Disabled (Ubuntu) - KEYPAD_D = 0xBF, // Disabled (Ubuntu) - KEYPAD_E = 0xC0, // Disabled (Ubuntu) - KEYPAD_F = 0xC1, // Disabled (Ubuntu) - KEYPAD_XOR = 0xC2, // Disabled (Ubuntu) - KEYPAD_CARET = 0xC3, // Disabled (Ubuntu) - KEYPAD_PERCENT = 0xC4, // Disabled (Ubuntu) - KEYPAD_LESS_THAN = 0xC5, // Disabled (Ubuntu) - KEYPAD_GREATER_THAN = 0xC6, // Disabled (Ubuntu) - KEYPAD_AMPERSAND = 0xC7, // Disabled (Ubuntu) - KEYPAD_DOUBLEAMPERSAND = 0xC8, // Disabled (Ubuntu) - KEYPAD_PIPE = 0xC9, // Disabled (Ubuntu) - KEYPAD_DOUBLEPIPE = 0xCA, // Disabled (Ubuntu) - KEYPAD_COLON = 0xCB, // Disabled (Ubuntu) - KEYPAD_POUND_SIGN = 0xCC, // Disabled (Ubuntu) - KEYPAD_SPACE = 0xCD, // Disabled (Ubuntu) - KEYPAD_AT_SIGN = 0xCE, // Disabled (Ubuntu) - KEYPAD_EXCLAMATION_POINT = 0xCF, // Disabled (Ubuntu) - KEYPAD_MEMORY_STORE = 0xD0, // Disabled (Ubuntu) - KEYPAD_MEMORY_RECALL = 0xD1, // Disabled (Ubuntu) - KEYPAD_MEMORY_CLEAR = 0xD2, // Disabled (Ubuntu) - KEYPAD_MEMORY_ADD = 0xD3, // Disabled (Ubuntu) - KEYPAD_MEMORY_SUBTRACT = 0xD4, // Disabled (Ubuntu) - KEYPAD_MEMORY_MULTIPLY = 0xD5, // Disabled (Ubuntu) - KEYPAD_MEMORY_DIVIDE = 0xD6, // Disabled (Ubuntu) - KEYPAD_PLUS_MINUS = 0xD7, // Disabled (Ubuntu) - KEYPAD_CLEAR = 0xD8, // Delete (Ubuntu) - KEYPAD_CLEAR_ENTRY = 0xD9, // Disabled (Ubuntu) - KEYPAD_BINARY = 0xDA, // Disabled (Ubuntu) - KEYPAD_OCTAL = 0xDB, // Disabled (Ubuntu) - KEYPAD_DECIMAL = 0xDC, // Disabled (Ubuntu) - KEYPAD_HEXADECIMAL = 0xDD, // Disabled (Ubuntu) + KEY_PAD_00 = 0xB0, // Disabled (Ubuntu) + KEY_PAD_000 = 0xB1, // Disabled (Ubuntu) + KEY_THOUSANDS_SEPARATOR = 0xB2, // Disabled (Ubuntu) + KEY_DECIMAL_SEPARATOR = 0xB3, // Disabled (Ubuntu) + KEY_CURRENCY_UNIT = 0xB4, // Disabled (Ubuntu) + KEY_CURRENCY_SUB_UNIT = 0xB5, // Disabled (Ubuntu) + KEYPAD_LEFT_BRACE = 0xB6, // ( + KEYPAD_RIGHT_BRACE = 0xB7, // ) + KEYPAD_LEFT_CURLY_BRACE = 0xB8, // Disabled (Ubuntu) + KEYPAD_RIGHT_CURLY_BRACE = 0xB9, // Disabled (Ubuntu) + KEYPAD_TAB = 0xBA, // Disabled (Ubuntu) + KEYPAD_BACKSPACE = 0xBB, // Disabled (Ubuntu) + KEYPAD_A = 0xBC, // Disabled (Ubuntu) + KEYPAD_B = 0xBD, // Disabled (Ubuntu) + KEYPAD_C = 0xBE, // Disabled (Ubuntu) + KEYPAD_D = 0xBF, // Disabled (Ubuntu) + KEYPAD_E = 0xC0, // Disabled (Ubuntu) + KEYPAD_F = 0xC1, // Disabled (Ubuntu) + KEYPAD_XOR = 0xC2, // Disabled (Ubuntu) + KEYPAD_CARET = 0xC3, // Disabled (Ubuntu) + KEYPAD_PERCENT = 0xC4, // Disabled (Ubuntu) + KEYPAD_LESS_THAN = 0xC5, // Disabled (Ubuntu) + KEYPAD_GREATER_THAN = 0xC6, // Disabled (Ubuntu) + KEYPAD_AMPERSAND = 0xC7, // Disabled (Ubuntu) + KEYPAD_DOUBLEAMPERSAND = 0xC8, // Disabled (Ubuntu) + KEYPAD_PIPE = 0xC9, // Disabled (Ubuntu) + KEYPAD_DOUBLEPIPE = 0xCA, // Disabled (Ubuntu) + KEYPAD_COLON = 0xCB, // Disabled (Ubuntu) + KEYPAD_POUND_SIGN = 0xCC, // Disabled (Ubuntu) + KEYPAD_SPACE = 0xCD, // Disabled (Ubuntu) + KEYPAD_AT_SIGN = 0xCE, // Disabled (Ubuntu) + KEYPAD_EXCLAMATION_POINT = 0xCF, // Disabled (Ubuntu) + KEYPAD_MEMORY_STORE = 0xD0, // Disabled (Ubuntu) + KEYPAD_MEMORY_RECALL = 0xD1, // Disabled (Ubuntu) + KEYPAD_MEMORY_CLEAR = 0xD2, // Disabled (Ubuntu) + KEYPAD_MEMORY_ADD = 0xD3, // Disabled (Ubuntu) + KEYPAD_MEMORY_SUBTRACT = 0xD4, // Disabled (Ubuntu) + KEYPAD_MEMORY_MULTIPLY = 0xD5, // Disabled (Ubuntu) + KEYPAD_MEMORY_DIVIDE = 0xD6, // Disabled (Ubuntu) + KEYPAD_PLUS_MINUS = 0xD7, // Disabled (Ubuntu) + KEYPAD_CLEAR = 0xD8, // Delete (Ubuntu) + KEYPAD_CLEAR_ENTRY = 0xD9, // Disabled (Ubuntu) + KEYPAD_BINARY = 0xDA, // Disabled (Ubuntu) + KEYPAD_OCTAL = 0xDB, // Disabled (Ubuntu) + KEYPAD_DECIMAL = 0xDC, // Disabled (Ubuntu) + KEYPAD_HEXADECIMAL = 0xDD, // Disabled (Ubuntu) - KEY_LEFT_CTRL = 0xE0, - KEY_LEFT_SHIFT = 0xE1, - KEY_LEFT_ALT = 0xE2, - KEY_LEFT_GUI = 0xE3, - KEY_LEFT_WINDOWS = 0xE3, // Alias - KEY_RIGHT_CTRL = 0xE4, - KEY_RIGHT_SHIFT = 0xE5, - KEY_RIGHT_ALT = 0xE6, - KEY_RIGHT_GUI = 0xE7, - KEY_RIGHT_WINDOWS = 0xE7, // Alias + KEY_LEFT_CTRL = 0xE0, + KEY_LEFT_SHIFT = 0xE1, + KEY_LEFT_ALT = 0xE2, + KEY_LEFT_GUI = 0xE3, + KEY_LEFT_WINDOWS = 0xE3, // Alias + KEY_RIGHT_CTRL = 0xE4, + KEY_RIGHT_SHIFT = 0xE5, + KEY_RIGHT_ALT = 0xE6, + KEY_RIGHT_GUI = 0xE7, + KEY_RIGHT_WINDOWS = 0xE7, // Alias - // Keyboard HID mappings + // Keyboard HID mappings - // Reserved (no_event_indicated) - HID_KEYBOARD_ERROR_ROLLOVER = 0x01, - HID_KEYBOARD_POST_FAIL = 0x02, - HID_KEYBOARD_ERROR_UNDEFINED = 0x03, - HID_KEYBOARD_A_AND_A = 0x04, - HID_KEYBOARD_B_AND_B = 0x05, - HID_KEYBOARD_C_AND_C = 0x06, - HID_KEYBOARD_D_AND_D = 0x07, - HID_KEYBOARD_E_AND_E = 0x08, - HID_KEYBOARD_F_AND_F = 0x09, - HID_KEYBOARD_G_AND_G = 0x0A, - HID_KEYBOARD_H_AND_H = 0x0B, - HID_KEYBOARD_I_AND_I = 0x0C, - HID_KEYBOARD_J_AND_J = 0x0D, - HID_KEYBOARD_K_AND_K = 0x0E, - HID_KEYBOARD_L_AND_L = 0x0F, - HID_KEYBOARD_M_AND_M = 0x10, - HID_KEYBOARD_N_AND_N = 0x11, - HID_KEYBOARD_O_AND_O = 0x12, - HID_KEYBOARD_P_AND_P = 0x13, - HID_KEYBOARD_Q_AND_Q = 0x14, - HID_KEYBOARD_R_AND_R = 0x15, - HID_KEYBOARD_S_AND_S = 0x16, - HID_KEYBOARD_T_AND_T = 0x17, - HID_KEYBOARD_U_AND_U = 0x18, - HID_KEYBOARD_V_AND_V = 0x19, - HID_KEYBOARD_W_AND_W = 0x1A, - HID_KEYBOARD_X_AND_X = 0x1B, - HID_KEYBOARD_Y_AND_Y = 0x1C, - HID_KEYBOARD_Z_AND_Z = 0x1D, - HID_KEYBOARD_1_AND_EXCLAMATION_POINT = 0x1E, - HID_KEYBOARD_2_AND_AT = 0x1F, - HID_KEYBOARD_3_AND_POUND = 0x20, - HID_KEYBOARD_4_AND_DOLLAR = 0x21, - HID_KEYBOARD_5_AND_PERCENT = 0x22, - HID_KEYBOARD_6_AND_CARAT = 0x23, - HID_KEYBOARD_7_AND_AMPERSAND = 0x24, - HID_KEYBOARD_8_AND_ASTERISK = 0x25, - HID_KEYBOARD_9_AND_LEFT_PAREN = 0x26, - HID_KEYBOARD_0_AND_RIGHT_PAREN = 0x27, - HID_KEYBOARD_ENTER = 0x28, // (MARKED AS ENTER_SLASH_RETURN) - HID_KEYBOARD_ESCAPE = 0x29, - HID_KEYBOARD_DELETE = 0x2A, // (BACKSPACE) - HID_KEYBOARD_TAB = 0x2B, - HID_KEYBOARD_SPACEBAR = 0x2C, - HID_KEYBOARD_MINUS_AND_UNDERSCORE = 0x2D, // (UNDERSCORE) - HID_KEYBOARD_EQUALS_AND_PLUS = 0x2E, - HID_KEYBOARD_LEFT_BRACKET_AND_LEFT_CURLY_BRACE = 0x2F, - HID_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_CURLY_BRACE = 0x30, - HID_KEYBOARD_BACKSLASH_AND_PIPE = 0x31, - HID_KEYBOARD_NON_US_POUND_AND_TILDE = 0x32, - HID_KEYBOARD_SEMICOLON_AND_COLON = 0x33, - HID_KEYBOARD_QUOTE_AND_DOUBLEQUOTE = 0x34, - HID_KEYBOARD_GRAVE_ACCENT_AND_TILDE = 0x35, - HID_KEYBOARD_COMMA_AND_LESS_THAN = 0x36, - HID_KEYBOARD_PERIOD_AND_GREATER_THAN = 0x37, - HID_KEYBOARD_SLASH_AND_QUESTION_MARK = 0x38, - HID_KEYBOARD_CAPS_LOCK = 0x39, - HID_KEYBOARD_F1 = 0x3A, - HID_KEYBOARD_F2 = 0x3B, - HID_KEYBOARD_F3 = 0x3C, - HID_KEYBOARD_F4 = 0x3D, - HID_KEYBOARD_F5 = 0x3E, - HID_KEYBOARD_F6 = 0x3F, - HID_KEYBOARD_F7 = 0x40, - HID_KEYBOARD_F8 = 0x41, - HID_KEYBOARD_F9 = 0x42, - HID_KEYBOARD_F10 = 0x43, - HID_KEYBOARD_F11 = 0x44, - HID_KEYBOARD_F12 = 0x45, - HID_KEYBOARD_PRINTSCREEN = 0x46, - HID_KEYBOARD_SCROLL_LOCK = 0x47, - HID_KEYBOARD_PAUSE = 0x48, - HID_KEYBOARD_INSERT = 0x49, - HID_KEYBOARD_HOME = 0x4A, - HID_KEYBOARD_PAGE_UP = 0x4B, - HID_KEYBOARD_DELETE_FORWARD = 0x4C, - HID_KEYBOARD_END = 0x4D, - HID_KEYBOARD_PAGE_DOWN = 0x4E, - HID_KEYBOARD_RIGHTARROW = 0x4F, - HID_KEYBOARD_LEFTARROW = 0x50, - HID_KEYBOARD_DOWNARROW = 0x51, - HID_KEYBOARD_UPARROW = 0x52, - HID_KEYPAD_NUM_LOCK_AND_CLEAR = 0x53, - HID_KEYPAD_DIVIDE = 0x54, - HID_KEYPAD_MULTIPLY = 0x55, - HID_KEYPAD_SUBTRACT = 0x56, - HID_KEYPAD_ADD = 0x57, - HID_KEYPAD_ENTER = 0x58, - HID_KEYPAD_1_AND_END = 0x59, - HID_KEYPAD_2_AND_DOWN_ARROW = 0x5A, - HID_KEYPAD_3_AND_PAGE_DOWN = 0x5B, - HID_KEYPAD_4_AND_LEFT_ARROW = 0x5C, - HID_KEYPAD_5 = 0x5D, - HID_KEYPAD_6_AND_RIGHT_ARROW = 0x5E, - HID_KEYPAD_7_AND_HOME = 0x5F, - HID_KEYPAD_8_AND_UP_ARROW = 0x60, - HID_KEYPAD_9_AND_PAGE_UP = 0x61, - HID_KEYPAD_0_AND_INSERT = 0x62, - HID_KEYPAD_PERIOD_AND_DELETE = 0x63, - HID_KEYBOARD_NON_US_BACKSLASH_AND_PIPE = 0x64, - HID_KEYBOARD_APPLICATION = 0x65, - HID_KEYBOARD_POWER = 0x66, - HID_KEYPAD_EQUALS = 0x67, - HID_KEYBOARD_F13 = 0x68, - HID_KEYBOARD_F14 = 0x69, - HID_KEYBOARD_F15 = 0x6A, - HID_KEYBOARD_F16 = 0x6B, - HID_KEYBOARD_F17 = 0x6C, - HID_KEYBOARD_F18 = 0x6D, - HID_KEYBOARD_F19 = 0x6E, - HID_KEYBOARD_F20 = 0x6F, - HID_KEYBOARD_F21 = 0x70, - HID_KEYBOARD_F22 = 0x71, - HID_KEYBOARD_F23 = 0x72, - HID_KEYBOARD_F24 = 0x73, - HID_KEYBOARD_EXECUTE= 0x74, - HID_KEYBOARD_HELP = 0x75, - HID_KEYBOARD_MENU = 0x76, - HID_KEYBOARD_SELECT = 0x77, - HID_KEYBOARD_STOP = 0x78, - HID_KEYBOARD_AGAIN = 0x79, - HID_KEYBOARD_UNDO = 0x7A, - HID_KEYBOARD_CUT = 0x7B, - HID_KEYBOARD_COPY = 0x7C, - HID_KEYBOARD_PASTE = 0x7D, - HID_KEYBOARD_FIND = 0x7E, - HID_KEYBOARD_MUTE = 0x7F, - HID_KEYBOARD_VOLUME_UP = 0x80, - HID_KEYBOARD_VOLUME_DOWN = 0x81, - HID_KEYBOARD_LOCKING_CAPS_LOCK = 0x82, - HID_KEYBOARD_LOCKING_NUM_LOCK = 0x83, - HID_KEYBOARD_LOCKING_SCROLL_LOCK= 0x84, - HID_KEYPAD_COMMA = 0x85, - HID_KEYPAD_EQUAL_SIGN = 0x86, - HID_KEYBOARD_INTERNATIONAL1 = 0x87, - HID_KEYBOARD_INTERNATIONAL2 = 0x88, - HID_KEYBOARD_INTERNATIONAL3 = 0x89, - HID_KEYBOARD_INTERNATIONAL4 = 0x8A, - HID_KEYBOARD_INTERNATIONAL5 = 0x8B, - HID_KEYBOARD_INTERNATIONAL6 = 0x8C, - HID_KEYBOARD_INTERNATIONAL7 = 0x8D, - HID_KEYBOARD_INTERNATIONAL8 = 0x8E, - HID_KEYBOARD_INTERNATIONAL9 = 0x8F, - HID_KEYBOARD_LANG1 = 0x90, - HID_KEYBOARD_LANG2 = 0x91, - HID_KEYBOARD_LANG3 = 0x92, - HID_KEYBOARD_LANG4 = 0x93, - HID_KEYBOARD_LANG5 = 0x94, - HID_KEYBOARD_LANG6 = 0x95, - HID_KEYBOARD_LANG7 = 0x96, - HID_KEYBOARD_LANG8 = 0x97, - HID_KEYBOARD_LANG9 = 0x98, - HID_KEYBOARD_ALTERNATE_ERASE = 0x99, - HID_KEYBOARD_SYSREQ_SLASH_ATTENTION = 0x9A, - HID_KEYBOARD_CANCEL = 0x9B, - HID_KEYBOARD_CLEAR = 0x9C, - HID_KEYBOARD_PRIOR = 0x9D, - HID_KEYBOARD_RETURN = 0x9E, - HID_KEYBOARD_SEPARATOR = 0x9F, - HID_KEYBOARD_OUT = 0xA0, - HID_KEYBOARD_OPER = 0xA1, - HID_KEYBOARD_CLEAR_SLASH_AGAIN = 0xA2, - HID_KEYBOARD_CRSEL_SLASH_PROPS = 0xA3, - HID_KEYBOARD_EXSEL = 0xA4, - // Reserved 0xA5-AF - HID_KEYPAD_00 = 0xB0, - HID_KEYPAD_000 = 0xB1, - HID_THOUSANDS_SEPARATOR = 0xB2, - HID_DECIMAL_SEPARATOR = 0xB3, - HID_CURRENCY_UNIT = 0xB4, - HID_CURRENCY_SUBUNIT = 0xB5, - HID_KEYPAD_LEFT_PAREN = 0xB6, - HID_KEYPAD_RIGHT_PAREN = 0xB7, - HID_KEYPAD_LEFT_CURLY_BRACE = 0xB8, - HID_KEYPAD_RIGHT_CURLY_BRACE = 0xB9, - HID_KEYPAD_TAB = 0xBA, - HID_KEYPAD_BACKSPACE = 0xBB, - HID_KEYPAD_A = 0xBC, - HID_KEYPAD_B = 0xBD, - HID_KEYPAD_C = 0xBE, - HID_KEYPAD_D = 0xBF, - HID_KEYPAD_E = 0xC0, - HID_KEYPAD_F = 0xC1, - HID_KEYPAD_XOR = 0xC2, - HID_KEYPAD_CARAT = 0xC3, - HID_KEYPAD_PERCENT = 0xC4, - HID_KEYPAD_LESS_THAN = 0xC5, - HID_KEYPAD_GREATER_THAN = 0xC6, - HID_KEYPAD_AMPERSAND = 0xC7, - HID_KEYPAD_DOUBLEAMPERSAND = 0xC8, - HID_KEYPAD_PIPE = 0xC9, - HID_KEYPAD_DOUBLEPIPE = 0xCA, - HID_KEYPAD_COLON = 0xCB, - HID_KEYPAD_POUND_SIGN = 0xCC, - HID_KEYPAD_SPACE = 0xCD, - HID_KEYPAD_AT_SIGN = 0xCE, - HID_KEYPAD_EXCLAMATION_POINT = 0xCF, - HID_KEYPAD_MEMORY_STORE = 0xD0, - HID_KEYPAD_MEMORY_RECALL = 0xD1, - HID_KEYPAD_MEMORY_CLEAR = 0xD2, - HID_KEYPAD_MEMORY_ADD = 0xD3, - HID_KEYPAD_MEMORY_SUBTRACT = 0xD4, - HID_KEYPAD_MEMORY_MULTIPLY = 0xD5, - HID_KEYPAD_MEMORY_DIVIDE = 0xD6, - HID_KEYPAD_PLUS_SLASH_MINUS = 0xD7, - HID_KEYPAD_CLEAR = 0xD8, - HID_KEYPAD_CLEAR_ENTRY = 0xD9, - HID_KEYPAD_BINARY = 0xDA, - HID_KEYPAD_OCTAL = 0xDB, - HID_KEYPAD_DECIMAL = 0xDC, - HID_KEYPAD_HEXADECIMAL = 0xDD, + // Reserved (no_event_indicated) + HID_KEYBOARD_ERROR_ROLLOVER = 0x01, + HID_KEYBOARD_POST_FAIL = 0x02, + HID_KEYBOARD_ERROR_UNDEFINED = 0x03, + HID_KEYBOARD_A_AND_A = 0x04, + HID_KEYBOARD_B_AND_B = 0x05, + HID_KEYBOARD_C_AND_C = 0x06, + HID_KEYBOARD_D_AND_D = 0x07, + HID_KEYBOARD_E_AND_E = 0x08, + HID_KEYBOARD_F_AND_F = 0x09, + HID_KEYBOARD_G_AND_G = 0x0A, + HID_KEYBOARD_H_AND_H = 0x0B, + HID_KEYBOARD_I_AND_I = 0x0C, + HID_KEYBOARD_J_AND_J = 0x0D, + HID_KEYBOARD_K_AND_K = 0x0E, + HID_KEYBOARD_L_AND_L = 0x0F, + HID_KEYBOARD_M_AND_M = 0x10, + HID_KEYBOARD_N_AND_N = 0x11, + HID_KEYBOARD_O_AND_O = 0x12, + HID_KEYBOARD_P_AND_P = 0x13, + HID_KEYBOARD_Q_AND_Q = 0x14, + HID_KEYBOARD_R_AND_R = 0x15, + HID_KEYBOARD_S_AND_S = 0x16, + HID_KEYBOARD_T_AND_T = 0x17, + HID_KEYBOARD_U_AND_U = 0x18, + HID_KEYBOARD_V_AND_V = 0x19, + HID_KEYBOARD_W_AND_W = 0x1A, + HID_KEYBOARD_X_AND_X = 0x1B, + HID_KEYBOARD_Y_AND_Y = 0x1C, + HID_KEYBOARD_Z_AND_Z = 0x1D, + HID_KEYBOARD_1_AND_EXCLAMATION_POINT= 0x1E, + HID_KEYBOARD_2_AND_AT = 0x1F, + HID_KEYBOARD_3_AND_POUND = 0x20, + HID_KEYBOARD_4_AND_DOLLAR = 0x21, + HID_KEYBOARD_5_AND_PERCENT = 0x22, + HID_KEYBOARD_6_AND_CARAT = 0x23, + HID_KEYBOARD_7_AND_AMPERSAND = 0x24, + HID_KEYBOARD_8_AND_ASTERISK = 0x25, + HID_KEYBOARD_9_AND_LEFT_PAREN = 0x26, + HID_KEYBOARD_0_AND_RIGHT_PAREN = 0x27, + HID_KEYBOARD_ENTER = 0x28, // (MARKED AS ENTER_SLASH_RETURN) + HID_KEYBOARD_ESCAPE = 0x29, + HID_KEYBOARD_DELETE = 0x2A, // (BACKSPACE) + HID_KEYBOARD_TAB = 0x2B, + HID_KEYBOARD_SPACEBAR = 0x2C, + HID_KEYBOARD_MINUS_AND_UNDERSCORE = 0x2D, // (UNDERSCORE) + HID_KEYBOARD_EQUALS_AND_PLUS = 0x2E, + HID_KEYBOARD_LEFT_BRACKET_AND_LEFT_CURLY_BRACE = 0x2F, + HID_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_CURLY_BRACE = 0x30, + HID_KEYBOARD_BACKSLASH_AND_PIPE = 0x31, + HID_KEYBOARD_NON_US_POUND_AND_TILDE = 0x32, + HID_KEYBOARD_SEMICOLON_AND_COLON = 0x33, + HID_KEYBOARD_QUOTE_AND_DOUBLEQUOTE = 0x34, + HID_KEYBOARD_GRAVE_ACCENT_AND_TILDE = 0x35, + HID_KEYBOARD_COMMA_AND_LESS_THAN = 0x36, + HID_KEYBOARD_PERIOD_AND_GREATER_THAN = 0x37, + HID_KEYBOARD_SLASH_AND_QUESTION_MARK = 0x38, + HID_KEYBOARD_CAPS_LOCK = 0x39, + HID_KEYBOARD_F1 = 0x3A, + HID_KEYBOARD_F2 = 0x3B, + HID_KEYBOARD_F3 = 0x3C, + HID_KEYBOARD_F4 = 0x3D, + HID_KEYBOARD_F5 = 0x3E, + HID_KEYBOARD_F6 = 0x3F, + HID_KEYBOARD_F7 = 0x40, + HID_KEYBOARD_F8 = 0x41, + HID_KEYBOARD_F9 = 0x42, + HID_KEYBOARD_F10 = 0x43, + HID_KEYBOARD_F11 = 0x44, + HID_KEYBOARD_F12 = 0x45, + HID_KEYBOARD_PRINTSCREEN = 0x46, + HID_KEYBOARD_SCROLL_LOCK = 0x47, + HID_KEYBOARD_PAUSE = 0x48, + HID_KEYBOARD_INSERT = 0x49, + HID_KEYBOARD_HOME = 0x4A, + HID_KEYBOARD_PAGE_UP = 0x4B, + HID_KEYBOARD_DELETE_FORWARD = 0x4C, + HID_KEYBOARD_END = 0x4D, + HID_KEYBOARD_PAGE_DOWN = 0x4E, + HID_KEYBOARD_RIGHTARROW = 0x4F, + HID_KEYBOARD_LEFTARROW = 0x50, + HID_KEYBOARD_DOWNARROW = 0x51, + HID_KEYBOARD_UPARROW = 0x52, + HID_KEYPAD_NUM_LOCK_AND_CLEAR = 0x53, + HID_KEYPAD_DIVIDE = 0x54, + HID_KEYPAD_MULTIPLY = 0x55, + HID_KEYPAD_SUBTRACT = 0x56, + HID_KEYPAD_ADD = 0x57, + HID_KEYPAD_ENTER = 0x58, + HID_KEYPAD_1_AND_END = 0x59, + HID_KEYPAD_2_AND_DOWN_ARROW = 0x5A, + HID_KEYPAD_3_AND_PAGE_DOWN = 0x5B, + HID_KEYPAD_4_AND_LEFT_ARROW = 0x5C, + HID_KEYPAD_5 = 0x5D, + HID_KEYPAD_6_AND_RIGHT_ARROW = 0x5E, + HID_KEYPAD_7_AND_HOME = 0x5F, + HID_KEYPAD_8_AND_UP_ARROW = 0x60, + HID_KEYPAD_9_AND_PAGE_UP = 0x61, + HID_KEYPAD_0_AND_INSERT = 0x62, + HID_KEYPAD_PERIOD_AND_DELETE = 0x63, + HID_KEYBOARD_NON_US_BACKSLASH_AND_PIPE = 0x64, + HID_KEYBOARD_APPLICATION = 0x65, + HID_KEYBOARD_POWER = 0x66, + HID_KEYPAD_EQUALS = 0x67, + HID_KEYBOARD_F13 = 0x68, + HID_KEYBOARD_F14 = 0x69, + HID_KEYBOARD_F15 = 0x6A, + HID_KEYBOARD_F16 = 0x6B, + HID_KEYBOARD_F17 = 0x6C, + HID_KEYBOARD_F18 = 0x6D, + HID_KEYBOARD_F19 = 0x6E, + HID_KEYBOARD_F20 = 0x6F, + HID_KEYBOARD_F21 = 0x70, + HID_KEYBOARD_F22 = 0x71, + HID_KEYBOARD_F23 = 0x72, + HID_KEYBOARD_F24 = 0x73, + HID_KEYBOARD_EXECUTE = 0x74, + HID_KEYBOARD_HELP = 0x75, + HID_KEYBOARD_MENU = 0x76, + HID_KEYBOARD_SELECT = 0x77, + HID_KEYBOARD_STOP = 0x78, + HID_KEYBOARD_AGAIN = 0x79, + HID_KEYBOARD_UNDO = 0x7A, + HID_KEYBOARD_CUT = 0x7B, + HID_KEYBOARD_COPY = 0x7C, + HID_KEYBOARD_PASTE = 0x7D, + HID_KEYBOARD_FIND = 0x7E, + HID_KEYBOARD_MUTE = 0x7F, + HID_KEYBOARD_VOLUME_UP = 0x80, + HID_KEYBOARD_VOLUME_DOWN = 0x81, + HID_KEYBOARD_LOCKING_CAPS_LOCK = 0x82, + HID_KEYBOARD_LOCKING_NUM_LOCK = 0x83, + HID_KEYBOARD_LOCKING_SCROLL_LOCK = 0x84, + HID_KEYPAD_COMMA = 0x85, + HID_KEYPAD_EQUAL_SIGN = 0x86, + HID_KEYBOARD_INTERNATIONAL1 = 0x87, + HID_KEYBOARD_INTERNATIONAL2 = 0x88, + HID_KEYBOARD_INTERNATIONAL3 = 0x89, + HID_KEYBOARD_INTERNATIONAL4 = 0x8A, + HID_KEYBOARD_INTERNATIONAL5 = 0x8B, + HID_KEYBOARD_INTERNATIONAL6 = 0x8C, + HID_KEYBOARD_INTERNATIONAL7 = 0x8D, + HID_KEYBOARD_INTERNATIONAL8 = 0x8E, + HID_KEYBOARD_INTERNATIONAL9 = 0x8F, + HID_KEYBOARD_LANG1 = 0x90, + HID_KEYBOARD_LANG2 = 0x91, + HID_KEYBOARD_LANG3 = 0x92, + HID_KEYBOARD_LANG4 = 0x93, + HID_KEYBOARD_LANG5 = 0x94, + HID_KEYBOARD_LANG6 = 0x95, + HID_KEYBOARD_LANG7 = 0x96, + HID_KEYBOARD_LANG8 = 0x97, + HID_KEYBOARD_LANG9 = 0x98, + HID_KEYBOARD_ALTERNATE_ERASE = 0x99, + HID_KEYBOARD_SYSREQ_SLASH_ATTENTION = 0x9A, + HID_KEYBOARD_CANCEL = 0x9B, + HID_KEYBOARD_CLEAR = 0x9C, + HID_KEYBOARD_PRIOR = 0x9D, + HID_KEYBOARD_RETURN = 0x9E, + HID_KEYBOARD_SEPARATOR = 0x9F, + HID_KEYBOARD_OUT = 0xA0, + HID_KEYBOARD_OPER = 0xA1, + HID_KEYBOARD_CLEAR_SLASH_AGAIN = 0xA2, + HID_KEYBOARD_CRSEL_SLASH_PROPS = 0xA3, + HID_KEYBOARD_EXSEL = 0xA4, + // Reserved 0xA5-AF + HID_KEYPAD_00 = 0xB0, + HID_KEYPAD_000 = 0xB1, + HID_THOUSANDS_SEPARATOR = 0xB2, + HID_DECIMAL_SEPARATOR = 0xB3, + HID_CURRENCY_UNIT = 0xB4, + HID_CURRENCY_SUBUNIT = 0xB5, + HID_KEYPAD_LEFT_PAREN = 0xB6, + HID_KEYPAD_RIGHT_PAREN = 0xB7, + HID_KEYPAD_LEFT_CURLY_BRACE = 0xB8, + HID_KEYPAD_RIGHT_CURLY_BRACE = 0xB9, + HID_KEYPAD_TAB = 0xBA, + HID_KEYPAD_BACKSPACE = 0xBB, + HID_KEYPAD_A = 0xBC, + HID_KEYPAD_B = 0xBD, + HID_KEYPAD_C = 0xBE, + HID_KEYPAD_D = 0xBF, + HID_KEYPAD_E = 0xC0, + HID_KEYPAD_F = 0xC1, + HID_KEYPAD_XOR = 0xC2, + HID_KEYPAD_CARAT = 0xC3, + HID_KEYPAD_PERCENT = 0xC4, + HID_KEYPAD_LESS_THAN = 0xC5, + HID_KEYPAD_GREATER_THAN = 0xC6, + HID_KEYPAD_AMPERSAND = 0xC7, + HID_KEYPAD_DOUBLEAMPERSAND = 0xC8, + HID_KEYPAD_PIPE = 0xC9, + HID_KEYPAD_DOUBLEPIPE = 0xCA, + HID_KEYPAD_COLON = 0xCB, + HID_KEYPAD_POUND_SIGN = 0xCC, + HID_KEYPAD_SPACE = 0xCD, + HID_KEYPAD_AT_SIGN = 0xCE, + HID_KEYPAD_EXCLAMATION_POINT = 0xCF, + HID_KEYPAD_MEMORY_STORE = 0xD0, + HID_KEYPAD_MEMORY_RECALL = 0xD1, + HID_KEYPAD_MEMORY_CLEAR = 0xD2, + HID_KEYPAD_MEMORY_ADD = 0xD3, + HID_KEYPAD_MEMORY_SUBTRACT = 0xD4, + HID_KEYPAD_MEMORY_MULTIPLY = 0xD5, + HID_KEYPAD_MEMORY_DIVIDE = 0xD6, + HID_KEYPAD_PLUS_SLASH_MINUS = 0xD7, + HID_KEYPAD_CLEAR = 0xD8, + HID_KEYPAD_CLEAR_ENTRY = 0xD9, + HID_KEYPAD_BINARY = 0xDA, + HID_KEYPAD_OCTAL = 0xDB, + HID_KEYPAD_DECIMAL = 0xDC, + HID_KEYPAD_HEXADECIMAL = 0xDD, - // 0xDE-0xDF - RESERVED - HID_KEYBOARD_LEFT_CONTROL = 0xE0, - HID_KEYBOARD_LEFT_SHIFT = 0xE1, - HID_KEYBOARD_LEFT_ALT = 0xE2, - HID_KEYBOARD_LEFT_GUI = 0xE3, - HID_KEYBOARD_RIGHT_CONTROL = 0xE4, - HID_KEYBOARD_RIGHT_SHIFT = 0xE5, - HID_KEYBOARD_RIGHT_ALT = 0xE6, - HID_KEYBOARD_RIGHT_GUI = 0xE7, + // 0xDE-0xDF - RESERVED + HID_KEYBOARD_LEFT_CONTROL = 0xE0, + HID_KEYBOARD_LEFT_SHIFT = 0xE1, + HID_KEYBOARD_LEFT_ALT = 0xE2, + HID_KEYBOARD_LEFT_GUI = 0xE3, + HID_KEYBOARD_RIGHT_CONTROL = 0xE4, + HID_KEYBOARD_RIGHT_SHIFT = 0xE5, + HID_KEYBOARD_RIGHT_ALT = 0xE6, + HID_KEYBOARD_RIGHT_GUI = 0xE7, }; static const uint16_t _asciimap[] PROGMEM = { - KEY_RESERVED, // NUL - KEY_RESERVED, // SOH - KEY_RESERVED, // STX - KEY_RESERVED, // ETX - KEY_RESERVED, // EOT - KEY_RESERVED, // ENQ - KEY_RESERVED, // ACK - KEY_RESERVED, // BEL - KEY_BACKSPACE, // BS Backspace - KEY_TAB, // TAB Tab - KEY_ENTER, // LF Enter - KEY_RESERVED, // VT - KEY_RESERVED, // FF - KEY_RESERVED, // CR - KEY_RESERVED, // SO - KEY_RESERVED, // SI - KEY_RESERVED, // DEL - KEY_RESERVED, // DC1 - KEY_RESERVED, // DC2 - KEY_RESERVED, // DC3 - KEY_RESERVED, // DC4 - KEY_RESERVED, // NAK - KEY_RESERVED, // SYN - KEY_RESERVED, // ETB - KEY_RESERVED, // CAN - KEY_RESERVED, // EM - KEY_RESERVED, // SUB - KEY_RESERVED, // ESC - KEY_RESERVED, // FS - KEY_RESERVED, // GS - KEY_RESERVED, // RS - KEY_RESERVED, // US + KEY_RESERVED, // NUL + KEY_RESERVED, // SOH + KEY_RESERVED, // STX + KEY_RESERVED, // ETX + KEY_RESERVED, // EOT + KEY_RESERVED, // ENQ + KEY_RESERVED, // ACK + KEY_RESERVED, // BEL + KEY_BACKSPACE, // BS Backspace + KEY_TAB, // TAB Tab + KEY_ENTER, // LF Enter + KEY_RESERVED, // VT + KEY_RESERVED, // FF + KEY_RESERVED, // CR + KEY_RESERVED, // SO + KEY_RESERVED, // SI + KEY_RESERVED, // DEL + KEY_RESERVED, // DC1 + KEY_RESERVED, // DC2 + KEY_RESERVED, // DC3 + KEY_RESERVED, // DC4 + KEY_RESERVED, // NAK + KEY_RESERVED, // SYN + KEY_RESERVED, // ETB + KEY_RESERVED, // CAN + KEY_RESERVED, // EM + KEY_RESERVED, // SUB + KEY_RESERVED, // ESC + KEY_RESERVED, // FS + KEY_RESERVED, // GS + KEY_RESERVED, // RS + KEY_RESERVED, // US - KEY_SPACE, // ' ' Space - KEY_1|MOD_LEFT_SHIFT, // ! - KEY_QUOTE|MOD_LEFT_SHIFT, // " - KEY_3|MOD_LEFT_SHIFT, // # - KEY_4|MOD_LEFT_SHIFT, // $ - KEY_5|MOD_LEFT_SHIFT, // % - KEY_7|MOD_LEFT_SHIFT, // & - KEY_QUOTE, // ' - KEY_9|MOD_LEFT_SHIFT, // ( - KEY_0|MOD_LEFT_SHIFT, // ) - KEY_8|MOD_LEFT_SHIFT, // * - KEY_EQUAL|MOD_LEFT_SHIFT, // + - KEY_COMMA, // , - KEY_MINUS, // - - KEY_PERIOD, // . - KEY_SLASH, // / - KEY_0, // 0 - KEY_1, // 1 - KEY_2, // 2 - KEY_3, // 3 - KEY_4, // 4 - KEY_5, // 5 - KEY_6, // 6 - KEY_7, // 7 - KEY_8, // 8 - KEY_9, // 9 - KEY_SEMICOLON|MOD_LEFT_SHIFT, // : - KEY_SEMICOLON, // ; - KEY_COMMA|MOD_LEFT_SHIFT, // < - KEY_EQUAL, // = - KEY_PERIOD|MOD_LEFT_SHIFT, // > - KEY_SLASH|MOD_LEFT_SHIFT, // ? - KEY_2|MOD_LEFT_SHIFT, // @ - KEY_A|MOD_LEFT_SHIFT, // A - KEY_B|MOD_LEFT_SHIFT, // B - KEY_C|MOD_LEFT_SHIFT, // C - KEY_D|MOD_LEFT_SHIFT, // D - KEY_E|MOD_LEFT_SHIFT, // E - KEY_F|MOD_LEFT_SHIFT, // F - KEY_G|MOD_LEFT_SHIFT, // G - KEY_H|MOD_LEFT_SHIFT, // H - KEY_I|MOD_LEFT_SHIFT, // I - KEY_J|MOD_LEFT_SHIFT, // J - KEY_K|MOD_LEFT_SHIFT, // K - KEY_L|MOD_LEFT_SHIFT, // L - KEY_M|MOD_LEFT_SHIFT, // M - KEY_N|MOD_LEFT_SHIFT, // N - KEY_O|MOD_LEFT_SHIFT, // O - KEY_P|MOD_LEFT_SHIFT, // P - KEY_Q|MOD_LEFT_SHIFT, // Q - KEY_R|MOD_LEFT_SHIFT, // R - KEY_S|MOD_LEFT_SHIFT, // S - KEY_T|MOD_LEFT_SHIFT, // T - KEY_U|MOD_LEFT_SHIFT, // U - KEY_V|MOD_LEFT_SHIFT, // V - KEY_W|MOD_LEFT_SHIFT, // W - KEY_X|MOD_LEFT_SHIFT, // X - KEY_Y|MOD_LEFT_SHIFT, // Y - KEY_Z|MOD_LEFT_SHIFT, // Z - KEY_LEFT_BRACE, // [ - KEY_BACKSLASH, // bslash - KEY_RIGHT_BRACE, // ] - KEY_6|MOD_LEFT_SHIFT, // ^ - KEY_MINUS|MOD_LEFT_SHIFT, // _ - KEY_TILDE, // ` - KEY_A, // a - KEY_B, // b - KEY_C, // c - KEY_D, // d - KEY_E, // e - KEY_F, // f - KEY_G, // g - KEY_H, // h - KEY_I, // i - KEY_J, // j - KEY_K, // k - KEY_L, // l - KEY_M, // m - KEY_N, // n - KEY_O, // o - KEY_P, // p - KEY_Q, // q - KEY_R, // r - KEY_S, // s - KEY_T, // t - KEY_U, // u - KEY_V, // v - KEY_W, // w - KEY_X, // x - KEY_Y, // y - KEY_Z, // z - KEY_LEFT_BRACE|MOD_LEFT_SHIFT, // { - KEY_BACKSLASH|MOD_LEFT_SHIFT, // | - KEY_RIGHT_BRACE|MOD_LEFT_SHIFT, // } - KEY_TILDE|MOD_LEFT_SHIFT, // ~ - KEY_RESERVED // DEL + KEY_SPACE, // ' ' Space + KEY_1|MOD_LEFT_SHIFT, // ! + KEY_QUOTE|MOD_LEFT_SHIFT, // " + KEY_3|MOD_LEFT_SHIFT, // # + KEY_4|MOD_LEFT_SHIFT, // $ + KEY_5|MOD_LEFT_SHIFT, // % + KEY_7|MOD_LEFT_SHIFT, // & + KEY_QUOTE, // ' + KEY_9|MOD_LEFT_SHIFT, // ( + KEY_0|MOD_LEFT_SHIFT, // ) + KEY_8|MOD_LEFT_SHIFT, // * + KEY_EQUAL|MOD_LEFT_SHIFT, // + + KEY_COMMA, // , + KEY_MINUS, // - + KEY_PERIOD, // . + KEY_SLASH, // / + KEY_0, // 0 + KEY_1, // 1 + KEY_2, // 2 + KEY_3, // 3 + KEY_4, // 4 + KEY_5, // 5 + KEY_6, // 6 + KEY_7, // 7 + KEY_8, // 8 + KEY_9, // 9 + KEY_SEMICOLON|MOD_LEFT_SHIFT, // : + KEY_SEMICOLON, // ; + KEY_COMMA|MOD_LEFT_SHIFT, // < + KEY_EQUAL, // = + KEY_PERIOD|MOD_LEFT_SHIFT, // > + KEY_SLASH|MOD_LEFT_SHIFT, // ? + KEY_2|MOD_LEFT_SHIFT, // @ + KEY_A|MOD_LEFT_SHIFT, // A + KEY_B|MOD_LEFT_SHIFT, // B + KEY_C|MOD_LEFT_SHIFT, // C + KEY_D|MOD_LEFT_SHIFT, // D + KEY_E|MOD_LEFT_SHIFT, // E + KEY_F|MOD_LEFT_SHIFT, // F + KEY_G|MOD_LEFT_SHIFT, // G + KEY_H|MOD_LEFT_SHIFT, // H + KEY_I|MOD_LEFT_SHIFT, // I + KEY_J|MOD_LEFT_SHIFT, // J + KEY_K|MOD_LEFT_SHIFT, // K + KEY_L|MOD_LEFT_SHIFT, // L + KEY_M|MOD_LEFT_SHIFT, // M + KEY_N|MOD_LEFT_SHIFT, // N + KEY_O|MOD_LEFT_SHIFT, // O + KEY_P|MOD_LEFT_SHIFT, // P + KEY_Q|MOD_LEFT_SHIFT, // Q + KEY_R|MOD_LEFT_SHIFT, // R + KEY_S|MOD_LEFT_SHIFT, // S + KEY_T|MOD_LEFT_SHIFT, // T + KEY_U|MOD_LEFT_SHIFT, // U + KEY_V|MOD_LEFT_SHIFT, // V + KEY_W|MOD_LEFT_SHIFT, // W + KEY_X|MOD_LEFT_SHIFT, // X + KEY_Y|MOD_LEFT_SHIFT, // Y + KEY_Z|MOD_LEFT_SHIFT, // Z + KEY_LEFT_BRACE, // [ + KEY_BACKSLASH, // bslash + KEY_RIGHT_BRACE, // ] + KEY_6|MOD_LEFT_SHIFT, // ^ + KEY_MINUS|MOD_LEFT_SHIFT, // _ + KEY_TILDE, // ` + KEY_A, // a + KEY_B, // b + KEY_C, // c + KEY_D, // d + KEY_E, // e + KEY_F, // f + KEY_G, // g + KEY_H, // h + KEY_I, // i + KEY_J, // j + KEY_K, // k + KEY_L, // l + KEY_M, // m + KEY_N, // n + KEY_O, // o + KEY_P, // p + KEY_Q, // q + KEY_R, // r + KEY_S, // s + KEY_T, // t + KEY_U, // u + KEY_V, // v + KEY_W, // w + KEY_X, // x + KEY_Y, // y + KEY_Z, // z + KEY_LEFT_BRACE|MOD_LEFT_SHIFT, // { + KEY_BACKSLASH|MOD_LEFT_SHIFT, // | + KEY_RIGHT_BRACE|MOD_LEFT_SHIFT, // } + KEY_TILDE|MOD_LEFT_SHIFT, // ~ + KEY_RESERVED // DEL }; From 2610dfd9a562fc1d1e4650c03282bae298bde889 Mon Sep 17 00:00:00 2001 From: MRNIU Date: Sun, 19 Apr 2020 12:23:03 +0800 Subject: [PATCH 14/25] Remove preprocessor identation --- src/KeyboardLayouts/ImprovedKeylayouts.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/KeyboardLayouts/ImprovedKeylayouts.h b/src/KeyboardLayouts/ImprovedKeylayouts.h index f6a546f..f87ea5b 100644 --- a/src/KeyboardLayouts/ImprovedKeylayouts.h +++ b/src/KeyboardLayouts/ImprovedKeylayouts.h @@ -49,15 +49,15 @@ enum KeyboardLeds : uint8_t { }; #ifndef HID_CUSTOM_LAYOUT - #define HID_CUSTOM_LAYOUT - #define LAYOUT_US_ENGLISH - #pragma message "Using default ASCII layout for keyboard modules" +#define HID_CUSTOM_LAYOUT +#define LAYOUT_US_ENGLISH +#pragma message "Using default ASCII layout for keyboard modules" #else - #pragma message "Using custom layout for keyboard modules" +#pragma message "Using custom layout for keyboard modules" #endif #if defined(LAYOUT_US_ENGLISH) - #include "ImprovedKeylayoutsUS.h" +#include "ImprovedKeylayoutsUS.h" #elif defined(LAYOUT_CANADIAN_FRENCH) #elif defined(LAYOUT_CANADIAN_MULTILINGUAL) #elif defined(LAYOUT_DANISH) From ea524138d3404bf83682c5653d1faadaee841184 Mon Sep 17 00:00:00 2001 From: MRNIU Date: Sun, 19 Apr 2020 12:25:48 +0800 Subject: [PATCH 15/25] Remove #pragma --- src/KeyboardLayouts/ImprovedKeylayouts.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/KeyboardLayouts/ImprovedKeylayouts.h b/src/KeyboardLayouts/ImprovedKeylayouts.h index f87ea5b..3ef7b86 100644 --- a/src/KeyboardLayouts/ImprovedKeylayouts.h +++ b/src/KeyboardLayouts/ImprovedKeylayouts.h @@ -51,9 +51,6 @@ enum KeyboardLeds : uint8_t { #ifndef HID_CUSTOM_LAYOUT #define HID_CUSTOM_LAYOUT #define LAYOUT_US_ENGLISH -#pragma message "Using default ASCII layout for keyboard modules" -#else -#pragma message "Using custom layout for keyboard modules" #endif #if defined(LAYOUT_US_ENGLISH) From e9bace4d0682020544f9f9c157cb698cf01d4d18 Mon Sep 17 00:00:00 2001 From: MRNIU Date: Sun, 19 Apr 2020 12:36:03 +0800 Subject: [PATCH 16/25] Add macro: HID_REPORTID_KEYBOARD --- src/Keyboard.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Keyboard.h b/src/Keyboard.h index 75cbe68..a0fa34e 100644 --- a/src/Keyboard.h +++ b/src/Keyboard.h @@ -25,6 +25,10 @@ #include "HID.h" +#ifndef HID_REPORTID_KEYBOARD +#define HID_REPORTID_KEYBOARD 2 +#endif + #if !defined(_USING_HID) #warning "Using legacy HID core (non pluggable)" From 6874ac20f06975daeb8f9096bda9324a7d4d0901 Mon Sep 17 00:00:00 2001 From: MRNIU Date: Mon, 20 Apr 2020 20:40:25 +0800 Subject: [PATCH 17/25] Fix up cpde style --- src/Keyboard.cpp | 30 +++++------ src/Keyboard.h | 58 +++++++++++----------- src/KeyboardLayouts/ImprovedKeylayouts.h | 36 +++++++------- src/KeyboardLayouts/ImprovedKeylayoutsDE.h | 34 ++++++------- src/KeyboardLayouts/ImprovedKeylayoutsUS.h | 34 ++++++------- 5 files changed, 96 insertions(+), 96 deletions(-) diff --git a/src/Keyboard.cpp b/src/Keyboard.cpp index 69898bf..ab78acd 100644 --- a/src/Keyboard.cpp +++ b/src/Keyboard.cpp @@ -1,23 +1,23 @@ /* - Keyboard.cpp + Keyboard.cpp - Copyright (c) 2015, Arduino LLC - Original code (pre-library): Copyright (c) 2011, Peter Barrett - Contributor: MRNIU + Copyright (c) 2015, Arduino LLC + Original code (pre-library): Copyright (c) 2011, Peter Barrett + Contributor: MRNIU - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "Keyboard.h" diff --git a/src/Keyboard.h b/src/Keyboard.h index a0fa34e..dcc4a9f 100644 --- a/src/Keyboard.h +++ b/src/Keyboard.h @@ -1,23 +1,23 @@ /* - Keyboard.h + Keyboard.h - Copyright (c) 2015, Arduino LLC - Original code (pre-library): Copyright (c) 2011, Peter Barrett - Contributor: MRNIU + Copyright (c) 2015, Arduino LLC + Original code (pre-library): Copyright (c) 2011, Peter Barrett + Contributor: MRNIU - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef KEYBOARD_h @@ -40,26 +40,26 @@ // Low level key report: up to 6 keys and shift, ctrl etc at once typedef struct { - uint8_t modifiers; - uint8_t reserved; - uint8_t keycodes[6]; + uint8_t modifiers; + uint8_t reserved; + uint8_t keycodes[6]; } KeyReport; class Keyboard_ : public Print { private: - KeyReport _keyReport; - void sendReport(KeyReport* keys); - size_t set(KeyboardKeycode k, bool s); + KeyReport _keyReport; + void sendReport(KeyReport* keys); + size_t set(KeyboardKeycode k, bool s); public: - Keyboard_(void); - void begin(void); - void end(void); - size_t write(uint8_t k); - size_t write(const uint8_t *buffer, size_t size); - size_t press(uint8_t k); - size_t release(uint8_t k); - void releaseAll(void); + Keyboard_(void); + void begin(void); + void end(void); + size_t write(uint8_t k); + size_t write(const uint8_t *buffer, size_t size); + size_t press(uint8_t k); + size_t release(uint8_t k); + void releaseAll(void); }; extern Keyboard_ Keyboard; diff --git a/src/KeyboardLayouts/ImprovedKeylayouts.h b/src/KeyboardLayouts/ImprovedKeylayouts.h index 3ef7b86..bc7c468 100644 --- a/src/KeyboardLayouts/ImprovedKeylayouts.h +++ b/src/KeyboardLayouts/ImprovedKeylayouts.h @@ -1,24 +1,24 @@ /* -Copyright (c) 2014-2015 NicoHood -See the readme for credit to other people. + Copyright (c) 2014-2015 NicoHood + See the readme for credit to other people. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. */ // Include guard @@ -63,7 +63,7 @@ enum KeyboardLeds : uint8_t { #elif defined(LAYOUT_FRENCH_BELGIAN) #elif defined(LAYOUT_FRENCH_SWISS) #elif defined(LAYOUT_GERMAN) - #include "ImprovedKeylayoutsDE.h" +#include "ImprovedKeylayoutsDE.h" #elif defined(LAYOUT_GERMAN_MAC) #elif defined(LAYOUT_GERMAN_SWISS) #elif defined(LAYOUT_ICELANDIC) diff --git a/src/KeyboardLayouts/ImprovedKeylayoutsDE.h b/src/KeyboardLayouts/ImprovedKeylayoutsDE.h index d68037d..7e1ec90 100644 --- a/src/KeyboardLayouts/ImprovedKeylayoutsDE.h +++ b/src/KeyboardLayouts/ImprovedKeylayoutsDE.h @@ -1,24 +1,24 @@ /* -Copyright (c) 2014-2015 NicoHood -See the readme for credit to other people. + Copyright (c) 2014-2015 NicoHood + See the readme for credit to other people. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. */ // Include guard diff --git a/src/KeyboardLayouts/ImprovedKeylayoutsUS.h b/src/KeyboardLayouts/ImprovedKeylayoutsUS.h index 0e96528..f9cf9af 100644 --- a/src/KeyboardLayouts/ImprovedKeylayoutsUS.h +++ b/src/KeyboardLayouts/ImprovedKeylayoutsUS.h @@ -1,24 +1,24 @@ /* -Copyright (c) 2014-2015 NicoHood -See the readme for credit to other people. + Copyright (c) 2014-2015 NicoHood + See the readme for credit to other people. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. */ // Include guard From 9ff8e1a7b5f8e9aa128f51e6be62b0977eb467a9 Mon Sep 17 00:00:00 2001 From: MRNIU Date: Thu, 23 Apr 2020 12:42:46 +0800 Subject: [PATCH 18/25] Add contributors info --- src/KeyboardLayouts/README.adoc | 42 +++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/src/KeyboardLayouts/README.adoc b/src/KeyboardLayouts/README.adoc index 33d82d2..a8b8b3f 100644 --- a/src/KeyboardLayouts/README.adoc +++ b/src/KeyboardLayouts/README.adoc @@ -1,8 +1,46 @@ = Contributors = -Original code (pre-library): NicoHood +Original code (pre-library): [NicoHood/HID](https://github.com/NicoHood/HID) -Contributor: MRNIU +- Links/Credits + + [LUFA from Dean Camera](http://www.fourwalledcubicle.com/LUFA.php) + [Darran's HID Projects] (https://github.com/harlequin-tech/arduino-usb) + [Connor's Joystick for the Leonardo](http://www.imaginaryindustries.com/blog/?p=80) + [Stefan Jones Multimedia Keys Example](http://stefanjones.ca/blog/arduino-leonardo-remote-multimedia-keys/) + [Athanasios Douitsis Multimedia Keys Example](https://github.com/aduitsis/ardumultimedia) + [The Original Arduino Sources](https://github.com/arduino/Arduino/tree/master/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial) + [USBlyzer](http://www.usblyzer.com/) + [Mattairtechs 16u2 Lufa USB Core](https://www.mattairtech.com/index.php/development-boards/mt-db-u1.html) + [Paul Brook's Minimus 32u2 Arduino USB Core](https://github.com/pbrook/minimus-arduino) + [Paul Stoffregen's Teensy Core](https://github.com/PaulStoffregen/cores) + [Keyboard Led Out report by hartmut_holgraefe](http://forum.arduino.cc/index.php?topic=173583.0) + [Github Pull Request with a lot of new functions](https://github.com/arduino/Arduino/pull/1803) + [Arduino ISP fix](https://petervanhoyweghen.wordpress.com/2012/09/16/arduinoisp-on-the-leonardo/) + A lot of searching through the web + The awesome official Arduino IRC chat! + [The NicoHood Protocol](https://github.com/NicoHood/NicoHoodProtocol) + See HoodLoader1&2 repository for more credits/links + [Hackaday post about HoodLoader2](hackaday.com/2014/11/30/using-the-second-microcontroller-on-an-arduino) + [Gamecube to PC adapter](https://github.com/NicoHood/Nintendo) + +- Projects + + [Gamecube to PC Adapter](https://nicohood.wordpress.com/2015/02/10/diy-gamecube-to-usb-pc-adapter-with-arduino/) + [Car PC for Mercedes (german)](http://www.artifex-babel.de/de/car-pc/car-pc_de.html) + [Famicom+Genesis to PC Adapter](https://www.youtube.com/watch?v=Jz2oikvr8do) + [Plex Home Theatre IR remote](https://github.com/ep1cman/Plex-IR) + [The Knob](https://github.com/brainhublab/TheKnob) + +- Press + + [Hackaday](http://hackaday.com/2014/11/30/using-the-second-microcontroller-on-an-arduino/) + [Atmel Blog](http://blog.atmel.com/2014/12/01/using-the-power-of-two-mcus-on-an-arduino-board/) + +See [NicoHood/HID/wiki/Useful-Links-Credits](https://github.com/NicoHood/HID/wiki/Useful-Links-Credits) for the latest information. + +- Contributor + [MRNIU](https://github.com/MRNIU) == License == From 6f6f515f8fea74eca6fe27d0588c9409b8bf2a8b Mon Sep 17 00:00:00 2001 From: "Zone.N" Date: Thu, 23 Apr 2020 12:49:48 +0800 Subject: [PATCH 19/25] Modify code style --- src/KeyboardLayouts/README.adoc | 76 ++++++++++++++++++++++----------- 1 file changed, 50 insertions(+), 26 deletions(-) diff --git a/src/KeyboardLayouts/README.adoc b/src/KeyboardLayouts/README.adoc index a8b8b3f..b95160d 100644 --- a/src/KeyboardLayouts/README.adoc +++ b/src/KeyboardLayouts/README.adoc @@ -4,38 +4,62 @@ Original code (pre-library): [NicoHood/HID](https://github.com/NicoHood/HID) - Links/Credits - [LUFA from Dean Camera](http://www.fourwalledcubicle.com/LUFA.php) - [Darran's HID Projects] (https://github.com/harlequin-tech/arduino-usb) - [Connor's Joystick for the Leonardo](http://www.imaginaryindustries.com/blog/?p=80) - [Stefan Jones Multimedia Keys Example](http://stefanjones.ca/blog/arduino-leonardo-remote-multimedia-keys/) - [Athanasios Douitsis Multimedia Keys Example](https://github.com/aduitsis/ardumultimedia) - [The Original Arduino Sources](https://github.com/arduino/Arduino/tree/master/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial) - [USBlyzer](http://www.usblyzer.com/) - [Mattairtechs 16u2 Lufa USB Core](https://www.mattairtech.com/index.php/development-boards/mt-db-u1.html) - [Paul Brook's Minimus 32u2 Arduino USB Core](https://github.com/pbrook/minimus-arduino) - [Paul Stoffregen's Teensy Core](https://github.com/PaulStoffregen/cores) - [Keyboard Led Out report by hartmut_holgraefe](http://forum.arduino.cc/index.php?topic=173583.0) - [Github Pull Request with a lot of new functions](https://github.com/arduino/Arduino/pull/1803) - [Arduino ISP fix](https://petervanhoyweghen.wordpress.com/2012/09/16/arduinoisp-on-the-leonardo/) - A lot of searching through the web - The awesome official Arduino IRC chat! - [The NicoHood Protocol](https://github.com/NicoHood/NicoHoodProtocol) - See HoodLoader1&2 repository for more credits/links - [Hackaday post about HoodLoader2](hackaday.com/2014/11/30/using-the-second-microcontroller-on-an-arduino) - [Gamecube to PC adapter](https://github.com/NicoHood/Nintendo) +[LUFA from Dean Camera](http://www.fourwalledcubicle.com/LUFA.php) + +[Darran's HID Projects] (https://github.com/harlequin-tech/arduino-usb) + +[Connor's Joystick for the Leonardo](http://www.imaginaryindustries.com/blog/?p=80) + +[Stefan Jones Multimedia Keys Example](http://stefanjones.ca/blog/arduino-leonardo-remote-multimedia-keys/) + +[Athanasios Douitsis Multimedia Keys Example](https://github.com/aduitsis/ardumultimedia) + +[The Original Arduino Sources](https://github.com/arduino/Arduino/tree/master/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial) + +[USBlyzer](http://www.usblyzer.com/) + +[Mattairtechs 16u2 Lufa USB Core](https://www.mattairtech.com/index.php/development-boards/mt-db-u1.html) + +[Paul Brook's Minimus 32u2 Arduino USB Core](https://github.com/pbrook/minimus-arduino) + +[Paul Stoffregen's Teensy Core](https://github.com/PaulStoffregen/cores) + +[Keyboard Led Out report by hartmut_holgraefe](http://forum.arduino.cc/index.php?topic=173583.0) + +[Github Pull Request with a lot of new functions](https://github.com/arduino/Arduino/pull/1803) + +[Arduino ISP fix](https://petervanhoyweghen.wordpress.com/2012/09/16/arduinoisp-on-the-leonardo/) + +A lot of searching through the web + +The awesome official Arduino IRC chat! + +[The NicoHood Protocol](https://github.com/NicoHood/NicoHoodProtocol) + +See HoodLoader1&2 repository for more credits/links + +[Hackaday post about HoodLoader2](hackaday.com/2014/11/30/using-the-second-microcontroller-on-an-arduino) + +[Gamecube to PC adapter](https://github.com/NicoHood/Nintendo) - Projects - [Gamecube to PC Adapter](https://nicohood.wordpress.com/2015/02/10/diy-gamecube-to-usb-pc-adapter-with-arduino/) - [Car PC for Mercedes (german)](http://www.artifex-babel.de/de/car-pc/car-pc_de.html) - [Famicom+Genesis to PC Adapter](https://www.youtube.com/watch?v=Jz2oikvr8do) - [Plex Home Theatre IR remote](https://github.com/ep1cman/Plex-IR) - [The Knob](https://github.com/brainhublab/TheKnob) +[Gamecube to PC Adapter](https://nicohood.wordpress.com/2015/02/10/diy-gamecube-to-usb-pc-adapter-with-arduino/) + +[Car PC for Mercedes (german)](http://www.artifex-babel.de/de/car-pc/car-pc_de.html) + +[Famicom+Genesis to PC Adapter](https://www.youtube.com/watch?v=Jz2oikvr8do) + +[Plex Home Theatre IR remote](https://github.com/ep1cman/Plex-IR) + +[The Knob](https://github.com/brainhublab/TheKnob) - Press - [Hackaday](http://hackaday.com/2014/11/30/using-the-second-microcontroller-on-an-arduino/) - [Atmel Blog](http://blog.atmel.com/2014/12/01/using-the-power-of-two-mcus-on-an-arduino-board/) +[Hackaday](http://hackaday.com/2014/11/30/using-the-second-microcontroller-on-an-arduino/) + +[Atmel Blog](http://blog.atmel.com/2014/12/01/using-the-power-of-two-mcus-on-an-arduino-board/) + See [NicoHood/HID/wiki/Useful-Links-Credits](https://github.com/NicoHood/HID/wiki/Useful-Links-Credits) for the latest information. From 32927daaf4124bf25986dbf324568a82f0b05e47 Mon Sep 17 00:00:00 2001 From: MRNIU Date: Thu, 23 Apr 2020 13:29:21 +0800 Subject: [PATCH 20/25] Correct REAMDE syntax errors --- src/KeyboardLayouts/README.adoc | 66 +++++++++++---------------------- 1 file changed, 22 insertions(+), 44 deletions(-) diff --git a/src/KeyboardLayouts/README.adoc b/src/KeyboardLayouts/README.adoc index b95160d..830cecf 100644 --- a/src/KeyboardLayouts/README.adoc +++ b/src/KeyboardLayouts/README.adoc @@ -1,70 +1,48 @@ = Contributors = -Original code (pre-library): [NicoHood/HID](https://github.com/NicoHood/HID) +Original code (pre-library): https://github.com/NicoHood/HID[NicoHood/HID] -- Links/Credits +* Links/Credits -[LUFA from Dean Camera](http://www.fourwalledcubicle.com/LUFA.php) +** http://www.fourwalledcubicle.com/LUFA.php[LUFA from Dean Camera] -[Darran's HID Projects] (https://github.com/harlequin-tech/arduino-usb) +** https://github.com/harlequin-tech/arduino-usb[Darran's HID Projects] -[Connor's Joystick for the Leonardo](http://www.imaginaryindustries.com/blog/?p=80) +** http://www.imaginaryindustries.com/blog/?p=80[Connor's Joystick for the Leonardo] -[Stefan Jones Multimedia Keys Example](http://stefanjones.ca/blog/arduino-leonardo-remote-multimedia-keys/) +** http://stefanjones.ca/blog/arduino-leonardo-remote-multimedia-keys/[Stefan Jones Multimedia Keys Example] -[Athanasios Douitsis Multimedia Keys Example](https://github.com/aduitsis/ardumultimedia) - -[The Original Arduino Sources](https://github.com/arduino/Arduino/tree/master/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial) - -[USBlyzer](http://www.usblyzer.com/) - -[Mattairtechs 16u2 Lufa USB Core](https://www.mattairtech.com/index.php/development-boards/mt-db-u1.html) +** https://github.com/aduitsis/ardumultimedia[Athanasios Douitsis Multimedia Keys Example] -[Paul Brook's Minimus 32u2 Arduino USB Core](https://github.com/pbrook/minimus-arduino) +** https://github.com/arduino/Arduino/tree/master/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial[The Original Arduino Sources] -[Paul Stoffregen's Teensy Core](https://github.com/PaulStoffregen/cores) +** http://www.usblyzer.com/[USBlyzer] -[Keyboard Led Out report by hartmut_holgraefe](http://forum.arduino.cc/index.php?topic=173583.0) +** https://www.mattairtech.com/index.php/development-boards/mt-db-u1.html[Mattairtechs 16u2 Lufa USB Core] -[Github Pull Request with a lot of new functions](https://github.com/arduino/Arduino/pull/1803) +** https://github.com/pbrook/minimus-arduino[Paul Brook's Minimus 32u2 Arduino USB Core] -[Arduino ISP fix](https://petervanhoyweghen.wordpress.com/2012/09/16/arduinoisp-on-the-leonardo/) +** https://github.com/PaulStoffregen/cores[Paul Stoffregen's Teensy Core] -A lot of searching through the web +** http://forum.arduino.cc/index.php?topic=173583.0[Keyboard Led Out report by hartmut_holgraefe] -The awesome official Arduino IRC chat! +** https://github.com/arduino/Arduino/pull/1803[Github Pull Request with a lot of new functions] -[The NicoHood Protocol](https://github.com/NicoHood/NicoHoodProtocol) +** https://petervanhoyweghen.wordpress.com/2012/09/16/arduinoisp-on-the-leonardo/[Arduino ISP fix] -See HoodLoader1&2 repository for more credits/links +** A lot of searching through the web -[Hackaday post about HoodLoader2](hackaday.com/2014/11/30/using-the-second-microcontroller-on-an-arduino) +** The awesome official Arduino IRC chat! -[Gamecube to PC adapter](https://github.com/NicoHood/Nintendo) +** https://github.com/NicoHood/NicoHoodProtocol[The NicoHood Protocol] -- Projects +** See HoodLoader1&2 repository for more credits/links -[Gamecube to PC Adapter](https://nicohood.wordpress.com/2015/02/10/diy-gamecube-to-usb-pc-adapter-with-arduino/) +See https://github.com/NicoHood/HID/wiki/Useful-Links-Credits[NicoHood/HID/wiki/Useful-Links-Credits] for the whole information. -[Car PC for Mercedes (german)](http://www.artifex-babel.de/de/car-pc/car-pc_de.html) +* Contributor -[Famicom+Genesis to PC Adapter](https://www.youtube.com/watch?v=Jz2oikvr8do) - -[Plex Home Theatre IR remote](https://github.com/ep1cman/Plex-IR) - -[The Knob](https://github.com/brainhublab/TheKnob) - -- Press - -[Hackaday](http://hackaday.com/2014/11/30/using-the-second-microcontroller-on-an-arduino/) - -[Atmel Blog](http://blog.atmel.com/2014/12/01/using-the-power-of-two-mcus-on-an-arduino-board/) - - -See [NicoHood/HID/wiki/Useful-Links-Credits](https://github.com/NicoHood/HID/wiki/Useful-Links-Credits) for the latest information. - -- Contributor - [MRNIU](https://github.com/MRNIU) +** https://github.com/MRNIU[MRNIU] == License == From a333810fc47ba38842bd9b7443cd6a3561cb1fa6 Mon Sep 17 00:00:00 2001 From: MRNIU Date: Thu, 23 Apr 2020 13:29:21 +0800 Subject: [PATCH 21/25] Correct REAMDE syntax errors and remove some unnecessary information --- src/KeyboardLayouts/README.adoc | 66 +++++++++++---------------------- 1 file changed, 22 insertions(+), 44 deletions(-) diff --git a/src/KeyboardLayouts/README.adoc b/src/KeyboardLayouts/README.adoc index b95160d..830cecf 100644 --- a/src/KeyboardLayouts/README.adoc +++ b/src/KeyboardLayouts/README.adoc @@ -1,70 +1,48 @@ = Contributors = -Original code (pre-library): [NicoHood/HID](https://github.com/NicoHood/HID) +Original code (pre-library): https://github.com/NicoHood/HID[NicoHood/HID] -- Links/Credits +* Links/Credits -[LUFA from Dean Camera](http://www.fourwalledcubicle.com/LUFA.php) +** http://www.fourwalledcubicle.com/LUFA.php[LUFA from Dean Camera] -[Darran's HID Projects] (https://github.com/harlequin-tech/arduino-usb) +** https://github.com/harlequin-tech/arduino-usb[Darran's HID Projects] -[Connor's Joystick for the Leonardo](http://www.imaginaryindustries.com/blog/?p=80) +** http://www.imaginaryindustries.com/blog/?p=80[Connor's Joystick for the Leonardo] -[Stefan Jones Multimedia Keys Example](http://stefanjones.ca/blog/arduino-leonardo-remote-multimedia-keys/) +** http://stefanjones.ca/blog/arduino-leonardo-remote-multimedia-keys/[Stefan Jones Multimedia Keys Example] -[Athanasios Douitsis Multimedia Keys Example](https://github.com/aduitsis/ardumultimedia) - -[The Original Arduino Sources](https://github.com/arduino/Arduino/tree/master/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial) - -[USBlyzer](http://www.usblyzer.com/) - -[Mattairtechs 16u2 Lufa USB Core](https://www.mattairtech.com/index.php/development-boards/mt-db-u1.html) +** https://github.com/aduitsis/ardumultimedia[Athanasios Douitsis Multimedia Keys Example] -[Paul Brook's Minimus 32u2 Arduino USB Core](https://github.com/pbrook/minimus-arduino) +** https://github.com/arduino/Arduino/tree/master/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial[The Original Arduino Sources] -[Paul Stoffregen's Teensy Core](https://github.com/PaulStoffregen/cores) +** http://www.usblyzer.com/[USBlyzer] -[Keyboard Led Out report by hartmut_holgraefe](http://forum.arduino.cc/index.php?topic=173583.0) +** https://www.mattairtech.com/index.php/development-boards/mt-db-u1.html[Mattairtechs 16u2 Lufa USB Core] -[Github Pull Request with a lot of new functions](https://github.com/arduino/Arduino/pull/1803) +** https://github.com/pbrook/minimus-arduino[Paul Brook's Minimus 32u2 Arduino USB Core] -[Arduino ISP fix](https://petervanhoyweghen.wordpress.com/2012/09/16/arduinoisp-on-the-leonardo/) +** https://github.com/PaulStoffregen/cores[Paul Stoffregen's Teensy Core] -A lot of searching through the web +** http://forum.arduino.cc/index.php?topic=173583.0[Keyboard Led Out report by hartmut_holgraefe] -The awesome official Arduino IRC chat! +** https://github.com/arduino/Arduino/pull/1803[Github Pull Request with a lot of new functions] -[The NicoHood Protocol](https://github.com/NicoHood/NicoHoodProtocol) +** https://petervanhoyweghen.wordpress.com/2012/09/16/arduinoisp-on-the-leonardo/[Arduino ISP fix] -See HoodLoader1&2 repository for more credits/links +** A lot of searching through the web -[Hackaday post about HoodLoader2](hackaday.com/2014/11/30/using-the-second-microcontroller-on-an-arduino) +** The awesome official Arduino IRC chat! -[Gamecube to PC adapter](https://github.com/NicoHood/Nintendo) +** https://github.com/NicoHood/NicoHoodProtocol[The NicoHood Protocol] -- Projects +** See HoodLoader1&2 repository for more credits/links -[Gamecube to PC Adapter](https://nicohood.wordpress.com/2015/02/10/diy-gamecube-to-usb-pc-adapter-with-arduino/) +See https://github.com/NicoHood/HID/wiki/Useful-Links-Credits[NicoHood/HID/wiki/Useful-Links-Credits] for the whole information. -[Car PC for Mercedes (german)](http://www.artifex-babel.de/de/car-pc/car-pc_de.html) +* Contributor -[Famicom+Genesis to PC Adapter](https://www.youtube.com/watch?v=Jz2oikvr8do) - -[Plex Home Theatre IR remote](https://github.com/ep1cman/Plex-IR) - -[The Knob](https://github.com/brainhublab/TheKnob) - -- Press - -[Hackaday](http://hackaday.com/2014/11/30/using-the-second-microcontroller-on-an-arduino/) - -[Atmel Blog](http://blog.atmel.com/2014/12/01/using-the-power-of-two-mcus-on-an-arduino-board/) - - -See [NicoHood/HID/wiki/Useful-Links-Credits](https://github.com/NicoHood/HID/wiki/Useful-Links-Credits) for the latest information. - -- Contributor - [MRNIU](https://github.com/MRNIU) +** https://github.com/MRNIU[MRNIU] == License == From 71e3ee327550cb07348de5477e8e338e69e3da21 Mon Sep 17 00:00:00 2001 From: MRNIU Date: Thu, 23 Apr 2020 14:15:11 +0800 Subject: [PATCH 22/25] Correct dead url --- src/KeyboardLayouts/README.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/KeyboardLayouts/README.adoc b/src/KeyboardLayouts/README.adoc index 830cecf..1c2e719 100644 --- a/src/KeyboardLayouts/README.adoc +++ b/src/KeyboardLayouts/README.adoc @@ -14,11 +14,11 @@ Original code (pre-library): https://github.com/NicoHood/HID[NicoHood/HID] ** https://github.com/aduitsis/ardumultimedia[Athanasios Douitsis Multimedia Keys Example] -** https://github.com/arduino/Arduino/tree/master/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial[The Original Arduino Sources] +** https://github.com/arduino/ArduinoCore-avr/tree/master/firmwares/atmegaxxu2/arduino-usbserial[The Original Arduino Sources] ** http://www.usblyzer.com/[USBlyzer] -** https://www.mattairtech.com/index.php/development-boards/mt-db-u1.html[Mattairtechs 16u2 Lufa USB Core] +** https://www.mattairtech.com/index.php/old-products/mt-db-u1.html[Mattairtechs 16u2 Lufa USB Core] ** https://github.com/pbrook/minimus-arduino[Paul Brook's Minimus 32u2 Arduino USB Core] From 7d32d203d83b8cc9812ac8fdfd3521fbf4beb00f Mon Sep 17 00:00:00 2001 From: MRNIU Date: Fri, 24 Apr 2020 14:52:49 +0800 Subject: [PATCH 23/25] Remove ImprovedKeylayouts*.h, and need some time to rewrite. --- src/Keyboard.cpp | 5 +- src/Keyboard.h | 2 +- src/KeyboardLayouts/ImprovedKeylayouts.h | 81 --- src/KeyboardLayouts/ImprovedKeylayoutsDE.h | 461 --------------- src/KeyboardLayouts/ImprovedKeylayoutsUS.h | 626 --------------------- src/KeyboardLayouts/KeyboardLayouts.h | 19 + src/KeyboardLayouts/README.adoc | 67 --- 7 files changed, 23 insertions(+), 1238 deletions(-) delete mode 100644 src/KeyboardLayouts/ImprovedKeylayouts.h delete mode 100644 src/KeyboardLayouts/ImprovedKeylayoutsDE.h delete mode 100644 src/KeyboardLayouts/ImprovedKeylayoutsUS.h create mode 100644 src/KeyboardLayouts/KeyboardLayouts.h delete mode 100644 src/KeyboardLayouts/README.adoc diff --git a/src/Keyboard.cpp b/src/Keyboard.cpp index ab78acd..304ce9b 100644 --- a/src/Keyboard.cpp +++ b/src/Keyboard.cpp @@ -85,7 +85,7 @@ void Keyboard_::end(void) void Keyboard_::sendReport(KeyReport* keys) { - HID().SendReport(2,keys,sizeof(KeyReport)); + HID().SendReport(HID_REPORTID_KEYBOARD, keys, sizeof(KeyReport)); } size_t Keyboard_::set(KeyboardKeycode k, bool s) @@ -94,7 +94,8 @@ size_t Keyboard_::set(KeyboardKeycode k, bool s) if(k >= KEY_LEFT_CTRL && k <= KEY_RIGHT_GUI) { // Convert key into bitfield (0 - 7) - k = KeyboardKeycode(uint8_t(k) - uint8_t(KEY_LEFT_CTRL)); + // k = KeyboardKeycode(uint8_t(k) - uint8_t(KEY_LEFT_CTRL)); + k = _asciimap + k; if(s){ _keyReport.modifiers |= (1 << k); } diff --git a/src/Keyboard.h b/src/Keyboard.h index dcc4a9f..e8abf55 100644 --- a/src/Keyboard.h +++ b/src/Keyboard.h @@ -35,7 +35,7 @@ #else -#include "./KeyboardLayouts/ImprovedKeylayouts.h" +#include "./KeyboardLayouts/KeyboardLayouts.h.h" // Low level key report: up to 6 keys and shift, ctrl etc at once typedef struct diff --git a/src/KeyboardLayouts/ImprovedKeylayouts.h b/src/KeyboardLayouts/ImprovedKeylayouts.h deleted file mode 100644 index bc7c468..0000000 --- a/src/KeyboardLayouts/ImprovedKeylayouts.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - Copyright (c) 2014-2015 NicoHood - See the readme for credit to other people. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -// Include guard -#pragma once - -// Keyboard Modifiers -enum KeyboardMods : uint16_t { - MOD_LEFT_CTRL = (1 << 8), - MOD_LEFT_SHIFT = (1 << 9), - MOD_LEFT_ALT = (1 << 10), - MOD_LEFT_GUI = (1 << 11), - MOD_RIGHT_CTRL = (1 << 12), - MOD_RIGHT_SHIFT = (1 << 13), - MOD_RIGHT_ALT = (1 << 14), - MOD_RIGHT_GUI = (uint16_t)(1 << 15), -}; - -// Keyboard Leds -enum KeyboardLeds : uint8_t { - LED_NUM_LOCK = (1 << 0), - LED_CAPS_LOCK = (1 << 1), - LED_SCROLL_LOCK = (1 << 2), - LED_COMPOSE = (1 << 3), - LED_KANA = (1 << 4), - LED_POWER = (1 << 5), - LED_SHIFT = (1 << 6), - LED_DO_NOT_DISTURB = (1 << 7), -}; - -#ifndef HID_CUSTOM_LAYOUT -#define HID_CUSTOM_LAYOUT -#define LAYOUT_US_ENGLISH -#endif - -#if defined(LAYOUT_US_ENGLISH) -#include "ImprovedKeylayoutsUS.h" -#elif defined(LAYOUT_CANADIAN_FRENCH) -#elif defined(LAYOUT_CANADIAN_MULTILINGUAL) -#elif defined(LAYOUT_DANISH) -#elif defined(LAYOUT_FINNISH) -#elif defined(LAYOUT_FRENCH) -#elif defined(LAYOUT_FRENCH_BELGIAN) -#elif defined(LAYOUT_FRENCH_SWISS) -#elif defined(LAYOUT_GERMAN) -#include "ImprovedKeylayoutsDE.h" -#elif defined(LAYOUT_GERMAN_MAC) -#elif defined(LAYOUT_GERMAN_SWISS) -#elif defined(LAYOUT_ICELANDIC) -#elif defined(LAYOUT_IRISH) -#elif defined(LAYOUT_ITALIAN) -#elif defined(LAYOUT_NORWEGIAN) -#elif defined(LAYOUT_PORTUGUESE) -#elif defined(LAYOUT_PORTUGUESE_BRAZILIAN) -#elif defined(LAYOUT_SPANISH) -#elif defined(LAYOUT_SPANISH_LATIN_AMERICA) -#elif defined(LAYOUT_SWEDISH) -#elif defined(LAYOUT_TURKISH) -#elif defined(LAYOUT_UNITED_KINGDOM) -#elif defined(LAYOUT_US_INTERNATIONAL) -#endif diff --git a/src/KeyboardLayouts/ImprovedKeylayoutsDE.h b/src/KeyboardLayouts/ImprovedKeylayoutsDE.h deleted file mode 100644 index 7e1ec90..0000000 --- a/src/KeyboardLayouts/ImprovedKeylayoutsDE.h +++ /dev/null @@ -1,461 +0,0 @@ -/* - Copyright (c) 2014-2015 NicoHood - See the readme for credit to other people. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -// Include guard -#pragma once - -#include "ImprovedKeylayouts.h" - -// Hut1_12v2.pdf - -enum KeyboardKeycode : uint8_t { - KEY_RESERVED = 0, - KEY_ERROR_ROLLOVER = 1, - KEY_POST_FAIL = 2, - KEY_ERROR_UNDEFINED = 3, - KEY_A = 4, - KEY_B = 5, - KEY_C = 6, - KEY_D = 7, - KEY_E = 8, - KEY_F = 9, - KEY_G = 10, - KEY_H = 11, - KEY_I = 12, - KEY_J = 13, - KEY_K = 14, - KEY_L = 15, - KEY_M = 16, - KEY_N = 17, - KEY_O = 18, - KEY_P = 19, - KEY_Q = 20, - KEY_R = 21, - KEY_S = 22, - KEY_T = 23, - KEY_U = 24, - KEY_V = 25, - KEY_W = 26, - KEY_X = 27, - KEY_Y = 29, - KEY_Z = 28, - KEY_1 = 30, - KEY_2 = 31, - KEY_3 = 32, - KEY_4 = 33, - KEY_5 = 34, - KEY_6 = 35, - KEY_7 = 36, - KEY_8 = 37, - KEY_9 = 38, - KEY_0 = 39, - KEY_ENTER = 40, - KEY_RETURN = 40, // Alias - KEY_ESC = 41, - KEY_BACKSPACE = 42, - KEY_TAB = 43, - KEY_SPACE = 44, - KEY_SZ = 45, - KEY_ACCENT = 46, - KEY_UE = 47, - KEY_PLUS = 48, - KEY_HASHTAG2 = 49, - KEY_HASHTAG = 50, - KEY_OE = 51, - KEY_AE = 52, - KEY_DACH = 53, - KEY_COMMA = 54, - KEY_PERIOD = 55, - KEY_MINUS = 56, - KEY_CAPS_LOCK = 0x39, - KEY_F1 = 0x3A, - KEY_F2 = 0x3B, - KEY_F3 = 0x3C, - KEY_F4 = 0x3D, - KEY_F5 = 0x3E, - KEY_F6 = 0x3F, - KEY_F7 = 0x40, - KEY_F8 = 0x41, - KEY_F9 = 0x42, - KEY_F10 = 0x43, - KEY_F11 = 0x44, - KEY_F12 = 0x45, - KEY_PRINT = 0x46, - KEY_PRINTSCREEN = 0x46, // Alias - KEY_SCROLL_LOCK = 0x47, - KEY_PAUSE = 0x48, - KEY_INSERT = 0x49, - KEY_HOME = 0x4A, - KEY_PAGE_UP = 0x4B, - KEY_DELETE = 0x4C, - KEY_END = 0x4D, - KEY_PAGE_DOWN = 0x4E, - KEY_RIGHT_ARROW = 0x4F, - KEY_LEFT_ARROW = 0x50, - KEY_DOWN_ARROW = 0x51, - KEY_UP_ARROW = 0x52, - KEY_RIGHT = 0x4F, // Alias - KEY_LEFT = 0x50, // Alias - KEY_DOWN = 0x51, // Alias - KEY_UP = 0x52, // Alias - KEY_NUM_LOCK = 0x53, - KEYPAD_DIVIDE = 0x54, - KEYPAD_MULTIPLY = 0x55, - KEYPAD_SUBTRACT = 0x56, - KEYPAD_ADD = 0x57, - KEYPAD_ENTER = 0x58, - KEYPAD_1 = 0x59, - KEYPAD_2 = 0x5A, - KEYPAD_3 = 0x5B, - KEYPAD_4 = 0x5C, - KEYPAD_5 = 0x5D, - KEYPAD_6 = 0x5E, - KEYPAD_7 = 0x5F, - KEYPAD_8 = 0x60, - KEYPAD_9 = 0x61, - KEYPAD_0 = 0x62, - KEYPAD_DOT = 0x63, - KEY_SMALLER = 0x64, - KEY_APPLICATION = 0x65, // Context menu/right click - KEY_MENU = 0x65, // Alias - - // Most of the following keys will only work with Linux or not at all. - // F13+ keys are mostly used for laptop functions like ECO key. - KEY_POWER = 0x66, // PowerOff (Ubuntu) - KEY_PAD_EQUALS = 0x67, // Dont confuse with KEYPAD_EQUAL_SIGN - KEY_F13 = 0x68, // Tools (Ubunutu) - KEY_F14 = 0x69, // Launch5 (Ubuntu) - KEY_F15 = 0x6A, // Launch6 (Ubuntu) - KEY_F16 = 0x6B, // Launch7 (Ubuntu) - KEY_F17 = 0x6C, // Launch8 (Ubuntu) - KEY_F18 = 0x6D, // Launch9 (Ubuntu) - KEY_F19 = 0x6E, // Disabled (Ubuntu) - KEY_F20 = 0x6F, // AudioMicMute (Ubuntu) - KEY_F21 = 0x70, // Touchpad toggle (Ubuntu) - KEY_F22 = 0x71, // TouchpadOn (Ubuntu) - KEY_F23 = 0x72, // TouchpadOff Ubuntu) - KEY_F24 = 0x73, // Disabled (Ubuntu) - KEY_EXECUTE = 0x74, // Open (Ubuntu) - KEY_HELP = 0x75, // Help (Ubuntu) - KEY_MENU2 = 0x76, // Disabled (Ubuntu) - KEY_SELECT = 0x77, // Disabled (Ubuntu) - KEY_STOP = 0x78, // Cancel (Ubuntu) - KEY_AGAIN = 0x79, // Redo (Ubuntu) - KEY_UNDO = 0x7A, // Undo (Ubuntu) - KEY_CUT = 0x7B, // Cut (Ubuntu) - KEY_COPY = 0x7C, // Copy (Ubuntu) - KEY_PASTE = 0x7D, // Paste (Ubuntu) - KEY_FIND = 0x7E, // Find (Ubuntu) - KEY_MUTE = 0x7F, - KEY_VOLUME_MUTE = 0x7F, // Alias - KEY_VOLUME_UP = 0x80, - KEY_VOLUME_DOWN = 0x81, - KEY_LOCKING_CAPS_LOCK = 0x82, // Disabled (Ubuntu) - KEY_LOCKING_NUM_LOCK = 0x83, // Disabled (Ubuntu) - KEY_LOCKING_SCROLL_LOCK = 0x84, // Disabled (Ubuntu) - KEYPAD_COMMA = 0x85, // . - KEYPAD_EQUAL_SIGN = 0x86, // Disabled (Ubuntu), Dont confuse with KEYPAD_EQUAL - KEY_INTERNATIONAL1 = 0x87, // Disabled (Ubuntu) - KEY_INTERNATIONAL2 = 0x88, // Hiragana Katakana (Ubuntu) - KEY_INTERNATIONAL3 = 0x89, // Disabled (Ubuntu) - KEY_INTERNATIONAL4 = 0x8A, // Henkan (Ubuntu) - KEY_INTERNATIONAL5 = 0x8B, // Muhenkan (Ubuntu) - KEY_INTERNATIONAL6 = 0x8C, // Disabled (Ubuntu) - KEY_INTERNATIONAL7 = 0x8D, // Disabled (Ubuntu) - KEY_INTERNATIONAL8 = 0x8E, // Disabled (Ubuntu) - KEY_INTERNATIONAL9 = 0x8F, // Disabled (Ubuntu) - KEY_LANG1 = 0x90, // Disabled (Ubuntu) - KEY_LANG2 = 0x91, // Disabled (Ubuntu) - KEY_LANG3 = 0x92, // Katana (Ubuntu) - KEY_LANG4 = 0x93, // Hiragana (Ubuntu) - KEY_LANG5 = 0x94, // Disabled (Ubuntu) - KEY_LANG6 = 0x95, // Disabled (Ubuntu) - KEY_LANG7 = 0x96, // Disabled (Ubuntu) - KEY_LANG8 = 0x97, // Disabled (Ubuntu) - KEY_LANG9 = 0x98, // Disabled (Ubuntu) - KEY_ALTERNATE_ERASE = 0x99, // Disabled (Ubuntu) - KEY_SYSREQ_ATTENTION = 0x9A, // Disabled (Ubuntu) - KEY_CANCEL = 0x9B, // Disabled (Ubuntu) - KEY_CLEAR = 0x9C, // Delete (Ubuntu) - KEY_PRIOR = 0x9D, // Disabled (Ubuntu) - KEY_RETURN2 = 0x9E, // Disabled (Ubuntu), Do not confuse this with KEY_ENTER - KEY_SEPARATOR = 0x9F, // Disabled (Ubuntu) - KEY_OUT = 0xA0, // Disabled (Ubuntu) - KEY_OPER = 0xA1, // Disabled (Ubuntu) - KEY_CLEAR_AGAIN = 0xA2, // Disabled (Ubuntu) - KEY_CRSEL_PROPS = 0xA3, // Disabled (Ubuntu) - KEY_EXSEL = 0xA4, // Disabled (Ubuntu) - - KEY_PAD_00 = 0xB0, // Disabled (Ubuntu) - KEY_PAD_000 = 0xB1, // Disabled (Ubuntu) - KEY_THOUSANDS_SEPARATOR = 0xB2, // Disabled (Ubuntu) - KEY_DECIMAL_SEPARATOR = 0xB3, // Disabled (Ubuntu) - KEY_CURRENCY_UNIT = 0xB4, // Disabled (Ubuntu) - KEY_CURRENCY_SUB_UNIT = 0xB5, // Disabled (Ubuntu) - KEYPAD_LEFT_BRACE = 0xB6, // ( - KEYPAD_RIGHT_BRACE = 0xB7, // ) - KEYPAD_LEFT_CURLY_BRACE = 0xB8, // Disabled (Ubuntu) - KEYPAD_RIGHT_CURLY_BRACE = 0xB9, // Disabled (Ubuntu) - KEYPAD_TAB = 0xBA, // Disabled (Ubuntu) - KEYPAD_BACKSPACE = 0xBB, // Disabled (Ubuntu) - KEYPAD_A = 0xBC, // Disabled (Ubuntu) - KEYPAD_B = 0xBD, // Disabled (Ubuntu) - KEYPAD_C = 0xBE, // Disabled (Ubuntu) - KEYPAD_D = 0xBF, // Disabled (Ubuntu) - KEYPAD_E = 0xC0, // Disabled (Ubuntu) - KEYPAD_F = 0xC1, // Disabled (Ubuntu) - KEYPAD_XOR = 0xC2, // Disabled (Ubuntu) - KEYPAD_CARET = 0xC3, // Disabled (Ubuntu) - KEYPAD_PERCENT = 0xC4, // Disabled (Ubuntu) - KEYPAD_LESS_THAN = 0xC5, // Disabled (Ubuntu) - KEYPAD_GREATER_THAN = 0xC6, // Disabled (Ubuntu) - KEYPAD_AMPERSAND = 0xC7, // Disabled (Ubuntu) - KEYPAD_DOUBLEAMPERSAND = 0xC8, // Disabled (Ubuntu) - KEYPAD_PIPE = 0xC9, // Disabled (Ubuntu) - KEYPAD_DOUBLEPIPE = 0xCA, // Disabled (Ubuntu) - KEYPAD_COLON = 0xCB, // Disabled (Ubuntu) - KEYPAD_POUND_SIGN = 0xCC, // Disabled (Ubuntu) - KEYPAD_SPACE = 0xCD, // Disabled (Ubuntu) - KEYPAD_AT_SIGN = 0xCE, // Disabled (Ubuntu) - KEYPAD_EXCLAMATION_POINT = 0xCF, // Disabled (Ubuntu) - KEYPAD_MEMORY_STORE = 0xD0, // Disabled (Ubuntu) - KEYPAD_MEMORY_RECALL = 0xD1, // Disabled (Ubuntu) - KEYPAD_MEMORY_CLEAR = 0xD2, // Disabled (Ubuntu) - KEYPAD_MEMORY_ADD = 0xD3, // Disabled (Ubuntu) - KEYPAD_MEMORY_SUBTRACT = 0xD4, // Disabled (Ubuntu) - KEYPAD_MEMORY_MULTIPLY = 0xD5, // Disabled (Ubuntu) - KEYPAD_MEMORY_DIVIDE = 0xD6, // Disabled (Ubuntu) - KEYPAD_PLUS_MINUS = 0xD7, // Disabled (Ubuntu) - KEYPAD_CLEAR = 0xD8, // Delete (Ubuntu) - KEYPAD_CLEAR_ENTRY = 0xD9, // Disabled (Ubuntu) - KEYPAD_BINARY = 0xDA, // Disabled (Ubuntu) - KEYPAD_OCTAL = 0xDB, // Disabled (Ubuntu) - KEYPAD_DECIMAL = 0xDC, // Disabled (Ubuntu) - KEYPAD_HEXADECIMAL = 0xDD, // Disabled (Ubuntu) - - KEY_LEFT_CTRL = 0xE0, - KEY_LEFT_SHIFT = 0xE1, - KEY_LEFT_ALT = 0xE2, - KEY_LEFT_GUI = 0xE3, - KEY_LEFT_WINDOWS = 0xE3, // Alias - KEY_RIGHT_CTRL = 0xE4, - KEY_RIGHT_SHIFT = 0xE5, - KEY_RIGHT_ALT = 0xE6, - KEY_RIGHT_GUI = 0xE7, - KEY_RIGHT_WINDOWS = 0xE7, // Alias - - // Keyboard HID mappings - - // Reserved 0xA5-AF - HID_KEYPAD_00 = 0xB0, - HID_KEYPAD_000 = 0xB1, - HID_THOUSANDS_SEPARATOR = 0xB2, - HID_DECIMAL_SEPARATOR = 0xB3, - HID_CURRENCY_UNIT = 0xB4, - HID_CURRENCY_SUBUNIT = 0xB5, - HID_KEYPAD_LEFT_PAREN = 0xB6, - HID_KEYPAD_RIGHT_PAREN = 0xB7, - HID_KEYPAD_LEFT_CURLY_BRACE = 0xB8, - HID_KEYPAD_RIGHT_CURLY_BRACE= 0xB9, - HID_KEYPAD_TAB = 0xBA, - HID_KEYPAD_BACKSPACE = 0xBB, - HID_KEYPAD_A = 0xBC, - HID_KEYPAD_B = 0xBD, - HID_KEYPAD_C = 0xBE, - HID_KEYPAD_D = 0xBF, - HID_KEYPAD_E = 0xC0, - HID_KEYPAD_F = 0xC1, - HID_KEYPAD_XOR = 0xC2, - HID_KEYPAD_CARAT = 0xC3, - HID_KEYPAD_PERCENT = 0xC4, - HID_KEYPAD_LESS_THAN = 0xC5, - HID_KEYPAD_GREATER_THAN = 0xC6, - HID_KEYPAD_AMPERSAND = 0xC7, - HID_KEYPAD_DOUBLEAMPERSAND = 0xC8, - HID_KEYPAD_PIPE = 0xC9, - HID_KEYPAD_DOUBLEPIPE = 0xCA, - HID_KEYPAD_COLON = 0xCB, - HID_KEYPAD_POUND_SIGN = 0xCC, - HID_KEYPAD_SPACE = 0xCD, - HID_KEYPAD_AT_SIGN = 0xCE, - HID_KEYPAD_EXCLAMATION_POINT= 0xCF, - HID_KEYPAD_MEMORY_STORE = 0xD0, - HID_KEYPAD_MEMORY_RECALL = 0xD1, - HID_KEYPAD_MEMORY_CLEAR = 0xD2, - HID_KEYPAD_MEMORY_ADD = 0xD3, - HID_KEYPAD_MEMORY_SUBTRACT = 0xD4, - HID_KEYPAD_MEMORY_MULTIPLY = 0xD5, - HID_KEYPAD_MEMORY_DIVIDE = 0xD6, - HID_KEYPAD_PLUS_SLASH_MINUS = 0xD7, - HID_KEYPAD_CLEAR = 0xD8, - HID_KEYPAD_CLEAR_ENTRY = 0xD9, - HID_KEYPAD_BINARY = 0xDA, - HID_KEYPAD_OCTAL = 0xDB, - HID_KEYPAD_DECIMAL = 0xDC, - HID_KEYPAD_HEXADECIMAL = 0xDD, - - // 0xDE-0xDF - RESERVED - HID_KEYBOARD_LEFT_CONTROL = 0xE0, - HID_KEYBOARD_LEFT_SHIFT = 0xE1, - HID_KEYBOARD_LEFT_ALT = 0xE2, - HID_KEYBOARD_LEFT_GUI = 0xE3, - HID_KEYBOARD_RIGHT_CONTROL = 0xE4, - HID_KEYBOARD_RIGHT_SHIFT = 0xE5, - HID_KEYBOARD_RIGHT_ALT = 0xE6, - HID_KEYBOARD_RIGHT_GUI = 0xE7, -}; - - - -static const uint16_t _asciimap[] PROGMEM = -{ - KEY_RESERVED, // NUL - KEY_RESERVED, // SOH - KEY_RESERVED, // STX - KEY_RESERVED, // ETX - KEY_RESERVED, // EOT - KEY_RESERVED, // ENQ - KEY_RESERVED, // ACK - KEY_RESERVED, // BEL - KEY_BACKSPACE, // BS Backspace - KEY_TAB, // TAB Tab - KEY_ENTER, // LF Enter - KEY_RESERVED, // VT - KEY_RESERVED, // FF - KEY_RESERVED, // CR - KEY_RESERVED, // SO - KEY_RESERVED, // SI - KEY_RESERVED, // DEL - KEY_RESERVED, // DC1 - KEY_RESERVED, // DC2 - KEY_RESERVED, // DC3 - KEY_RESERVED, // DC4 - KEY_RESERVED, // NAK - KEY_RESERVED, // SYN - KEY_RESERVED, // ETB - KEY_RESERVED, // CAN - KEY_RESERVED, // EM - KEY_RESERVED, // SUB - KEY_RESERVED, // ESC - KEY_RESERVED, // FS - KEY_RESERVED, // GS - KEY_RESERVED, // RS - KEY_RESERVED, // US - - KEY_SPACE, // ' ' Space - KEY_1|MOD_LEFT_SHIFT, // ! - KEY_2|MOD_LEFT_SHIFT, // " - KEY_HASHTAG, // # - KEY_4|MOD_LEFT_SHIFT, // $ - KEY_5|MOD_LEFT_SHIFT, // % - KEY_6|MOD_LEFT_SHIFT, // & - KEY_HASHTAG|MOD_LEFT_SHIFT, // ' - KEY_8|MOD_LEFT_SHIFT, // ( - KEY_9|MOD_LEFT_SHIFT, // ) - KEY_PLUS|MOD_LEFT_SHIFT, // * - KEY_PLUS, // + - KEY_COMMA, // , - KEY_MINUS, // - - KEY_PERIOD, // . - KEY_7|MOD_LEFT_SHIFT, // / - KEY_0, // 0 - KEY_1, // 1 - KEY_2, // 2 - KEY_3, // 3 - KEY_4, // 4 - KEY_5, // 5 - KEY_6, // 6 - KEY_7, // 7 - KEY_8, // 8 - KEY_9, // 9 - KEY_PERIOD|MOD_LEFT_SHIFT, // : - KEY_COMMA|MOD_LEFT_SHIFT, // ; - KEY_SMALLER, // < - KEY_0|MOD_LEFT_SHIFT, // = - KEY_SMALLER|MOD_LEFT_SHIFT, // > - KEY_SZ|MOD_LEFT_SHIFT, // ? - KEY_Q|MOD_RIGHT_ALT, // @ - KEY_A|MOD_LEFT_SHIFT, // A - KEY_B|MOD_LEFT_SHIFT, // B - KEY_C|MOD_LEFT_SHIFT, // C - KEY_D|MOD_LEFT_SHIFT, // D - KEY_E|MOD_LEFT_SHIFT, // E - KEY_F|MOD_LEFT_SHIFT, // F - KEY_G|MOD_LEFT_SHIFT, // G - KEY_H|MOD_LEFT_SHIFT, // H - KEY_I|MOD_LEFT_SHIFT, // I - KEY_J|MOD_LEFT_SHIFT, // J - KEY_K|MOD_LEFT_SHIFT, // K - KEY_L|MOD_LEFT_SHIFT, // L - KEY_M|MOD_LEFT_SHIFT, // M - KEY_N|MOD_LEFT_SHIFT, // N - KEY_O|MOD_LEFT_SHIFT, // O - KEY_P|MOD_LEFT_SHIFT, // P - KEY_Q|MOD_LEFT_SHIFT, // Q - KEY_R|MOD_LEFT_SHIFT, // R - KEY_S|MOD_LEFT_SHIFT, // S - KEY_T|MOD_LEFT_SHIFT, // T - KEY_U|MOD_LEFT_SHIFT, // U - KEY_V|MOD_LEFT_SHIFT, // V - KEY_W|MOD_LEFT_SHIFT, // W - KEY_X|MOD_LEFT_SHIFT, // X - KEY_Y|MOD_LEFT_SHIFT, // Y - KEY_Z|MOD_LEFT_SHIFT, // Z - KEY_8|MOD_RIGHT_ALT, // [ - KEY_SZ|MOD_RIGHT_ALT, // bslash - KEY_9|MOD_RIGHT_ALT, // ] - KEY_6|MOD_LEFT_SHIFT, // ^ - KEY_MINUS|MOD_LEFT_SHIFT, // _ - KEY_ACCENT|MOD_LEFT_SHIFT, // ` - KEY_A, // a - KEY_B, // b - KEY_C, // c - KEY_D, // d - KEY_E, // e - KEY_F, // f - KEY_G, // g - KEY_H, // h - KEY_I, // i - KEY_J, // j - KEY_K, // k - KEY_L, // l - KEY_M, // m - KEY_N, // n - KEY_O, // o - KEY_P, // p - KEY_Q, // q - KEY_R, // r - KEY_S, // s - KEY_T, // t - KEY_U, // u - KEY_V, // v - KEY_W, // w - KEY_X, // x - KEY_Y, // y - KEY_Z, // z - KEY_7|MOD_RIGHT_ALT, // { - KEY_SMALLER|MOD_RIGHT_ALT, // | - KEY_0|MOD_RIGHT_ALT, // } - KEY_PLUS|MOD_RIGHT_ALT, // ~ - KEY_RESERVED // DEL -}; diff --git a/src/KeyboardLayouts/ImprovedKeylayoutsUS.h b/src/KeyboardLayouts/ImprovedKeylayoutsUS.h deleted file mode 100644 index f9cf9af..0000000 --- a/src/KeyboardLayouts/ImprovedKeylayoutsUS.h +++ /dev/null @@ -1,626 +0,0 @@ -/* - Copyright (c) 2014-2015 NicoHood - See the readme for credit to other people. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -// Include guard -#pragma once - -#include "ImprovedKeylayouts.h" - -// Hut1_12v2.pdf - -enum KeyboardKeycode : uint8_t { - KEY_RESERVED = 0, - KEY_ERROR_ROLLOVER = 1, - KEY_POST_FAIL = 2, - KEY_ERROR_UNDEFINED = 3, - KEY_A = 4, - KEY_B = 5, - KEY_C = 6, - KEY_D = 7, - KEY_E = 8, - KEY_F = 9, - KEY_G = 10, - KEY_H = 11, - KEY_I = 12, - KEY_J = 13, - KEY_K = 14, - KEY_L = 15, - KEY_M = 16, - KEY_N = 17, - KEY_O = 18, - KEY_P = 19, - KEY_Q = 20, - KEY_R = 21, - KEY_S = 22, - KEY_T = 23, - KEY_U = 24, - KEY_V = 25, - KEY_W = 26, - KEY_X = 27, - KEY_Y = 28, - KEY_Z = 29, - KEY_1 = 30, - KEY_2 = 31, - KEY_3 = 32, - KEY_4 = 33, - KEY_5 = 34, - KEY_6 = 35, - KEY_7 = 36, - KEY_8 = 37, - KEY_9 = 38, - KEY_0 = 39, - KEY_ENTER = 40, - KEY_RETURN = 40, // Alias - KEY_ESC = 41, - KEY_BACKSPACE = 42, - KEY_TAB = 43, - KEY_SPACE = 44, - KEY_MINUS = 45, - KEY_EQUAL = 46, - KEY_LEFT_BRACE = 47, - KEY_RIGHT_BRACE = 48, - KEY_BACKSLASH = 49, - KEY_NON_US_NUM = 50, - KEY_SEMICOLON = 51, - KEY_QUOTE = 52, - KEY_TILDE = 53, - KEY_COMMA = 54, - KEY_PERIOD = 55, - KEY_SLASH = 56, - KEY_CAPS_LOCK = 0x39, - KEY_F1 = 0x3A, - KEY_F2 = 0x3B, - KEY_F3 = 0x3C, - KEY_F4 = 0x3D, - KEY_F5 = 0x3E, - KEY_F6 = 0x3F, - KEY_F7 = 0x40, - KEY_F8 = 0x41, - KEY_F9 = 0x42, - KEY_F10 = 0x43, - KEY_F11 = 0x44, - KEY_F12 = 0x45, - KEY_PRINT = 0x46, - KEY_PRINTSCREEN = 0x46, // Alias - KEY_SCROLL_LOCK = 0x47, - KEY_PAUSE = 0x48, - KEY_INSERT = 0x49, - KEY_HOME = 0x4A, - KEY_PAGE_UP = 0x4B, - KEY_DELETE = 0x4C, - KEY_END = 0x4D, - KEY_PAGE_DOWN = 0x4E, - KEY_RIGHT_ARROW = 0x4F, - KEY_LEFT_ARROW = 0x50, - KEY_DOWN_ARROW = 0x51, - KEY_UP_ARROW = 0x52, - KEY_RIGHT = 0x4F, // Alias - KEY_LEFT = 0x50, // Alias - KEY_DOWN = 0x51, // Alias - KEY_UP = 0x52, // Alias - KEY_NUM_LOCK = 0x53, - KEYPAD_DIVIDE = 0x54, - KEYPAD_MULTIPLY = 0x55, - KEYPAD_SUBTRACT = 0x56, - KEYPAD_ADD = 0x57, - KEYPAD_ENTER = 0x58, - KEYPAD_1 = 0x59, - KEYPAD_2 = 0x5A, - KEYPAD_3 = 0x5B, - KEYPAD_4 = 0x5C, - KEYPAD_5 = 0x5D, - KEYPAD_6 = 0x5E, - KEYPAD_7 = 0x5F, - KEYPAD_8 = 0x60, - KEYPAD_9 = 0x61, - KEYPAD_0 = 0x62, - KEYPAD_DOT = 0x63, - KEY_NON_US = 0x64, - KEY_APPLICATION = 0x65, // Context menu/right click - KEY_MENU = 0x65, // Alias - - // Most of the following keys will only work with Linux or not at all. - // F13+ keys are mostly used for laptop functions like ECO key. - KEY_POWER = 0x66, // PowerOff (Ubuntu) - KEY_PAD_EQUALS = 0x67, // Dont confuse with KEYPAD_EQUAL_SIGN - KEY_F13 = 0x68, // Tools (Ubunutu) - KEY_F14 = 0x69, // Launch5 (Ubuntu) - KEY_F15 = 0x6A, // Launch6 (Ubuntu) - KEY_F16 = 0x6B, // Launch7 (Ubuntu) - KEY_F17 = 0x6C, // Launch8 (Ubuntu) - KEY_F18 = 0x6D, // Launch9 (Ubuntu) - KEY_F19 = 0x6E, // Disabled (Ubuntu) - KEY_F20 = 0x6F, // AudioMicMute (Ubuntu) - KEY_F21 = 0x70, // Touchpad toggle (Ubuntu) - KEY_F22 = 0x71, // TouchpadOn (Ubuntu) - KEY_F23 = 0x72, // TouchpadOff Ubuntu) - KEY_F24 = 0x73, // Disabled (Ubuntu) - KEY_EXECUTE = 0x74, // Open (Ubuntu) - KEY_HELP = 0x75, // Help (Ubuntu) - KEY_MENU2 = 0x76, // Disabled (Ubuntu) - KEY_SELECT = 0x77, // Disabled (Ubuntu) - KEY_STOP = 0x78, // Cancel (Ubuntu) - KEY_AGAIN = 0x79, // Redo (Ubuntu) - KEY_UNDO = 0x7A, // Undo (Ubuntu) - KEY_CUT = 0x7B, // Cut (Ubuntu) - KEY_COPY = 0x7C, // Copy (Ubuntu) - KEY_PASTE = 0x7D, // Paste (Ubuntu) - KEY_FIND = 0x7E, // Find (Ubuntu) - KEY_MUTE = 0x7F, - KEY_VOLUME_MUTE = 0x7F, // Alias - KEY_VOLUME_UP = 0x80, - KEY_VOLUME_DOWN = 0x81, - KEY_LOCKING_CAPS_LOCK = 0x82, // Disabled (Ubuntu) - KEY_LOCKING_NUM_LOCK = 0x83, // Disabled (Ubuntu) - KEY_LOCKING_SCROLL_LOCK = 0x84, // Disabled (Ubuntu) - KEYPAD_COMMA = 0x85, - KEYPAD_EQUAL_SIGN = 0x86, // Disabled (Ubuntu), Dont confuse with KEYPAD_EQUAL - KEY_INTERNATIONAL1 = 0x87, // Disabled (Ubuntu) - KEY_INTERNATIONAL2 = 0x88, // Hiragana Katakana (Ubuntu) - KEY_INTERNATIONAL3 = 0x89, // Disabled (Ubuntu) - KEY_INTERNATIONAL4 = 0x8A, // Henkan (Ubuntu) - KEY_INTERNATIONAL5 = 0x8B, // Muhenkan (Ubuntu) - KEY_INTERNATIONAL6 = 0x8C, // Disabled (Ubuntu) - KEY_INTERNATIONAL7 = 0x8D, // Disabled (Ubuntu) - KEY_INTERNATIONAL8 = 0x8E, // Disabled (Ubuntu) - KEY_INTERNATIONAL9 = 0x8F, // Disabled (Ubuntu) - KEY_LANG1 = 0x90, // Disabled (Ubuntu) - KEY_LANG2 = 0x91, // Disabled (Ubuntu) - KEY_LANG3 = 0x92, // Katana (Ubuntu) - KEY_LANG4 = 0x93, // Hiragana (Ubuntu) - KEY_LANG5 = 0x94, // Disabled (Ubuntu) - KEY_LANG6 = 0x95, // Disabled (Ubuntu) - KEY_LANG7 = 0x96, // Disabled (Ubuntu) - KEY_LANG8 = 0x97, // Disabled (Ubuntu) - KEY_LANG9 = 0x98, // Disabled (Ubuntu) - KEY_ALTERNATE_ERASE = 0x99, // Disabled (Ubuntu) - KEY_SYSREQ_ATTENTION = 0x9A, // Disabled (Ubuntu) - KEY_CANCEL = 0x9B, // Disabled (Ubuntu) - KEY_CLEAR = 0x9C, // Delete (Ubuntu) - KEY_PRIOR = 0x9D, // Disabled (Ubuntu) - KEY_RETURN2 = 0x9E, // Disabled (Ubuntu), Do not confuse this with KEY_ENTER - KEY_SEPARATOR = 0x9F, // Disabled (Ubuntu) - KEY_OUT = 0xA0, // Disabled (Ubuntu) - KEY_OPER = 0xA1, // Disabled (Ubuntu) - KEY_CLEAR_AGAIN = 0xA2, // Disabled (Ubuntu) - KEY_CRSEL_PROPS = 0xA3, // Disabled (Ubuntu) - KEY_EXSEL = 0xA4, // Disabled (Ubuntu) - - KEY_PAD_00 = 0xB0, // Disabled (Ubuntu) - KEY_PAD_000 = 0xB1, // Disabled (Ubuntu) - KEY_THOUSANDS_SEPARATOR = 0xB2, // Disabled (Ubuntu) - KEY_DECIMAL_SEPARATOR = 0xB3, // Disabled (Ubuntu) - KEY_CURRENCY_UNIT = 0xB4, // Disabled (Ubuntu) - KEY_CURRENCY_SUB_UNIT = 0xB5, // Disabled (Ubuntu) - KEYPAD_LEFT_BRACE = 0xB6, // ( - KEYPAD_RIGHT_BRACE = 0xB7, // ) - KEYPAD_LEFT_CURLY_BRACE = 0xB8, // Disabled (Ubuntu) - KEYPAD_RIGHT_CURLY_BRACE = 0xB9, // Disabled (Ubuntu) - KEYPAD_TAB = 0xBA, // Disabled (Ubuntu) - KEYPAD_BACKSPACE = 0xBB, // Disabled (Ubuntu) - KEYPAD_A = 0xBC, // Disabled (Ubuntu) - KEYPAD_B = 0xBD, // Disabled (Ubuntu) - KEYPAD_C = 0xBE, // Disabled (Ubuntu) - KEYPAD_D = 0xBF, // Disabled (Ubuntu) - KEYPAD_E = 0xC0, // Disabled (Ubuntu) - KEYPAD_F = 0xC1, // Disabled (Ubuntu) - KEYPAD_XOR = 0xC2, // Disabled (Ubuntu) - KEYPAD_CARET = 0xC3, // Disabled (Ubuntu) - KEYPAD_PERCENT = 0xC4, // Disabled (Ubuntu) - KEYPAD_LESS_THAN = 0xC5, // Disabled (Ubuntu) - KEYPAD_GREATER_THAN = 0xC6, // Disabled (Ubuntu) - KEYPAD_AMPERSAND = 0xC7, // Disabled (Ubuntu) - KEYPAD_DOUBLEAMPERSAND = 0xC8, // Disabled (Ubuntu) - KEYPAD_PIPE = 0xC9, // Disabled (Ubuntu) - KEYPAD_DOUBLEPIPE = 0xCA, // Disabled (Ubuntu) - KEYPAD_COLON = 0xCB, // Disabled (Ubuntu) - KEYPAD_POUND_SIGN = 0xCC, // Disabled (Ubuntu) - KEYPAD_SPACE = 0xCD, // Disabled (Ubuntu) - KEYPAD_AT_SIGN = 0xCE, // Disabled (Ubuntu) - KEYPAD_EXCLAMATION_POINT = 0xCF, // Disabled (Ubuntu) - KEYPAD_MEMORY_STORE = 0xD0, // Disabled (Ubuntu) - KEYPAD_MEMORY_RECALL = 0xD1, // Disabled (Ubuntu) - KEYPAD_MEMORY_CLEAR = 0xD2, // Disabled (Ubuntu) - KEYPAD_MEMORY_ADD = 0xD3, // Disabled (Ubuntu) - KEYPAD_MEMORY_SUBTRACT = 0xD4, // Disabled (Ubuntu) - KEYPAD_MEMORY_MULTIPLY = 0xD5, // Disabled (Ubuntu) - KEYPAD_MEMORY_DIVIDE = 0xD6, // Disabled (Ubuntu) - KEYPAD_PLUS_MINUS = 0xD7, // Disabled (Ubuntu) - KEYPAD_CLEAR = 0xD8, // Delete (Ubuntu) - KEYPAD_CLEAR_ENTRY = 0xD9, // Disabled (Ubuntu) - KEYPAD_BINARY = 0xDA, // Disabled (Ubuntu) - KEYPAD_OCTAL = 0xDB, // Disabled (Ubuntu) - KEYPAD_DECIMAL = 0xDC, // Disabled (Ubuntu) - KEYPAD_HEXADECIMAL = 0xDD, // Disabled (Ubuntu) - - KEY_LEFT_CTRL = 0xE0, - KEY_LEFT_SHIFT = 0xE1, - KEY_LEFT_ALT = 0xE2, - KEY_LEFT_GUI = 0xE3, - KEY_LEFT_WINDOWS = 0xE3, // Alias - KEY_RIGHT_CTRL = 0xE4, - KEY_RIGHT_SHIFT = 0xE5, - KEY_RIGHT_ALT = 0xE6, - KEY_RIGHT_GUI = 0xE7, - KEY_RIGHT_WINDOWS = 0xE7, // Alias - - // Keyboard HID mappings - - // Reserved (no_event_indicated) - HID_KEYBOARD_ERROR_ROLLOVER = 0x01, - HID_KEYBOARD_POST_FAIL = 0x02, - HID_KEYBOARD_ERROR_UNDEFINED = 0x03, - HID_KEYBOARD_A_AND_A = 0x04, - HID_KEYBOARD_B_AND_B = 0x05, - HID_KEYBOARD_C_AND_C = 0x06, - HID_KEYBOARD_D_AND_D = 0x07, - HID_KEYBOARD_E_AND_E = 0x08, - HID_KEYBOARD_F_AND_F = 0x09, - HID_KEYBOARD_G_AND_G = 0x0A, - HID_KEYBOARD_H_AND_H = 0x0B, - HID_KEYBOARD_I_AND_I = 0x0C, - HID_KEYBOARD_J_AND_J = 0x0D, - HID_KEYBOARD_K_AND_K = 0x0E, - HID_KEYBOARD_L_AND_L = 0x0F, - HID_KEYBOARD_M_AND_M = 0x10, - HID_KEYBOARD_N_AND_N = 0x11, - HID_KEYBOARD_O_AND_O = 0x12, - HID_KEYBOARD_P_AND_P = 0x13, - HID_KEYBOARD_Q_AND_Q = 0x14, - HID_KEYBOARD_R_AND_R = 0x15, - HID_KEYBOARD_S_AND_S = 0x16, - HID_KEYBOARD_T_AND_T = 0x17, - HID_KEYBOARD_U_AND_U = 0x18, - HID_KEYBOARD_V_AND_V = 0x19, - HID_KEYBOARD_W_AND_W = 0x1A, - HID_KEYBOARD_X_AND_X = 0x1B, - HID_KEYBOARD_Y_AND_Y = 0x1C, - HID_KEYBOARD_Z_AND_Z = 0x1D, - HID_KEYBOARD_1_AND_EXCLAMATION_POINT= 0x1E, - HID_KEYBOARD_2_AND_AT = 0x1F, - HID_KEYBOARD_3_AND_POUND = 0x20, - HID_KEYBOARD_4_AND_DOLLAR = 0x21, - HID_KEYBOARD_5_AND_PERCENT = 0x22, - HID_KEYBOARD_6_AND_CARAT = 0x23, - HID_KEYBOARD_7_AND_AMPERSAND = 0x24, - HID_KEYBOARD_8_AND_ASTERISK = 0x25, - HID_KEYBOARD_9_AND_LEFT_PAREN = 0x26, - HID_KEYBOARD_0_AND_RIGHT_PAREN = 0x27, - HID_KEYBOARD_ENTER = 0x28, // (MARKED AS ENTER_SLASH_RETURN) - HID_KEYBOARD_ESCAPE = 0x29, - HID_KEYBOARD_DELETE = 0x2A, // (BACKSPACE) - HID_KEYBOARD_TAB = 0x2B, - HID_KEYBOARD_SPACEBAR = 0x2C, - HID_KEYBOARD_MINUS_AND_UNDERSCORE = 0x2D, // (UNDERSCORE) - HID_KEYBOARD_EQUALS_AND_PLUS = 0x2E, - HID_KEYBOARD_LEFT_BRACKET_AND_LEFT_CURLY_BRACE = 0x2F, - HID_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_CURLY_BRACE = 0x30, - HID_KEYBOARD_BACKSLASH_AND_PIPE = 0x31, - HID_KEYBOARD_NON_US_POUND_AND_TILDE = 0x32, - HID_KEYBOARD_SEMICOLON_AND_COLON = 0x33, - HID_KEYBOARD_QUOTE_AND_DOUBLEQUOTE = 0x34, - HID_KEYBOARD_GRAVE_ACCENT_AND_TILDE = 0x35, - HID_KEYBOARD_COMMA_AND_LESS_THAN = 0x36, - HID_KEYBOARD_PERIOD_AND_GREATER_THAN = 0x37, - HID_KEYBOARD_SLASH_AND_QUESTION_MARK = 0x38, - HID_KEYBOARD_CAPS_LOCK = 0x39, - HID_KEYBOARD_F1 = 0x3A, - HID_KEYBOARD_F2 = 0x3B, - HID_KEYBOARD_F3 = 0x3C, - HID_KEYBOARD_F4 = 0x3D, - HID_KEYBOARD_F5 = 0x3E, - HID_KEYBOARD_F6 = 0x3F, - HID_KEYBOARD_F7 = 0x40, - HID_KEYBOARD_F8 = 0x41, - HID_KEYBOARD_F9 = 0x42, - HID_KEYBOARD_F10 = 0x43, - HID_KEYBOARD_F11 = 0x44, - HID_KEYBOARD_F12 = 0x45, - HID_KEYBOARD_PRINTSCREEN = 0x46, - HID_KEYBOARD_SCROLL_LOCK = 0x47, - HID_KEYBOARD_PAUSE = 0x48, - HID_KEYBOARD_INSERT = 0x49, - HID_KEYBOARD_HOME = 0x4A, - HID_KEYBOARD_PAGE_UP = 0x4B, - HID_KEYBOARD_DELETE_FORWARD = 0x4C, - HID_KEYBOARD_END = 0x4D, - HID_KEYBOARD_PAGE_DOWN = 0x4E, - HID_KEYBOARD_RIGHTARROW = 0x4F, - HID_KEYBOARD_LEFTARROW = 0x50, - HID_KEYBOARD_DOWNARROW = 0x51, - HID_KEYBOARD_UPARROW = 0x52, - HID_KEYPAD_NUM_LOCK_AND_CLEAR = 0x53, - HID_KEYPAD_DIVIDE = 0x54, - HID_KEYPAD_MULTIPLY = 0x55, - HID_KEYPAD_SUBTRACT = 0x56, - HID_KEYPAD_ADD = 0x57, - HID_KEYPAD_ENTER = 0x58, - HID_KEYPAD_1_AND_END = 0x59, - HID_KEYPAD_2_AND_DOWN_ARROW = 0x5A, - HID_KEYPAD_3_AND_PAGE_DOWN = 0x5B, - HID_KEYPAD_4_AND_LEFT_ARROW = 0x5C, - HID_KEYPAD_5 = 0x5D, - HID_KEYPAD_6_AND_RIGHT_ARROW = 0x5E, - HID_KEYPAD_7_AND_HOME = 0x5F, - HID_KEYPAD_8_AND_UP_ARROW = 0x60, - HID_KEYPAD_9_AND_PAGE_UP = 0x61, - HID_KEYPAD_0_AND_INSERT = 0x62, - HID_KEYPAD_PERIOD_AND_DELETE = 0x63, - HID_KEYBOARD_NON_US_BACKSLASH_AND_PIPE = 0x64, - HID_KEYBOARD_APPLICATION = 0x65, - HID_KEYBOARD_POWER = 0x66, - HID_KEYPAD_EQUALS = 0x67, - HID_KEYBOARD_F13 = 0x68, - HID_KEYBOARD_F14 = 0x69, - HID_KEYBOARD_F15 = 0x6A, - HID_KEYBOARD_F16 = 0x6B, - HID_KEYBOARD_F17 = 0x6C, - HID_KEYBOARD_F18 = 0x6D, - HID_KEYBOARD_F19 = 0x6E, - HID_KEYBOARD_F20 = 0x6F, - HID_KEYBOARD_F21 = 0x70, - HID_KEYBOARD_F22 = 0x71, - HID_KEYBOARD_F23 = 0x72, - HID_KEYBOARD_F24 = 0x73, - HID_KEYBOARD_EXECUTE = 0x74, - HID_KEYBOARD_HELP = 0x75, - HID_KEYBOARD_MENU = 0x76, - HID_KEYBOARD_SELECT = 0x77, - HID_KEYBOARD_STOP = 0x78, - HID_KEYBOARD_AGAIN = 0x79, - HID_KEYBOARD_UNDO = 0x7A, - HID_KEYBOARD_CUT = 0x7B, - HID_KEYBOARD_COPY = 0x7C, - HID_KEYBOARD_PASTE = 0x7D, - HID_KEYBOARD_FIND = 0x7E, - HID_KEYBOARD_MUTE = 0x7F, - HID_KEYBOARD_VOLUME_UP = 0x80, - HID_KEYBOARD_VOLUME_DOWN = 0x81, - HID_KEYBOARD_LOCKING_CAPS_LOCK = 0x82, - HID_KEYBOARD_LOCKING_NUM_LOCK = 0x83, - HID_KEYBOARD_LOCKING_SCROLL_LOCK = 0x84, - HID_KEYPAD_COMMA = 0x85, - HID_KEYPAD_EQUAL_SIGN = 0x86, - HID_KEYBOARD_INTERNATIONAL1 = 0x87, - HID_KEYBOARD_INTERNATIONAL2 = 0x88, - HID_KEYBOARD_INTERNATIONAL3 = 0x89, - HID_KEYBOARD_INTERNATIONAL4 = 0x8A, - HID_KEYBOARD_INTERNATIONAL5 = 0x8B, - HID_KEYBOARD_INTERNATIONAL6 = 0x8C, - HID_KEYBOARD_INTERNATIONAL7 = 0x8D, - HID_KEYBOARD_INTERNATIONAL8 = 0x8E, - HID_KEYBOARD_INTERNATIONAL9 = 0x8F, - HID_KEYBOARD_LANG1 = 0x90, - HID_KEYBOARD_LANG2 = 0x91, - HID_KEYBOARD_LANG3 = 0x92, - HID_KEYBOARD_LANG4 = 0x93, - HID_KEYBOARD_LANG5 = 0x94, - HID_KEYBOARD_LANG6 = 0x95, - HID_KEYBOARD_LANG7 = 0x96, - HID_KEYBOARD_LANG8 = 0x97, - HID_KEYBOARD_LANG9 = 0x98, - HID_KEYBOARD_ALTERNATE_ERASE = 0x99, - HID_KEYBOARD_SYSREQ_SLASH_ATTENTION = 0x9A, - HID_KEYBOARD_CANCEL = 0x9B, - HID_KEYBOARD_CLEAR = 0x9C, - HID_KEYBOARD_PRIOR = 0x9D, - HID_KEYBOARD_RETURN = 0x9E, - HID_KEYBOARD_SEPARATOR = 0x9F, - HID_KEYBOARD_OUT = 0xA0, - HID_KEYBOARD_OPER = 0xA1, - HID_KEYBOARD_CLEAR_SLASH_AGAIN = 0xA2, - HID_KEYBOARD_CRSEL_SLASH_PROPS = 0xA3, - HID_KEYBOARD_EXSEL = 0xA4, - // Reserved 0xA5-AF - HID_KEYPAD_00 = 0xB0, - HID_KEYPAD_000 = 0xB1, - HID_THOUSANDS_SEPARATOR = 0xB2, - HID_DECIMAL_SEPARATOR = 0xB3, - HID_CURRENCY_UNIT = 0xB4, - HID_CURRENCY_SUBUNIT = 0xB5, - HID_KEYPAD_LEFT_PAREN = 0xB6, - HID_KEYPAD_RIGHT_PAREN = 0xB7, - HID_KEYPAD_LEFT_CURLY_BRACE = 0xB8, - HID_KEYPAD_RIGHT_CURLY_BRACE = 0xB9, - HID_KEYPAD_TAB = 0xBA, - HID_KEYPAD_BACKSPACE = 0xBB, - HID_KEYPAD_A = 0xBC, - HID_KEYPAD_B = 0xBD, - HID_KEYPAD_C = 0xBE, - HID_KEYPAD_D = 0xBF, - HID_KEYPAD_E = 0xC0, - HID_KEYPAD_F = 0xC1, - HID_KEYPAD_XOR = 0xC2, - HID_KEYPAD_CARAT = 0xC3, - HID_KEYPAD_PERCENT = 0xC4, - HID_KEYPAD_LESS_THAN = 0xC5, - HID_KEYPAD_GREATER_THAN = 0xC6, - HID_KEYPAD_AMPERSAND = 0xC7, - HID_KEYPAD_DOUBLEAMPERSAND = 0xC8, - HID_KEYPAD_PIPE = 0xC9, - HID_KEYPAD_DOUBLEPIPE = 0xCA, - HID_KEYPAD_COLON = 0xCB, - HID_KEYPAD_POUND_SIGN = 0xCC, - HID_KEYPAD_SPACE = 0xCD, - HID_KEYPAD_AT_SIGN = 0xCE, - HID_KEYPAD_EXCLAMATION_POINT = 0xCF, - HID_KEYPAD_MEMORY_STORE = 0xD0, - HID_KEYPAD_MEMORY_RECALL = 0xD1, - HID_KEYPAD_MEMORY_CLEAR = 0xD2, - HID_KEYPAD_MEMORY_ADD = 0xD3, - HID_KEYPAD_MEMORY_SUBTRACT = 0xD4, - HID_KEYPAD_MEMORY_MULTIPLY = 0xD5, - HID_KEYPAD_MEMORY_DIVIDE = 0xD6, - HID_KEYPAD_PLUS_SLASH_MINUS = 0xD7, - HID_KEYPAD_CLEAR = 0xD8, - HID_KEYPAD_CLEAR_ENTRY = 0xD9, - HID_KEYPAD_BINARY = 0xDA, - HID_KEYPAD_OCTAL = 0xDB, - HID_KEYPAD_DECIMAL = 0xDC, - HID_KEYPAD_HEXADECIMAL = 0xDD, - - // 0xDE-0xDF - RESERVED - HID_KEYBOARD_LEFT_CONTROL = 0xE0, - HID_KEYBOARD_LEFT_SHIFT = 0xE1, - HID_KEYBOARD_LEFT_ALT = 0xE2, - HID_KEYBOARD_LEFT_GUI = 0xE3, - HID_KEYBOARD_RIGHT_CONTROL = 0xE4, - HID_KEYBOARD_RIGHT_SHIFT = 0xE5, - HID_KEYBOARD_RIGHT_ALT = 0xE6, - HID_KEYBOARD_RIGHT_GUI = 0xE7, -}; - - - -static const uint16_t _asciimap[] PROGMEM = -{ - KEY_RESERVED, // NUL - KEY_RESERVED, // SOH - KEY_RESERVED, // STX - KEY_RESERVED, // ETX - KEY_RESERVED, // EOT - KEY_RESERVED, // ENQ - KEY_RESERVED, // ACK - KEY_RESERVED, // BEL - KEY_BACKSPACE, // BS Backspace - KEY_TAB, // TAB Tab - KEY_ENTER, // LF Enter - KEY_RESERVED, // VT - KEY_RESERVED, // FF - KEY_RESERVED, // CR - KEY_RESERVED, // SO - KEY_RESERVED, // SI - KEY_RESERVED, // DEL - KEY_RESERVED, // DC1 - KEY_RESERVED, // DC2 - KEY_RESERVED, // DC3 - KEY_RESERVED, // DC4 - KEY_RESERVED, // NAK - KEY_RESERVED, // SYN - KEY_RESERVED, // ETB - KEY_RESERVED, // CAN - KEY_RESERVED, // EM - KEY_RESERVED, // SUB - KEY_RESERVED, // ESC - KEY_RESERVED, // FS - KEY_RESERVED, // GS - KEY_RESERVED, // RS - KEY_RESERVED, // US - - KEY_SPACE, // ' ' Space - KEY_1|MOD_LEFT_SHIFT, // ! - KEY_QUOTE|MOD_LEFT_SHIFT, // " - KEY_3|MOD_LEFT_SHIFT, // # - KEY_4|MOD_LEFT_SHIFT, // $ - KEY_5|MOD_LEFT_SHIFT, // % - KEY_7|MOD_LEFT_SHIFT, // & - KEY_QUOTE, // ' - KEY_9|MOD_LEFT_SHIFT, // ( - KEY_0|MOD_LEFT_SHIFT, // ) - KEY_8|MOD_LEFT_SHIFT, // * - KEY_EQUAL|MOD_LEFT_SHIFT, // + - KEY_COMMA, // , - KEY_MINUS, // - - KEY_PERIOD, // . - KEY_SLASH, // / - KEY_0, // 0 - KEY_1, // 1 - KEY_2, // 2 - KEY_3, // 3 - KEY_4, // 4 - KEY_5, // 5 - KEY_6, // 6 - KEY_7, // 7 - KEY_8, // 8 - KEY_9, // 9 - KEY_SEMICOLON|MOD_LEFT_SHIFT, // : - KEY_SEMICOLON, // ; - KEY_COMMA|MOD_LEFT_SHIFT, // < - KEY_EQUAL, // = - KEY_PERIOD|MOD_LEFT_SHIFT, // > - KEY_SLASH|MOD_LEFT_SHIFT, // ? - KEY_2|MOD_LEFT_SHIFT, // @ - KEY_A|MOD_LEFT_SHIFT, // A - KEY_B|MOD_LEFT_SHIFT, // B - KEY_C|MOD_LEFT_SHIFT, // C - KEY_D|MOD_LEFT_SHIFT, // D - KEY_E|MOD_LEFT_SHIFT, // E - KEY_F|MOD_LEFT_SHIFT, // F - KEY_G|MOD_LEFT_SHIFT, // G - KEY_H|MOD_LEFT_SHIFT, // H - KEY_I|MOD_LEFT_SHIFT, // I - KEY_J|MOD_LEFT_SHIFT, // J - KEY_K|MOD_LEFT_SHIFT, // K - KEY_L|MOD_LEFT_SHIFT, // L - KEY_M|MOD_LEFT_SHIFT, // M - KEY_N|MOD_LEFT_SHIFT, // N - KEY_O|MOD_LEFT_SHIFT, // O - KEY_P|MOD_LEFT_SHIFT, // P - KEY_Q|MOD_LEFT_SHIFT, // Q - KEY_R|MOD_LEFT_SHIFT, // R - KEY_S|MOD_LEFT_SHIFT, // S - KEY_T|MOD_LEFT_SHIFT, // T - KEY_U|MOD_LEFT_SHIFT, // U - KEY_V|MOD_LEFT_SHIFT, // V - KEY_W|MOD_LEFT_SHIFT, // W - KEY_X|MOD_LEFT_SHIFT, // X - KEY_Y|MOD_LEFT_SHIFT, // Y - KEY_Z|MOD_LEFT_SHIFT, // Z - KEY_LEFT_BRACE, // [ - KEY_BACKSLASH, // bslash - KEY_RIGHT_BRACE, // ] - KEY_6|MOD_LEFT_SHIFT, // ^ - KEY_MINUS|MOD_LEFT_SHIFT, // _ - KEY_TILDE, // ` - KEY_A, // a - KEY_B, // b - KEY_C, // c - KEY_D, // d - KEY_E, // e - KEY_F, // f - KEY_G, // g - KEY_H, // h - KEY_I, // i - KEY_J, // j - KEY_K, // k - KEY_L, // l - KEY_M, // m - KEY_N, // n - KEY_O, // o - KEY_P, // p - KEY_Q, // q - KEY_R, // r - KEY_S, // s - KEY_T, // t - KEY_U, // u - KEY_V, // v - KEY_W, // w - KEY_X, // x - KEY_Y, // y - KEY_Z, // z - KEY_LEFT_BRACE|MOD_LEFT_SHIFT, // { - KEY_BACKSLASH|MOD_LEFT_SHIFT, // | - KEY_RIGHT_BRACE|MOD_LEFT_SHIFT, // } - KEY_TILDE|MOD_LEFT_SHIFT, // ~ - KEY_RESERVED // DEL -}; diff --git a/src/KeyboardLayouts/KeyboardLayouts.h b/src/KeyboardLayouts/KeyboardLayouts.h new file mode 100644 index 0000000..82abfad --- /dev/null +++ b/src/KeyboardLayouts/KeyboardLayouts.h @@ -0,0 +1,19 @@ +/* + KeyboardLayouts.h + + Author: MRNIU + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ diff --git a/src/KeyboardLayouts/README.adoc b/src/KeyboardLayouts/README.adoc deleted file mode 100644 index 1c2e719..0000000 --- a/src/KeyboardLayouts/README.adoc +++ /dev/null @@ -1,67 +0,0 @@ -= Contributors = - -Original code (pre-library): https://github.com/NicoHood/HID[NicoHood/HID] - -* Links/Credits - -** http://www.fourwalledcubicle.com/LUFA.php[LUFA from Dean Camera] - -** https://github.com/harlequin-tech/arduino-usb[Darran's HID Projects] - -** http://www.imaginaryindustries.com/blog/?p=80[Connor's Joystick for the Leonardo] - -** http://stefanjones.ca/blog/arduino-leonardo-remote-multimedia-keys/[Stefan Jones Multimedia Keys Example] - -** https://github.com/aduitsis/ardumultimedia[Athanasios Douitsis Multimedia Keys Example] - -** https://github.com/arduino/ArduinoCore-avr/tree/master/firmwares/atmegaxxu2/arduino-usbserial[The Original Arduino Sources] - -** http://www.usblyzer.com/[USBlyzer] - -** https://www.mattairtech.com/index.php/old-products/mt-db-u1.html[Mattairtechs 16u2 Lufa USB Core] - -** https://github.com/pbrook/minimus-arduino[Paul Brook's Minimus 32u2 Arduino USB Core] - -** https://github.com/PaulStoffregen/cores[Paul Stoffregen's Teensy Core] - -** http://forum.arduino.cc/index.php?topic=173583.0[Keyboard Led Out report by hartmut_holgraefe] - -** https://github.com/arduino/Arduino/pull/1803[Github Pull Request with a lot of new functions] - -** https://petervanhoyweghen.wordpress.com/2012/09/16/arduinoisp-on-the-leonardo/[Arduino ISP fix] - -** A lot of searching through the web - -** The awesome official Arduino IRC chat! - -** https://github.com/NicoHood/NicoHoodProtocol[The NicoHood Protocol] - -** See HoodLoader1&2 repository for more credits/links - -See https://github.com/NicoHood/HID/wiki/Useful-Links-Credits[NicoHood/HID/wiki/Useful-Links-Credits] for the whole information. - -* Contributor - -** https://github.com/MRNIU[MRNIU] - -== License == - -Copyright (c) 2014-2015 NicoHood - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. From e7a586c29046ab1aa22fe300733427cbadf52b0b Mon Sep 17 00:00:00 2001 From: MRNIU Date: Sun, 26 Apr 2020 14:15:38 +0800 Subject: [PATCH 24/25] Use new KeyboardLayouts: from MRNIU/SimpleKernel. Keyboard.cpp need change. --- src/Keyboard.cpp | 20 +-- src/Keyboard.h | 2 +- src/KeyboardLayouts/KeyboardLayouts.h | 245 ++++++++++++++++++++++++++ 3 files changed, 256 insertions(+), 11 deletions(-) diff --git a/src/Keyboard.cpp b/src/Keyboard.cpp index 304ce9b..ad939a4 100644 --- a/src/Keyboard.cpp +++ b/src/Keyboard.cpp @@ -88,19 +88,19 @@ void Keyboard_::sendReport(KeyReport* keys) HID().SendReport(HID_REPORTID_KEYBOARD, keys, sizeof(KeyReport)); } -size_t Keyboard_::set(KeyboardKeycode k, bool s) +size_t Keyboard_::set(uint8_t k, bool s) { + auto letter = keymap[(uint32_t)(k * 3)]; // It's a modifier key - if(k >= KEY_LEFT_CTRL && k <= KEY_RIGHT_GUI) + if(letter >= KEY_LEFT_CTRL && letter <= KEY_RIGHT_GUI) { // Convert key into bitfield (0 - 7) // k = KeyboardKeycode(uint8_t(k) - uint8_t(KEY_LEFT_CTRL)); - k = _asciimap + k; if(s){ - _keyReport.modifiers |= (1 << k); + _keyReport.modifiers |= (1 << letter); } else{ - _keyReport.modifiers &= ~(1 << k); + _keyReport.modifiers &= ~(1 << letter); } return 1; } @@ -116,7 +116,7 @@ size_t Keyboard_::set(KeyboardKeycode k, bool s) { auto key = _keyReport.keycodes[i]; // if target key is found - if (key == uint8_t(k)) { + if (key == letter) { // do nothing and exit return 1; } @@ -129,7 +129,7 @@ size_t Keyboard_::set(KeyboardKeycode k, bool s) // if first instance of empty slot is found if (key == KEY_RESERVED) { // change empty slot to k and exit - _keyReport.keycodes[i] = k; + _keyReport.keycodes[i] = letter; return 1; } } @@ -139,7 +139,7 @@ size_t Keyboard_::set(KeyboardKeycode k, bool s) { auto key = _keyReport.keycodes[i]; // if target key is found - if (key == k) { + if (key == letter) { // remove target and exit _keyReport.keycodes[i] = KEY_RESERVED; return 1; @@ -161,7 +161,7 @@ uint8_t USBPutChar(uint8_t c); size_t Keyboard_::press(uint8_t k) { // Press key and send report to host - auto ret = set((KeyboardKeycode)k, true); + auto ret = set(k, true); if(ret){ sendReport(&_keyReport); return 1; @@ -174,7 +174,7 @@ size_t Keyboard_::press(uint8_t k) // it shouldn't be repeated any more. size_t Keyboard_::release(uint8_t k) { - auto ret = set((KeyboardKeycode)k, false); + auto ret = set(k, false); if(ret){ sendReport(&_keyReport); return 1; diff --git a/src/Keyboard.h b/src/Keyboard.h index e8abf55..3dd732a 100644 --- a/src/Keyboard.h +++ b/src/Keyboard.h @@ -50,7 +50,7 @@ class Keyboard_ : public Print private: KeyReport _keyReport; void sendReport(KeyReport* keys); - size_t set(KeyboardKeycode k, bool s); + size_t set(uint8_t k, bool s); public: Keyboard_(void); void begin(void); diff --git a/src/KeyboardLayouts/KeyboardLayouts.h b/src/KeyboardLayouts/KeyboardLayouts.h index 82abfad..170d249 100644 --- a/src/KeyboardLayouts/KeyboardLayouts.h +++ b/src/KeyboardLayouts/KeyboardLayouts.h @@ -17,3 +17,248 @@ License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ + +#ifndef KEYBOARDLAYOUTS_h +#define KEYBOARDLAYOUTS_h + +#define KB_BACKSPACE (0x0E) +#define KB_ENTER (0x1C) +#define KB_TAB (0x0F) +#define KB_ESC (0x01) +#define KB_SHIFT_L (0x2A) +#define KB_SHIFT_R (0x36) +#define KB_ALT_L (0x38) +#define KB_CAPS_LOCK (0x3A) +#define KB_CTRL_L (0x1D) +#define KB_NUM_LOCK (0x45) + +// Number of columns in keyma +#define MAP_COLS (3) +// Number of scan codes (rows in keymap) +#define MAP_LINES (0x80) + +// Press or release +#define RELEASED_MASK (0x80) + +// Normal function keys +#define FLAG_EXT (0x00) + +// Special keys +#define ESC (0x01 & FLAG_EXT) +#define TAB (0x02 & FLAG_EXT) +#define ENTER (0x03 & FLAG_EXT) +#define BACKSPACE (0x04 & FLAG_EXT) + +#define GUI_L (0x05 & FLAG_EXT) +#define GUI_R (0x06 & FLAG_EXT) +#define APPS (0x07 & FLAG_EXT) + +// Shift, Ctrl, Alt +#define SHIFT_L (0x08 & FLAG_EXT) +#define SHIFT_R (0x09 & FLAG_EXT) +#define CTRL_L (0x0A & FLAG_EXT) +#define CTRL_R (0x0B & FLAG_EXT) +#define ALT_L (0x0C & FLAG_EXT) +#define ALT_R (0x0D & FLAG_EXT) + +// Lock keys +#define CAPS_LOCK (0x0E & FLAG_EXT) +#define NUM_LOCK (0x0F & FLAG_EXT) +#define SCROLL_LOCK (0x10 & FLAG_EXT) + +// Function keys +#define F1 (0x11 & FLAG_EXT) +#define F2 (0x12 & FLAG_EXT) +#define F3 (0x13 & FLAG_EXT) +#define F4 (0x14 & FLAG_EXT) +#define F5 (0x15 & FLAG_EXT) +#define F6 (0x16 & FLAG_EXT) +#define F7 (0x17 & FLAG_EXT) +#define F8 (0x18 & FLAG_EXT) +#define F9 (0x19 & FLAG_EXT) +#define F10 (0x1A & FLAG_EXT) +#define F11 (0x1B & FLAG_EXT) +#define F12 (0x1C & FLAG_EXT) + +// Control Pad +#define PRINTSCREEN (0x1D & FLAG_EXT) +#define PAUSEBREAK (0x1E & FLAG_EXT) +#define INSERT (0x1F & FLAG_EXT) +#define DELETE (0x20 & FLAG_EXT) +#define HOME (0x21 & FLAG_EXT) +#define END (0x22 & FLAG_EXT) +#define PAGEUP (0x23 & FLAG_EXT) +#define PAGEDOWN (0x24 & FLAG_EXT) +#define UP (0x25 & FLAG_EXT) +#define DOWN (0x26 & FLAG_EXT) +#define LEFT (0x27 & FLAG_EXT) +#define RIGHT (0x28 & FLAG_EXT) + +// ACPI keys +#define POWER (0x29 & FLAG_EXT) +#define SLEEP (0x2A & FLAG_EXT) +#define WAKE (0x2B & FLAG_EXT) + +// Num Pad +#define PAD_SLASH (0x2C & FLAG_EXT) +#define PAD_STAR (0x2D & FLAG_EXT) +#define PAD_MINUS (0x2E & FLAG_EXT) +#define PAD_PLUS (0x2F & FLAG_EXT) +#define PAD_ENTER (0x30 & FLAG_EXT) +#define PAD_DOT (0x31 & FLAG_EXT) +#define PAD_0 (0x32 & FLAG_EXT) +#define PAD_1 (0x33 & FLAG_EXT) +#define PAD_2 (0x34 & FLAG_EXT) +#define PAD_3 (0x35 & FLAG_EXT) +#define PAD_4 (0x36 & FLAG_EXT) +#define PAD_5 (0x37 & FLAG_EXT) +#define PAD_6 (0x38 & FLAG_EXT) +#define PAD_7 (0x39 & FLAG_EXT) +#define PAD_8 (0x3A & FLAG_EXT) +#define PAD_9 (0x3B & FLAG_EXT) +#define PAD_UP PAD_8 +#define PAD_DOWN PAD_2 +#define PAD_LEFT PAD_4 +#define PAD_RIGHT PAD_6 +#define PAD_HOME PAD_7 +#define PAD_END PAD_1 +#define PAD_PAGEUP PAD_9 +#define PAD_PAGEDOWN PAD_3 +#define PAD_INS PAD_0 +#define PAD_MID PAD_5 +#define PAD_DEL PAD_DOT + +static uint8_t keymap[MAP_LINES * MAP_COLS] = { + /* scan-code !Shift Shift E0 XX */ + /* ==================================================================== */ + /* 0x00 - none */0, 0, 0, + /* 0x01 - ESC */ESC, ESC, 0, + /* 0x02 - '1' */'1', '!', 0, + /* 0x03 - '2' */'2', '@', 0, + /* 0x04 - '3' */'3', '#', 0, + /* 0x05 - '4' */'4', '$', 0, + /* 0x06 - '5' */'5', '%', 0, + /* 0x07 - '6' */'6', '^', 0, + /* 0x08 - '7' */'7', '&', 0, + /* 0x09 - '8' */'8', '*', 0, + /* 0x0A - '9' */'9', '(', 0, + /* 0x0B - '0' */'0', ')', 0, + /* 0x0C - '-' */'-', '_', 0, + /* 0x0D - '=' */'=', '+', 0, + /* 0x0E - BS */BACKSPACE, BACKSPACE, 0, + /* 0x0F - TAB */TAB, TAB, 0, + /* 0x10 - 'q' */'q', 'Q', 0, + /* 0x11 - 'w' */'w', 'W', 0, + /* 0x12 - 'e' */'e', 'E', 0, + /* 0x13 - 'r' */'r', 'R', 0, + /* 0x14 - 't' */'t', 'T', 0, + /* 0x15 - 'y' */'y', 'Y', 0, + /* 0x16 - 'u' */'u', 'U', 0, + /* 0x17 - 'i' */'i', 'I', 0, + /* 0x18 - 'o' */'o', 'O', 0, + /* 0x19 - 'p' */'p', 'P', 0, + /* 0x1A - '[' */'[', '{', 0, + /* 0x1B - ']' */']', '}', 0, + /* 0x1C - CR/LF */ENTER, ENTER, PAD_ENTER, + /* 0x1D - l. Ctrl */CTRL_L, CTRL_L, CTRL_R, + /* 0x1E - 'a' */'a', 'A', 0, + /* 0x1F - 's' */'s', 'S', 0, + /* 0x20 - 'd' */'d', 'D', 0, + /* 0x21 - 'f' */'f', 'F', 0, + /* 0x22 - 'g' */'g', 'G', 0, + /* 0x23 - 'h' */'h', 'H', 0, + /* 0x24 - 'j' */'j', 'J', 0, + /* 0x25 - 'k' */'k', 'K', 0, + /* 0x26 - 'l' */'l', 'L', 0, + /* 0x27 - ';' */';', ':', 0, + /* 0x28 - '\'' */'\'', '"', 0, + /* 0x29 - '`' */'`', '~', 0, + /* 0x2A - l. SHIFT */SHIFT_L, SHIFT_L, 0, + /* 0x2B - '\' */'\\', '|', 0, + /* 0x2C - 'z' */'z', 'Z', 0, + /* 0x2D - 'x' */'x', 'X', 0, + /* 0x2E - 'c' */'c', 'C', 0, + /* 0x2F - 'v' */'v', 'V', 0, + /* 0x30 - 'b' */'b', 'B', 0, + /* 0x31 - 'n' */'n', 'N', 0, + /* 0x32 - 'm' */'m', 'M', 0, + /* 0x33 - ',' */',', '<', 0, + /* 0x34 - '.' */'.', '>', 0, + /* 0x35 - '/' */'/', '?', PAD_SLASH, + /* 0x36 - r. SHIFT */SHIFT_R, SHIFT_R, 0, + /* 0x37 - '*' */'*', '*', 0, + /* 0x38 - ALT */ALT_L, ALT_L, ALT_R, + /* 0x39 - ' ' */' ', ' ', 0, + /* 0x3A - CapsLock */CAPS_LOCK, CAPS_LOCK, 0, + /* 0x3B - F1 */F1, F1, 0, + /* 0x3C - F2 */F2, F2, 0, + /* 0x3D - F3 */F3, F3, 0, + /* 0x3E - F4 */F4, F4, 0, + /* 0x3F - F5 */F5, F5, 0, + /* 0x40 - F6 */F6, F6, 0, + /* 0x41 - F7 */F7, F7, 0, + /* 0x42 - F8 */F8, F8, 0, + /* 0x43 - F9 */F9, F9, 0, + /* 0x44 - F10 */F10, F10, 0, + /* 0x45 - NumLock */NUM_LOCK, NUM_LOCK, 0, + /* 0x46 - ScrLock */SCROLL_LOCK, SCROLL_LOCK, 0, + /* 0x47 - Home */PAD_HOME, '7', HOME, + /* 0x48 - CurUp */PAD_UP, '8', UP, + /* 0x49 - PgUp */PAD_PAGEUP, '9', PAGEUP, + /* 0x4A - '-' */PAD_MINUS, '-', 0, + /* 0x4B - Left */PAD_LEFT, '4', LEFT, + /* 0x4C - MID */PAD_MID, '5', 0, + /* 0x4D - Right */PAD_RIGHT, '6', RIGHT, + /* 0x4E - '+' */PAD_PLUS, '+', 0, + /* 0x4F - End */PAD_END, '1', END, + /* 0x50 - Down */PAD_DOWN, '2', DOWN, + /* 0x51 - PgDown */PAD_PAGEDOWN, '3', PAGEDOWN, + /* 0x52 - Insert */PAD_INS, '0', INSERT, + /* 0x53 - Delete */PAD_DOT, '.', DELETE, + /* 0x54 - Enter */0, 0, 0, + /* 0x55 - ??? */0, 0, 0, + /* 0x56 - ??? */0, 0, 0, + /* 0x57 - F11 */F11, F11, 0, + /* 0x58 - F12 */F12, F12, 0, + /* 0x59 - ??? */0, 0, 0, + /* 0x5A - ??? */0, 0, 0, + /* 0x5B - ??? */0, 0, GUI_L, + /* 0x5C - ??? */0, 0, GUI_R, + /* 0x5D - ??? */0, 0, APPS, + /* 0x5E - ??? */0, 0, 0, + /* 0x5F - ??? */0, 0, 0, + /* 0x60 - ??? */0, 0, 0, + /* 0x61 - ??? */0, 0, 0, + /* 0x62 - ??? */0, 0, 0, + /* 0x63 - ??? */0, 0, 0, + /* 0x64 - ??? */0, 0, 0, + /* 0x65 - ??? */0, 0, 0, + /* 0x66 - ??? */0, 0, 0, + /* 0x67 - ??? */0, 0, 0, + /* 0x68 - ??? */0, 0, 0, + /* 0x69 - ??? */0, 0, 0, + /* 0x6A - ??? */0, 0, 0, + /* 0x6B - ??? */0, 0, 0, + /* 0x6C - ??? */0, 0, 0, + /* 0x6D - ??? */0, 0, 0, + /* 0x6E - ??? */0, 0, 0, + /* 0x6F - ??? */0, 0, 0, + /* 0x70 - ??? */0, 0, 0, + /* 0x71 - ??? */0, 0, 0, + /* 0x72 - ??? */0, 0, 0, + /* 0x73 - ??? */0, 0, 0, + /* 0x74 - ??? */0, 0, 0, + /* 0x75 - ??? */0, 0, 0, + /* 0x76 - ??? */0, 0, 0, + /* 0x77 - ??? */0, 0, 0, + /* 0x78 - ??? */0, 0, 0, + /* 0x78 - ??? */0, 0, 0, + /* 0x7A - ??? */0, 0, 0, + /* 0x7B - ??? */0, 0, 0, + /* 0x7C - ??? */0, 0, 0, + /* 0x7D - ??? */0, 0, 0, + /* 0x7E - ??? */0, 0, 0, + /* 0x7F - ??? */0, 0, 0 +}; + +#endif /* KEYBOARDLAYOUTS_h */ From 80601504b82ee8022b6f77b54b041c0cb16f8c7f Mon Sep 17 00:00:00 2001 From: MRNIU Date: Fri, 8 May 2020 23:53:29 +0800 Subject: [PATCH 25/25] Remove layouts. Add set function --- library.properties | 2 +- src/Keyboard.cpp | 393 +++++++++++++++++--------- src/Keyboard.h | 63 ++++- src/KeyboardLayouts/KeyboardLayouts.h | 264 ----------------- 4 files changed, 309 insertions(+), 413 deletions(-) delete mode 100644 src/KeyboardLayouts/KeyboardLayouts.h diff --git a/library.properties b/library.properties index 4373325..21db3d1 100644 --- a/library.properties +++ b/library.properties @@ -1,6 +1,6 @@ name=Keyboard version=1.0.2 -author=MRNIU +author=Arduino maintainer=Arduino sentence=Allows an Arduino/Genuino board with USB capabilites to act as a Keyboard. paragraph=This library plugs on the HID library. It can be used with or without other HID-based libraries (Mouse, Gamepad etc) diff --git a/src/Keyboard.cpp b/src/Keyboard.cpp index ad939a4..fbc895e 100644 --- a/src/Keyboard.cpp +++ b/src/Keyboard.cpp @@ -3,7 +3,6 @@ Copyright (c) 2015, Arduino LLC Original code (pre-library): Copyright (c) 2011, Peter Barrett - Contributor: MRNIU This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -26,53 +25,45 @@ //================================================================================ //================================================================================ -// Keyboard +// Keyboard static const uint8_t _hidReportDescriptor[] PROGMEM = { - // Keyboard - 0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 47 - 0x09, 0x06, // USAGE (Keyboard) - 0xa1, 0x01, // COLLECTION (Application) - 0x85, HID_REPORTID_KEYBOARD, // REPORT_ID TODO order important? - 0x05, 0x07, // USAGE_PAGE (Keyboard) - - // Keyboard Modifiers (shift, alt, ...) - 0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl) - 0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI) - 0x15, 0x00, // LOGICAL_MINIMUM (0) - 0x25, 0x01, // LOGICAL_MAXIMUM (1) - 0x75, 0x01, // REPORT_SIZE (1) - 0x95, 0x08, // REPORT_COUNT (8) - 0x81, 0x02, // INPUT (Data,Var,Abs) - - // Reserved byte, used for consumer reports, only works with linux - 0x05, 0x0C, // Usage Page (Consumer) - 0x95, 0x01, // REPORT_COUNT (1) - 0x75, 0x08, // REPORT_SIZE (8) - 0x15, 0x00, // LOGICAL_MINIMUM (0) - 0x26, 0xFF, 0x00, // LOGICAL_MAXIMUM (255) - 0x19, 0x00, // USAGE_MINIMUM (0) - 0x29, 0xFF, // USAGE_MAXIMUM (255) - 0x81, 0x00, // INPUT (Data,Ary,Abs) - - // 6 Keyboard keys - 0x05, 0x07, // USAGE_PAGE (Keyboard) - 0x95, 0x06, // REPORT_COUNT (6) - 0x75, 0x08, // REPORT_SIZE (8) - 0x15, 0x00, // LOGICAL_MINIMUM (0) - 0x26, 0xE7, 0x00, // LOGICAL_MAXIMUM (231) - 0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated)) - 0x29, 0xE7, // USAGE_MAXIMUM (Keyboard Right GUI) - 0x81, 0x00, // INPUT (Data,Ary,Abs) - - // End - 0xc0 // END_COLLECTION + + // Keyboard + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 47 + 0x09, 0x06, // USAGE (Keyboard) + 0xa1, 0x01, // COLLECTION (Application) + 0x85, 0x02, // REPORT_ID (2) + 0x05, 0x07, // USAGE_PAGE (Keyboard) + + 0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl) + 0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x75, 0x01, // REPORT_SIZE (1) + + 0x95, 0x08, // REPORT_COUNT (8) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0x95, 0x01, // REPORT_COUNT (1) + 0x75, 0x08, // REPORT_SIZE (8) + 0x81, 0x03, // INPUT (Cnst,Var,Abs) + + 0x95, 0x06, // REPORT_COUNT (6) + 0x75, 0x08, // REPORT_SIZE (8) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x73, // LOGICAL_MAXIMUM (115) + 0x05, 0x07, // USAGE_PAGE (Keyboard) + + 0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated)) + 0x29, 0x73, // USAGE_MAXIMUM (Keyboard Application) + 0x81, 0x00, // INPUT (Data,Ary,Abs) + 0xc0, // END_COLLECTION }; Keyboard_::Keyboard_(void) { - static HIDSubDescriptor node(_hidReportDescriptor, sizeof(_hidReportDescriptor)); - HID().AppendDescriptor(&node); + static HIDSubDescriptor node(_hidReportDescriptor, sizeof(_hidReportDescriptor)); + HID().AppendDescriptor(&node); } void Keyboard_::begin(void) @@ -85,88 +76,211 @@ void Keyboard_::end(void) void Keyboard_::sendReport(KeyReport* keys) { - HID().SendReport(HID_REPORTID_KEYBOARD, keys, sizeof(KeyReport)); + HID().SendReport(2,keys,sizeof(KeyReport)); } -size_t Keyboard_::set(uint8_t k, bool s) +extern +const uint8_t _asciimap[128] PROGMEM; + +#define SHIFT 0x80 +const uint8_t _asciimap[128] = { - auto letter = keymap[(uint32_t)(k * 3)]; - // It's a modifier key - if(letter >= KEY_LEFT_CTRL && letter <= KEY_RIGHT_GUI) - { - // Convert key into bitfield (0 - 7) - // k = KeyboardKeycode(uint8_t(k) - uint8_t(KEY_LEFT_CTRL)); - if(s){ - _keyReport.modifiers |= (1 << letter); - } - else{ - _keyReport.modifiers &= ~(1 << letter); - } - return 1; - } - // It's a normal key - else{ - // get size of keycodes during compile time - const uint8_t keycodesSize = sizeof(_keyReport.keycodes); - - // if we are adding an element to keycodes - if (s){ - // iterate through the keycodes - for (uint8_t i = 0; i < keycodesSize; i++) - { - auto key = _keyReport.keycodes[i]; - // if target key is found - if (key == letter) { - // do nothing and exit - return 1; - } - } - // iterate through the keycodes again, this only happens if no existing - // keycodes matches k - for (uint8_t i = 0; i < keycodesSize; i++) - { - auto key = _keyReport.keycodes[i]; - // if first instance of empty slot is found - if (key == KEY_RESERVED) { - // change empty slot to k and exit - _keyReport.keycodes[i] = letter; - return 1; - } - } - } else { // we are removing k from keycodes - // iterate through the keycodes - for (uint8_t i = 0; i < keycodesSize; i++) - { - auto key = _keyReport.keycodes[i]; - // if target key is found - if (key == letter) { - // remove target and exit - _keyReport.keycodes[i] = KEY_RESERVED; - return 1; - } - } - } - } - - // No empty/pressed key was found - return 0; -} + 0x00, // NUL + 0x00, // SOH + 0x00, // STX + 0x00, // ETX + 0x00, // EOT + 0x00, // ENQ + 0x00, // ACK + 0x00, // BEL + 0x2a, // BS Backspace + 0x2b, // TAB Tab + 0x28, // LF Enter + 0x00, // VT + 0x00, // FF + 0x00, // CR + 0x00, // SO + 0x00, // SI + 0x00, // DEL + 0x00, // DC1 + 0x00, // DC2 + 0x00, // DC3 + 0x00, // DC4 + 0x00, // NAK + 0x00, // SYN + 0x00, // ETB + 0x00, // CAN + 0x00, // EM + 0x00, // SUB + 0x00, // ESC + 0x00, // FS + 0x00, // GS + 0x00, // RS + 0x00, // US + + 0x2c, // ' ' + 0x1e|SHIFT, // ! + 0x34|SHIFT, // " + 0x20|SHIFT, // # + 0x21|SHIFT, // $ + 0x22|SHIFT, // % + 0x24|SHIFT, // & + 0x34, // ' + 0x26|SHIFT, // ( + 0x27|SHIFT, // ) + 0x25|SHIFT, // * + 0x2e|SHIFT, // + + 0x36, // , + 0x2d, // - + 0x37, // . + 0x38, // / + 0x27, // 0 + 0x1e, // 1 + 0x1f, // 2 + 0x20, // 3 + 0x21, // 4 + 0x22, // 5 + 0x23, // 6 + 0x24, // 7 + 0x25, // 8 + 0x26, // 9 + 0x33|SHIFT, // : + 0x33, // ; + 0x36|SHIFT, // < + 0x2e, // = + 0x37|SHIFT, // > + 0x38|SHIFT, // ? + 0x1f|SHIFT, // @ + 0x04|SHIFT, // A + 0x05|SHIFT, // B + 0x06|SHIFT, // C + 0x07|SHIFT, // D + 0x08|SHIFT, // E + 0x09|SHIFT, // F + 0x0a|SHIFT, // G + 0x0b|SHIFT, // H + 0x0c|SHIFT, // I + 0x0d|SHIFT, // J + 0x0e|SHIFT, // K + 0x0f|SHIFT, // L + 0x10|SHIFT, // M + 0x11|SHIFT, // N + 0x12|SHIFT, // O + 0x13|SHIFT, // P + 0x14|SHIFT, // Q + 0x15|SHIFT, // R + 0x16|SHIFT, // S + 0x17|SHIFT, // T + 0x18|SHIFT, // U + 0x19|SHIFT, // V + 0x1a|SHIFT, // W + 0x1b|SHIFT, // X + 0x1c|SHIFT, // Y + 0x1d|SHIFT, // Z + 0x2f, // [ + 0x31, // bslash + 0x30, // ] + 0x23|SHIFT, // ^ + 0x2d|SHIFT, // _ + 0x35, // ` + 0x04, // a + 0x05, // b + 0x06, // c + 0x07, // d + 0x08, // e + 0x09, // f + 0x0a, // g + 0x0b, // h + 0x0c, // i + 0x0d, // j + 0x0e, // k + 0x0f, // l + 0x10, // m + 0x11, // n + 0x12, // o + 0x13, // p + 0x14, // q + 0x15, // r + 0x16, // s + 0x17, // t + 0x18, // u + 0x19, // v + 0x1a, // w + 0x1b, // x + 0x1c, // y + 0x1d, // z + 0x2f|SHIFT, // { + 0x31|SHIFT, // | + 0x30|SHIFT, // } + 0x35|SHIFT, // ~ + 0 // DEL +}; + uint8_t USBPutChar(uint8_t c); +size_t Keyboard_::set(uint8_t k, bool s) +{ + uint8_t i; + if (k >= 136) { // it's a non-printing key (not a modifier) + k = k - 136; + } else if (k >= 128) { // it's a modifier key + if(s) _keyReport.modifiers |= (1<<(k-128)); + else _keyReport.modifiers |= (1<<(k-128)); + k = 0; + } else { // it's a printing key + k = pgm_read_byte(_asciimap + k); + // 转换成 hex 格式 + if (!k) { + if(s) setWriteError(); + return 0; + } + if (k & 0x80) { // it's a capital letter or other character reached with shift + if(s) _keyReport.modifiers |= 0x02; // the left shift modifier + else _keyReport.modifiers &= ~(0x02); + k &= 0x7F; + } + } + + if(s){ + if (_keyReport.keys[0] != k && _keyReport.keys[1] != k && + _keyReport.keys[2] != k && _keyReport.keys[3] != k && + _keyReport.keys[4] != k && _keyReport.keys[5] != k) { + + for (i=0; i<6; i++) { + if (_keyReport.keys[i] == 0x00) { + _keyReport.keys[i] = k; + break; + } + } + if (i == 6) { + setWriteError(); + return 0; + } + } + } + else { + for (i=0; i<6; i++) { + if (0 != k && _keyReport.keys[i] == k) { + _keyReport.keys[i] = 0x00; + } + } + + } + return 1; +} + // press() adds the specified key (printing, non-printing, or modifier) // to the persistent key report and sends the report. Because of the way // USB HID works, the host acts like the key remains pressed until we // call release(), releaseAll(), or otherwise clear the report and resend. size_t Keyboard_::press(uint8_t k) { - // Press key and send report to host auto ret = set(k, true); - if(ret){ - sendReport(&_keyReport); - return 1; - } - return 0; + if(ret) { + sendReport(&_keyReport); + } + return 1; } // release() takes the specified key out of the persistent key report and @@ -174,46 +288,45 @@ size_t Keyboard_::press(uint8_t k) // it shouldn't be repeated any more. size_t Keyboard_::release(uint8_t k) { - auto ret = set(k, false); - if(ret){ - sendReport(&_keyReport); - return 1; - } - return 0; + auto ret = set(k, false); + if(ret) { + sendReport(&_keyReport); + } + return 1; } void Keyboard_::releaseAll(void) { - _keyReport.keycodes[0] = 0; - _keyReport.keycodes[1] = 0; - _keyReport.keycodes[2] = 0; - _keyReport.keycodes[3] = 0; - _keyReport.keycodes[4] = 0; - _keyReport.keycodes[5] = 0; - _keyReport.modifiers = 0; - sendReport(&_keyReport); + _keyReport.keys[0] = 0; + _keyReport.keys[1] = 0; + _keyReport.keys[2] = 0; + _keyReport.keys[3] = 0; + _keyReport.keys[4] = 0; + _keyReport.keys[5] = 0; + _keyReport.modifiers = 0; + sendReport(&_keyReport); } size_t Keyboard_::write(uint8_t c) { - uint8_t p = press(c); // Keydown - release(c); // Keyup - return p; // just return the result of press() since release() almost always returns 1 + uint8_t p = press(c); // Keydown + release(c); // Keyup + return p; // just return the result of press() since release() almost always returns 1 } size_t Keyboard_::write(const uint8_t *buffer, size_t size) { - size_t n = 0; - while (size--) { - if (*buffer != '\r') { - if (write(*buffer)) { - n++; - } else { - break; - } - } - buffer++; - } - return n; + size_t n = 0; + while (size--) { + if (*buffer != '\r') { + if (write(*buffer)) { + n++; + } else { + break; + } + } + buffer++; + } + return n; } Keyboard_ Keyboard; diff --git a/src/Keyboard.h b/src/Keyboard.h index 3dd732a..a6a4028 100644 --- a/src/Keyboard.h +++ b/src/Keyboard.h @@ -3,7 +3,6 @@ Copyright (c) 2015, Arduino LLC Original code (pre-library): Copyright (c) 2011, Peter Barrett - Contributor: MRNIU This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -25,32 +24,80 @@ #include "HID.h" -#ifndef HID_REPORTID_KEYBOARD -#define HID_REPORTID_KEYBOARD 2 -#endif - #if !defined(_USING_HID) #warning "Using legacy HID core (non pluggable)" #else -#include "./KeyboardLayouts/KeyboardLayouts.h.h" +//================================================================================ +//================================================================================ +// Keyboard + +#define KEY_LEFT_CTRL 0x80 +#define KEY_LEFT_SHIFT 0x81 +#define KEY_LEFT_ALT 0x82 +#define KEY_LEFT_GUI 0x83 +#define KEY_RIGHT_CTRL 0x84 +#define KEY_RIGHT_SHIFT 0x85 +#define KEY_RIGHT_ALT 0x86 +#define KEY_RIGHT_GUI 0x87 + +#define KEY_UP_ARROW 0xDA +#define KEY_DOWN_ARROW 0xD9 +#define KEY_LEFT_ARROW 0xD8 +#define KEY_RIGHT_ARROW 0xD7 +#define KEY_BACKSPACE 0xB2 +#define KEY_TAB 0xB3 +#define KEY_RETURN 0xB0 +#define KEY_ESC 0xB1 +#define KEY_INSERT 0xD1 +#define KEY_DELETE 0xD4 +#define KEY_PAGE_UP 0xD3 +#define KEY_PAGE_DOWN 0xD6 +#define KEY_HOME 0xD2 +#define KEY_END 0xD5 +#define KEY_CAPS_LOCK 0xC1 +#define KEY_F1 0xC2 +#define KEY_F2 0xC3 +#define KEY_F3 0xC4 +#define KEY_F4 0xC5 +#define KEY_F5 0xC6 +#define KEY_F6 0xC7 +#define KEY_F7 0xC8 +#define KEY_F8 0xC9 +#define KEY_F9 0xCA +#define KEY_F10 0xCB +#define KEY_F11 0xCC +#define KEY_F12 0xCD +#define KEY_F13 0xF0 +#define KEY_F14 0xF1 +#define KEY_F15 0xF2 +#define KEY_F16 0xF3 +#define KEY_F17 0xF4 +#define KEY_F18 0xF5 +#define KEY_F19 0xF6 +#define KEY_F20 0xF7 +#define KEY_F21 0xF8 +#define KEY_F22 0xF9 +#define KEY_F23 0xFA +#define KEY_F24 0xFB + // Low level key report: up to 6 keys and shift, ctrl etc at once typedef struct { uint8_t modifiers; uint8_t reserved; - uint8_t keycodes[6]; + uint8_t keys[6]; } KeyReport; class Keyboard_ : public Print { private: KeyReport _keyReport; - void sendReport(KeyReport* keys); size_t set(uint8_t k, bool s); + void sendReport(KeyReport* keys); public: Keyboard_(void); void begin(void); diff --git a/src/KeyboardLayouts/KeyboardLayouts.h b/src/KeyboardLayouts/KeyboardLayouts.h deleted file mode 100644 index 170d249..0000000 --- a/src/KeyboardLayouts/KeyboardLayouts.h +++ /dev/null @@ -1,264 +0,0 @@ -/* - KeyboardLayouts.h - - Author: MRNIU - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef KEYBOARDLAYOUTS_h -#define KEYBOARDLAYOUTS_h - -#define KB_BACKSPACE (0x0E) -#define KB_ENTER (0x1C) -#define KB_TAB (0x0F) -#define KB_ESC (0x01) -#define KB_SHIFT_L (0x2A) -#define KB_SHIFT_R (0x36) -#define KB_ALT_L (0x38) -#define KB_CAPS_LOCK (0x3A) -#define KB_CTRL_L (0x1D) -#define KB_NUM_LOCK (0x45) - -// Number of columns in keyma -#define MAP_COLS (3) -// Number of scan codes (rows in keymap) -#define MAP_LINES (0x80) - -// Press or release -#define RELEASED_MASK (0x80) - -// Normal function keys -#define FLAG_EXT (0x00) - -// Special keys -#define ESC (0x01 & FLAG_EXT) -#define TAB (0x02 & FLAG_EXT) -#define ENTER (0x03 & FLAG_EXT) -#define BACKSPACE (0x04 & FLAG_EXT) - -#define GUI_L (0x05 & FLAG_EXT) -#define GUI_R (0x06 & FLAG_EXT) -#define APPS (0x07 & FLAG_EXT) - -// Shift, Ctrl, Alt -#define SHIFT_L (0x08 & FLAG_EXT) -#define SHIFT_R (0x09 & FLAG_EXT) -#define CTRL_L (0x0A & FLAG_EXT) -#define CTRL_R (0x0B & FLAG_EXT) -#define ALT_L (0x0C & FLAG_EXT) -#define ALT_R (0x0D & FLAG_EXT) - -// Lock keys -#define CAPS_LOCK (0x0E & FLAG_EXT) -#define NUM_LOCK (0x0F & FLAG_EXT) -#define SCROLL_LOCK (0x10 & FLAG_EXT) - -// Function keys -#define F1 (0x11 & FLAG_EXT) -#define F2 (0x12 & FLAG_EXT) -#define F3 (0x13 & FLAG_EXT) -#define F4 (0x14 & FLAG_EXT) -#define F5 (0x15 & FLAG_EXT) -#define F6 (0x16 & FLAG_EXT) -#define F7 (0x17 & FLAG_EXT) -#define F8 (0x18 & FLAG_EXT) -#define F9 (0x19 & FLAG_EXT) -#define F10 (0x1A & FLAG_EXT) -#define F11 (0x1B & FLAG_EXT) -#define F12 (0x1C & FLAG_EXT) - -// Control Pad -#define PRINTSCREEN (0x1D & FLAG_EXT) -#define PAUSEBREAK (0x1E & FLAG_EXT) -#define INSERT (0x1F & FLAG_EXT) -#define DELETE (0x20 & FLAG_EXT) -#define HOME (0x21 & FLAG_EXT) -#define END (0x22 & FLAG_EXT) -#define PAGEUP (0x23 & FLAG_EXT) -#define PAGEDOWN (0x24 & FLAG_EXT) -#define UP (0x25 & FLAG_EXT) -#define DOWN (0x26 & FLAG_EXT) -#define LEFT (0x27 & FLAG_EXT) -#define RIGHT (0x28 & FLAG_EXT) - -// ACPI keys -#define POWER (0x29 & FLAG_EXT) -#define SLEEP (0x2A & FLAG_EXT) -#define WAKE (0x2B & FLAG_EXT) - -// Num Pad -#define PAD_SLASH (0x2C & FLAG_EXT) -#define PAD_STAR (0x2D & FLAG_EXT) -#define PAD_MINUS (0x2E & FLAG_EXT) -#define PAD_PLUS (0x2F & FLAG_EXT) -#define PAD_ENTER (0x30 & FLAG_EXT) -#define PAD_DOT (0x31 & FLAG_EXT) -#define PAD_0 (0x32 & FLAG_EXT) -#define PAD_1 (0x33 & FLAG_EXT) -#define PAD_2 (0x34 & FLAG_EXT) -#define PAD_3 (0x35 & FLAG_EXT) -#define PAD_4 (0x36 & FLAG_EXT) -#define PAD_5 (0x37 & FLAG_EXT) -#define PAD_6 (0x38 & FLAG_EXT) -#define PAD_7 (0x39 & FLAG_EXT) -#define PAD_8 (0x3A & FLAG_EXT) -#define PAD_9 (0x3B & FLAG_EXT) -#define PAD_UP PAD_8 -#define PAD_DOWN PAD_2 -#define PAD_LEFT PAD_4 -#define PAD_RIGHT PAD_6 -#define PAD_HOME PAD_7 -#define PAD_END PAD_1 -#define PAD_PAGEUP PAD_9 -#define PAD_PAGEDOWN PAD_3 -#define PAD_INS PAD_0 -#define PAD_MID PAD_5 -#define PAD_DEL PAD_DOT - -static uint8_t keymap[MAP_LINES * MAP_COLS] = { - /* scan-code !Shift Shift E0 XX */ - /* ==================================================================== */ - /* 0x00 - none */0, 0, 0, - /* 0x01 - ESC */ESC, ESC, 0, - /* 0x02 - '1' */'1', '!', 0, - /* 0x03 - '2' */'2', '@', 0, - /* 0x04 - '3' */'3', '#', 0, - /* 0x05 - '4' */'4', '$', 0, - /* 0x06 - '5' */'5', '%', 0, - /* 0x07 - '6' */'6', '^', 0, - /* 0x08 - '7' */'7', '&', 0, - /* 0x09 - '8' */'8', '*', 0, - /* 0x0A - '9' */'9', '(', 0, - /* 0x0B - '0' */'0', ')', 0, - /* 0x0C - '-' */'-', '_', 0, - /* 0x0D - '=' */'=', '+', 0, - /* 0x0E - BS */BACKSPACE, BACKSPACE, 0, - /* 0x0F - TAB */TAB, TAB, 0, - /* 0x10 - 'q' */'q', 'Q', 0, - /* 0x11 - 'w' */'w', 'W', 0, - /* 0x12 - 'e' */'e', 'E', 0, - /* 0x13 - 'r' */'r', 'R', 0, - /* 0x14 - 't' */'t', 'T', 0, - /* 0x15 - 'y' */'y', 'Y', 0, - /* 0x16 - 'u' */'u', 'U', 0, - /* 0x17 - 'i' */'i', 'I', 0, - /* 0x18 - 'o' */'o', 'O', 0, - /* 0x19 - 'p' */'p', 'P', 0, - /* 0x1A - '[' */'[', '{', 0, - /* 0x1B - ']' */']', '}', 0, - /* 0x1C - CR/LF */ENTER, ENTER, PAD_ENTER, - /* 0x1D - l. Ctrl */CTRL_L, CTRL_L, CTRL_R, - /* 0x1E - 'a' */'a', 'A', 0, - /* 0x1F - 's' */'s', 'S', 0, - /* 0x20 - 'd' */'d', 'D', 0, - /* 0x21 - 'f' */'f', 'F', 0, - /* 0x22 - 'g' */'g', 'G', 0, - /* 0x23 - 'h' */'h', 'H', 0, - /* 0x24 - 'j' */'j', 'J', 0, - /* 0x25 - 'k' */'k', 'K', 0, - /* 0x26 - 'l' */'l', 'L', 0, - /* 0x27 - ';' */';', ':', 0, - /* 0x28 - '\'' */'\'', '"', 0, - /* 0x29 - '`' */'`', '~', 0, - /* 0x2A - l. SHIFT */SHIFT_L, SHIFT_L, 0, - /* 0x2B - '\' */'\\', '|', 0, - /* 0x2C - 'z' */'z', 'Z', 0, - /* 0x2D - 'x' */'x', 'X', 0, - /* 0x2E - 'c' */'c', 'C', 0, - /* 0x2F - 'v' */'v', 'V', 0, - /* 0x30 - 'b' */'b', 'B', 0, - /* 0x31 - 'n' */'n', 'N', 0, - /* 0x32 - 'm' */'m', 'M', 0, - /* 0x33 - ',' */',', '<', 0, - /* 0x34 - '.' */'.', '>', 0, - /* 0x35 - '/' */'/', '?', PAD_SLASH, - /* 0x36 - r. SHIFT */SHIFT_R, SHIFT_R, 0, - /* 0x37 - '*' */'*', '*', 0, - /* 0x38 - ALT */ALT_L, ALT_L, ALT_R, - /* 0x39 - ' ' */' ', ' ', 0, - /* 0x3A - CapsLock */CAPS_LOCK, CAPS_LOCK, 0, - /* 0x3B - F1 */F1, F1, 0, - /* 0x3C - F2 */F2, F2, 0, - /* 0x3D - F3 */F3, F3, 0, - /* 0x3E - F4 */F4, F4, 0, - /* 0x3F - F5 */F5, F5, 0, - /* 0x40 - F6 */F6, F6, 0, - /* 0x41 - F7 */F7, F7, 0, - /* 0x42 - F8 */F8, F8, 0, - /* 0x43 - F9 */F9, F9, 0, - /* 0x44 - F10 */F10, F10, 0, - /* 0x45 - NumLock */NUM_LOCK, NUM_LOCK, 0, - /* 0x46 - ScrLock */SCROLL_LOCK, SCROLL_LOCK, 0, - /* 0x47 - Home */PAD_HOME, '7', HOME, - /* 0x48 - CurUp */PAD_UP, '8', UP, - /* 0x49 - PgUp */PAD_PAGEUP, '9', PAGEUP, - /* 0x4A - '-' */PAD_MINUS, '-', 0, - /* 0x4B - Left */PAD_LEFT, '4', LEFT, - /* 0x4C - MID */PAD_MID, '5', 0, - /* 0x4D - Right */PAD_RIGHT, '6', RIGHT, - /* 0x4E - '+' */PAD_PLUS, '+', 0, - /* 0x4F - End */PAD_END, '1', END, - /* 0x50 - Down */PAD_DOWN, '2', DOWN, - /* 0x51 - PgDown */PAD_PAGEDOWN, '3', PAGEDOWN, - /* 0x52 - Insert */PAD_INS, '0', INSERT, - /* 0x53 - Delete */PAD_DOT, '.', DELETE, - /* 0x54 - Enter */0, 0, 0, - /* 0x55 - ??? */0, 0, 0, - /* 0x56 - ??? */0, 0, 0, - /* 0x57 - F11 */F11, F11, 0, - /* 0x58 - F12 */F12, F12, 0, - /* 0x59 - ??? */0, 0, 0, - /* 0x5A - ??? */0, 0, 0, - /* 0x5B - ??? */0, 0, GUI_L, - /* 0x5C - ??? */0, 0, GUI_R, - /* 0x5D - ??? */0, 0, APPS, - /* 0x5E - ??? */0, 0, 0, - /* 0x5F - ??? */0, 0, 0, - /* 0x60 - ??? */0, 0, 0, - /* 0x61 - ??? */0, 0, 0, - /* 0x62 - ??? */0, 0, 0, - /* 0x63 - ??? */0, 0, 0, - /* 0x64 - ??? */0, 0, 0, - /* 0x65 - ??? */0, 0, 0, - /* 0x66 - ??? */0, 0, 0, - /* 0x67 - ??? */0, 0, 0, - /* 0x68 - ??? */0, 0, 0, - /* 0x69 - ??? */0, 0, 0, - /* 0x6A - ??? */0, 0, 0, - /* 0x6B - ??? */0, 0, 0, - /* 0x6C - ??? */0, 0, 0, - /* 0x6D - ??? */0, 0, 0, - /* 0x6E - ??? */0, 0, 0, - /* 0x6F - ??? */0, 0, 0, - /* 0x70 - ??? */0, 0, 0, - /* 0x71 - ??? */0, 0, 0, - /* 0x72 - ??? */0, 0, 0, - /* 0x73 - ??? */0, 0, 0, - /* 0x74 - ??? */0, 0, 0, - /* 0x75 - ??? */0, 0, 0, - /* 0x76 - ??? */0, 0, 0, - /* 0x77 - ??? */0, 0, 0, - /* 0x78 - ??? */0, 0, 0, - /* 0x78 - ??? */0, 0, 0, - /* 0x7A - ??? */0, 0, 0, - /* 0x7B - ??? */0, 0, 0, - /* 0x7C - ??? */0, 0, 0, - /* 0x7D - ??? */0, 0, 0, - /* 0x7E - ??? */0, 0, 0, - /* 0x7F - ??? */0, 0, 0 -}; - -#endif /* KEYBOARDLAYOUTS_h */