diff --git a/src/ImprovedKeylayouts.h b/src/ImprovedKeylayouts.h new file mode 100644 index 0000000..78353ec --- /dev/null +++ b/src/ImprovedKeylayouts.h @@ -0,0 +1,265 @@ +/* +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. +*/ + +#pragma once + +//================================================================================ +// LAYOUT_US_ENGLISH +//================================================================================ + +#ifdef LAYOUT_US_ENGLISH + +#define KEY_PRINT 0xCE +#define KEY_NUM_LOCK 0xDB +#define KEY_SCROLL_LOCK 0xCF +#define KEY_PAUSE 0xD0 +#define KEY_MENU 0xED + +#define KEY_LEFT_CTRL 0x80 +#define KEY_LEFT_SHIFT 0x81 +#define KEY_LEFT_ALT 0x82 +#define KEY_LEFT_GUI 0x83 +#define KEY_LEFT_WINDOWS KEY_LEFT_GUI +#define KEY_RIGHT_CTRL 0x84 +#define KEY_RIGHT_SHIFT 0x85 +#define KEY_RIGHT_ALT 0x86 +#define KEY_RIGHT_GUI 0x87 +#define KEY_RIGHT_WINDOWS KEY_RIGHT_GUI + +#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_SPACE ' ' +#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 LED_NUM_LOCK 0x01 +#define LED_CAPS_LOCK 0x02 +#define LED_SCROLL_LOCK 0x04 + +//Raw Keyboard definitions +#define RAW_KEYBOARD_LEFT_CTRL (1 << 0) +#define RAW_KEYBOARD_LEFT_SHIFT (1 << 1) +#define RAW_KEYBOARD_LEFT_ALT (1 << 2) +#define RAW_KEYBOARD_LEFT_GUI (1 << 3) +#define RAW_KEYBOARD_RIGHT_CTRL (1 << 4) +#define RAW_KEYBOARD_RIGHT_SHIFT (1 << 5) +#define RAW_KEYBOARD_RIGHT_ALT (1 << 6) +#define RAW_KEYBOARD_RIGHT_GUI (1 << 7) + +#define RAW_KEYBOARD_KEY(key) ((key>='a' && key<='z') ? (0x04 + key-'a') :\ +(key>='A' && key<='Z') ? (0x04 + key-'A') : (key>='1' && key<='9') ? (0x1E + key-'1') : 0x27) + +#define RAW_KEYBOARD_UP_ARROW 0x52 +#define RAW_KEYBOARD_DOWN_ARROW 0x51 +#define RAW_KEYBOARD_LEFT_ARROW 0x50 +#define RAW_KEYBOARD_RIGHT_ARROW 0x4F +#define RAW_KEYBOARD_SPACEBAR 0x2C +#define RAW_KEYBOARD_BACKSPACE 0x2A +#define RAW_KEYBOARD_TAB 0x2B +#define RAW_KEYBOARD_RETURN 0x28 +#define RAW_KEYBOARD_ESC 0x29 +#define RAW_KEYBOARD_INSERT 0x49 +#define RAW_KEYBOARD_DELETE 0x4C +#define RAW_KEYBOARD_PAGE_UP 0x4B +#define RAW_KEYBOARD_PAGE_DOWN 0x4E +#define RAW_KEYBOARD_HOME 0x4A +#define RAW_KEYBOARD_END 0x4D +#define RAW_KEYBOARD_CAPS_LOCK 0x39 +#define RAW_KEYBOARD_F1 0x3A +#define RAW_KEYBOARD_F2 0x3B +#define RAW_KEYBOARD_F3 0x3C +#define RAW_KEYBOARD_F4 0x3D +#define RAW_KEYBOARD_F5 0x3E +#define RAW_KEYBOARD_F6 0x3F +#define RAW_KEYBOARD_F7 0x40 +#define RAW_KEYBOARD_F8 0x41 +#define RAW_KEYBOARD_F9 0x42 +#define RAW_KEYBOARD_F10 0x43 +#define RAW_KEYBOARD_F11 0x44 +#define RAW_KEYBOARD_F12 0x45 +#define RAW_KEYBOARD_PRINT 0x46 +#define RAW_KEYBOARD_SCROLL_LOCK 0x47 +#define RAW_KEYBOARD_PAUSE 0x48 + +#define SHIFT 0x80 +static const uint8_t _asciimap[128] PROGMEM = +{ + 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 +}; + +#else + +//TODO other layouts + +#endif