/* DEFAULT BUTTON MAPPINGS +---------+ | Metas | +---------+ Meta - - - - - X | - - - - - - Alt - - - - - - | - X - - - - Shift - - - - X - | - - - - - - Ctrl - - - - - - | X - - - - - +---------+ | Letters | +---------+ E - - - X - - | - - X - - - T - - - X - - | - - - X - - A - - - X - - | - - - - X - I - - - X - - | - - - - - X N - - X - - - | - - X - - - O - - X - - - | - - - X - - S - - X - - - | - - - - X - R - - X - - - | - - - - - X L - X - - - - | - - X - - - D - X - - - - | - - - X - - H - X - - - - | - - - - X - C - X - - - - | - - - - - X U X - - - - - | - - X - - - M X - - - - - | - - - X - - F X - - - - - | - - - - X - P X - - - - - | - - - - - X Y - - X X - - | - - X - - - G - - X X - - | - - - X - - W - - X X - - | - - - - X - V - - X X - - | - - - - - X B - X X - - - | - - X - - - K - X X - - - | - - - X - - X - X X - - - | - - - - X - J - X X - - - | - - - - - X Q - X - X - - | - - X - - - Z - X - X - - | - - - X - - +---------+ | Numbers | +---------+ 0 X X X X - - | - - X X X - 1 X - - - - - | - - X X X - 2 - X - - - - | - - X X X - 3 - - X - - - | - - X X X - 4 - - - X - - | - - X X X - 5 X X - - - - | - - X X X - 6 - X X - - - | - - X X X - 7 - - X X - - | - - X X X - 8 X X X - - - | - - X X X - 9 - X X X - - | - - X X X - +---------------------------+ | Whitespace and Navigation | +---------------------------+ Space - - - X - - | - - X X - - Tab - - X - - - | - - X X - - Delete - X - - - - | - - X X - - Backspace X - - - - - | - - X X - - RightArrow - - - X - - | - - - X X - UpArrow - - X - - - | - - - X X - DownArrow - X - - - - | - - - X X - LeftArrow X - - - - - | - - - X X - End - - - X - - | - - X - X - PageUp - - X - - - | - - X - X - PageDown - X - - - - | - - X - X - Home X - - - - - | - - X - X - +-------------+ | Punctuation | +-------------+ [ { X X - - - - | - - X X - - ] } X X - - - - | - - - - X X \ | X X - X - - | - - X X X X ; : X X - - - - | - - X - X - ' " X X - - - - | - - - X X - , < X X - - - - | - - - X - - . > X X - - - - | - - X - - - / ? X X X - - - | - - X X X X - _ X X - - - - | - - X X X X = + X X - - - - | - - X - - X ` ~ X X - - - - | - - - X - X +---------------+ | Miscellaneous | +---------------+ Enter - - X X - - | - - X X - - Esc X X X X - - | - - X X X X CapsLock - - - - - - | - - X X X X NumLock X X X X - - | - - - - - - ScrollLock X - X - - - | - - - X - X Insert X X X - - - | - - - X X X +---------------+ | Keypad | +---------------+ 0 X X X X - - | - - X - X X 1 X - - - - - | - - X - X X 2 - X - - - - | - - X - X X 3 - - X - - - | - - X - X X 4 - - - X - - | - - X - X X 5 X X - - - - | - - X - X X 6 - X X - - - | - - X - X X 7 - - X X - - | - - X - X X 8 X X X - - - | - - X - X X 9 - X X X - - | - - X - X X Enter X - - X - - | - - X - - X / X X X - - - | - - X - - X * X - - - - - | - - X - - X - - X - - - - | - - X - - X + - - X - - - | - - X - - X . - - - X - - | - - X - - X +---------------+ | Functions | +---------------+ F1 X - - - - - | - - X X - X F2 - X - - - - | - - X X - X F3 - - X - - - | - - X X - X F4 - - - X - - | - - X X - X F5 X X - - - - | - - X X - X F6 - X X - - - | - - X X - X F7 - - X X - - | - - X X - X F8 X X X - - - | - - X X - X F9 - X X X - - | - - X X - X F10 X - X - - - | - - X X - X F11 - X - X - - | - - X X - X F12 X X X X - - | - - X X - X */ eeprom struct mapping { unsigned char make_code; // e.g. 0x1c unsigned char combo; // e.g. 0x10000000 unsigned char extended; // 1 if make/break code starts with 0xe0 } eeprom mappings[num_mappings] = { { 0x0e, 0b11000101, 0 },{ 0x16, 0b10001110, 0 },{ 0x1e, 0b01001110, 0 },{ 0x26, 0b00101110, 0 },{ 0x25, 0b00011110, 0 },{ 0x2e, 0b11001110, 0 },{ 0x36, 0b01101110, 0 },{ 0x3d, 0b00111110, 0 },{ 0x3e, 0b11101110, 0 },{ 0x46, 0b01111110, 0 },{ 0x45, 0b11111110, 0 },{ 0x4e, 0b11001111, 0 },{ 0x55, 0b11001001, 0 },{ 0x66, 0b10001100, 0 },{ 0x0d, 0b00101100, 0 },{ 0x15, 0b01011000, 0 },{ 0x1d, 0b00110010, 0 },{ 0x24, 0b00011000, 0 },{ 0x2d, 0b00100001, 0 },{ 0x2c, 0b00010100, 0 },{ 0x35, 0b00111000, 0 },{ 0x3c, 0b10001000, 0 },{ 0x43, 0b00010001, 0 },{ 0x44, 0b00100100, 0 },{ 0x4d, 0b10000001, 0 },{ 0x54, 0b11001100, 0 },{ 0x5b, 0b11000011, 0 },{ 0x5d, 0b11011111, 0 },{ 0x58, 0b00001111, 0 },{ 0x1c, 0b00010010, 0 },{ 0x1b, 0b00100010, 0 },{ 0x23, 0b01000100, 0 },{ 0x2b, 0b10000010, 0 },{ 0x34, 0b00110100, 0 },{ 0x33, 0b01000010, 0 },{ 0x3b, 0b01100001, 0 },{ 0x42, 0b01100100, 0 },{ 0x4b, 0b01001000, 0 },{ 0x4c, 0b11001010, 0 },{ 0x52, 0b11000110, 0 },{ 0x5a, 0b00111100, 0 },{ 0x1a, 0b01010100, 0 },{ 0x22, 0b01100010, 0 },{ 0x21, 0b01000001, 0 },{ 0x2a, 0b00110001, 0 },{ 0x32, 0b01101000, 0 },{ 0x31, 0b00101000, 0 },{ 0x3a, 0b10000100, 0 },{ 0x41, 0b11000100, 0 },{ 0x49, 0b11001000, 0 },{ 0x4a, 0b11101111, 0 },{ 0x29, 0b00011100, 0 },{ 0x70, 0b11100111, 1 },{ 0x71, 0b01001100, 1 },{ 0x6c, 0b10001010, 1 },{ 0x69, 0b00011010, 1 },{ 0x7d, 0b00101010, 1 },{ 0x7a, 0b01001010, 1 },{ 0x6b, 0b10000110, 1 },{ 0x75, 0b00100110, 1 },{ 0x72, 0b01000110, 1 },{ 0x74, 0b00010110, 1 },{ 0x77, 0b11110000, 0 },{ 0x6c, 0b00111011, 0 },{ 0x6b, 0b00011011, 0 },{ 0x69, 0b10001011, 0 },{ 0x4a, 0b11101001, 1 },{ 0x75, 0b11101011, 0 },{ 0x73, 0b11001011, 0 },{ 0x72, 0b01001011, 0 },{ 0x70, 0b11111011, 0 },{ 0x7c, 0b10001001, 0 },{ 0x7d, 0b01111011, 0 },{ 0x74, 0b01101011, 0 },{ 0x7a, 0b00101011, 0 },{ 0x71, 0b00011001, 0 },{ 0x7b, 0b01001001, 0 },{ 0x79, 0b00101001, 0 },{ 0x5a, 0b10011001, 1 },{ 0x05, 0b10001101, 0 },{ 0x06, 0b01001101, 0 },{ 0x04, 0b00101101, 0 },{ 0x0c, 0b00011101, 0 },{ 0x03, 0b11001101, 0 },{ 0x0b, 0b01101101, 0 },{ 0x83, 0b00111101, 0 },{ 0x0a, 0b11101101, 0 },{ 0x01, 0b01111101, 0 },{ 0x09, 0b10101101, 0 },{ 0x78, 0b01011101, 0 },{ 0x07, 0b11111101, 0 },{ 0x7e, 0b10100101, 0 } }; eeprom struct meta_mapping { unsigned char make_code; // e.g. 0x1c unsigned char key; // e.g. 0x1000 unsigned char extended; // 1 if make/break code starts with 0xe0 } eeprom meta_mappings[4] = { { 0x12, 0b1000, 0 },{ 0x14, 0b0010, 0 },{ 0x11, 0b0001, 0 },{ 0x1f, 0b0100, 1 } }; struct default_meta_mapping { unsigned char name[10]; // e.g. 'a' unsigned char make_code; // e.g. 0x1c unsigned char key; // e.g. 0x1000 unsigned char extended; // 1 if make/break code starts with 0xe0 } default_meta_mappings[4] = { { "Shift", 0x12, 0b1000, 0 },{ "Ctrl", 0x14, 0b0010, 0 },{ "Alt", 0x11, 0b0001, 0 },{ "Meta", 0x1f, 0b0100, 1 } }; struct default_mapping { unsigned char name[10]; // e.g. 'a' unsigned char make_code; // e.g. 0x1c unsigned char combo; // e.g. 0x10000000 unsigned char extended; // 1 if make/break code starts with 0xe0 } default_mappings[num_mappings] = { { "` | ~", 0x0e, 0b11000101, 0 },{ "1 | !", 0x16, 0b10001110, 0 },{ "2 | @", 0x1e, 0b01001110, 0 },{ "3 | #", 0x26, 0b00101110, 0 },{ "4 | $", 0x25, 0b00011110, 0 },{ "5 | %", 0x2e, 0b11001110, 0 },{ "6 | ^", 0x36, 0b01101110, 0 },{ "7 | &", 0x3d, 0b00111110, 0 },{ "8 | *", 0x3e, 0b11101110, 0 },{ "9 | (", 0x46, 0b01111110, 0 },{ "0 | )", 0x45, 0b11111110, 0 },{ "- | _", 0x4e, 0b11001111, 0 },{ "= | +", 0x55, 0b11001001, 0 },{ "Backspace", 0x66, 0b10001100, 0 },{ "Tab", 0x0d, 0b00101100, 0 },{ "q | Q", 0x15, 0b01011000, 0 },{ "w | W", 0x1d, 0b00110010, 0 },{ "e | E", 0x24, 0b00011000, 0 },{ "r | R", 0x2d, 0b00100001, 0 },{ "t | T", 0x2c, 0b00010100, 0 },{ "y | Y", 0x35, 0b00111000, 0 },{ "u | U", 0x3c, 0b10001000, 0 },{ "i | I", 0x43, 0b00010001, 0 },{ "o | O", 0x44, 0b00100100, 0 },{ "p | P", 0x4d, 0b10000001, 0 },{ "[ | {", 0x54, 0b11001100, 0 },{ "] | }", 0x5b, 0b11000011, 0 },{ "\\ | |", 0x5d, 0b11011111, 0 },{ "Caps Lock", 0x58, 0b00001111, 0 },{ "a | A", 0x1c, 0b00010010, 0 },{ "s | S", 0x1b, 0b00100010, 0 },{ "d | D", 0x23, 0b01000100, 0 },{ "f | F", 0x2b, 0b10000010, 0 },{ "g | G", 0x34, 0b00110100, 0 },{ "h | H", 0x33, 0b01000010, 0 },{ "j | J", 0x3b, 0b01100001, 0 },{ "k | K", 0x42, 0b01100100, 0 },{ "l | L", 0x4b, 0b01001000, 0 },{ "; | :", 0x4c, 0b11001010, 0 },{ "\' | \"", 0x52, 0b11000110, 0 },{ "Enter", 0x5a, 0b00111100, 0 },{ "z | Z", 0x1a, 0b01010100, 0 },{ "x | X", 0x22, 0b01100010, 0 },{ "c | C", 0x21, 0b01000001, 0 },{ "v | V", 0x2a, 0b00110001, 0 },{ "b | B", 0x32, 0b01101000, 0 },{ "n | N", 0x31, 0b00101000, 0 },{ "m | M", 0x3a, 0b10000100, 0 },{ ", | <", 0x41, 0b11000100, 0 },{ ". | >", 0x49, 0b11001000, 0 },{ "/ | ?", 0x4a, 0b11101111, 0 },{ "Space", 0x29, 0b00011100, 0 },{ "Insert", 0x70, 0b11100111, 1 },{ "Delete", 0x71, 0b01001100, 1 },{ "Home", 0x6c, 0b10001010, 1 },{ "End", 0x69, 0b00011010, 1 },{ "Page Up", 0x7d, 0b00101010, 1 },{ "Page Down", 0x7a, 0b01001010, 1 },{ "Left", 0x6b, 0b10000110, 1 },{ "Up", 0x75, 0b00100110, 1 },{ "Down", 0x72, 0b01000110, 1 },{ "Right", 0x74, 0b00010110, 1 },{ "NumLock", 0x77, 0b11110000, 0 },{ "KP7|Home", 0x6c, 0b00111011, 0 },{ "KP4|Left", 0x6b, 0b00011011, 0 },{ "KP1|End", 0x69, 0b10001011, 0 },{ "KP /", 0x4a, 0b11101001, 1 },{ "KP8 | Up", 0x75, 0b11101011, 0 },{ "KP5", 0x73, 0b11001011, 0 },{ "KP2|Down", 0x72, 0b01001011, 0 },{ "KP0|Ins", 0x70, 0b11111011, 0 },{ "KP *", 0x7c, 0b10001001, 0 },{ "KP9|PgUp", 0x7d, 0b01111011, 0 },{ "KP6|Right", 0x74, 0b01101011, 0 },{ "KP3|PgDn", 0x7a, 0b00101011, 0 },{ "KP.|Del", 0x71, 0b00011001, 0 },{ "KP -", 0x7b, 0b01001001, 0 },{ "KP +", 0x79, 0b00101001, 0 },{ "KP Enter", 0x5a, 0b10011001, 1 },{ "F1", 0x05, 0b10001101, 0 },{ "F2", 0x06, 0b01001101, 0 },{ "F3", 0x04, 0b00101101, 0 },{ "F4", 0x0c, 0b00011101, 0 },{ "F5", 0x03, 0b11001101, 0 },{ "F6", 0x0b, 0b01101101, 0 },{ "F7", 0x83, 0b00111101, 0 },{ "F8", 0x0a, 0b11101101, 0 },{ "F9", 0x01, 0b01111101, 0 },{ "F10", 0x09, 0b10101101, 0 },{ "F11", 0x78, 0b01011101, 0 },{ "F12", 0x07, 0b11111101, 0 },{ "ScrollLck", 0x7e, 0b10100101, 0 } };