From f3be5b5e5747903a803e50099525facd15c65474 Mon Sep 17 00:00:00 2001 From: Luflosi Date: Tue, 3 Sep 2019 01:05:27 +0200 Subject: [PATCH] Regenerate automatically generated key_encoding.py and keys.h --- kitty/key_encoding.py | 128 +- kitty/keys.h | 27017 ++++++++++++++++++++++++---------------- 2 files changed, 16202 insertions(+), 10943 deletions(-) diff --git a/kitty/key_encoding.py b/kitty/key_encoding.py index bd876b028..624e7f77b 100644 --- a/kitty/key_encoding.py +++ b/kitty/key_encoding.py @@ -130,11 +130,80 @@ ENCODING = { 'Z': 'r', 'PLUS': 'Bi', 'UNDERSCORE': 'Bj', - 'MENU': 'Bk' + 'MENU': 'Bk', + 'EXCLAM': 'Bl', + 'DOUBLE QUOTE': 'Bm', + 'NUMBER SIGN': 'Bn', + 'DOLLAR': 'Bo', + 'AMPERSAND': 'Bp', + 'PARENTHESIS LEFT': 'Bq', + 'PARENTHESIS RIGHT': 'Br', + 'COLON': 'Bs', + 'LESS': 'Bt', + 'GREATER': 'Bu', + 'AT': 'Bv', + 'PARAGRAPH': 'Bw', + 'MASCULINE': 'Bx', + 'A GRAVE': 'By', + 'A DIAERESIS': 'Bz', + 'A RING': 'B0', + 'AE': 'B1', + 'C CEDILLA': 'B2', + 'E GRAVE': 'B3', + 'E ACUTE': 'B4', + 'I GRAVE': 'B5', + 'N TILDE': 'B6', + 'O GRAVE': 'B7', + 'O DIAERESIS': 'B8', + 'O SLASH': 'B9', + 'U GRAVE': 'B.', + 'U DIAERESIS': 'B-', + 'S SHARP': 'B:', + 'CYRILLIC A': 'B+', + 'CYRILLIC BE': 'B=', + 'CYRILLIC VE': 'B^', + 'CYRILLIC GHE': 'B!', + 'CYRILLIC DE': 'B/', + 'CYRILLIC IE': 'B*', + 'CYRILLIC ZHE': 'B?', + 'CYRILLIC ZE': 'B&', + 'CYRILLIC I': 'B<', + 'CYRILLIC SHORT I': 'B>', + 'CYRILLIC KA': 'B(', + 'CYRILLIC EL': 'B)', + 'CYRILLIC EM': 'B[', + 'CYRILLIC EN': 'B]', + 'CYRILLIC O': 'B{', + 'CYRILLIC PE': 'B}', + 'CYRILLIC ER': 'B@', + 'CYRILLIC ES': 'B%', + 'CYRILLIC TE': 'B$', + 'CYRILLIC U': 'B#', + 'CYRILLIC EF': 'CA', + 'CYRILLIC HA': 'CB', + 'CYRILLIC TSE': 'CC', + 'CYRILLIC CHE': 'CD', + 'CYRILLIC SHA': 'CE', + 'CYRILLIC SHCHA': 'CF', + 'CYRILLIC HARD SIGN': 'CG', + 'CYRILLIC YERU': 'CH', + 'CYRILLIC SOFT SIGN': 'CI', + 'CYRILLIC E': 'CJ', + 'CYRILLIC YU': 'CK', + 'CYRILLIC YA': 'CL', + 'CYRILLIC IO': 'CM' } KEY_MAP = { 32: 'A', + 33: 'Bl', + 34: 'Bm', + 35: 'Bn', + 36: 'Bo', + 38: 'Bp', 39: 'B', + 40: 'Bq', + 41: 'Br', + 43: 'Bi', 44: 'C', 45: 'D', 46: 'E', @@ -149,8 +218,12 @@ KEY_MAP = { 55: 'N', 56: 'O', 57: 'P', + 58: 'Bs', 59: 'Q', + 60: 'Bt', 61: 'R', + 62: 'Bu', + 64: 'Bv', 65: 'S', 66: 'T', 67: 'U', @@ -180,11 +253,60 @@ KEY_MAP = { 91: 's', 92: 't', 93: 'u', + 95: 'Bj', 96: 'v', 161: 'w', 162: 'x', - 163: 'Bi', - 164: 'Bj', + 167: 'Bw', + 186: 'Bx', + 192: 'By', + 196: 'Bz', + 197: 'B0', + 198: 'B1', + 199: 'B2', + 200: 'B3', + 201: 'B4', + 204: 'B5', + 209: 'B6', + 210: 'B7', + 214: 'B8', + 216: 'B9', + 217: 'B.', + 220: 'B-', + 222: 'B:', + 223: 'B+', + 224: 'B=', + 225: 'B^', + 226: 'B!', + 227: 'B/', + 228: 'B*', + 229: 'B?', + 230: 'B&', + 231: 'B<', + 232: 'B>', + 233: 'B(', + 234: 'B)', + 235: 'B[', + 236: 'B]', + 237: 'B{', + 238: 'B}', + 239: 'B@', + 240: 'B%', + 241: 'B$', + 242: 'B#', + 243: 'CA', + 244: 'CB', + 245: 'CC', + 246: 'CD', + 247: 'CE', + 248: 'CF', + 249: 'CG', + 250: 'CH', + 251: 'CI', + 252: 'CJ', + 253: 'CK', + 254: 'CL', + 255: 'CM', 256: 'y', 257: 'z', 258: '0', diff --git a/kitty/keys.h b/kitty/keys.h index 31c188ff9..817ecec2f 100644 --- a/kitty/keys.h +++ b/kitty/keys.h @@ -39,70 +39,83 @@ UINT8_MAX, UINT8_MAX, UINT8_MAX, 0, /* SPACE */ +1, /* EXCLAM */ +2, /* DOUBLE_QUOTE */ +3, /* NUMBER_SIGN */ +4, /* DOLLAR */ UINT8_MAX, +5, /* AMPERSAND */ +6, /* APOSTROPHE */ +7, /* PARENTHESIS_LEFT */ +8, /* PARENTHESIS_RIGHT */ UINT8_MAX, +9, /* PLUS */ +10, /* COMMA */ +11, /* MINUS */ +12, /* PERIOD */ +13, /* SLASH */ +14, /* 0 */ +15, /* 1 */ +16, /* 2 */ +17, /* 3 */ +18, /* 4 */ +19, /* 5 */ +20, /* 6 */ +21, /* 7 */ +22, /* 8 */ +23, /* 9 */ +24, /* COLON */ +25, /* SEMICOLON */ +26, /* LESS */ +27, /* EQUAL */ +28, /* GREATER */ UINT8_MAX, +29, /* AT */ +30, /* A */ +31, /* B */ +32, /* C */ +33, /* D */ +34, /* E */ +35, /* F */ +36, /* G */ +37, /* H */ +38, /* I */ +39, /* J */ +40, /* K */ +41, /* L */ +42, /* M */ +43, /* N */ +44, /* O */ +45, /* P */ +46, /* Q */ +47, /* R */ +48, /* S */ +49, /* T */ +50, /* U */ +51, /* V */ +52, /* W */ +53, /* X */ +54, /* Y */ +55, /* Z */ +56, /* LEFT_BRACKET */ +57, /* BACKSLASH */ +58, /* RIGHT_BRACKET */ UINT8_MAX, +59, /* UNDERSCORE */ +60, /* GRAVE_ACCENT */ UINT8_MAX, UINT8_MAX, -1, /* APOSTROPHE */ UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, -2, /* COMMA */ -3, /* MINUS */ -4, /* PERIOD */ -5, /* SLASH */ -6, /* 0 */ -7, /* 1 */ -8, /* 2 */ -9, /* 3 */ -10, /* 4 */ -11, /* 5 */ -12, /* 6 */ -13, /* 7 */ -14, /* 8 */ -15, /* 9 */ UINT8_MAX, -16, /* SEMICOLON */ UINT8_MAX, -17, /* EQUAL */ UINT8_MAX, UINT8_MAX, UINT8_MAX, -18, /* A */ -19, /* B */ -20, /* C */ -21, /* D */ -22, /* E */ -23, /* F */ -24, /* G */ -25, /* H */ -26, /* I */ -27, /* J */ -28, /* K */ -29, /* L */ -30, /* M */ -31, /* N */ -32, /* O */ -33, /* P */ -34, /* Q */ -35, /* R */ -36, /* S */ -37, /* T */ -38, /* U */ -39, /* V */ -40, /* W */ -41, /* X */ -42, /* Y */ -43, /* Z */ -44, /* LEFT_BRACKET */ -45, /* BACKSLASH */ -46, /* RIGHT_BRACKET */ UINT8_MAX, UINT8_MAX, -47, /* GRAVE_ACCENT */ UINT8_MAX, UINT8_MAX, UINT8_MAX, @@ -154,10 +167,13 @@ UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, +61, /* WORLD_1 */ +62, /* WORLD_2 */ UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, +63, /* PARAGRAPH */ UINT8_MAX, UINT8_MAX, UINT8_MAX, @@ -167,10 +183,6 @@ UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, -48, /* WORLD_1 */ -49, /* WORLD_2 */ -50, /* PLUS */ -51, /* UNDERSCORE */ UINT8_MAX, UINT8_MAX, UINT8_MAX, @@ -180,27 +192,90 @@ UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, +64, /* MASCULINE */ UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, +65, /* A_GRAVE */ UINT8_MAX, UINT8_MAX, UINT8_MAX, +66, /* A_DIAERESIS */ +67, /* A_RING */ +68, /* AE */ +69, /* C_CEDILLA */ +70, /* E_GRAVE */ +71, /* E_ACUTE */ UINT8_MAX, UINT8_MAX, +72, /* I_GRAVE */ UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, +73, /* N_TILDE */ +74, /* O_GRAVE */ UINT8_MAX, UINT8_MAX, UINT8_MAX, +75, /* O_DIAERESIS */ UINT8_MAX, +76, /* O_SLASH */ +77, /* U_GRAVE */ UINT8_MAX, UINT8_MAX, +78, /* U_DIAERESIS */ UINT8_MAX, +79, /* S_SHARP */ +80, /* CYRILLIC_A */ +81, /* CYRILLIC_BE */ +82, /* CYRILLIC_VE */ +83, /* CYRILLIC_GHE */ +84, /* CYRILLIC_DE */ +85, /* CYRILLIC_IE */ +86, /* CYRILLIC_ZHE */ +87, /* CYRILLIC_ZE */ +88, /* CYRILLIC_I */ +89, /* CYRILLIC_SHORT_I */ +90, /* CYRILLIC_KA */ +91, /* CYRILLIC_EL */ +92, /* CYRILLIC_EM */ +93, /* CYRILLIC_EN */ +94, /* CYRILLIC_O */ +95, /* CYRILLIC_PE */ +96, /* CYRILLIC_ER */ +97, /* CYRILLIC_ES */ +98, /* CYRILLIC_TE */ +99, /* CYRILLIC_U */ +100, /* CYRILLIC_EF */ +101, /* CYRILLIC_HA */ +102, /* CYRILLIC_TSE */ +103, /* CYRILLIC_CHE */ +104, /* CYRILLIC_SHA */ +105, /* CYRILLIC_SHCHA */ +106, /* CYRILLIC_HARD_SIGN */ +107, /* CYRILLIC_YERU */ +108, /* CYRILLIC_SOFT_SIGN */ +109, /* CYRILLIC_E */ +110, /* CYRILLIC_YU */ +111, /* CYRILLIC_YA */ +112, /* CYRILLIC_IO */ +113, /* ESCAPE */ +114, /* ENTER */ +115, /* TAB */ +116, /* BACKSPACE */ +117, /* INSERT */ +118, /* DELETE */ +119, /* RIGHT */ +120, /* LEFT */ +121, /* DOWN */ +122, /* UP */ +123, /* PAGE_UP */ +124, /* PAGE_DOWN */ +125, /* HOME */ +126, /* END */ UINT8_MAX, UINT8_MAX, UINT8_MAX, @@ -211,155 +286,88 @@ UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, +127, /* CAPS_LOCK */ +128, /* SCROLL_LOCK */ +129, /* NUM_LOCK */ +130, /* PRINT_SCREEN */ +131, /* PAUSE */ UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -52, /* ESCAPE */ -53, /* ENTER */ -54, /* TAB */ -55, /* BACKSPACE */ -56, /* INSERT */ -57, /* DELETE */ -58, /* RIGHT */ -59, /* LEFT */ -60, /* DOWN */ -61, /* UP */ -62, /* PAGE_UP */ -63, /* PAGE_DOWN */ -64, /* HOME */ -65, /* END */ -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -66, /* CAPS_LOCK */ -67, /* SCROLL_LOCK */ -68, /* NUM_LOCK */ -69, /* PRINT_SCREEN */ -70, /* PAUSE */ -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -71, /* F1 */ -72, /* F2 */ -73, /* F3 */ -74, /* F4 */ -75, /* F5 */ -76, /* F6 */ -77, /* F7 */ -78, /* F8 */ -79, /* F9 */ -80, /* F10 */ -81, /* F11 */ -82, /* F12 */ -83, /* F13 */ -84, /* F14 */ -85, /* F15 */ -86, /* F16 */ -87, /* F17 */ -88, /* F18 */ -89, /* F19 */ -90, /* F20 */ -91, /* F21 */ -92, /* F22 */ -93, /* F23 */ -94, /* F24 */ -95, /* F25 */ -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -96, /* KP_0 */ -97, /* KP_1 */ -98, /* KP_2 */ -99, /* KP_3 */ -100, /* KP_4 */ -101, /* KP_5 */ -102, /* KP_6 */ -103, /* KP_7 */ -104, /* KP_8 */ -105, /* KP_9 */ -106, /* KP_DECIMAL */ -107, /* KP_DIVIDE */ -108, /* KP_MULTIPLY */ -109, /* KP_SUBTRACT */ -110, /* KP_ADD */ -111, /* KP_ENTER */ -112, /* KP_EQUAL */ -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -113, /* LEFT_SHIFT */ -114, /* LEFT_CONTROL */ -115, /* LEFT_ALT */ -116, /* LEFT_SUPER */ -117, /* RIGHT_SHIFT */ -118, /* RIGHT_CONTROL */ -119, /* RIGHT_ALT */ -120, /* RIGHT_SUPER */ -121, /* MENU */ +132, /* F1 */ +133, /* F2 */ +134, /* F3 */ +135, /* F4 */ +136, /* F5 */ +137, /* F6 */ +138, /* F7 */ +139, /* F8 */ +140, /* F9 */ +141, /* F10 */ +142, /* F11 */ +143, /* F12 */ +144, /* F13 */ +145, /* F14 */ +146, /* F15 */ +147, /* F16 */ +148, /* F17 */ +149, /* F18 */ +150, /* F19 */ +151, /* F20 */ +152, /* F21 */ +153, /* F22 */ +154, /* F23 */ +155, /* F24 */ +156, /* F25 */ +UINT8_MAX, +UINT8_MAX, +UINT8_MAX, +UINT8_MAX, +UINT8_MAX, +157, /* KP_0 */ +158, /* KP_1 */ +159, /* KP_2 */ +160, /* KP_3 */ +161, /* KP_4 */ +162, /* KP_5 */ +163, /* KP_6 */ +164, /* KP_7 */ +165, /* KP_8 */ +166, /* KP_9 */ +167, /* KP_DECIMAL */ +168, /* KP_DIVIDE */ +169, /* KP_MULTIPLY */ +170, /* KP_SUBTRACT */ +171, /* KP_ADD */ +172, /* KP_ENTER */ +173, /* KP_EQUAL */ +UINT8_MAX, +UINT8_MAX, +UINT8_MAX, +174, /* LEFT_SHIFT */ +175, /* LEFT_CONTROL */ +176, /* LEFT_ALT */ +177, /* LEFT_SUPER */ +178, /* RIGHT_SHIFT */ +179, /* RIGHT_CONTROL */ +180, /* RIGHT_ALT */ +181, /* RIGHT_SUPER */ +182, /* MENU */ }; static inline const char* key_name(int key) { switch(key) { case 32: return "SPACE"; +case 33: return "EXCLAM"; +case 34: return "DOUBLE_QUOTE"; +case 35: return "NUMBER_SIGN"; +case 36: return "DOLLAR"; +case 38: return "AMPERSAND"; case 39: return "APOSTROPHE"; +case 40: return "PARENTHESIS_LEFT"; +case 41: return "PARENTHESIS_RIGHT"; +case 43: return "PLUS"; case 44: return "COMMA"; case 45: return "MINUS"; case 46: return "PERIOD"; @@ -374,8 +382,12 @@ case 54: return "6"; case 55: return "7"; case 56: return "8"; case 57: return "9"; +case 58: return "COLON"; case 59: return "SEMICOLON"; +case 60: return "LESS"; case 61: return "EQUAL"; +case 62: return "GREATER"; +case 64: return "AT"; case 65: return "A"; case 66: return "B"; case 67: return "C"; @@ -405,11 +417,60 @@ case 90: return "Z"; case 91: return "LEFT_BRACKET"; case 92: return "BACKSLASH"; case 93: return "RIGHT_BRACKET"; +case 95: return "UNDERSCORE"; case 96: return "GRAVE_ACCENT"; case 161: return "WORLD_1"; case 162: return "WORLD_2"; -case 163: return "PLUS"; -case 164: return "UNDERSCORE"; +case 167: return "PARAGRAPH"; +case 186: return "MASCULINE"; +case 192: return "A_GRAVE"; +case 196: return "A_DIAERESIS"; +case 197: return "A_RING"; +case 198: return "AE"; +case 199: return "C_CEDILLA"; +case 200: return "E_GRAVE"; +case 201: return "E_ACUTE"; +case 204: return "I_GRAVE"; +case 209: return "N_TILDE"; +case 210: return "O_GRAVE"; +case 214: return "O_DIAERESIS"; +case 216: return "O_SLASH"; +case 217: return "U_GRAVE"; +case 220: return "U_DIAERESIS"; +case 222: return "S_SHARP"; +case 223: return "CYRILLIC_A"; +case 224: return "CYRILLIC_BE"; +case 225: return "CYRILLIC_VE"; +case 226: return "CYRILLIC_GHE"; +case 227: return "CYRILLIC_DE"; +case 228: return "CYRILLIC_IE"; +case 229: return "CYRILLIC_ZHE"; +case 230: return "CYRILLIC_ZE"; +case 231: return "CYRILLIC_I"; +case 232: return "CYRILLIC_SHORT_I"; +case 233: return "CYRILLIC_KA"; +case 234: return "CYRILLIC_EL"; +case 235: return "CYRILLIC_EM"; +case 236: return "CYRILLIC_EN"; +case 237: return "CYRILLIC_O"; +case 238: return "CYRILLIC_PE"; +case 239: return "CYRILLIC_ER"; +case 240: return "CYRILLIC_ES"; +case 241: return "CYRILLIC_TE"; +case 242: return "CYRILLIC_U"; +case 243: return "CYRILLIC_EF"; +case 244: return "CYRILLIC_HA"; +case 245: return "CYRILLIC_TSE"; +case 246: return "CYRILLIC_CHE"; +case 247: return "CYRILLIC_SHA"; +case 248: return "CYRILLIC_SHCHA"; +case 249: return "CYRILLIC_HARD_SIGN"; +case 250: return "CYRILLIC_YERU"; +case 251: return "CYRILLIC_SOFT_SIGN"; +case 252: return "CYRILLIC_E"; +case 253: return "CYRILLIC_YU"; +case 254: return "CYRILLIC_YA"; +case 255: return "CYRILLIC_IO"; case 256: return "ESCAPE"; case 257: return "ENTER"; case 258: return "TAB"; @@ -495,1663 +556,1663 @@ key_lookup(uint8_t key, KeyboardMode mode, uint8_t mods, uint8_t action) { case 1: // PRESS switch (mods & 0xf) { case 0x0: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x5b\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x5b\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x5b\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x5b\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x5b\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x5b\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0x1: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x03\x1b\x5b\x5a"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x32\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x32\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x32\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x32\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x32\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x32\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x32\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x32\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x32\x7e"; } // end switch(key) case 0x2: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x01\x00"; - case 1: // APOSTROPHE + case 6: // APOSTROPHE return "\x01\x27"; - case 2: // COMMA + case 10: // COMMA return "\x01\x2c"; - case 3: // MINUS + case 11: // MINUS return "\x01\x2d"; - case 4: // PERIOD + case 12: // PERIOD return "\x01\x2e"; - case 5: // SLASH + case 13: // SLASH return "\x01\x1f"; - case 6: // 0 + case 14: // 0 return "\x01\x30"; - case 7: // 1 + case 15: // 1 return "\x01\x31"; - case 8: // 2 + case 16: // 2 return "\x01\x00"; - case 9: // 3 + case 17: // 3 return "\x01\x1b"; - case 10: // 4 + case 18: // 4 return "\x01\x1c"; - case 11: // 5 + case 19: // 5 return "\x01\x1d"; - case 12: // 6 + case 20: // 6 return "\x01\x1e"; - case 13: // 7 + case 21: // 7 return "\x01\x1f"; - case 14: // 8 + case 22: // 8 return "\x01\x7f"; - case 15: // 9 + case 23: // 9 return "\x01\x39"; - case 16: // SEMICOLON + case 25: // SEMICOLON return "\x01\x3b"; - case 17: // EQUAL + case 27: // EQUAL return "\x01\x3d"; - case 18: // A + case 30: // A return "\x01\x01"; - case 19: // B + case 31: // B return "\x01\x02"; - case 20: // C + case 32: // C return "\x01\x03"; - case 21: // D + case 33: // D return "\x01\x04"; - case 22: // E + case 34: // E return "\x01\x05"; - case 23: // F + case 35: // F return "\x01\x06"; - case 24: // G + case 36: // G return "\x01\x07"; - case 25: // H + case 37: // H return "\x01\x08"; - case 26: // I + case 38: // I return "\x01\x09"; - case 27: // J + case 39: // J return "\x01\x0a"; - case 28: // K + case 40: // K return "\x01\x0b"; - case 29: // L + case 41: // L return "\x01\x0c"; - case 30: // M + case 42: // M return "\x01\x0d"; - case 31: // N + case 43: // N return "\x01\x0e"; - case 32: // O + case 44: // O return "\x01\x0f"; - case 33: // P + case 45: // P return "\x01\x10"; - case 34: // Q + case 46: // Q return "\x01\x11"; - case 35: // R + case 47: // R return "\x01\x12"; - case 36: // S + case 48: // S return "\x01\x13"; - case 37: // T + case 49: // T return "\x01\x14"; - case 38: // U + case 50: // U return "\x01\x15"; - case 39: // V + case 51: // V return "\x01\x16"; - case 40: // W + case 52: // W return "\x01\x17"; - case 41: // X + case 53: // X return "\x01\x18"; - case 42: // Y + case 54: // Y return "\x01\x19"; - case 43: // Z + case 55: // Z return "\x01\x1a"; - case 44: // LEFT_BRACKET + case 56: // LEFT_BRACKET return "\x01\x1b"; - case 45: // BACKSLASH + case 57: // BACKSLASH return "\x01\x1c"; - case 46: // RIGHT_BRACKET + case 58: // RIGHT_BRACKET return "\x01\x1d"; - case 47: // GRAVE_ACCENT + case 59: // UNDERSCORE return "\x01\x00"; - case 51: // UNDERSCORE + case 60: // GRAVE_ACCENT return "\x01\x00"; - case 52: // ESCAPE + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x08"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x35\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x35\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x35\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x35\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x35\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x35\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x35\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x35\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x35\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x35\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x35\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x35\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x35\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x35\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x35\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x35\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x35\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x35\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x35\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x35\x7e"; } // end switch(key) case 0x3: - switch(key & 0x7f) { default: return NULL; - case 3: // MINUS + switch(key & 0xff) { default: return NULL; + case 11: // MINUS return "\x01\x1f"; - case 5: // SLASH + case 13: // SLASH return "\x01\x7f"; - case 8: // 2 + case 16: // 2 return "\x01\x00"; - case 12: // 6 + case 20: // 6 return "\x01\x1e"; - case 52: // ESCAPE + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x36\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x36\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x36\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x36\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x36\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x36\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x36\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x36\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x36\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x36\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x36\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x36\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x36\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x36\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x36\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x36\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x36\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x36\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x36\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x36\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x36\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x36\x7e"; } // end switch(key) case 0x4: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x02\x1b\x20"; - case 1: // APOSTROPHE + case 6: // APOSTROPHE return "\x02\x1b\x27"; - case 2: // COMMA + case 10: // COMMA return "\x02\x1b\x2c"; - case 3: // MINUS + case 11: // MINUS return "\x02\x1b\x2d"; - case 4: // PERIOD + case 12: // PERIOD return "\x02\x1b\x2e"; - case 5: // SLASH + case 13: // SLASH return "\x02\x1b\x2f"; - case 6: // 0 + case 14: // 0 return "\x02\x1b\x30"; - case 7: // 1 + case 15: // 1 return "\x02\x1b\x31"; - case 8: // 2 + case 16: // 2 return "\x02\x1b\x32"; - case 9: // 3 + case 17: // 3 return "\x02\x1b\x33"; - case 10: // 4 + case 18: // 4 return "\x02\x1b\x34"; - case 11: // 5 + case 19: // 5 return "\x02\x1b\x35"; - case 12: // 6 + case 20: // 6 return "\x02\x1b\x36"; - case 13: // 7 + case 21: // 7 return "\x02\x1b\x37"; - case 14: // 8 + case 22: // 8 return "\x02\x1b\x38"; - case 15: // 9 + case 23: // 9 return "\x02\x1b\x39"; - case 16: // SEMICOLON + case 25: // SEMICOLON return "\x02\x1b\x3b"; - case 17: // EQUAL + case 27: // EQUAL return "\x02\x1b\x3d"; - case 18: // A + case 30: // A return "\x02\x1b\x61"; - case 19: // B + case 31: // B return "\x02\x1b\x62"; - case 20: // C + case 32: // C return "\x02\x1b\x63"; - case 21: // D + case 33: // D return "\x02\x1b\x64"; - case 22: // E + case 34: // E return "\x02\x1b\x65"; - case 23: // F + case 35: // F return "\x02\x1b\x66"; - case 24: // G + case 36: // G return "\x02\x1b\x67"; - case 25: // H + case 37: // H return "\x02\x1b\x68"; - case 26: // I + case 38: // I return "\x02\x1b\x69"; - case 27: // J + case 39: // J return "\x02\x1b\x6a"; - case 28: // K + case 40: // K return "\x02\x1b\x6b"; - case 29: // L + case 41: // L return "\x02\x1b\x6c"; - case 30: // M + case 42: // M return "\x02\x1b\x6d"; - case 31: // N + case 43: // N return "\x02\x1b\x6e"; - case 32: // O + case 44: // O return "\x02\x1b\x6f"; - case 33: // P + case 45: // P return "\x02\x1b\x70"; - case 34: // Q + case 46: // Q return "\x02\x1b\x71"; - case 35: // R + case 47: // R return "\x02\x1b\x72"; - case 36: // S + case 48: // S return "\x02\x1b\x73"; - case 37: // T + case 49: // T return "\x02\x1b\x74"; - case 38: // U + case 50: // U return "\x02\x1b\x75"; - case 39: // V + case 51: // V return "\x02\x1b\x76"; - case 40: // W + case 52: // W return "\x02\x1b\x77"; - case 41: // X + case 53: // X return "\x02\x1b\x78"; - case 42: // Y + case 54: // Y return "\x02\x1b\x79"; - case 43: // Z + case 55: // Z return "\x02\x1b\x7a"; - case 44: // LEFT_BRACKET + case 56: // LEFT_BRACKET return "\x02\x1b\x5b"; - case 45: // BACKSLASH + case 57: // BACKSLASH return "\x02\x1b\x5c"; - case 46: // RIGHT_BRACKET + case 58: // RIGHT_BRACKET return "\x02\x1b\x5d"; - case 47: // GRAVE_ACCENT - return "\x02\x1b\x60"; - case 51: // UNDERSCORE + case 59: // UNDERSCORE return "\x02\x1b\x5f"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x02\x1b\x60"; + case 113: // ESCAPE return "\x02\x1b\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x02\x1b\x0d"; - case 54: // TAB + case 115: // TAB return "\x02\x1b\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x02\x1b\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x33\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x33\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x33\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x33\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x33\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x33\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x33\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x33\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x33\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x33\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x33\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x33\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x33\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x33\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x33\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x33\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x33\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x33\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x33\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x33\x7e"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x33\x7e"; } // end switch(key) case 0x5: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x02\x1b\x20"; - case 1: // APOSTROPHE + case 6: // APOSTROPHE return "\x02\x1b\x22"; - case 2: // COMMA + case 10: // COMMA return "\x02\x1b\x3c"; - case 3: // MINUS + case 11: // MINUS return "\x02\x1b\x5f"; - case 4: // PERIOD + case 12: // PERIOD return "\x02\x1b\x3e"; - case 5: // SLASH + case 13: // SLASH return "\x02\x1b\x3f"; - case 6: // 0 + case 14: // 0 return "\x02\x1b\x29"; - case 7: // 1 + case 15: // 1 return "\x02\x1b\x21"; - case 8: // 2 + case 16: // 2 return "\x02\x1b\x40"; - case 9: // 3 + case 17: // 3 return "\x02\x1b\x23"; - case 10: // 4 + case 18: // 4 return "\x02\x1b\x24"; - case 11: // 5 + case 19: // 5 return "\x02\x1b\x25"; - case 12: // 6 + case 20: // 6 return "\x02\x1b\x5e"; - case 13: // 7 + case 21: // 7 return "\x02\x1b\x26"; - case 14: // 8 + case 22: // 8 return "\x02\x1b\x2a"; - case 15: // 9 + case 23: // 9 return "\x02\x1b\x28"; - case 16: // SEMICOLON + case 25: // SEMICOLON return "\x02\x1b\x3a"; - case 17: // EQUAL + case 27: // EQUAL return "\x02\x1b\x2b"; - case 18: // A + case 30: // A return "\x02\x1b\x41"; - case 19: // B + case 31: // B return "\x02\x1b\x42"; - case 20: // C + case 32: // C return "\x02\x1b\x43"; - case 21: // D + case 33: // D return "\x02\x1b\x44"; - case 22: // E + case 34: // E return "\x02\x1b\x45"; - case 23: // F + case 35: // F return "\x02\x1b\x46"; - case 24: // G + case 36: // G return "\x02\x1b\x47"; - case 25: // H + case 37: // H return "\x02\x1b\x48"; - case 26: // I + case 38: // I return "\x02\x1b\x49"; - case 27: // J + case 39: // J return "\x02\x1b\x4a"; - case 28: // K + case 40: // K return "\x02\x1b\x4b"; - case 29: // L + case 41: // L return "\x02\x1b\x4c"; - case 30: // M + case 42: // M return "\x02\x1b\x4d"; - case 31: // N + case 43: // N return "\x02\x1b\x4e"; - case 32: // O + case 44: // O return "\x02\x1b\x4f"; - case 33: // P + case 45: // P return "\x02\x1b\x50"; - case 34: // Q + case 46: // Q return "\x02\x1b\x51"; - case 35: // R + case 47: // R return "\x02\x1b\x52"; - case 36: // S + case 48: // S return "\x02\x1b\x53"; - case 37: // T + case 49: // T return "\x02\x1b\x54"; - case 38: // U + case 50: // U return "\x02\x1b\x55"; - case 39: // V + case 51: // V return "\x02\x1b\x56"; - case 40: // W + case 52: // W return "\x02\x1b\x57"; - case 41: // X + case 53: // X return "\x02\x1b\x58"; - case 42: // Y + case 54: // Y return "\x02\x1b\x59"; - case 43: // Z + case 55: // Z return "\x02\x1b\x5a"; - case 44: // LEFT_BRACKET + case 56: // LEFT_BRACKET return "\x02\x1b\x7b"; - case 45: // BACKSLASH + case 57: // BACKSLASH return "\x02\x1b\x7c"; - case 46: // RIGHT_BRACKET + case 58: // RIGHT_BRACKET return "\x02\x1b\x7d"; - case 47: // GRAVE_ACCENT - return "\x02\x1b\x7e"; - case 51: // UNDERSCORE + case 59: // UNDERSCORE return "\x02\x1b\x5f"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x02\x1b\x7e"; + case 113: // ESCAPE return "\x02\x1b\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x02\x1b\x0d"; - case 54: // TAB + case 115: // TAB return "\x03\x1b\x5b\x5a"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x02\x1b\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x34\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x34\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x34\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x34\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x34\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x34\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x34\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x34\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x34\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x34\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x34\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x34\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x34\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x34\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x34\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x34\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x34\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x34\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x34\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x34\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x34\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x34\x7e"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x34\x7e"; } // end switch(key) case 0x6: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x02\x1b\x00"; - case 18: // A + case 30: // A return "\x02\x1b\x01"; - case 19: // B + case 31: // B return "\x02\x1b\x02"; - case 20: // C + case 32: // C return "\x02\x1b\x03"; - case 21: // D + case 33: // D return "\x02\x1b\x04"; - case 22: // E + case 34: // E return "\x02\x1b\x05"; - case 23: // F + case 35: // F return "\x02\x1b\x06"; - case 24: // G + case 36: // G return "\x02\x1b\x07"; - case 25: // H + case 37: // H return "\x02\x1b\x08"; - case 26: // I + case 38: // I return "\x02\x1b\x09"; - case 27: // J + case 39: // J return "\x02\x1b\x0a"; - case 28: // K + case 40: // K return "\x02\x1b\x0b"; - case 29: // L + case 41: // L return "\x02\x1b\x0c"; - case 30: // M + case 42: // M return "\x02\x1b\x0d"; - case 31: // N + case 43: // N return "\x02\x1b\x0e"; - case 32: // O + case 44: // O return "\x02\x1b\x0f"; - case 33: // P + case 45: // P return "\x02\x1b\x10"; - case 34: // Q + case 46: // Q return "\x02\x1b\x11"; - case 35: // R + case 47: // R return "\x02\x1b\x12"; - case 36: // S + case 48: // S return "\x02\x1b\x13"; - case 37: // T + case 49: // T return "\x02\x1b\x14"; - case 38: // U + case 50: // U return "\x02\x1b\x15"; - case 39: // V + case 51: // V return "\x02\x1b\x16"; - case 40: // W + case 52: // W return "\x02\x1b\x17"; - case 41: // X + case 53: // X return "\x02\x1b\x18"; - case 42: // Y + case 54: // Y return "\x02\x1b\x19"; - case 43: // Z + case 55: // Z return "\x02\x1b\x1a"; - case 52: // ESCAPE + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x37\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x37\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x37\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x37\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x37\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x37\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x37\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x37\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x37\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x37\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x37\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x37\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x37\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x37\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x37\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x37\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x37\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x37\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x37\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x37\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x37\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x37\x7e"; } // end switch(key) case 0x7: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x38\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x38\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x38\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x38\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x38\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x38\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x38\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x38\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x38\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x38\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x38\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x38\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x38\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x38\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x38\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x38\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x38\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x38\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x38\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x38\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x38\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x38\x7e"; } // end switch(key) case 0x8: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x5b\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x5b\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x5b\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x5b\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x5b\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x5b\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0x9: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x5b\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x5b\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x5b\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x5b\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x5b\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x5b\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xa: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x5b\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x5b\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x5b\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x5b\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x5b\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x5b\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xb: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x5b\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x5b\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x5b\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x5b\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x5b\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x5b\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xc: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x5b\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x5b\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x5b\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x5b\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x5b\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x5b\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xd: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x5b\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x5b\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x5b\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x5b\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x5b\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x5b\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xe: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x5b\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x5b\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x5b\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x5b\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x5b\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x5b\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xf: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x5b\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x5b\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x5b\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x5b\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x5b\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x5b\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) } // end switch(mods) @@ -2160,1663 +2221,1663 @@ key_lookup(uint8_t key, KeyboardMode mode, uint8_t mods, uint8_t action) { case 2: // REPEAT switch (mods & 0xf) { case 0x0: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x5b\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x5b\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x5b\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x5b\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x5b\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x5b\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0x1: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x03\x1b\x5b\x5a"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x32\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x32\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x32\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x32\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x32\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x32\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x32\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x32\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x32\x7e"; } // end switch(key) case 0x2: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x01\x00"; - case 1: // APOSTROPHE + case 6: // APOSTROPHE return "\x01\x27"; - case 2: // COMMA + case 10: // COMMA return "\x01\x2c"; - case 3: // MINUS + case 11: // MINUS return "\x01\x2d"; - case 4: // PERIOD + case 12: // PERIOD return "\x01\x2e"; - case 5: // SLASH + case 13: // SLASH return "\x01\x1f"; - case 6: // 0 + case 14: // 0 return "\x01\x30"; - case 7: // 1 + case 15: // 1 return "\x01\x31"; - case 8: // 2 + case 16: // 2 return "\x01\x00"; - case 9: // 3 + case 17: // 3 return "\x01\x1b"; - case 10: // 4 + case 18: // 4 return "\x01\x1c"; - case 11: // 5 + case 19: // 5 return "\x01\x1d"; - case 12: // 6 + case 20: // 6 return "\x01\x1e"; - case 13: // 7 + case 21: // 7 return "\x01\x1f"; - case 14: // 8 + case 22: // 8 return "\x01\x7f"; - case 15: // 9 + case 23: // 9 return "\x01\x39"; - case 16: // SEMICOLON + case 25: // SEMICOLON return "\x01\x3b"; - case 17: // EQUAL + case 27: // EQUAL return "\x01\x3d"; - case 18: // A + case 30: // A return "\x01\x01"; - case 19: // B + case 31: // B return "\x01\x02"; - case 20: // C + case 32: // C return "\x01\x03"; - case 21: // D + case 33: // D return "\x01\x04"; - case 22: // E + case 34: // E return "\x01\x05"; - case 23: // F + case 35: // F return "\x01\x06"; - case 24: // G + case 36: // G return "\x01\x07"; - case 25: // H + case 37: // H return "\x01\x08"; - case 26: // I + case 38: // I return "\x01\x09"; - case 27: // J + case 39: // J return "\x01\x0a"; - case 28: // K + case 40: // K return "\x01\x0b"; - case 29: // L + case 41: // L return "\x01\x0c"; - case 30: // M + case 42: // M return "\x01\x0d"; - case 31: // N + case 43: // N return "\x01\x0e"; - case 32: // O + case 44: // O return "\x01\x0f"; - case 33: // P + case 45: // P return "\x01\x10"; - case 34: // Q + case 46: // Q return "\x01\x11"; - case 35: // R + case 47: // R return "\x01\x12"; - case 36: // S + case 48: // S return "\x01\x13"; - case 37: // T + case 49: // T return "\x01\x14"; - case 38: // U + case 50: // U return "\x01\x15"; - case 39: // V + case 51: // V return "\x01\x16"; - case 40: // W + case 52: // W return "\x01\x17"; - case 41: // X + case 53: // X return "\x01\x18"; - case 42: // Y + case 54: // Y return "\x01\x19"; - case 43: // Z + case 55: // Z return "\x01\x1a"; - case 44: // LEFT_BRACKET + case 56: // LEFT_BRACKET return "\x01\x1b"; - case 45: // BACKSLASH + case 57: // BACKSLASH return "\x01\x1c"; - case 46: // RIGHT_BRACKET + case 58: // RIGHT_BRACKET return "\x01\x1d"; - case 47: // GRAVE_ACCENT + case 59: // UNDERSCORE return "\x01\x00"; - case 51: // UNDERSCORE + case 60: // GRAVE_ACCENT return "\x01\x00"; - case 52: // ESCAPE + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x08"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x35\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x35\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x35\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x35\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x35\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x35\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x35\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x35\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x35\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x35\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x35\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x35\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x35\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x35\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x35\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x35\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x35\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x35\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x35\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x35\x7e"; } // end switch(key) case 0x3: - switch(key & 0x7f) { default: return NULL; - case 3: // MINUS + switch(key & 0xff) { default: return NULL; + case 11: // MINUS return "\x01\x1f"; - case 5: // SLASH + case 13: // SLASH return "\x01\x7f"; - case 8: // 2 + case 16: // 2 return "\x01\x00"; - case 12: // 6 + case 20: // 6 return "\x01\x1e"; - case 52: // ESCAPE + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x36\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x36\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x36\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x36\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x36\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x36\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x36\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x36\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x36\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x36\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x36\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x36\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x36\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x36\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x36\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x36\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x36\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x36\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x36\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x36\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x36\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x36\x7e"; } // end switch(key) case 0x4: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x02\x1b\x20"; - case 1: // APOSTROPHE + case 6: // APOSTROPHE return "\x02\x1b\x27"; - case 2: // COMMA + case 10: // COMMA return "\x02\x1b\x2c"; - case 3: // MINUS + case 11: // MINUS return "\x02\x1b\x2d"; - case 4: // PERIOD + case 12: // PERIOD return "\x02\x1b\x2e"; - case 5: // SLASH + case 13: // SLASH return "\x02\x1b\x2f"; - case 6: // 0 + case 14: // 0 return "\x02\x1b\x30"; - case 7: // 1 + case 15: // 1 return "\x02\x1b\x31"; - case 8: // 2 + case 16: // 2 return "\x02\x1b\x32"; - case 9: // 3 + case 17: // 3 return "\x02\x1b\x33"; - case 10: // 4 + case 18: // 4 return "\x02\x1b\x34"; - case 11: // 5 + case 19: // 5 return "\x02\x1b\x35"; - case 12: // 6 + case 20: // 6 return "\x02\x1b\x36"; - case 13: // 7 + case 21: // 7 return "\x02\x1b\x37"; - case 14: // 8 + case 22: // 8 return "\x02\x1b\x38"; - case 15: // 9 + case 23: // 9 return "\x02\x1b\x39"; - case 16: // SEMICOLON + case 25: // SEMICOLON return "\x02\x1b\x3b"; - case 17: // EQUAL + case 27: // EQUAL return "\x02\x1b\x3d"; - case 18: // A + case 30: // A return "\x02\x1b\x61"; - case 19: // B + case 31: // B return "\x02\x1b\x62"; - case 20: // C + case 32: // C return "\x02\x1b\x63"; - case 21: // D + case 33: // D return "\x02\x1b\x64"; - case 22: // E + case 34: // E return "\x02\x1b\x65"; - case 23: // F + case 35: // F return "\x02\x1b\x66"; - case 24: // G + case 36: // G return "\x02\x1b\x67"; - case 25: // H + case 37: // H return "\x02\x1b\x68"; - case 26: // I + case 38: // I return "\x02\x1b\x69"; - case 27: // J + case 39: // J return "\x02\x1b\x6a"; - case 28: // K + case 40: // K return "\x02\x1b\x6b"; - case 29: // L + case 41: // L return "\x02\x1b\x6c"; - case 30: // M + case 42: // M return "\x02\x1b\x6d"; - case 31: // N + case 43: // N return "\x02\x1b\x6e"; - case 32: // O + case 44: // O return "\x02\x1b\x6f"; - case 33: // P + case 45: // P return "\x02\x1b\x70"; - case 34: // Q + case 46: // Q return "\x02\x1b\x71"; - case 35: // R + case 47: // R return "\x02\x1b\x72"; - case 36: // S + case 48: // S return "\x02\x1b\x73"; - case 37: // T + case 49: // T return "\x02\x1b\x74"; - case 38: // U + case 50: // U return "\x02\x1b\x75"; - case 39: // V + case 51: // V return "\x02\x1b\x76"; - case 40: // W + case 52: // W return "\x02\x1b\x77"; - case 41: // X + case 53: // X return "\x02\x1b\x78"; - case 42: // Y + case 54: // Y return "\x02\x1b\x79"; - case 43: // Z + case 55: // Z return "\x02\x1b\x7a"; - case 44: // LEFT_BRACKET + case 56: // LEFT_BRACKET return "\x02\x1b\x5b"; - case 45: // BACKSLASH + case 57: // BACKSLASH return "\x02\x1b\x5c"; - case 46: // RIGHT_BRACKET + case 58: // RIGHT_BRACKET return "\x02\x1b\x5d"; - case 47: // GRAVE_ACCENT - return "\x02\x1b\x60"; - case 51: // UNDERSCORE + case 59: // UNDERSCORE return "\x02\x1b\x5f"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x02\x1b\x60"; + case 113: // ESCAPE return "\x02\x1b\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x02\x1b\x0d"; - case 54: // TAB + case 115: // TAB return "\x02\x1b\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x02\x1b\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x33\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x33\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x33\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x33\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x33\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x33\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x33\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x33\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x33\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x33\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x33\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x33\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x33\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x33\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x33\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x33\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x33\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x33\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x33\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x33\x7e"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x33\x7e"; } // end switch(key) case 0x5: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x02\x1b\x20"; - case 1: // APOSTROPHE + case 6: // APOSTROPHE return "\x02\x1b\x22"; - case 2: // COMMA + case 10: // COMMA return "\x02\x1b\x3c"; - case 3: // MINUS + case 11: // MINUS return "\x02\x1b\x5f"; - case 4: // PERIOD + case 12: // PERIOD return "\x02\x1b\x3e"; - case 5: // SLASH + case 13: // SLASH return "\x02\x1b\x3f"; - case 6: // 0 + case 14: // 0 return "\x02\x1b\x29"; - case 7: // 1 + case 15: // 1 return "\x02\x1b\x21"; - case 8: // 2 + case 16: // 2 return "\x02\x1b\x40"; - case 9: // 3 + case 17: // 3 return "\x02\x1b\x23"; - case 10: // 4 + case 18: // 4 return "\x02\x1b\x24"; - case 11: // 5 + case 19: // 5 return "\x02\x1b\x25"; - case 12: // 6 + case 20: // 6 return "\x02\x1b\x5e"; - case 13: // 7 + case 21: // 7 return "\x02\x1b\x26"; - case 14: // 8 + case 22: // 8 return "\x02\x1b\x2a"; - case 15: // 9 + case 23: // 9 return "\x02\x1b\x28"; - case 16: // SEMICOLON + case 25: // SEMICOLON return "\x02\x1b\x3a"; - case 17: // EQUAL + case 27: // EQUAL return "\x02\x1b\x2b"; - case 18: // A + case 30: // A return "\x02\x1b\x41"; - case 19: // B + case 31: // B return "\x02\x1b\x42"; - case 20: // C + case 32: // C return "\x02\x1b\x43"; - case 21: // D + case 33: // D return "\x02\x1b\x44"; - case 22: // E + case 34: // E return "\x02\x1b\x45"; - case 23: // F + case 35: // F return "\x02\x1b\x46"; - case 24: // G + case 36: // G return "\x02\x1b\x47"; - case 25: // H + case 37: // H return "\x02\x1b\x48"; - case 26: // I + case 38: // I return "\x02\x1b\x49"; - case 27: // J + case 39: // J return "\x02\x1b\x4a"; - case 28: // K + case 40: // K return "\x02\x1b\x4b"; - case 29: // L + case 41: // L return "\x02\x1b\x4c"; - case 30: // M + case 42: // M return "\x02\x1b\x4d"; - case 31: // N + case 43: // N return "\x02\x1b\x4e"; - case 32: // O + case 44: // O return "\x02\x1b\x4f"; - case 33: // P + case 45: // P return "\x02\x1b\x50"; - case 34: // Q + case 46: // Q return "\x02\x1b\x51"; - case 35: // R + case 47: // R return "\x02\x1b\x52"; - case 36: // S + case 48: // S return "\x02\x1b\x53"; - case 37: // T + case 49: // T return "\x02\x1b\x54"; - case 38: // U + case 50: // U return "\x02\x1b\x55"; - case 39: // V + case 51: // V return "\x02\x1b\x56"; - case 40: // W + case 52: // W return "\x02\x1b\x57"; - case 41: // X + case 53: // X return "\x02\x1b\x58"; - case 42: // Y + case 54: // Y return "\x02\x1b\x59"; - case 43: // Z + case 55: // Z return "\x02\x1b\x5a"; - case 44: // LEFT_BRACKET + case 56: // LEFT_BRACKET return "\x02\x1b\x7b"; - case 45: // BACKSLASH + case 57: // BACKSLASH return "\x02\x1b\x7c"; - case 46: // RIGHT_BRACKET + case 58: // RIGHT_BRACKET return "\x02\x1b\x7d"; - case 47: // GRAVE_ACCENT - return "\x02\x1b\x7e"; - case 51: // UNDERSCORE + case 59: // UNDERSCORE return "\x02\x1b\x5f"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x02\x1b\x7e"; + case 113: // ESCAPE return "\x02\x1b\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x02\x1b\x0d"; - case 54: // TAB + case 115: // TAB return "\x03\x1b\x5b\x5a"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x02\x1b\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x34\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x34\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x34\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x34\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x34\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x34\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x34\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x34\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x34\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x34\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x34\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x34\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x34\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x34\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x34\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x34\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x34\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x34\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x34\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x34\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x34\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x34\x7e"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x34\x7e"; } // end switch(key) case 0x6: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x02\x1b\x00"; - case 18: // A + case 30: // A return "\x02\x1b\x01"; - case 19: // B + case 31: // B return "\x02\x1b\x02"; - case 20: // C + case 32: // C return "\x02\x1b\x03"; - case 21: // D + case 33: // D return "\x02\x1b\x04"; - case 22: // E + case 34: // E return "\x02\x1b\x05"; - case 23: // F + case 35: // F return "\x02\x1b\x06"; - case 24: // G + case 36: // G return "\x02\x1b\x07"; - case 25: // H + case 37: // H return "\x02\x1b\x08"; - case 26: // I + case 38: // I return "\x02\x1b\x09"; - case 27: // J + case 39: // J return "\x02\x1b\x0a"; - case 28: // K + case 40: // K return "\x02\x1b\x0b"; - case 29: // L + case 41: // L return "\x02\x1b\x0c"; - case 30: // M + case 42: // M return "\x02\x1b\x0d"; - case 31: // N + case 43: // N return "\x02\x1b\x0e"; - case 32: // O + case 44: // O return "\x02\x1b\x0f"; - case 33: // P + case 45: // P return "\x02\x1b\x10"; - case 34: // Q + case 46: // Q return "\x02\x1b\x11"; - case 35: // R + case 47: // R return "\x02\x1b\x12"; - case 36: // S + case 48: // S return "\x02\x1b\x13"; - case 37: // T + case 49: // T return "\x02\x1b\x14"; - case 38: // U + case 50: // U return "\x02\x1b\x15"; - case 39: // V + case 51: // V return "\x02\x1b\x16"; - case 40: // W + case 52: // W return "\x02\x1b\x17"; - case 41: // X + case 53: // X return "\x02\x1b\x18"; - case 42: // Y + case 54: // Y return "\x02\x1b\x19"; - case 43: // Z + case 55: // Z return "\x02\x1b\x1a"; - case 52: // ESCAPE + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x37\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x37\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x37\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x37\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x37\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x37\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x37\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x37\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x37\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x37\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x37\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x37\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x37\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x37\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x37\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x37\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x37\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x37\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x37\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x37\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x37\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x37\x7e"; } // end switch(key) case 0x7: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x38\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x38\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x38\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x38\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x38\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x38\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x38\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x38\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x38\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x38\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x38\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x38\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x38\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x38\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x38\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x38\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x38\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x38\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x38\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x38\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x38\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x38\x7e"; } // end switch(key) case 0x8: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x5b\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x5b\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x5b\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x5b\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x5b\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x5b\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0x9: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x5b\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x5b\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x5b\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x5b\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x5b\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x5b\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xa: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x5b\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x5b\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x5b\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x5b\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x5b\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x5b\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xb: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x5b\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x5b\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x5b\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x5b\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x5b\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x5b\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xc: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x5b\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x5b\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x5b\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x5b\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x5b\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x5b\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xd: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x5b\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x5b\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x5b\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x5b\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x5b\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x5b\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xe: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x5b\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x5b\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x5b\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x5b\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x5b\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x5b\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xf: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x5b\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x5b\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x5b\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x5b\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x5b\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x5b\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) } // end switch(mods) @@ -3834,1663 +3895,1663 @@ key_lookup(uint8_t key, KeyboardMode mode, uint8_t mods, uint8_t action) { case 1: // PRESS switch (mods & 0xf) { case 0x0: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x4f\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x4f\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x4f\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x4f\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x4f\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x4f\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0x1: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x03\x1b\x5b\x5a"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x32\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x32\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x32\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x32\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x32\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x32\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x32\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x32\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x32\x7e"; } // end switch(key) case 0x2: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x01\x00"; - case 1: // APOSTROPHE + case 6: // APOSTROPHE return "\x01\x27"; - case 2: // COMMA + case 10: // COMMA return "\x01\x2c"; - case 3: // MINUS + case 11: // MINUS return "\x01\x2d"; - case 4: // PERIOD + case 12: // PERIOD return "\x01\x2e"; - case 5: // SLASH + case 13: // SLASH return "\x01\x1f"; - case 6: // 0 + case 14: // 0 return "\x01\x30"; - case 7: // 1 + case 15: // 1 return "\x01\x31"; - case 8: // 2 + case 16: // 2 return "\x01\x00"; - case 9: // 3 + case 17: // 3 return "\x01\x1b"; - case 10: // 4 + case 18: // 4 return "\x01\x1c"; - case 11: // 5 + case 19: // 5 return "\x01\x1d"; - case 12: // 6 + case 20: // 6 return "\x01\x1e"; - case 13: // 7 + case 21: // 7 return "\x01\x1f"; - case 14: // 8 + case 22: // 8 return "\x01\x7f"; - case 15: // 9 + case 23: // 9 return "\x01\x39"; - case 16: // SEMICOLON + case 25: // SEMICOLON return "\x01\x3b"; - case 17: // EQUAL + case 27: // EQUAL return "\x01\x3d"; - case 18: // A + case 30: // A return "\x01\x01"; - case 19: // B + case 31: // B return "\x01\x02"; - case 20: // C + case 32: // C return "\x01\x03"; - case 21: // D + case 33: // D return "\x01\x04"; - case 22: // E + case 34: // E return "\x01\x05"; - case 23: // F + case 35: // F return "\x01\x06"; - case 24: // G + case 36: // G return "\x01\x07"; - case 25: // H + case 37: // H return "\x01\x08"; - case 26: // I + case 38: // I return "\x01\x09"; - case 27: // J + case 39: // J return "\x01\x0a"; - case 28: // K + case 40: // K return "\x01\x0b"; - case 29: // L + case 41: // L return "\x01\x0c"; - case 30: // M + case 42: // M return "\x01\x0d"; - case 31: // N + case 43: // N return "\x01\x0e"; - case 32: // O + case 44: // O return "\x01\x0f"; - case 33: // P + case 45: // P return "\x01\x10"; - case 34: // Q + case 46: // Q return "\x01\x11"; - case 35: // R + case 47: // R return "\x01\x12"; - case 36: // S + case 48: // S return "\x01\x13"; - case 37: // T + case 49: // T return "\x01\x14"; - case 38: // U + case 50: // U return "\x01\x15"; - case 39: // V + case 51: // V return "\x01\x16"; - case 40: // W + case 52: // W return "\x01\x17"; - case 41: // X + case 53: // X return "\x01\x18"; - case 42: // Y + case 54: // Y return "\x01\x19"; - case 43: // Z + case 55: // Z return "\x01\x1a"; - case 44: // LEFT_BRACKET + case 56: // LEFT_BRACKET return "\x01\x1b"; - case 45: // BACKSLASH + case 57: // BACKSLASH return "\x01\x1c"; - case 46: // RIGHT_BRACKET + case 58: // RIGHT_BRACKET return "\x01\x1d"; - case 47: // GRAVE_ACCENT + case 59: // UNDERSCORE return "\x01\x00"; - case 51: // UNDERSCORE + case 60: // GRAVE_ACCENT return "\x01\x00"; - case 52: // ESCAPE + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x08"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x35\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x35\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x35\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x35\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x35\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x35\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x35\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x35\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x35\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x35\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x35\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x35\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x35\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x35\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x35\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x35\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x35\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x35\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x35\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x35\x7e"; } // end switch(key) case 0x3: - switch(key & 0x7f) { default: return NULL; - case 3: // MINUS + switch(key & 0xff) { default: return NULL; + case 11: // MINUS return "\x01\x1f"; - case 5: // SLASH + case 13: // SLASH return "\x01\x7f"; - case 8: // 2 + case 16: // 2 return "\x01\x00"; - case 12: // 6 + case 20: // 6 return "\x01\x1e"; - case 52: // ESCAPE + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x36\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x36\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x36\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x36\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x36\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x36\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x36\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x36\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x36\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x36\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x36\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x36\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x36\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x36\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x36\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x36\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x36\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x36\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x36\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x36\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x36\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x36\x7e"; } // end switch(key) case 0x4: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x02\x1b\x20"; - case 1: // APOSTROPHE + case 6: // APOSTROPHE return "\x02\x1b\x27"; - case 2: // COMMA + case 10: // COMMA return "\x02\x1b\x2c"; - case 3: // MINUS + case 11: // MINUS return "\x02\x1b\x2d"; - case 4: // PERIOD + case 12: // PERIOD return "\x02\x1b\x2e"; - case 5: // SLASH + case 13: // SLASH return "\x02\x1b\x2f"; - case 6: // 0 + case 14: // 0 return "\x02\x1b\x30"; - case 7: // 1 + case 15: // 1 return "\x02\x1b\x31"; - case 8: // 2 + case 16: // 2 return "\x02\x1b\x32"; - case 9: // 3 + case 17: // 3 return "\x02\x1b\x33"; - case 10: // 4 + case 18: // 4 return "\x02\x1b\x34"; - case 11: // 5 + case 19: // 5 return "\x02\x1b\x35"; - case 12: // 6 + case 20: // 6 return "\x02\x1b\x36"; - case 13: // 7 + case 21: // 7 return "\x02\x1b\x37"; - case 14: // 8 + case 22: // 8 return "\x02\x1b\x38"; - case 15: // 9 + case 23: // 9 return "\x02\x1b\x39"; - case 16: // SEMICOLON + case 25: // SEMICOLON return "\x02\x1b\x3b"; - case 17: // EQUAL + case 27: // EQUAL return "\x02\x1b\x3d"; - case 18: // A + case 30: // A return "\x02\x1b\x61"; - case 19: // B + case 31: // B return "\x02\x1b\x62"; - case 20: // C + case 32: // C return "\x02\x1b\x63"; - case 21: // D + case 33: // D return "\x02\x1b\x64"; - case 22: // E + case 34: // E return "\x02\x1b\x65"; - case 23: // F + case 35: // F return "\x02\x1b\x66"; - case 24: // G + case 36: // G return "\x02\x1b\x67"; - case 25: // H + case 37: // H return "\x02\x1b\x68"; - case 26: // I + case 38: // I return "\x02\x1b\x69"; - case 27: // J + case 39: // J return "\x02\x1b\x6a"; - case 28: // K + case 40: // K return "\x02\x1b\x6b"; - case 29: // L + case 41: // L return "\x02\x1b\x6c"; - case 30: // M + case 42: // M return "\x02\x1b\x6d"; - case 31: // N + case 43: // N return "\x02\x1b\x6e"; - case 32: // O + case 44: // O return "\x02\x1b\x6f"; - case 33: // P + case 45: // P return "\x02\x1b\x70"; - case 34: // Q + case 46: // Q return "\x02\x1b\x71"; - case 35: // R + case 47: // R return "\x02\x1b\x72"; - case 36: // S + case 48: // S return "\x02\x1b\x73"; - case 37: // T + case 49: // T return "\x02\x1b\x74"; - case 38: // U + case 50: // U return "\x02\x1b\x75"; - case 39: // V + case 51: // V return "\x02\x1b\x76"; - case 40: // W + case 52: // W return "\x02\x1b\x77"; - case 41: // X + case 53: // X return "\x02\x1b\x78"; - case 42: // Y + case 54: // Y return "\x02\x1b\x79"; - case 43: // Z + case 55: // Z return "\x02\x1b\x7a"; - case 44: // LEFT_BRACKET + case 56: // LEFT_BRACKET return "\x02\x1b\x5b"; - case 45: // BACKSLASH + case 57: // BACKSLASH return "\x02\x1b\x5c"; - case 46: // RIGHT_BRACKET + case 58: // RIGHT_BRACKET return "\x02\x1b\x5d"; - case 47: // GRAVE_ACCENT - return "\x02\x1b\x60"; - case 51: // UNDERSCORE + case 59: // UNDERSCORE return "\x02\x1b\x5f"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x02\x1b\x60"; + case 113: // ESCAPE return "\x02\x1b\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x02\x1b\x0d"; - case 54: // TAB + case 115: // TAB return "\x02\x1b\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x02\x1b\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x33\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x33\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x33\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x33\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x33\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x33\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x33\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x33\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x33\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x33\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x33\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x33\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x33\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x33\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x33\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x33\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x33\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x33\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x33\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x33\x7e"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x33\x7e"; } // end switch(key) case 0x5: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x02\x1b\x20"; - case 1: // APOSTROPHE + case 6: // APOSTROPHE return "\x02\x1b\x22"; - case 2: // COMMA + case 10: // COMMA return "\x02\x1b\x3c"; - case 3: // MINUS + case 11: // MINUS return "\x02\x1b\x5f"; - case 4: // PERIOD + case 12: // PERIOD return "\x02\x1b\x3e"; - case 5: // SLASH + case 13: // SLASH return "\x02\x1b\x3f"; - case 6: // 0 + case 14: // 0 return "\x02\x1b\x29"; - case 7: // 1 + case 15: // 1 return "\x02\x1b\x21"; - case 8: // 2 + case 16: // 2 return "\x02\x1b\x40"; - case 9: // 3 + case 17: // 3 return "\x02\x1b\x23"; - case 10: // 4 + case 18: // 4 return "\x02\x1b\x24"; - case 11: // 5 + case 19: // 5 return "\x02\x1b\x25"; - case 12: // 6 + case 20: // 6 return "\x02\x1b\x5e"; - case 13: // 7 + case 21: // 7 return "\x02\x1b\x26"; - case 14: // 8 + case 22: // 8 return "\x02\x1b\x2a"; - case 15: // 9 + case 23: // 9 return "\x02\x1b\x28"; - case 16: // SEMICOLON + case 25: // SEMICOLON return "\x02\x1b\x3a"; - case 17: // EQUAL + case 27: // EQUAL return "\x02\x1b\x2b"; - case 18: // A + case 30: // A return "\x02\x1b\x41"; - case 19: // B + case 31: // B return "\x02\x1b\x42"; - case 20: // C + case 32: // C return "\x02\x1b\x43"; - case 21: // D + case 33: // D return "\x02\x1b\x44"; - case 22: // E + case 34: // E return "\x02\x1b\x45"; - case 23: // F + case 35: // F return "\x02\x1b\x46"; - case 24: // G + case 36: // G return "\x02\x1b\x47"; - case 25: // H + case 37: // H return "\x02\x1b\x48"; - case 26: // I + case 38: // I return "\x02\x1b\x49"; - case 27: // J + case 39: // J return "\x02\x1b\x4a"; - case 28: // K + case 40: // K return "\x02\x1b\x4b"; - case 29: // L + case 41: // L return "\x02\x1b\x4c"; - case 30: // M + case 42: // M return "\x02\x1b\x4d"; - case 31: // N + case 43: // N return "\x02\x1b\x4e"; - case 32: // O + case 44: // O return "\x02\x1b\x4f"; - case 33: // P + case 45: // P return "\x02\x1b\x50"; - case 34: // Q + case 46: // Q return "\x02\x1b\x51"; - case 35: // R + case 47: // R return "\x02\x1b\x52"; - case 36: // S + case 48: // S return "\x02\x1b\x53"; - case 37: // T + case 49: // T return "\x02\x1b\x54"; - case 38: // U + case 50: // U return "\x02\x1b\x55"; - case 39: // V + case 51: // V return "\x02\x1b\x56"; - case 40: // W + case 52: // W return "\x02\x1b\x57"; - case 41: // X + case 53: // X return "\x02\x1b\x58"; - case 42: // Y + case 54: // Y return "\x02\x1b\x59"; - case 43: // Z + case 55: // Z return "\x02\x1b\x5a"; - case 44: // LEFT_BRACKET + case 56: // LEFT_BRACKET return "\x02\x1b\x7b"; - case 45: // BACKSLASH + case 57: // BACKSLASH return "\x02\x1b\x7c"; - case 46: // RIGHT_BRACKET + case 58: // RIGHT_BRACKET return "\x02\x1b\x7d"; - case 47: // GRAVE_ACCENT - return "\x02\x1b\x7e"; - case 51: // UNDERSCORE + case 59: // UNDERSCORE return "\x02\x1b\x5f"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x02\x1b\x7e"; + case 113: // ESCAPE return "\x02\x1b\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x02\x1b\x0d"; - case 54: // TAB + case 115: // TAB return "\x03\x1b\x5b\x5a"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x02\x1b\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x34\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x34\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x34\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x34\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x34\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x34\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x34\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x34\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x34\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x34\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x34\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x34\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x34\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x34\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x34\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x34\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x34\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x34\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x34\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x34\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x34\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x34\x7e"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x34\x7e"; } // end switch(key) case 0x6: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x02\x1b\x00"; - case 18: // A + case 30: // A return "\x02\x1b\x01"; - case 19: // B + case 31: // B return "\x02\x1b\x02"; - case 20: // C + case 32: // C return "\x02\x1b\x03"; - case 21: // D + case 33: // D return "\x02\x1b\x04"; - case 22: // E + case 34: // E return "\x02\x1b\x05"; - case 23: // F + case 35: // F return "\x02\x1b\x06"; - case 24: // G + case 36: // G return "\x02\x1b\x07"; - case 25: // H + case 37: // H return "\x02\x1b\x08"; - case 26: // I + case 38: // I return "\x02\x1b\x09"; - case 27: // J + case 39: // J return "\x02\x1b\x0a"; - case 28: // K + case 40: // K return "\x02\x1b\x0b"; - case 29: // L + case 41: // L return "\x02\x1b\x0c"; - case 30: // M + case 42: // M return "\x02\x1b\x0d"; - case 31: // N + case 43: // N return "\x02\x1b\x0e"; - case 32: // O + case 44: // O return "\x02\x1b\x0f"; - case 33: // P + case 45: // P return "\x02\x1b\x10"; - case 34: // Q + case 46: // Q return "\x02\x1b\x11"; - case 35: // R + case 47: // R return "\x02\x1b\x12"; - case 36: // S + case 48: // S return "\x02\x1b\x13"; - case 37: // T + case 49: // T return "\x02\x1b\x14"; - case 38: // U + case 50: // U return "\x02\x1b\x15"; - case 39: // V + case 51: // V return "\x02\x1b\x16"; - case 40: // W + case 52: // W return "\x02\x1b\x17"; - case 41: // X + case 53: // X return "\x02\x1b\x18"; - case 42: // Y + case 54: // Y return "\x02\x1b\x19"; - case 43: // Z + case 55: // Z return "\x02\x1b\x1a"; - case 52: // ESCAPE + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x37\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x37\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x37\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x37\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x37\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x37\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x37\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x37\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x37\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x37\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x37\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x37\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x37\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x37\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x37\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x37\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x37\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x37\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x37\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x37\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x37\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x37\x7e"; } // end switch(key) case 0x7: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x38\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x38\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x38\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x38\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x38\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x38\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x38\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x38\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x38\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x38\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x38\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x38\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x38\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x38\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x38\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x38\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x38\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x38\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x38\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x38\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x38\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x38\x7e"; } // end switch(key) case 0x8: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x4f\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x4f\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x4f\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x4f\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x4f\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x4f\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0x9: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x4f\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x4f\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x4f\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x4f\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x4f\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x4f\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xa: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x4f\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x4f\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x4f\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x4f\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x4f\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x4f\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xb: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x4f\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x4f\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x4f\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x4f\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x4f\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x4f\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xc: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x4f\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x4f\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x4f\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x4f\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x4f\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x4f\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xd: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x4f\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x4f\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x4f\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x4f\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x4f\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x4f\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xe: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x4f\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x4f\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x4f\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x4f\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x4f\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x4f\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xf: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x4f\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x4f\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x4f\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x4f\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x4f\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x4f\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) } // end switch(mods) @@ -5499,1663 +5560,1663 @@ key_lookup(uint8_t key, KeyboardMode mode, uint8_t mods, uint8_t action) { case 2: // REPEAT switch (mods & 0xf) { case 0x0: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x4f\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x4f\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x4f\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x4f\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x4f\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x4f\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0x1: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x03\x1b\x5b\x5a"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x32\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x32\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x32\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x32\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x32\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x32\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x32\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x32\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x32\x7e"; } // end switch(key) case 0x2: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x01\x00"; - case 1: // APOSTROPHE + case 6: // APOSTROPHE return "\x01\x27"; - case 2: // COMMA + case 10: // COMMA return "\x01\x2c"; - case 3: // MINUS + case 11: // MINUS return "\x01\x2d"; - case 4: // PERIOD + case 12: // PERIOD return "\x01\x2e"; - case 5: // SLASH + case 13: // SLASH return "\x01\x1f"; - case 6: // 0 + case 14: // 0 return "\x01\x30"; - case 7: // 1 + case 15: // 1 return "\x01\x31"; - case 8: // 2 + case 16: // 2 return "\x01\x00"; - case 9: // 3 + case 17: // 3 return "\x01\x1b"; - case 10: // 4 + case 18: // 4 return "\x01\x1c"; - case 11: // 5 + case 19: // 5 return "\x01\x1d"; - case 12: // 6 + case 20: // 6 return "\x01\x1e"; - case 13: // 7 + case 21: // 7 return "\x01\x1f"; - case 14: // 8 + case 22: // 8 return "\x01\x7f"; - case 15: // 9 + case 23: // 9 return "\x01\x39"; - case 16: // SEMICOLON + case 25: // SEMICOLON return "\x01\x3b"; - case 17: // EQUAL + case 27: // EQUAL return "\x01\x3d"; - case 18: // A + case 30: // A return "\x01\x01"; - case 19: // B + case 31: // B return "\x01\x02"; - case 20: // C + case 32: // C return "\x01\x03"; - case 21: // D + case 33: // D return "\x01\x04"; - case 22: // E + case 34: // E return "\x01\x05"; - case 23: // F + case 35: // F return "\x01\x06"; - case 24: // G + case 36: // G return "\x01\x07"; - case 25: // H + case 37: // H return "\x01\x08"; - case 26: // I + case 38: // I return "\x01\x09"; - case 27: // J + case 39: // J return "\x01\x0a"; - case 28: // K + case 40: // K return "\x01\x0b"; - case 29: // L + case 41: // L return "\x01\x0c"; - case 30: // M + case 42: // M return "\x01\x0d"; - case 31: // N + case 43: // N return "\x01\x0e"; - case 32: // O + case 44: // O return "\x01\x0f"; - case 33: // P + case 45: // P return "\x01\x10"; - case 34: // Q + case 46: // Q return "\x01\x11"; - case 35: // R + case 47: // R return "\x01\x12"; - case 36: // S + case 48: // S return "\x01\x13"; - case 37: // T + case 49: // T return "\x01\x14"; - case 38: // U + case 50: // U return "\x01\x15"; - case 39: // V + case 51: // V return "\x01\x16"; - case 40: // W + case 52: // W return "\x01\x17"; - case 41: // X + case 53: // X return "\x01\x18"; - case 42: // Y + case 54: // Y return "\x01\x19"; - case 43: // Z + case 55: // Z return "\x01\x1a"; - case 44: // LEFT_BRACKET + case 56: // LEFT_BRACKET return "\x01\x1b"; - case 45: // BACKSLASH + case 57: // BACKSLASH return "\x01\x1c"; - case 46: // RIGHT_BRACKET + case 58: // RIGHT_BRACKET return "\x01\x1d"; - case 47: // GRAVE_ACCENT + case 59: // UNDERSCORE return "\x01\x00"; - case 51: // UNDERSCORE + case 60: // GRAVE_ACCENT return "\x01\x00"; - case 52: // ESCAPE + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x08"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x35\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x35\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x35\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x35\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x35\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x35\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x35\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x35\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x35\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x35\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x35\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x35\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x35\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x35\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x35\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x35\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x35\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x35\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x35\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x35\x7e"; } // end switch(key) case 0x3: - switch(key & 0x7f) { default: return NULL; - case 3: // MINUS + switch(key & 0xff) { default: return NULL; + case 11: // MINUS return "\x01\x1f"; - case 5: // SLASH + case 13: // SLASH return "\x01\x7f"; - case 8: // 2 + case 16: // 2 return "\x01\x00"; - case 12: // 6 + case 20: // 6 return "\x01\x1e"; - case 52: // ESCAPE + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x36\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x36\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x36\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x36\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x36\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x36\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x36\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x36\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x36\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x36\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x36\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x36\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x36\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x36\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x36\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x36\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x36\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x36\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x36\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x36\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x36\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x36\x7e"; } // end switch(key) case 0x4: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x02\x1b\x20"; - case 1: // APOSTROPHE + case 6: // APOSTROPHE return "\x02\x1b\x27"; - case 2: // COMMA + case 10: // COMMA return "\x02\x1b\x2c"; - case 3: // MINUS + case 11: // MINUS return "\x02\x1b\x2d"; - case 4: // PERIOD + case 12: // PERIOD return "\x02\x1b\x2e"; - case 5: // SLASH + case 13: // SLASH return "\x02\x1b\x2f"; - case 6: // 0 + case 14: // 0 return "\x02\x1b\x30"; - case 7: // 1 + case 15: // 1 return "\x02\x1b\x31"; - case 8: // 2 + case 16: // 2 return "\x02\x1b\x32"; - case 9: // 3 + case 17: // 3 return "\x02\x1b\x33"; - case 10: // 4 + case 18: // 4 return "\x02\x1b\x34"; - case 11: // 5 + case 19: // 5 return "\x02\x1b\x35"; - case 12: // 6 + case 20: // 6 return "\x02\x1b\x36"; - case 13: // 7 + case 21: // 7 return "\x02\x1b\x37"; - case 14: // 8 + case 22: // 8 return "\x02\x1b\x38"; - case 15: // 9 + case 23: // 9 return "\x02\x1b\x39"; - case 16: // SEMICOLON + case 25: // SEMICOLON return "\x02\x1b\x3b"; - case 17: // EQUAL + case 27: // EQUAL return "\x02\x1b\x3d"; - case 18: // A + case 30: // A return "\x02\x1b\x61"; - case 19: // B + case 31: // B return "\x02\x1b\x62"; - case 20: // C + case 32: // C return "\x02\x1b\x63"; - case 21: // D + case 33: // D return "\x02\x1b\x64"; - case 22: // E + case 34: // E return "\x02\x1b\x65"; - case 23: // F + case 35: // F return "\x02\x1b\x66"; - case 24: // G + case 36: // G return "\x02\x1b\x67"; - case 25: // H + case 37: // H return "\x02\x1b\x68"; - case 26: // I + case 38: // I return "\x02\x1b\x69"; - case 27: // J + case 39: // J return "\x02\x1b\x6a"; - case 28: // K + case 40: // K return "\x02\x1b\x6b"; - case 29: // L + case 41: // L return "\x02\x1b\x6c"; - case 30: // M + case 42: // M return "\x02\x1b\x6d"; - case 31: // N + case 43: // N return "\x02\x1b\x6e"; - case 32: // O + case 44: // O return "\x02\x1b\x6f"; - case 33: // P + case 45: // P return "\x02\x1b\x70"; - case 34: // Q + case 46: // Q return "\x02\x1b\x71"; - case 35: // R + case 47: // R return "\x02\x1b\x72"; - case 36: // S + case 48: // S return "\x02\x1b\x73"; - case 37: // T + case 49: // T return "\x02\x1b\x74"; - case 38: // U + case 50: // U return "\x02\x1b\x75"; - case 39: // V + case 51: // V return "\x02\x1b\x76"; - case 40: // W + case 52: // W return "\x02\x1b\x77"; - case 41: // X + case 53: // X return "\x02\x1b\x78"; - case 42: // Y + case 54: // Y return "\x02\x1b\x79"; - case 43: // Z + case 55: // Z return "\x02\x1b\x7a"; - case 44: // LEFT_BRACKET + case 56: // LEFT_BRACKET return "\x02\x1b\x5b"; - case 45: // BACKSLASH + case 57: // BACKSLASH return "\x02\x1b\x5c"; - case 46: // RIGHT_BRACKET + case 58: // RIGHT_BRACKET return "\x02\x1b\x5d"; - case 47: // GRAVE_ACCENT - return "\x02\x1b\x60"; - case 51: // UNDERSCORE + case 59: // UNDERSCORE return "\x02\x1b\x5f"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x02\x1b\x60"; + case 113: // ESCAPE return "\x02\x1b\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x02\x1b\x0d"; - case 54: // TAB + case 115: // TAB return "\x02\x1b\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x02\x1b\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x33\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x33\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x33\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x33\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x33\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x33\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x33\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x33\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x33\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x33\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x33\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x33\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x33\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x33\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x33\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x33\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x33\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x33\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x33\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x33\x7e"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x33\x7e"; } // end switch(key) case 0x5: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x02\x1b\x20"; - case 1: // APOSTROPHE + case 6: // APOSTROPHE return "\x02\x1b\x22"; - case 2: // COMMA + case 10: // COMMA return "\x02\x1b\x3c"; - case 3: // MINUS + case 11: // MINUS return "\x02\x1b\x5f"; - case 4: // PERIOD + case 12: // PERIOD return "\x02\x1b\x3e"; - case 5: // SLASH + case 13: // SLASH return "\x02\x1b\x3f"; - case 6: // 0 + case 14: // 0 return "\x02\x1b\x29"; - case 7: // 1 + case 15: // 1 return "\x02\x1b\x21"; - case 8: // 2 + case 16: // 2 return "\x02\x1b\x40"; - case 9: // 3 + case 17: // 3 return "\x02\x1b\x23"; - case 10: // 4 + case 18: // 4 return "\x02\x1b\x24"; - case 11: // 5 + case 19: // 5 return "\x02\x1b\x25"; - case 12: // 6 + case 20: // 6 return "\x02\x1b\x5e"; - case 13: // 7 + case 21: // 7 return "\x02\x1b\x26"; - case 14: // 8 + case 22: // 8 return "\x02\x1b\x2a"; - case 15: // 9 + case 23: // 9 return "\x02\x1b\x28"; - case 16: // SEMICOLON + case 25: // SEMICOLON return "\x02\x1b\x3a"; - case 17: // EQUAL + case 27: // EQUAL return "\x02\x1b\x2b"; - case 18: // A + case 30: // A return "\x02\x1b\x41"; - case 19: // B + case 31: // B return "\x02\x1b\x42"; - case 20: // C + case 32: // C return "\x02\x1b\x43"; - case 21: // D + case 33: // D return "\x02\x1b\x44"; - case 22: // E + case 34: // E return "\x02\x1b\x45"; - case 23: // F + case 35: // F return "\x02\x1b\x46"; - case 24: // G + case 36: // G return "\x02\x1b\x47"; - case 25: // H + case 37: // H return "\x02\x1b\x48"; - case 26: // I + case 38: // I return "\x02\x1b\x49"; - case 27: // J + case 39: // J return "\x02\x1b\x4a"; - case 28: // K + case 40: // K return "\x02\x1b\x4b"; - case 29: // L + case 41: // L return "\x02\x1b\x4c"; - case 30: // M + case 42: // M return "\x02\x1b\x4d"; - case 31: // N + case 43: // N return "\x02\x1b\x4e"; - case 32: // O + case 44: // O return "\x02\x1b\x4f"; - case 33: // P + case 45: // P return "\x02\x1b\x50"; - case 34: // Q + case 46: // Q return "\x02\x1b\x51"; - case 35: // R + case 47: // R return "\x02\x1b\x52"; - case 36: // S + case 48: // S return "\x02\x1b\x53"; - case 37: // T + case 49: // T return "\x02\x1b\x54"; - case 38: // U + case 50: // U return "\x02\x1b\x55"; - case 39: // V + case 51: // V return "\x02\x1b\x56"; - case 40: // W + case 52: // W return "\x02\x1b\x57"; - case 41: // X + case 53: // X return "\x02\x1b\x58"; - case 42: // Y + case 54: // Y return "\x02\x1b\x59"; - case 43: // Z + case 55: // Z return "\x02\x1b\x5a"; - case 44: // LEFT_BRACKET + case 56: // LEFT_BRACKET return "\x02\x1b\x7b"; - case 45: // BACKSLASH + case 57: // BACKSLASH return "\x02\x1b\x7c"; - case 46: // RIGHT_BRACKET + case 58: // RIGHT_BRACKET return "\x02\x1b\x7d"; - case 47: // GRAVE_ACCENT - return "\x02\x1b\x7e"; - case 51: // UNDERSCORE + case 59: // UNDERSCORE return "\x02\x1b\x5f"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x02\x1b\x7e"; + case 113: // ESCAPE return "\x02\x1b\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x02\x1b\x0d"; - case 54: // TAB + case 115: // TAB return "\x03\x1b\x5b\x5a"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x02\x1b\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x34\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x34\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x34\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x34\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x34\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x34\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x34\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x34\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x34\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x34\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x34\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x34\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x34\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x34\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x34\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x34\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x34\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x34\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x34\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x34\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x34\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x34\x7e"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x34\x7e"; } // end switch(key) case 0x6: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x02\x1b\x00"; - case 18: // A + case 30: // A return "\x02\x1b\x01"; - case 19: // B + case 31: // B return "\x02\x1b\x02"; - case 20: // C + case 32: // C return "\x02\x1b\x03"; - case 21: // D + case 33: // D return "\x02\x1b\x04"; - case 22: // E + case 34: // E return "\x02\x1b\x05"; - case 23: // F + case 35: // F return "\x02\x1b\x06"; - case 24: // G + case 36: // G return "\x02\x1b\x07"; - case 25: // H + case 37: // H return "\x02\x1b\x08"; - case 26: // I + case 38: // I return "\x02\x1b\x09"; - case 27: // J + case 39: // J return "\x02\x1b\x0a"; - case 28: // K + case 40: // K return "\x02\x1b\x0b"; - case 29: // L + case 41: // L return "\x02\x1b\x0c"; - case 30: // M + case 42: // M return "\x02\x1b\x0d"; - case 31: // N + case 43: // N return "\x02\x1b\x0e"; - case 32: // O + case 44: // O return "\x02\x1b\x0f"; - case 33: // P + case 45: // P return "\x02\x1b\x10"; - case 34: // Q + case 46: // Q return "\x02\x1b\x11"; - case 35: // R + case 47: // R return "\x02\x1b\x12"; - case 36: // S + case 48: // S return "\x02\x1b\x13"; - case 37: // T + case 49: // T return "\x02\x1b\x14"; - case 38: // U + case 50: // U return "\x02\x1b\x15"; - case 39: // V + case 51: // V return "\x02\x1b\x16"; - case 40: // W + case 52: // W return "\x02\x1b\x17"; - case 41: // X + case 53: // X return "\x02\x1b\x18"; - case 42: // Y + case 54: // Y return "\x02\x1b\x19"; - case 43: // Z + case 55: // Z return "\x02\x1b\x1a"; - case 52: // ESCAPE + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x37\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x37\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x37\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x37\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x37\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x37\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x37\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x37\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x37\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x37\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x37\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x37\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x37\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x37\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x37\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x37\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x37\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x37\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x37\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x37\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x37\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x37\x7e"; } // end switch(key) case 0x7: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x06\x1b\x5b\x32\x3b\x38\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x06\x1b\x5b\x33\x3b\x38\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x06\x1b\x5b\x31\x3b\x38\x43"; - case 59: // LEFT + case 120: // LEFT return "\x06\x1b\x5b\x31\x3b\x38\x44"; - case 60: // DOWN + case 121: // DOWN return "\x06\x1b\x5b\x31\x3b\x38\x42"; - case 61: // UP + case 122: // UP return "\x06\x1b\x5b\x31\x3b\x38\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x06\x1b\x5b\x35\x3b\x38\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x06\x1b\x5b\x36\x3b\x38\x7e"; - case 64: // HOME + case 125: // HOME return "\x06\x1b\x5b\x31\x3b\x38\x48"; - case 65: // END + case 126: // END return "\x06\x1b\x5b\x31\x3b\x38\x46"; - case 71: // F1 + case 132: // F1 return "\x06\x1b\x5b\x31\x3b\x38\x50"; - case 72: // F2 + case 133: // F2 return "\x06\x1b\x5b\x31\x3b\x38\x51"; - case 73: // F3 + case 134: // F3 return "\x06\x1b\x5b\x31\x3b\x38\x52"; - case 74: // F4 + case 135: // F4 return "\x06\x1b\x5b\x31\x3b\x38\x53"; - case 75: // F5 + case 136: // F5 return "\x07\x1b\x5b\x31\x35\x3b\x38\x7e"; - case 76: // F6 + case 137: // F6 return "\x07\x1b\x5b\x31\x37\x3b\x38\x7e"; - case 77: // F7 + case 138: // F7 return "\x07\x1b\x5b\x31\x38\x3b\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x07\x1b\x5b\x31\x39\x3b\x38\x7e"; - case 79: // F9 + case 140: // F9 return "\x07\x1b\x5b\x32\x30\x3b\x38\x7e"; - case 80: // F10 + case 141: // F10 return "\x07\x1b\x5b\x32\x31\x3b\x38\x7e"; - case 81: // F11 + case 142: // F11 return "\x07\x1b\x5b\x32\x33\x3b\x38\x7e"; - case 82: // F12 + case 143: // F12 return "\x07\x1b\x5b\x32\x34\x3b\x38\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x07\x1b\x5b\x32\x39\x3b\x38\x7e"; } // end switch(key) case 0x8: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x4f\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x4f\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x4f\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x4f\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x4f\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x4f\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0x9: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x4f\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x4f\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x4f\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x4f\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x4f\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x4f\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xa: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x4f\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x4f\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x4f\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x4f\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x4f\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x4f\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xb: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x4f\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x4f\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x4f\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x4f\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x4f\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x4f\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xc: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x4f\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x4f\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x4f\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x4f\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x4f\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x4f\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xd: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x4f\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x4f\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x4f\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x4f\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x4f\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x4f\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xe: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x4f\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x4f\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x4f\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x4f\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x4f\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x4f\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) case 0xf: - switch(key & 0x7f) { default: return NULL; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x01\x1b"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x01\x09"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x1b\x5b\x32\x7e"; - case 57: // DELETE + case 118: // DELETE return "\x04\x1b\x5b\x33\x7e"; - case 58: // RIGHT + case 119: // RIGHT return "\x03\x1b\x4f\x43"; - case 59: // LEFT + case 120: // LEFT return "\x03\x1b\x4f\x44"; - case 60: // DOWN + case 121: // DOWN return "\x03\x1b\x4f\x42"; - case 61: // UP + case 122: // UP return "\x03\x1b\x4f\x41"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x1b\x5b\x35\x7e"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x1b\x5b\x36\x7e"; - case 64: // HOME + case 125: // HOME return "\x03\x1b\x4f\x48"; - case 65: // END + case 126: // END return "\x03\x1b\x4f\x46"; - case 71: // F1 + case 132: // F1 return "\x03\x1b\x4f\x50"; - case 72: // F2 + case 133: // F2 return "\x03\x1b\x4f\x51"; - case 73: // F3 + case 134: // F3 return "\x03\x1b\x4f\x52"; - case 74: // F4 + case 135: // F4 return "\x03\x1b\x4f\x53"; - case 75: // F5 + case 136: // F5 return "\x05\x1b\x5b\x31\x35\x7e"; - case 76: // F6 + case 137: // F6 return "\x05\x1b\x5b\x31\x37\x7e"; - case 77: // F7 + case 138: // F7 return "\x05\x1b\x5b\x31\x38\x7e"; - case 78: // F8 + case 139: // F8 return "\x05\x1b\x5b\x31\x39\x7e"; - case 79: // F9 + case 140: // F9 return "\x05\x1b\x5b\x32\x30\x7e"; - case 80: // F10 + case 141: // F10 return "\x05\x1b\x5b\x32\x31\x7e"; - case 81: // F11 + case 142: // F11 return "\x05\x1b\x5b\x32\x33\x7e"; - case 82: // F12 + case 143: // F12 return "\x05\x1b\x5b\x32\x34\x7e"; - case 83: // F13 + case 144: // F13 return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 84: // F14 + case 145: // F14 return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 85: // F15 + case 146: // F15 return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 86: // F16 + case 147: // F16 return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 87: // F17 + case 148: // F17 return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 88: // F18 + case 149: // F18 return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 89: // F19 + case 150: // F19 return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 90: // F20 + case 151: // F20 return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 91: // F21 + case 152: // F21 return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 92: // F22 + case 153: // F22 return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 93: // F23 + case 154: // F23 return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 94: // F24 + case 155: // F24 return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 95: // F25 + case 156: // F25 return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x01\x0d"; - case 121: // MENU + case 182: // MENU return "\x05\x1b\x5b\x32\x39\x7e"; } // end switch(key) } // end switch(mods) @@ -7170,3663 +7231,5355 @@ key_lookup(uint8_t key, KeyboardMode mode, uint8_t mods, uint8_t action) { case 0: // RELEASE switch (mods & 0xf) { case 0x0: - switch(key & 0x7f) { default: return NULL; - case 48: // WORLD_1 - return "\x04\x4b\x72\x41\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x72\x41\x78"; - case 50: // PLUS - return "\x05\x4b\x72\x41\x42\x69"; - case 51: // UNDERSCORE - return "\x05\x4b\x72\x41\x42\x6a"; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x04\x4b\x72\x41\x79"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x72\x41\x30"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x72\x41\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x72\x41\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x72\x41\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x72\x41\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x72\x41\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x72\x41\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x72\x41\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x72\x41\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x72\x41\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x72\x41\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x72\x41\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x72\x41\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x72\x41\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x72\x41\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x72\x41\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x72\x41\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x72\x41\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x72\x41\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x72\x41\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x72\x41\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x72\x41\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x72\x41\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x72\x41\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x72\x41\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x72\x41\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x72\x41\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x72\x41\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x72\x41\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x72\x41\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x72\x41\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x72\x41\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x72\x41\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x72\x41\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x72\x41\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x72\x41\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x72\x41\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x72\x41\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x72\x41\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x72\x41\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x72\x41\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x72\x41\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x72\x41\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x72\x41\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x72\x41\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x72\x41\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x72\x41\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x72\x41\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x72\x41\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x72\x41\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x72\x41\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x72\x41\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x72\x41\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x72\x41\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x72\x41\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x72\x41\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x72\x41\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x72\x41\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x72\x41\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x72\x41\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x72\x41\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x72\x41\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x72\x41\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x72\x41\x42\x68"; } // end switch(key) case 0x1: - switch(key & 0x7f) { default: return NULL; - case 48: // WORLD_1 - return "\x04\x4b\x72\x42\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x72\x42\x78"; - case 50: // PLUS - return "\x05\x4b\x72\x42\x42\x69"; - case 51: // UNDERSCORE - return "\x05\x4b\x72\x42\x42\x6a"; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x04\x4b\x72\x42\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x72\x42\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x72\x42\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x72\x42\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x72\x42\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x72\x42\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x72\x42\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x72\x42\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x72\x42\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x72\x42\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x72\x42\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x72\x42\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x72\x42\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x72\x42\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x72\x42\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x72\x42\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x72\x42\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x72\x42\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x72\x42\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x72\x42\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x72\x42\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x72\x42\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x72\x42\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x72\x42\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x72\x42\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x72\x42\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x72\x42\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x72\x42\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x72\x42\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x72\x42\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x72\x42\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x72\x42\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x72\x42\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x72\x42\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x72\x42\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x72\x42\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x72\x42\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x72\x42\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x72\x42\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x72\x42\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x72\x42\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x72\x42\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x72\x42\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x72\x42\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x72\x42\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x72\x42\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x72\x42\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x72\x42\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x72\x42\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x72\x42\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x72\x42\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x72\x42\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x72\x42\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x72\x42\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x72\x42\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x72\x42\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x72\x42\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x72\x42\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x72\x42\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x72\x42\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x72\x42\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x72\x42\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x72\x42\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x72\x42\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x72\x42\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x72\x42\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x72\x42\x42\x68"; } // end switch(key) case 0x2: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x72\x45\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x72\x45\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x72\x45\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x72\x45\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x72\x45\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x72\x45\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x72\x45\x42"; - case 2: // COMMA - return "\x04\x4b\x72\x45\x43"; - case 3: // MINUS - return "\x04\x4b\x72\x45\x44"; - case 4: // PERIOD - return "\x04\x4b\x72\x45\x45"; - case 5: // SLASH - return "\x04\x4b\x72\x45\x46"; - case 6: // 0 - return "\x04\x4b\x72\x45\x47"; - case 7: // 1 - return "\x04\x4b\x72\x45\x48"; - case 8: // 2 - return "\x04\x4b\x72\x45\x49"; - case 9: // 3 - return "\x04\x4b\x72\x45\x4a"; - case 10: // 4 - return "\x04\x4b\x72\x45\x4b"; - case 11: // 5 - return "\x04\x4b\x72\x45\x4c"; - case 12: // 6 - return "\x04\x4b\x72\x45\x4d"; - case 13: // 7 - return "\x04\x4b\x72\x45\x4e"; - case 14: // 8 - return "\x04\x4b\x72\x45\x4f"; - case 15: // 9 - return "\x04\x4b\x72\x45\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x72\x45\x51"; - case 17: // EQUAL - return "\x04\x4b\x72\x45\x52"; - case 18: // A - return "\x04\x4b\x72\x45\x53"; - case 19: // B - return "\x04\x4b\x72\x45\x54"; - case 20: // C - return "\x04\x4b\x72\x45\x55"; - case 21: // D - return "\x04\x4b\x72\x45\x56"; - case 22: // E - return "\x04\x4b\x72\x45\x57"; - case 23: // F - return "\x04\x4b\x72\x45\x58"; - case 24: // G - return "\x04\x4b\x72\x45\x59"; - case 25: // H - return "\x04\x4b\x72\x45\x5a"; - case 26: // I - return "\x04\x4b\x72\x45\x61"; - case 27: // J - return "\x04\x4b\x72\x45\x62"; - case 28: // K - return "\x04\x4b\x72\x45\x63"; - case 29: // L - return "\x04\x4b\x72\x45\x64"; - case 30: // M - return "\x04\x4b\x72\x45\x65"; - case 31: // N - return "\x04\x4b\x72\x45\x66"; - case 32: // O - return "\x04\x4b\x72\x45\x67"; - case 33: // P - return "\x04\x4b\x72\x45\x68"; - case 34: // Q - return "\x04\x4b\x72\x45\x69"; - case 35: // R - return "\x04\x4b\x72\x45\x6a"; - case 36: // S - return "\x04\x4b\x72\x45\x6b"; - case 37: // T - return "\x04\x4b\x72\x45\x6c"; - case 38: // U - return "\x04\x4b\x72\x45\x6d"; - case 39: // V - return "\x04\x4b\x72\x45\x6e"; - case 40: // W - return "\x04\x4b\x72\x45\x6f"; - case 41: // X - return "\x04\x4b\x72\x45\x70"; - case 42: // Y - return "\x04\x4b\x72\x45\x71"; - case 43: // Z - return "\x04\x4b\x72\x45\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x72\x45\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x72\x45\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x72\x45\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x72\x45\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x72\x45\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x72\x45\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x72\x45\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x72\x45\x42\x72"; + case 9: // PLUS return "\x05\x4b\x72\x45\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x72\x45\x43"; + case 11: // MINUS + return "\x04\x4b\x72\x45\x44"; + case 12: // PERIOD + return "\x04\x4b\x72\x45\x45"; + case 13: // SLASH + return "\x04\x4b\x72\x45\x46"; + case 14: // 0 + return "\x04\x4b\x72\x45\x47"; + case 15: // 1 + return "\x04\x4b\x72\x45\x48"; + case 16: // 2 + return "\x04\x4b\x72\x45\x49"; + case 17: // 3 + return "\x04\x4b\x72\x45\x4a"; + case 18: // 4 + return "\x04\x4b\x72\x45\x4b"; + case 19: // 5 + return "\x04\x4b\x72\x45\x4c"; + case 20: // 6 + return "\x04\x4b\x72\x45\x4d"; + case 21: // 7 + return "\x04\x4b\x72\x45\x4e"; + case 22: // 8 + return "\x04\x4b\x72\x45\x4f"; + case 23: // 9 + return "\x04\x4b\x72\x45\x50"; + case 24: // COLON + return "\x05\x4b\x72\x45\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x72\x45\x51"; + case 26: // LESS + return "\x05\x4b\x72\x45\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x72\x45\x52"; + case 28: // GREATER + return "\x05\x4b\x72\x45\x42\x75"; + case 29: // AT + return "\x05\x4b\x72\x45\x42\x76"; + case 30: // A + return "\x04\x4b\x72\x45\x53"; + case 31: // B + return "\x04\x4b\x72\x45\x54"; + case 32: // C + return "\x04\x4b\x72\x45\x55"; + case 33: // D + return "\x04\x4b\x72\x45\x56"; + case 34: // E + return "\x04\x4b\x72\x45\x57"; + case 35: // F + return "\x04\x4b\x72\x45\x58"; + case 36: // G + return "\x04\x4b\x72\x45\x59"; + case 37: // H + return "\x04\x4b\x72\x45\x5a"; + case 38: // I + return "\x04\x4b\x72\x45\x61"; + case 39: // J + return "\x04\x4b\x72\x45\x62"; + case 40: // K + return "\x04\x4b\x72\x45\x63"; + case 41: // L + return "\x04\x4b\x72\x45\x64"; + case 42: // M + return "\x04\x4b\x72\x45\x65"; + case 43: // N + return "\x04\x4b\x72\x45\x66"; + case 44: // O + return "\x04\x4b\x72\x45\x67"; + case 45: // P + return "\x04\x4b\x72\x45\x68"; + case 46: // Q + return "\x04\x4b\x72\x45\x69"; + case 47: // R + return "\x04\x4b\x72\x45\x6a"; + case 48: // S + return "\x04\x4b\x72\x45\x6b"; + case 49: // T + return "\x04\x4b\x72\x45\x6c"; + case 50: // U + return "\x04\x4b\x72\x45\x6d"; + case 51: // V + return "\x04\x4b\x72\x45\x6e"; + case 52: // W + return "\x04\x4b\x72\x45\x6f"; + case 53: // X + return "\x04\x4b\x72\x45\x70"; + case 54: // Y + return "\x04\x4b\x72\x45\x71"; + case 55: // Z + return "\x04\x4b\x72\x45\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x72\x45\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x72\x45\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x72\x45\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x72\x45\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x72\x45\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x72\x45\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x72\x45\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x72\x45\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x72\x45\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x72\x45\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x72\x45\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x72\x45\x42\x30"; + case 68: // AE + return "\x05\x4b\x72\x45\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x72\x45\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x72\x45\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x72\x45\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x72\x45\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x72\x45\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x72\x45\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x72\x45\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x72\x45\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x72\x45\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x72\x45\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x72\x45\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x72\x45\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x72\x45\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x72\x45\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x72\x45\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x72\x45\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x72\x45\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x72\x45\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x72\x45\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x72\x45\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x72\x45\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x72\x45\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x72\x45\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x72\x45\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x72\x45\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x72\x45\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x72\x45\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x72\x45\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x72\x45\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x72\x45\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x72\x45\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x72\x45\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x72\x45\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x72\x45\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x72\x45\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x72\x45\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x72\x45\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x72\x45\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x72\x45\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x72\x45\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x72\x45\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x72\x45\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x72\x45\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x72\x45\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x72\x45\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x72\x45\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x72\x45\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x72\x45\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x72\x45\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x72\x45\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x72\x45\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x72\x45\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x72\x45\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x72\x45\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x72\x45\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x72\x45\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x72\x45\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x72\x45\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x72\x45\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x72\x45\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x72\x45\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x72\x45\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x72\x45\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x72\x45\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x72\x45\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x72\x45\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x72\x45\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x72\x45\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x72\x45\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x72\x45\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x72\x45\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x72\x45\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x72\x45\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x72\x45\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x72\x45\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x72\x45\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x72\x45\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x72\x45\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x72\x45\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x72\x45\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x72\x45\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x72\x45\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x72\x45\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x72\x45\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x72\x45\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x72\x45\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x72\x45\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x72\x45\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x72\x45\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x72\x45\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x72\x45\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x72\x45\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x72\x45\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x72\x45\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x72\x45\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x72\x45\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x72\x45\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x72\x45\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x72\x45\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x72\x45\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x72\x45\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x72\x45\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x72\x45\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x72\x45\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x72\x45\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x72\x45\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x72\x45\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x72\x45\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x72\x45\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x72\x45\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x72\x45\x42\x68"; } // end switch(key) case 0x3: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x72\x46\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x72\x46\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x72\x46\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x72\x46\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x72\x46\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x72\x46\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x72\x46\x42"; - case 2: // COMMA - return "\x04\x4b\x72\x46\x43"; - case 3: // MINUS - return "\x04\x4b\x72\x46\x44"; - case 4: // PERIOD - return "\x04\x4b\x72\x46\x45"; - case 5: // SLASH - return "\x04\x4b\x72\x46\x46"; - case 6: // 0 - return "\x04\x4b\x72\x46\x47"; - case 7: // 1 - return "\x04\x4b\x72\x46\x48"; - case 8: // 2 - return "\x04\x4b\x72\x46\x49"; - case 9: // 3 - return "\x04\x4b\x72\x46\x4a"; - case 10: // 4 - return "\x04\x4b\x72\x46\x4b"; - case 11: // 5 - return "\x04\x4b\x72\x46\x4c"; - case 12: // 6 - return "\x04\x4b\x72\x46\x4d"; - case 13: // 7 - return "\x04\x4b\x72\x46\x4e"; - case 14: // 8 - return "\x04\x4b\x72\x46\x4f"; - case 15: // 9 - return "\x04\x4b\x72\x46\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x72\x46\x51"; - case 17: // EQUAL - return "\x04\x4b\x72\x46\x52"; - case 18: // A - return "\x04\x4b\x72\x46\x53"; - case 19: // B - return "\x04\x4b\x72\x46\x54"; - case 20: // C - return "\x04\x4b\x72\x46\x55"; - case 21: // D - return "\x04\x4b\x72\x46\x56"; - case 22: // E - return "\x04\x4b\x72\x46\x57"; - case 23: // F - return "\x04\x4b\x72\x46\x58"; - case 24: // G - return "\x04\x4b\x72\x46\x59"; - case 25: // H - return "\x04\x4b\x72\x46\x5a"; - case 26: // I - return "\x04\x4b\x72\x46\x61"; - case 27: // J - return "\x04\x4b\x72\x46\x62"; - case 28: // K - return "\x04\x4b\x72\x46\x63"; - case 29: // L - return "\x04\x4b\x72\x46\x64"; - case 30: // M - return "\x04\x4b\x72\x46\x65"; - case 31: // N - return "\x04\x4b\x72\x46\x66"; - case 32: // O - return "\x04\x4b\x72\x46\x67"; - case 33: // P - return "\x04\x4b\x72\x46\x68"; - case 34: // Q - return "\x04\x4b\x72\x46\x69"; - case 35: // R - return "\x04\x4b\x72\x46\x6a"; - case 36: // S - return "\x04\x4b\x72\x46\x6b"; - case 37: // T - return "\x04\x4b\x72\x46\x6c"; - case 38: // U - return "\x04\x4b\x72\x46\x6d"; - case 39: // V - return "\x04\x4b\x72\x46\x6e"; - case 40: // W - return "\x04\x4b\x72\x46\x6f"; - case 41: // X - return "\x04\x4b\x72\x46\x70"; - case 42: // Y - return "\x04\x4b\x72\x46\x71"; - case 43: // Z - return "\x04\x4b\x72\x46\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x72\x46\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x72\x46\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x72\x46\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x72\x46\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x72\x46\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x72\x46\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x72\x46\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x72\x46\x42\x72"; + case 9: // PLUS return "\x05\x4b\x72\x46\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x72\x46\x43"; + case 11: // MINUS + return "\x04\x4b\x72\x46\x44"; + case 12: // PERIOD + return "\x04\x4b\x72\x46\x45"; + case 13: // SLASH + return "\x04\x4b\x72\x46\x46"; + case 14: // 0 + return "\x04\x4b\x72\x46\x47"; + case 15: // 1 + return "\x04\x4b\x72\x46\x48"; + case 16: // 2 + return "\x04\x4b\x72\x46\x49"; + case 17: // 3 + return "\x04\x4b\x72\x46\x4a"; + case 18: // 4 + return "\x04\x4b\x72\x46\x4b"; + case 19: // 5 + return "\x04\x4b\x72\x46\x4c"; + case 20: // 6 + return "\x04\x4b\x72\x46\x4d"; + case 21: // 7 + return "\x04\x4b\x72\x46\x4e"; + case 22: // 8 + return "\x04\x4b\x72\x46\x4f"; + case 23: // 9 + return "\x04\x4b\x72\x46\x50"; + case 24: // COLON + return "\x05\x4b\x72\x46\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x72\x46\x51"; + case 26: // LESS + return "\x05\x4b\x72\x46\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x72\x46\x52"; + case 28: // GREATER + return "\x05\x4b\x72\x46\x42\x75"; + case 29: // AT + return "\x05\x4b\x72\x46\x42\x76"; + case 30: // A + return "\x04\x4b\x72\x46\x53"; + case 31: // B + return "\x04\x4b\x72\x46\x54"; + case 32: // C + return "\x04\x4b\x72\x46\x55"; + case 33: // D + return "\x04\x4b\x72\x46\x56"; + case 34: // E + return "\x04\x4b\x72\x46\x57"; + case 35: // F + return "\x04\x4b\x72\x46\x58"; + case 36: // G + return "\x04\x4b\x72\x46\x59"; + case 37: // H + return "\x04\x4b\x72\x46\x5a"; + case 38: // I + return "\x04\x4b\x72\x46\x61"; + case 39: // J + return "\x04\x4b\x72\x46\x62"; + case 40: // K + return "\x04\x4b\x72\x46\x63"; + case 41: // L + return "\x04\x4b\x72\x46\x64"; + case 42: // M + return "\x04\x4b\x72\x46\x65"; + case 43: // N + return "\x04\x4b\x72\x46\x66"; + case 44: // O + return "\x04\x4b\x72\x46\x67"; + case 45: // P + return "\x04\x4b\x72\x46\x68"; + case 46: // Q + return "\x04\x4b\x72\x46\x69"; + case 47: // R + return "\x04\x4b\x72\x46\x6a"; + case 48: // S + return "\x04\x4b\x72\x46\x6b"; + case 49: // T + return "\x04\x4b\x72\x46\x6c"; + case 50: // U + return "\x04\x4b\x72\x46\x6d"; + case 51: // V + return "\x04\x4b\x72\x46\x6e"; + case 52: // W + return "\x04\x4b\x72\x46\x6f"; + case 53: // X + return "\x04\x4b\x72\x46\x70"; + case 54: // Y + return "\x04\x4b\x72\x46\x71"; + case 55: // Z + return "\x04\x4b\x72\x46\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x72\x46\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x72\x46\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x72\x46\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x72\x46\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x72\x46\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x72\x46\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x72\x46\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x72\x46\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x72\x46\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x72\x46\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x72\x46\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x72\x46\x42\x30"; + case 68: // AE + return "\x05\x4b\x72\x46\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x72\x46\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x72\x46\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x72\x46\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x72\x46\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x72\x46\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x72\x46\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x72\x46\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x72\x46\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x72\x46\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x72\x46\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x72\x46\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x72\x46\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x72\x46\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x72\x46\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x72\x46\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x72\x46\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x72\x46\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x72\x46\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x72\x46\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x72\x46\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x72\x46\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x72\x46\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x72\x46\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x72\x46\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x72\x46\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x72\x46\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x72\x46\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x72\x46\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x72\x46\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x72\x46\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x72\x46\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x72\x46\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x72\x46\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x72\x46\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x72\x46\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x72\x46\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x72\x46\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x72\x46\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x72\x46\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x72\x46\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x72\x46\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x72\x46\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x72\x46\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x72\x46\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x72\x46\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x72\x46\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x72\x46\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x72\x46\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x72\x46\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x72\x46\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x72\x46\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x72\x46\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x72\x46\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x72\x46\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x72\x46\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x72\x46\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x72\x46\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x72\x46\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x72\x46\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x72\x46\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x72\x46\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x72\x46\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x72\x46\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x72\x46\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x72\x46\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x72\x46\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x72\x46\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x72\x46\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x72\x46\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x72\x46\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x72\x46\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x72\x46\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x72\x46\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x72\x46\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x72\x46\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x72\x46\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x72\x46\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x72\x46\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x72\x46\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x72\x46\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x72\x46\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x72\x46\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x72\x46\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x72\x46\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x72\x46\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x72\x46\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x72\x46\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x72\x46\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x72\x46\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x72\x46\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x72\x46\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x72\x46\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x72\x46\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x72\x46\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x72\x46\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x72\x46\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x72\x46\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x72\x46\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x72\x46\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x72\x46\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x72\x46\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x72\x46\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x72\x46\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x72\x46\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x72\x46\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x72\x46\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x72\x46\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x72\x46\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x72\x46\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x72\x46\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x72\x46\x42\x68"; } // end switch(key) case 0x4: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x72\x43\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x72\x43\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x72\x43\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x72\x43\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x72\x43\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x72\x43\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x72\x43\x42"; - case 2: // COMMA - return "\x04\x4b\x72\x43\x43"; - case 3: // MINUS - return "\x04\x4b\x72\x43\x44"; - case 4: // PERIOD - return "\x04\x4b\x72\x43\x45"; - case 5: // SLASH - return "\x04\x4b\x72\x43\x46"; - case 6: // 0 - return "\x04\x4b\x72\x43\x47"; - case 7: // 1 - return "\x04\x4b\x72\x43\x48"; - case 8: // 2 - return "\x04\x4b\x72\x43\x49"; - case 9: // 3 - return "\x04\x4b\x72\x43\x4a"; - case 10: // 4 - return "\x04\x4b\x72\x43\x4b"; - case 11: // 5 - return "\x04\x4b\x72\x43\x4c"; - case 12: // 6 - return "\x04\x4b\x72\x43\x4d"; - case 13: // 7 - return "\x04\x4b\x72\x43\x4e"; - case 14: // 8 - return "\x04\x4b\x72\x43\x4f"; - case 15: // 9 - return "\x04\x4b\x72\x43\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x72\x43\x51"; - case 17: // EQUAL - return "\x04\x4b\x72\x43\x52"; - case 18: // A - return "\x04\x4b\x72\x43\x53"; - case 19: // B - return "\x04\x4b\x72\x43\x54"; - case 20: // C - return "\x04\x4b\x72\x43\x55"; - case 21: // D - return "\x04\x4b\x72\x43\x56"; - case 22: // E - return "\x04\x4b\x72\x43\x57"; - case 23: // F - return "\x04\x4b\x72\x43\x58"; - case 24: // G - return "\x04\x4b\x72\x43\x59"; - case 25: // H - return "\x04\x4b\x72\x43\x5a"; - case 26: // I - return "\x04\x4b\x72\x43\x61"; - case 27: // J - return "\x04\x4b\x72\x43\x62"; - case 28: // K - return "\x04\x4b\x72\x43\x63"; - case 29: // L - return "\x04\x4b\x72\x43\x64"; - case 30: // M - return "\x04\x4b\x72\x43\x65"; - case 31: // N - return "\x04\x4b\x72\x43\x66"; - case 32: // O - return "\x04\x4b\x72\x43\x67"; - case 33: // P - return "\x04\x4b\x72\x43\x68"; - case 34: // Q - return "\x04\x4b\x72\x43\x69"; - case 35: // R - return "\x04\x4b\x72\x43\x6a"; - case 36: // S - return "\x04\x4b\x72\x43\x6b"; - case 37: // T - return "\x04\x4b\x72\x43\x6c"; - case 38: // U - return "\x04\x4b\x72\x43\x6d"; - case 39: // V - return "\x04\x4b\x72\x43\x6e"; - case 40: // W - return "\x04\x4b\x72\x43\x6f"; - case 41: // X - return "\x04\x4b\x72\x43\x70"; - case 42: // Y - return "\x04\x4b\x72\x43\x71"; - case 43: // Z - return "\x04\x4b\x72\x43\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x72\x43\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x72\x43\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x72\x43\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x72\x43\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x72\x43\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x72\x43\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x72\x43\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x72\x43\x42\x72"; + case 9: // PLUS return "\x05\x4b\x72\x43\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x72\x43\x43"; + case 11: // MINUS + return "\x04\x4b\x72\x43\x44"; + case 12: // PERIOD + return "\x04\x4b\x72\x43\x45"; + case 13: // SLASH + return "\x04\x4b\x72\x43\x46"; + case 14: // 0 + return "\x04\x4b\x72\x43\x47"; + case 15: // 1 + return "\x04\x4b\x72\x43\x48"; + case 16: // 2 + return "\x04\x4b\x72\x43\x49"; + case 17: // 3 + return "\x04\x4b\x72\x43\x4a"; + case 18: // 4 + return "\x04\x4b\x72\x43\x4b"; + case 19: // 5 + return "\x04\x4b\x72\x43\x4c"; + case 20: // 6 + return "\x04\x4b\x72\x43\x4d"; + case 21: // 7 + return "\x04\x4b\x72\x43\x4e"; + case 22: // 8 + return "\x04\x4b\x72\x43\x4f"; + case 23: // 9 + return "\x04\x4b\x72\x43\x50"; + case 24: // COLON + return "\x05\x4b\x72\x43\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x72\x43\x51"; + case 26: // LESS + return "\x05\x4b\x72\x43\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x72\x43\x52"; + case 28: // GREATER + return "\x05\x4b\x72\x43\x42\x75"; + case 29: // AT + return "\x05\x4b\x72\x43\x42\x76"; + case 30: // A + return "\x04\x4b\x72\x43\x53"; + case 31: // B + return "\x04\x4b\x72\x43\x54"; + case 32: // C + return "\x04\x4b\x72\x43\x55"; + case 33: // D + return "\x04\x4b\x72\x43\x56"; + case 34: // E + return "\x04\x4b\x72\x43\x57"; + case 35: // F + return "\x04\x4b\x72\x43\x58"; + case 36: // G + return "\x04\x4b\x72\x43\x59"; + case 37: // H + return "\x04\x4b\x72\x43\x5a"; + case 38: // I + return "\x04\x4b\x72\x43\x61"; + case 39: // J + return "\x04\x4b\x72\x43\x62"; + case 40: // K + return "\x04\x4b\x72\x43\x63"; + case 41: // L + return "\x04\x4b\x72\x43\x64"; + case 42: // M + return "\x04\x4b\x72\x43\x65"; + case 43: // N + return "\x04\x4b\x72\x43\x66"; + case 44: // O + return "\x04\x4b\x72\x43\x67"; + case 45: // P + return "\x04\x4b\x72\x43\x68"; + case 46: // Q + return "\x04\x4b\x72\x43\x69"; + case 47: // R + return "\x04\x4b\x72\x43\x6a"; + case 48: // S + return "\x04\x4b\x72\x43\x6b"; + case 49: // T + return "\x04\x4b\x72\x43\x6c"; + case 50: // U + return "\x04\x4b\x72\x43\x6d"; + case 51: // V + return "\x04\x4b\x72\x43\x6e"; + case 52: // W + return "\x04\x4b\x72\x43\x6f"; + case 53: // X + return "\x04\x4b\x72\x43\x70"; + case 54: // Y + return "\x04\x4b\x72\x43\x71"; + case 55: // Z + return "\x04\x4b\x72\x43\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x72\x43\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x72\x43\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x72\x43\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x72\x43\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x72\x43\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x72\x43\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x72\x43\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x72\x43\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x72\x43\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x72\x43\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x72\x43\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x72\x43\x42\x30"; + case 68: // AE + return "\x05\x4b\x72\x43\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x72\x43\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x72\x43\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x72\x43\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x72\x43\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x72\x43\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x72\x43\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x72\x43\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x72\x43\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x72\x43\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x72\x43\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x72\x43\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x72\x43\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x72\x43\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x72\x43\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x72\x43\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x72\x43\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x72\x43\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x72\x43\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x72\x43\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x72\x43\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x72\x43\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x72\x43\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x72\x43\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x72\x43\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x72\x43\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x72\x43\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x72\x43\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x72\x43\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x72\x43\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x72\x43\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x72\x43\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x72\x43\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x72\x43\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x72\x43\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x72\x43\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x72\x43\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x72\x43\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x72\x43\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x72\x43\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x72\x43\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x72\x43\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x72\x43\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x72\x43\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x72\x43\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x72\x43\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x72\x43\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x72\x43\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x72\x43\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x72\x43\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x72\x43\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x72\x43\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x72\x43\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x72\x43\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x72\x43\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x72\x43\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x72\x43\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x72\x43\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x72\x43\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x72\x43\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x72\x43\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x72\x43\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x72\x43\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x72\x43\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x72\x43\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x72\x43\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x72\x43\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x72\x43\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x72\x43\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x72\x43\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x72\x43\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x72\x43\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x72\x43\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x72\x43\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x72\x43\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x72\x43\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x72\x43\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x72\x43\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x72\x43\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x72\x43\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x72\x43\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x72\x43\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x72\x43\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x72\x43\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x72\x43\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x72\x43\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x72\x43\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x72\x43\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x72\x43\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x72\x43\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x72\x43\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x72\x43\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x72\x43\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x72\x43\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x72\x43\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x72\x43\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x72\x43\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x72\x43\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x72\x43\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x72\x43\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x72\x43\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x72\x43\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x72\x43\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x72\x43\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x72\x43\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x72\x43\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x72\x43\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x72\x43\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x72\x43\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x72\x43\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x72\x43\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x72\x43\x42\x68"; } // end switch(key) case 0x5: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x72\x44\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x72\x44\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x72\x44\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x72\x44\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x72\x44\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x72\x44\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x72\x44\x42"; - case 2: // COMMA - return "\x04\x4b\x72\x44\x43"; - case 3: // MINUS - return "\x04\x4b\x72\x44\x44"; - case 4: // PERIOD - return "\x04\x4b\x72\x44\x45"; - case 5: // SLASH - return "\x04\x4b\x72\x44\x46"; - case 6: // 0 - return "\x04\x4b\x72\x44\x47"; - case 7: // 1 - return "\x04\x4b\x72\x44\x48"; - case 8: // 2 - return "\x04\x4b\x72\x44\x49"; - case 9: // 3 - return "\x04\x4b\x72\x44\x4a"; - case 10: // 4 - return "\x04\x4b\x72\x44\x4b"; - case 11: // 5 - return "\x04\x4b\x72\x44\x4c"; - case 12: // 6 - return "\x04\x4b\x72\x44\x4d"; - case 13: // 7 - return "\x04\x4b\x72\x44\x4e"; - case 14: // 8 - return "\x04\x4b\x72\x44\x4f"; - case 15: // 9 - return "\x04\x4b\x72\x44\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x72\x44\x51"; - case 17: // EQUAL - return "\x04\x4b\x72\x44\x52"; - case 18: // A - return "\x04\x4b\x72\x44\x53"; - case 19: // B - return "\x04\x4b\x72\x44\x54"; - case 20: // C - return "\x04\x4b\x72\x44\x55"; - case 21: // D - return "\x04\x4b\x72\x44\x56"; - case 22: // E - return "\x04\x4b\x72\x44\x57"; - case 23: // F - return "\x04\x4b\x72\x44\x58"; - case 24: // G - return "\x04\x4b\x72\x44\x59"; - case 25: // H - return "\x04\x4b\x72\x44\x5a"; - case 26: // I - return "\x04\x4b\x72\x44\x61"; - case 27: // J - return "\x04\x4b\x72\x44\x62"; - case 28: // K - return "\x04\x4b\x72\x44\x63"; - case 29: // L - return "\x04\x4b\x72\x44\x64"; - case 30: // M - return "\x04\x4b\x72\x44\x65"; - case 31: // N - return "\x04\x4b\x72\x44\x66"; - case 32: // O - return "\x04\x4b\x72\x44\x67"; - case 33: // P - return "\x04\x4b\x72\x44\x68"; - case 34: // Q - return "\x04\x4b\x72\x44\x69"; - case 35: // R - return "\x04\x4b\x72\x44\x6a"; - case 36: // S - return "\x04\x4b\x72\x44\x6b"; - case 37: // T - return "\x04\x4b\x72\x44\x6c"; - case 38: // U - return "\x04\x4b\x72\x44\x6d"; - case 39: // V - return "\x04\x4b\x72\x44\x6e"; - case 40: // W - return "\x04\x4b\x72\x44\x6f"; - case 41: // X - return "\x04\x4b\x72\x44\x70"; - case 42: // Y - return "\x04\x4b\x72\x44\x71"; - case 43: // Z - return "\x04\x4b\x72\x44\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x72\x44\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x72\x44\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x72\x44\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x72\x44\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x72\x44\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x72\x44\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x72\x44\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x72\x44\x42\x72"; + case 9: // PLUS return "\x05\x4b\x72\x44\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x72\x44\x43"; + case 11: // MINUS + return "\x04\x4b\x72\x44\x44"; + case 12: // PERIOD + return "\x04\x4b\x72\x44\x45"; + case 13: // SLASH + return "\x04\x4b\x72\x44\x46"; + case 14: // 0 + return "\x04\x4b\x72\x44\x47"; + case 15: // 1 + return "\x04\x4b\x72\x44\x48"; + case 16: // 2 + return "\x04\x4b\x72\x44\x49"; + case 17: // 3 + return "\x04\x4b\x72\x44\x4a"; + case 18: // 4 + return "\x04\x4b\x72\x44\x4b"; + case 19: // 5 + return "\x04\x4b\x72\x44\x4c"; + case 20: // 6 + return "\x04\x4b\x72\x44\x4d"; + case 21: // 7 + return "\x04\x4b\x72\x44\x4e"; + case 22: // 8 + return "\x04\x4b\x72\x44\x4f"; + case 23: // 9 + return "\x04\x4b\x72\x44\x50"; + case 24: // COLON + return "\x05\x4b\x72\x44\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x72\x44\x51"; + case 26: // LESS + return "\x05\x4b\x72\x44\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x72\x44\x52"; + case 28: // GREATER + return "\x05\x4b\x72\x44\x42\x75"; + case 29: // AT + return "\x05\x4b\x72\x44\x42\x76"; + case 30: // A + return "\x04\x4b\x72\x44\x53"; + case 31: // B + return "\x04\x4b\x72\x44\x54"; + case 32: // C + return "\x04\x4b\x72\x44\x55"; + case 33: // D + return "\x04\x4b\x72\x44\x56"; + case 34: // E + return "\x04\x4b\x72\x44\x57"; + case 35: // F + return "\x04\x4b\x72\x44\x58"; + case 36: // G + return "\x04\x4b\x72\x44\x59"; + case 37: // H + return "\x04\x4b\x72\x44\x5a"; + case 38: // I + return "\x04\x4b\x72\x44\x61"; + case 39: // J + return "\x04\x4b\x72\x44\x62"; + case 40: // K + return "\x04\x4b\x72\x44\x63"; + case 41: // L + return "\x04\x4b\x72\x44\x64"; + case 42: // M + return "\x04\x4b\x72\x44\x65"; + case 43: // N + return "\x04\x4b\x72\x44\x66"; + case 44: // O + return "\x04\x4b\x72\x44\x67"; + case 45: // P + return "\x04\x4b\x72\x44\x68"; + case 46: // Q + return "\x04\x4b\x72\x44\x69"; + case 47: // R + return "\x04\x4b\x72\x44\x6a"; + case 48: // S + return "\x04\x4b\x72\x44\x6b"; + case 49: // T + return "\x04\x4b\x72\x44\x6c"; + case 50: // U + return "\x04\x4b\x72\x44\x6d"; + case 51: // V + return "\x04\x4b\x72\x44\x6e"; + case 52: // W + return "\x04\x4b\x72\x44\x6f"; + case 53: // X + return "\x04\x4b\x72\x44\x70"; + case 54: // Y + return "\x04\x4b\x72\x44\x71"; + case 55: // Z + return "\x04\x4b\x72\x44\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x72\x44\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x72\x44\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x72\x44\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x72\x44\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x72\x44\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x72\x44\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x72\x44\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x72\x44\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x72\x44\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x72\x44\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x72\x44\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x72\x44\x42\x30"; + case 68: // AE + return "\x05\x4b\x72\x44\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x72\x44\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x72\x44\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x72\x44\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x72\x44\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x72\x44\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x72\x44\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x72\x44\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x72\x44\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x72\x44\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x72\x44\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x72\x44\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x72\x44\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x72\x44\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x72\x44\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x72\x44\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x72\x44\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x72\x44\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x72\x44\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x72\x44\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x72\x44\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x72\x44\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x72\x44\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x72\x44\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x72\x44\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x72\x44\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x72\x44\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x72\x44\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x72\x44\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x72\x44\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x72\x44\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x72\x44\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x72\x44\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x72\x44\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x72\x44\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x72\x44\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x72\x44\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x72\x44\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x72\x44\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x72\x44\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x72\x44\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x72\x44\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x72\x44\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x72\x44\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x72\x44\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x72\x44\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x72\x44\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x72\x44\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x72\x44\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x72\x44\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x72\x44\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x72\x44\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x72\x44\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x72\x44\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x72\x44\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x72\x44\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x72\x44\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x72\x44\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x72\x44\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x72\x44\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x72\x44\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x72\x44\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x72\x44\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x72\x44\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x72\x44\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x72\x44\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x72\x44\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x72\x44\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x72\x44\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x72\x44\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x72\x44\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x72\x44\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x72\x44\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x72\x44\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x72\x44\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x72\x44\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x72\x44\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x72\x44\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x72\x44\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x72\x44\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x72\x44\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x72\x44\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x72\x44\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x72\x44\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x72\x44\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x72\x44\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x72\x44\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x72\x44\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x72\x44\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x72\x44\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x72\x44\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x72\x44\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x72\x44\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x72\x44\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x72\x44\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x72\x44\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x72\x44\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x72\x44\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x72\x44\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x72\x44\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x72\x44\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x72\x44\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x72\x44\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x72\x44\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x72\x44\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x72\x44\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x72\x44\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x72\x44\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x72\x44\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x72\x44\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x72\x44\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x72\x44\x42\x68"; } // end switch(key) case 0x6: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x72\x47\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x72\x47\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x72\x47\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x72\x47\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x72\x47\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x72\x47\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x72\x47\x42"; - case 2: // COMMA - return "\x04\x4b\x72\x47\x43"; - case 3: // MINUS - return "\x04\x4b\x72\x47\x44"; - case 4: // PERIOD - return "\x04\x4b\x72\x47\x45"; - case 5: // SLASH - return "\x04\x4b\x72\x47\x46"; - case 6: // 0 - return "\x04\x4b\x72\x47\x47"; - case 7: // 1 - return "\x04\x4b\x72\x47\x48"; - case 8: // 2 - return "\x04\x4b\x72\x47\x49"; - case 9: // 3 - return "\x04\x4b\x72\x47\x4a"; - case 10: // 4 - return "\x04\x4b\x72\x47\x4b"; - case 11: // 5 - return "\x04\x4b\x72\x47\x4c"; - case 12: // 6 - return "\x04\x4b\x72\x47\x4d"; - case 13: // 7 - return "\x04\x4b\x72\x47\x4e"; - case 14: // 8 - return "\x04\x4b\x72\x47\x4f"; - case 15: // 9 - return "\x04\x4b\x72\x47\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x72\x47\x51"; - case 17: // EQUAL - return "\x04\x4b\x72\x47\x52"; - case 18: // A - return "\x04\x4b\x72\x47\x53"; - case 19: // B - return "\x04\x4b\x72\x47\x54"; - case 20: // C - return "\x04\x4b\x72\x47\x55"; - case 21: // D - return "\x04\x4b\x72\x47\x56"; - case 22: // E - return "\x04\x4b\x72\x47\x57"; - case 23: // F - return "\x04\x4b\x72\x47\x58"; - case 24: // G - return "\x04\x4b\x72\x47\x59"; - case 25: // H - return "\x04\x4b\x72\x47\x5a"; - case 26: // I - return "\x04\x4b\x72\x47\x61"; - case 27: // J - return "\x04\x4b\x72\x47\x62"; - case 28: // K - return "\x04\x4b\x72\x47\x63"; - case 29: // L - return "\x04\x4b\x72\x47\x64"; - case 30: // M - return "\x04\x4b\x72\x47\x65"; - case 31: // N - return "\x04\x4b\x72\x47\x66"; - case 32: // O - return "\x04\x4b\x72\x47\x67"; - case 33: // P - return "\x04\x4b\x72\x47\x68"; - case 34: // Q - return "\x04\x4b\x72\x47\x69"; - case 35: // R - return "\x04\x4b\x72\x47\x6a"; - case 36: // S - return "\x04\x4b\x72\x47\x6b"; - case 37: // T - return "\x04\x4b\x72\x47\x6c"; - case 38: // U - return "\x04\x4b\x72\x47\x6d"; - case 39: // V - return "\x04\x4b\x72\x47\x6e"; - case 40: // W - return "\x04\x4b\x72\x47\x6f"; - case 41: // X - return "\x04\x4b\x72\x47\x70"; - case 42: // Y - return "\x04\x4b\x72\x47\x71"; - case 43: // Z - return "\x04\x4b\x72\x47\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x72\x47\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x72\x47\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x72\x47\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x72\x47\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x72\x47\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x72\x47\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x72\x47\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x72\x47\x42\x72"; + case 9: // PLUS return "\x05\x4b\x72\x47\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x72\x47\x43"; + case 11: // MINUS + return "\x04\x4b\x72\x47\x44"; + case 12: // PERIOD + return "\x04\x4b\x72\x47\x45"; + case 13: // SLASH + return "\x04\x4b\x72\x47\x46"; + case 14: // 0 + return "\x04\x4b\x72\x47\x47"; + case 15: // 1 + return "\x04\x4b\x72\x47\x48"; + case 16: // 2 + return "\x04\x4b\x72\x47\x49"; + case 17: // 3 + return "\x04\x4b\x72\x47\x4a"; + case 18: // 4 + return "\x04\x4b\x72\x47\x4b"; + case 19: // 5 + return "\x04\x4b\x72\x47\x4c"; + case 20: // 6 + return "\x04\x4b\x72\x47\x4d"; + case 21: // 7 + return "\x04\x4b\x72\x47\x4e"; + case 22: // 8 + return "\x04\x4b\x72\x47\x4f"; + case 23: // 9 + return "\x04\x4b\x72\x47\x50"; + case 24: // COLON + return "\x05\x4b\x72\x47\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x72\x47\x51"; + case 26: // LESS + return "\x05\x4b\x72\x47\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x72\x47\x52"; + case 28: // GREATER + return "\x05\x4b\x72\x47\x42\x75"; + case 29: // AT + return "\x05\x4b\x72\x47\x42\x76"; + case 30: // A + return "\x04\x4b\x72\x47\x53"; + case 31: // B + return "\x04\x4b\x72\x47\x54"; + case 32: // C + return "\x04\x4b\x72\x47\x55"; + case 33: // D + return "\x04\x4b\x72\x47\x56"; + case 34: // E + return "\x04\x4b\x72\x47\x57"; + case 35: // F + return "\x04\x4b\x72\x47\x58"; + case 36: // G + return "\x04\x4b\x72\x47\x59"; + case 37: // H + return "\x04\x4b\x72\x47\x5a"; + case 38: // I + return "\x04\x4b\x72\x47\x61"; + case 39: // J + return "\x04\x4b\x72\x47\x62"; + case 40: // K + return "\x04\x4b\x72\x47\x63"; + case 41: // L + return "\x04\x4b\x72\x47\x64"; + case 42: // M + return "\x04\x4b\x72\x47\x65"; + case 43: // N + return "\x04\x4b\x72\x47\x66"; + case 44: // O + return "\x04\x4b\x72\x47\x67"; + case 45: // P + return "\x04\x4b\x72\x47\x68"; + case 46: // Q + return "\x04\x4b\x72\x47\x69"; + case 47: // R + return "\x04\x4b\x72\x47\x6a"; + case 48: // S + return "\x04\x4b\x72\x47\x6b"; + case 49: // T + return "\x04\x4b\x72\x47\x6c"; + case 50: // U + return "\x04\x4b\x72\x47\x6d"; + case 51: // V + return "\x04\x4b\x72\x47\x6e"; + case 52: // W + return "\x04\x4b\x72\x47\x6f"; + case 53: // X + return "\x04\x4b\x72\x47\x70"; + case 54: // Y + return "\x04\x4b\x72\x47\x71"; + case 55: // Z + return "\x04\x4b\x72\x47\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x72\x47\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x72\x47\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x72\x47\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x72\x47\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x72\x47\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x72\x47\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x72\x47\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x72\x47\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x72\x47\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x72\x47\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x72\x47\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x72\x47\x42\x30"; + case 68: // AE + return "\x05\x4b\x72\x47\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x72\x47\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x72\x47\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x72\x47\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x72\x47\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x72\x47\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x72\x47\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x72\x47\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x72\x47\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x72\x47\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x72\x47\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x72\x47\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x72\x47\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x72\x47\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x72\x47\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x72\x47\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x72\x47\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x72\x47\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x72\x47\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x72\x47\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x72\x47\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x72\x47\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x72\x47\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x72\x47\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x72\x47\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x72\x47\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x72\x47\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x72\x47\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x72\x47\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x72\x47\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x72\x47\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x72\x47\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x72\x47\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x72\x47\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x72\x47\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x72\x47\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x72\x47\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x72\x47\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x72\x47\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x72\x47\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x72\x47\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x72\x47\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x72\x47\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x72\x47\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x72\x47\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x72\x47\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x72\x47\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x72\x47\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x72\x47\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x72\x47\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x72\x47\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x72\x47\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x72\x47\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x72\x47\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x72\x47\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x72\x47\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x72\x47\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x72\x47\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x72\x47\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x72\x47\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x72\x47\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x72\x47\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x72\x47\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x72\x47\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x72\x47\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x72\x47\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x72\x47\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x72\x47\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x72\x47\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x72\x47\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x72\x47\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x72\x47\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x72\x47\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x72\x47\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x72\x47\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x72\x47\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x72\x47\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x72\x47\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x72\x47\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x72\x47\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x72\x47\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x72\x47\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x72\x47\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x72\x47\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x72\x47\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x72\x47\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x72\x47\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x72\x47\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x72\x47\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x72\x47\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x72\x47\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x72\x47\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x72\x47\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x72\x47\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x72\x47\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x72\x47\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x72\x47\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x72\x47\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x72\x47\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x72\x47\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x72\x47\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x72\x47\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x72\x47\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x72\x47\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x72\x47\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x72\x47\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x72\x47\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x72\x47\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x72\x47\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x72\x47\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x72\x47\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x72\x47\x42\x68"; } // end switch(key) case 0x7: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x72\x48\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x72\x48\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x72\x48\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x72\x48\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x72\x48\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x72\x48\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x72\x48\x42"; - case 2: // COMMA - return "\x04\x4b\x72\x48\x43"; - case 3: // MINUS - return "\x04\x4b\x72\x48\x44"; - case 4: // PERIOD - return "\x04\x4b\x72\x48\x45"; - case 5: // SLASH - return "\x04\x4b\x72\x48\x46"; - case 6: // 0 - return "\x04\x4b\x72\x48\x47"; - case 7: // 1 - return "\x04\x4b\x72\x48\x48"; - case 8: // 2 - return "\x04\x4b\x72\x48\x49"; - case 9: // 3 - return "\x04\x4b\x72\x48\x4a"; - case 10: // 4 - return "\x04\x4b\x72\x48\x4b"; - case 11: // 5 - return "\x04\x4b\x72\x48\x4c"; - case 12: // 6 - return "\x04\x4b\x72\x48\x4d"; - case 13: // 7 - return "\x04\x4b\x72\x48\x4e"; - case 14: // 8 - return "\x04\x4b\x72\x48\x4f"; - case 15: // 9 - return "\x04\x4b\x72\x48\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x72\x48\x51"; - case 17: // EQUAL - return "\x04\x4b\x72\x48\x52"; - case 18: // A - return "\x04\x4b\x72\x48\x53"; - case 19: // B - return "\x04\x4b\x72\x48\x54"; - case 20: // C - return "\x04\x4b\x72\x48\x55"; - case 21: // D - return "\x04\x4b\x72\x48\x56"; - case 22: // E - return "\x04\x4b\x72\x48\x57"; - case 23: // F - return "\x04\x4b\x72\x48\x58"; - case 24: // G - return "\x04\x4b\x72\x48\x59"; - case 25: // H - return "\x04\x4b\x72\x48\x5a"; - case 26: // I - return "\x04\x4b\x72\x48\x61"; - case 27: // J - return "\x04\x4b\x72\x48\x62"; - case 28: // K - return "\x04\x4b\x72\x48\x63"; - case 29: // L - return "\x04\x4b\x72\x48\x64"; - case 30: // M - return "\x04\x4b\x72\x48\x65"; - case 31: // N - return "\x04\x4b\x72\x48\x66"; - case 32: // O - return "\x04\x4b\x72\x48\x67"; - case 33: // P - return "\x04\x4b\x72\x48\x68"; - case 34: // Q - return "\x04\x4b\x72\x48\x69"; - case 35: // R - return "\x04\x4b\x72\x48\x6a"; - case 36: // S - return "\x04\x4b\x72\x48\x6b"; - case 37: // T - return "\x04\x4b\x72\x48\x6c"; - case 38: // U - return "\x04\x4b\x72\x48\x6d"; - case 39: // V - return "\x04\x4b\x72\x48\x6e"; - case 40: // W - return "\x04\x4b\x72\x48\x6f"; - case 41: // X - return "\x04\x4b\x72\x48\x70"; - case 42: // Y - return "\x04\x4b\x72\x48\x71"; - case 43: // Z - return "\x04\x4b\x72\x48\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x72\x48\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x72\x48\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x72\x48\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x72\x48\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x72\x48\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x72\x48\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x72\x48\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x72\x48\x42\x72"; + case 9: // PLUS return "\x05\x4b\x72\x48\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x72\x48\x43"; + case 11: // MINUS + return "\x04\x4b\x72\x48\x44"; + case 12: // PERIOD + return "\x04\x4b\x72\x48\x45"; + case 13: // SLASH + return "\x04\x4b\x72\x48\x46"; + case 14: // 0 + return "\x04\x4b\x72\x48\x47"; + case 15: // 1 + return "\x04\x4b\x72\x48\x48"; + case 16: // 2 + return "\x04\x4b\x72\x48\x49"; + case 17: // 3 + return "\x04\x4b\x72\x48\x4a"; + case 18: // 4 + return "\x04\x4b\x72\x48\x4b"; + case 19: // 5 + return "\x04\x4b\x72\x48\x4c"; + case 20: // 6 + return "\x04\x4b\x72\x48\x4d"; + case 21: // 7 + return "\x04\x4b\x72\x48\x4e"; + case 22: // 8 + return "\x04\x4b\x72\x48\x4f"; + case 23: // 9 + return "\x04\x4b\x72\x48\x50"; + case 24: // COLON + return "\x05\x4b\x72\x48\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x72\x48\x51"; + case 26: // LESS + return "\x05\x4b\x72\x48\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x72\x48\x52"; + case 28: // GREATER + return "\x05\x4b\x72\x48\x42\x75"; + case 29: // AT + return "\x05\x4b\x72\x48\x42\x76"; + case 30: // A + return "\x04\x4b\x72\x48\x53"; + case 31: // B + return "\x04\x4b\x72\x48\x54"; + case 32: // C + return "\x04\x4b\x72\x48\x55"; + case 33: // D + return "\x04\x4b\x72\x48\x56"; + case 34: // E + return "\x04\x4b\x72\x48\x57"; + case 35: // F + return "\x04\x4b\x72\x48\x58"; + case 36: // G + return "\x04\x4b\x72\x48\x59"; + case 37: // H + return "\x04\x4b\x72\x48\x5a"; + case 38: // I + return "\x04\x4b\x72\x48\x61"; + case 39: // J + return "\x04\x4b\x72\x48\x62"; + case 40: // K + return "\x04\x4b\x72\x48\x63"; + case 41: // L + return "\x04\x4b\x72\x48\x64"; + case 42: // M + return "\x04\x4b\x72\x48\x65"; + case 43: // N + return "\x04\x4b\x72\x48\x66"; + case 44: // O + return "\x04\x4b\x72\x48\x67"; + case 45: // P + return "\x04\x4b\x72\x48\x68"; + case 46: // Q + return "\x04\x4b\x72\x48\x69"; + case 47: // R + return "\x04\x4b\x72\x48\x6a"; + case 48: // S + return "\x04\x4b\x72\x48\x6b"; + case 49: // T + return "\x04\x4b\x72\x48\x6c"; + case 50: // U + return "\x04\x4b\x72\x48\x6d"; + case 51: // V + return "\x04\x4b\x72\x48\x6e"; + case 52: // W + return "\x04\x4b\x72\x48\x6f"; + case 53: // X + return "\x04\x4b\x72\x48\x70"; + case 54: // Y + return "\x04\x4b\x72\x48\x71"; + case 55: // Z + return "\x04\x4b\x72\x48\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x72\x48\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x72\x48\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x72\x48\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x72\x48\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x72\x48\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x72\x48\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x72\x48\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x72\x48\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x72\x48\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x72\x48\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x72\x48\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x72\x48\x42\x30"; + case 68: // AE + return "\x05\x4b\x72\x48\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x72\x48\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x72\x48\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x72\x48\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x72\x48\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x72\x48\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x72\x48\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x72\x48\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x72\x48\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x72\x48\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x72\x48\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x72\x48\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x72\x48\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x72\x48\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x72\x48\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x72\x48\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x72\x48\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x72\x48\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x72\x48\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x72\x48\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x72\x48\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x72\x48\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x72\x48\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x72\x48\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x72\x48\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x72\x48\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x72\x48\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x72\x48\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x72\x48\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x72\x48\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x72\x48\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x72\x48\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x72\x48\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x72\x48\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x72\x48\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x72\x48\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x72\x48\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x72\x48\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x72\x48\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x72\x48\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x72\x48\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x72\x48\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x72\x48\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x72\x48\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x72\x48\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x72\x48\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x72\x48\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x72\x48\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x72\x48\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x72\x48\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x72\x48\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x72\x48\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x72\x48\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x72\x48\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x72\x48\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x72\x48\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x72\x48\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x72\x48\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x72\x48\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x72\x48\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x72\x48\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x72\x48\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x72\x48\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x72\x48\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x72\x48\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x72\x48\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x72\x48\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x72\x48\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x72\x48\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x72\x48\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x72\x48\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x72\x48\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x72\x48\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x72\x48\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x72\x48\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x72\x48\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x72\x48\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x72\x48\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x72\x48\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x72\x48\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x72\x48\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x72\x48\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x72\x48\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x72\x48\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x72\x48\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x72\x48\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x72\x48\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x72\x48\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x72\x48\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x72\x48\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x72\x48\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x72\x48\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x72\x48\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x72\x48\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x72\x48\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x72\x48\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x72\x48\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x72\x48\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x72\x48\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x72\x48\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x72\x48\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x72\x48\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x72\x48\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x72\x48\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x72\x48\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x72\x48\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x72\x48\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x72\x48\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x72\x48\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x72\x48\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x72\x48\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x72\x48\x42\x68"; } // end switch(key) case 0x8: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x72\x49\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x72\x49\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x72\x49\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x72\x49\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x72\x49\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x72\x49\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x72\x49\x42"; - case 2: // COMMA - return "\x04\x4b\x72\x49\x43"; - case 3: // MINUS - return "\x04\x4b\x72\x49\x44"; - case 4: // PERIOD - return "\x04\x4b\x72\x49\x45"; - case 5: // SLASH - return "\x04\x4b\x72\x49\x46"; - case 6: // 0 - return "\x04\x4b\x72\x49\x47"; - case 7: // 1 - return "\x04\x4b\x72\x49\x48"; - case 8: // 2 - return "\x04\x4b\x72\x49\x49"; - case 9: // 3 - return "\x04\x4b\x72\x49\x4a"; - case 10: // 4 - return "\x04\x4b\x72\x49\x4b"; - case 11: // 5 - return "\x04\x4b\x72\x49\x4c"; - case 12: // 6 - return "\x04\x4b\x72\x49\x4d"; - case 13: // 7 - return "\x04\x4b\x72\x49\x4e"; - case 14: // 8 - return "\x04\x4b\x72\x49\x4f"; - case 15: // 9 - return "\x04\x4b\x72\x49\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x72\x49\x51"; - case 17: // EQUAL - return "\x04\x4b\x72\x49\x52"; - case 18: // A - return "\x04\x4b\x72\x49\x53"; - case 19: // B - return "\x04\x4b\x72\x49\x54"; - case 20: // C - return "\x04\x4b\x72\x49\x55"; - case 21: // D - return "\x04\x4b\x72\x49\x56"; - case 22: // E - return "\x04\x4b\x72\x49\x57"; - case 23: // F - return "\x04\x4b\x72\x49\x58"; - case 24: // G - return "\x04\x4b\x72\x49\x59"; - case 25: // H - return "\x04\x4b\x72\x49\x5a"; - case 26: // I - return "\x04\x4b\x72\x49\x61"; - case 27: // J - return "\x04\x4b\x72\x49\x62"; - case 28: // K - return "\x04\x4b\x72\x49\x63"; - case 29: // L - return "\x04\x4b\x72\x49\x64"; - case 30: // M - return "\x04\x4b\x72\x49\x65"; - case 31: // N - return "\x04\x4b\x72\x49\x66"; - case 32: // O - return "\x04\x4b\x72\x49\x67"; - case 33: // P - return "\x04\x4b\x72\x49\x68"; - case 34: // Q - return "\x04\x4b\x72\x49\x69"; - case 35: // R - return "\x04\x4b\x72\x49\x6a"; - case 36: // S - return "\x04\x4b\x72\x49\x6b"; - case 37: // T - return "\x04\x4b\x72\x49\x6c"; - case 38: // U - return "\x04\x4b\x72\x49\x6d"; - case 39: // V - return "\x04\x4b\x72\x49\x6e"; - case 40: // W - return "\x04\x4b\x72\x49\x6f"; - case 41: // X - return "\x04\x4b\x72\x49\x70"; - case 42: // Y - return "\x04\x4b\x72\x49\x71"; - case 43: // Z - return "\x04\x4b\x72\x49\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x72\x49\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x72\x49\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x72\x49\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x72\x49\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x72\x49\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x72\x49\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x72\x49\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x72\x49\x42\x72"; + case 9: // PLUS return "\x05\x4b\x72\x49\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x72\x49\x43"; + case 11: // MINUS + return "\x04\x4b\x72\x49\x44"; + case 12: // PERIOD + return "\x04\x4b\x72\x49\x45"; + case 13: // SLASH + return "\x04\x4b\x72\x49\x46"; + case 14: // 0 + return "\x04\x4b\x72\x49\x47"; + case 15: // 1 + return "\x04\x4b\x72\x49\x48"; + case 16: // 2 + return "\x04\x4b\x72\x49\x49"; + case 17: // 3 + return "\x04\x4b\x72\x49\x4a"; + case 18: // 4 + return "\x04\x4b\x72\x49\x4b"; + case 19: // 5 + return "\x04\x4b\x72\x49\x4c"; + case 20: // 6 + return "\x04\x4b\x72\x49\x4d"; + case 21: // 7 + return "\x04\x4b\x72\x49\x4e"; + case 22: // 8 + return "\x04\x4b\x72\x49\x4f"; + case 23: // 9 + return "\x04\x4b\x72\x49\x50"; + case 24: // COLON + return "\x05\x4b\x72\x49\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x72\x49\x51"; + case 26: // LESS + return "\x05\x4b\x72\x49\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x72\x49\x52"; + case 28: // GREATER + return "\x05\x4b\x72\x49\x42\x75"; + case 29: // AT + return "\x05\x4b\x72\x49\x42\x76"; + case 30: // A + return "\x04\x4b\x72\x49\x53"; + case 31: // B + return "\x04\x4b\x72\x49\x54"; + case 32: // C + return "\x04\x4b\x72\x49\x55"; + case 33: // D + return "\x04\x4b\x72\x49\x56"; + case 34: // E + return "\x04\x4b\x72\x49\x57"; + case 35: // F + return "\x04\x4b\x72\x49\x58"; + case 36: // G + return "\x04\x4b\x72\x49\x59"; + case 37: // H + return "\x04\x4b\x72\x49\x5a"; + case 38: // I + return "\x04\x4b\x72\x49\x61"; + case 39: // J + return "\x04\x4b\x72\x49\x62"; + case 40: // K + return "\x04\x4b\x72\x49\x63"; + case 41: // L + return "\x04\x4b\x72\x49\x64"; + case 42: // M + return "\x04\x4b\x72\x49\x65"; + case 43: // N + return "\x04\x4b\x72\x49\x66"; + case 44: // O + return "\x04\x4b\x72\x49\x67"; + case 45: // P + return "\x04\x4b\x72\x49\x68"; + case 46: // Q + return "\x04\x4b\x72\x49\x69"; + case 47: // R + return "\x04\x4b\x72\x49\x6a"; + case 48: // S + return "\x04\x4b\x72\x49\x6b"; + case 49: // T + return "\x04\x4b\x72\x49\x6c"; + case 50: // U + return "\x04\x4b\x72\x49\x6d"; + case 51: // V + return "\x04\x4b\x72\x49\x6e"; + case 52: // W + return "\x04\x4b\x72\x49\x6f"; + case 53: // X + return "\x04\x4b\x72\x49\x70"; + case 54: // Y + return "\x04\x4b\x72\x49\x71"; + case 55: // Z + return "\x04\x4b\x72\x49\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x72\x49\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x72\x49\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x72\x49\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x72\x49\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x72\x49\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x72\x49\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x72\x49\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x72\x49\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x72\x49\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x72\x49\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x72\x49\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x72\x49\x42\x30"; + case 68: // AE + return "\x05\x4b\x72\x49\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x72\x49\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x72\x49\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x72\x49\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x72\x49\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x72\x49\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x72\x49\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x72\x49\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x72\x49\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x72\x49\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x72\x49\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x72\x49\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x72\x49\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x72\x49\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x72\x49\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x72\x49\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x72\x49\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x72\x49\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x72\x49\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x72\x49\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x72\x49\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x72\x49\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x72\x49\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x72\x49\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x72\x49\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x72\x49\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x72\x49\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x72\x49\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x72\x49\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x72\x49\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x72\x49\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x72\x49\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x72\x49\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x72\x49\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x72\x49\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x72\x49\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x72\x49\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x72\x49\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x72\x49\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x72\x49\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x72\x49\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x72\x49\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x72\x49\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x72\x49\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x72\x49\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x72\x49\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x72\x49\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x72\x49\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x72\x49\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x72\x49\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x72\x49\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x72\x49\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x72\x49\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x72\x49\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x72\x49\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x72\x49\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x72\x49\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x72\x49\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x72\x49\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x72\x49\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x72\x49\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x72\x49\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x72\x49\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x72\x49\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x72\x49\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x72\x49\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x72\x49\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x72\x49\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x72\x49\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x72\x49\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x72\x49\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x72\x49\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x72\x49\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x72\x49\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x72\x49\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x72\x49\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x72\x49\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x72\x49\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x72\x49\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x72\x49\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x72\x49\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x72\x49\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x72\x49\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x72\x49\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x72\x49\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x72\x49\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x72\x49\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x72\x49\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x72\x49\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x72\x49\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x72\x49\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x72\x49\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x72\x49\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x72\x49\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x72\x49\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x72\x49\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x72\x49\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x72\x49\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x72\x49\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x72\x49\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x72\x49\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x72\x49\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x72\x49\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x72\x49\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x72\x49\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x72\x49\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x72\x49\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x72\x49\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x72\x49\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x72\x49\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x72\x49\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x72\x49\x42\x68"; } // end switch(key) case 0x9: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x72\x4a\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x72\x4a\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x72\x4a\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x72\x4a\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x72\x4a\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x72\x4a\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x72\x4a\x42"; - case 2: // COMMA - return "\x04\x4b\x72\x4a\x43"; - case 3: // MINUS - return "\x04\x4b\x72\x4a\x44"; - case 4: // PERIOD - return "\x04\x4b\x72\x4a\x45"; - case 5: // SLASH - return "\x04\x4b\x72\x4a\x46"; - case 6: // 0 - return "\x04\x4b\x72\x4a\x47"; - case 7: // 1 - return "\x04\x4b\x72\x4a\x48"; - case 8: // 2 - return "\x04\x4b\x72\x4a\x49"; - case 9: // 3 - return "\x04\x4b\x72\x4a\x4a"; - case 10: // 4 - return "\x04\x4b\x72\x4a\x4b"; - case 11: // 5 - return "\x04\x4b\x72\x4a\x4c"; - case 12: // 6 - return "\x04\x4b\x72\x4a\x4d"; - case 13: // 7 - return "\x04\x4b\x72\x4a\x4e"; - case 14: // 8 - return "\x04\x4b\x72\x4a\x4f"; - case 15: // 9 - return "\x04\x4b\x72\x4a\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x72\x4a\x51"; - case 17: // EQUAL - return "\x04\x4b\x72\x4a\x52"; - case 18: // A - return "\x04\x4b\x72\x4a\x53"; - case 19: // B - return "\x04\x4b\x72\x4a\x54"; - case 20: // C - return "\x04\x4b\x72\x4a\x55"; - case 21: // D - return "\x04\x4b\x72\x4a\x56"; - case 22: // E - return "\x04\x4b\x72\x4a\x57"; - case 23: // F - return "\x04\x4b\x72\x4a\x58"; - case 24: // G - return "\x04\x4b\x72\x4a\x59"; - case 25: // H - return "\x04\x4b\x72\x4a\x5a"; - case 26: // I - return "\x04\x4b\x72\x4a\x61"; - case 27: // J - return "\x04\x4b\x72\x4a\x62"; - case 28: // K - return "\x04\x4b\x72\x4a\x63"; - case 29: // L - return "\x04\x4b\x72\x4a\x64"; - case 30: // M - return "\x04\x4b\x72\x4a\x65"; - case 31: // N - return "\x04\x4b\x72\x4a\x66"; - case 32: // O - return "\x04\x4b\x72\x4a\x67"; - case 33: // P - return "\x04\x4b\x72\x4a\x68"; - case 34: // Q - return "\x04\x4b\x72\x4a\x69"; - case 35: // R - return "\x04\x4b\x72\x4a\x6a"; - case 36: // S - return "\x04\x4b\x72\x4a\x6b"; - case 37: // T - return "\x04\x4b\x72\x4a\x6c"; - case 38: // U - return "\x04\x4b\x72\x4a\x6d"; - case 39: // V - return "\x04\x4b\x72\x4a\x6e"; - case 40: // W - return "\x04\x4b\x72\x4a\x6f"; - case 41: // X - return "\x04\x4b\x72\x4a\x70"; - case 42: // Y - return "\x04\x4b\x72\x4a\x71"; - case 43: // Z - return "\x04\x4b\x72\x4a\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x72\x4a\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x72\x4a\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x72\x4a\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x72\x4a\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x72\x4a\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x72\x4a\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x72\x4a\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x72\x4a\x42\x72"; + case 9: // PLUS return "\x05\x4b\x72\x4a\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x72\x4a\x43"; + case 11: // MINUS + return "\x04\x4b\x72\x4a\x44"; + case 12: // PERIOD + return "\x04\x4b\x72\x4a\x45"; + case 13: // SLASH + return "\x04\x4b\x72\x4a\x46"; + case 14: // 0 + return "\x04\x4b\x72\x4a\x47"; + case 15: // 1 + return "\x04\x4b\x72\x4a\x48"; + case 16: // 2 + return "\x04\x4b\x72\x4a\x49"; + case 17: // 3 + return "\x04\x4b\x72\x4a\x4a"; + case 18: // 4 + return "\x04\x4b\x72\x4a\x4b"; + case 19: // 5 + return "\x04\x4b\x72\x4a\x4c"; + case 20: // 6 + return "\x04\x4b\x72\x4a\x4d"; + case 21: // 7 + return "\x04\x4b\x72\x4a\x4e"; + case 22: // 8 + return "\x04\x4b\x72\x4a\x4f"; + case 23: // 9 + return "\x04\x4b\x72\x4a\x50"; + case 24: // COLON + return "\x05\x4b\x72\x4a\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x72\x4a\x51"; + case 26: // LESS + return "\x05\x4b\x72\x4a\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x72\x4a\x52"; + case 28: // GREATER + return "\x05\x4b\x72\x4a\x42\x75"; + case 29: // AT + return "\x05\x4b\x72\x4a\x42\x76"; + case 30: // A + return "\x04\x4b\x72\x4a\x53"; + case 31: // B + return "\x04\x4b\x72\x4a\x54"; + case 32: // C + return "\x04\x4b\x72\x4a\x55"; + case 33: // D + return "\x04\x4b\x72\x4a\x56"; + case 34: // E + return "\x04\x4b\x72\x4a\x57"; + case 35: // F + return "\x04\x4b\x72\x4a\x58"; + case 36: // G + return "\x04\x4b\x72\x4a\x59"; + case 37: // H + return "\x04\x4b\x72\x4a\x5a"; + case 38: // I + return "\x04\x4b\x72\x4a\x61"; + case 39: // J + return "\x04\x4b\x72\x4a\x62"; + case 40: // K + return "\x04\x4b\x72\x4a\x63"; + case 41: // L + return "\x04\x4b\x72\x4a\x64"; + case 42: // M + return "\x04\x4b\x72\x4a\x65"; + case 43: // N + return "\x04\x4b\x72\x4a\x66"; + case 44: // O + return "\x04\x4b\x72\x4a\x67"; + case 45: // P + return "\x04\x4b\x72\x4a\x68"; + case 46: // Q + return "\x04\x4b\x72\x4a\x69"; + case 47: // R + return "\x04\x4b\x72\x4a\x6a"; + case 48: // S + return "\x04\x4b\x72\x4a\x6b"; + case 49: // T + return "\x04\x4b\x72\x4a\x6c"; + case 50: // U + return "\x04\x4b\x72\x4a\x6d"; + case 51: // V + return "\x04\x4b\x72\x4a\x6e"; + case 52: // W + return "\x04\x4b\x72\x4a\x6f"; + case 53: // X + return "\x04\x4b\x72\x4a\x70"; + case 54: // Y + return "\x04\x4b\x72\x4a\x71"; + case 55: // Z + return "\x04\x4b\x72\x4a\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x72\x4a\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x72\x4a\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x72\x4a\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x72\x4a\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x72\x4a\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x72\x4a\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x72\x4a\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x72\x4a\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x72\x4a\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x72\x4a\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x72\x4a\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x72\x4a\x42\x30"; + case 68: // AE + return "\x05\x4b\x72\x4a\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x72\x4a\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x72\x4a\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x72\x4a\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x72\x4a\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x72\x4a\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x72\x4a\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x72\x4a\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x72\x4a\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x72\x4a\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x72\x4a\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x72\x4a\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x72\x4a\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x72\x4a\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x72\x4a\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x72\x4a\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x72\x4a\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x72\x4a\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x72\x4a\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x72\x4a\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x72\x4a\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x72\x4a\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x72\x4a\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x72\x4a\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x72\x4a\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x72\x4a\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x72\x4a\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x72\x4a\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x72\x4a\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x72\x4a\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x72\x4a\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x72\x4a\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x72\x4a\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x72\x4a\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x72\x4a\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x72\x4a\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x72\x4a\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x72\x4a\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x72\x4a\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x72\x4a\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x72\x4a\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x72\x4a\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x72\x4a\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x72\x4a\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x72\x4a\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x72\x4a\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x72\x4a\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x72\x4a\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x72\x4a\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x72\x4a\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x72\x4a\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x72\x4a\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x72\x4a\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x72\x4a\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x72\x4a\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x72\x4a\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x72\x4a\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x72\x4a\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x72\x4a\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x72\x4a\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x72\x4a\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x72\x4a\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x72\x4a\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x72\x4a\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x72\x4a\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x72\x4a\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x72\x4a\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x72\x4a\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x72\x4a\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x72\x4a\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x72\x4a\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x72\x4a\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x72\x4a\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x72\x4a\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x72\x4a\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x72\x4a\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x72\x4a\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x72\x4a\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x72\x4a\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x72\x4a\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x72\x4a\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x72\x4a\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x72\x4a\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x72\x4a\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x72\x4a\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x72\x4a\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x72\x4a\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x72\x4a\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x72\x4a\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x72\x4a\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x72\x4a\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x72\x4a\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x72\x4a\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x72\x4a\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x72\x4a\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x72\x4a\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x72\x4a\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x72\x4a\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x72\x4a\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x72\x4a\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x72\x4a\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x72\x4a\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x72\x4a\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x72\x4a\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x72\x4a\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x72\x4a\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x72\x4a\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x72\x4a\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x72\x4a\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x72\x4a\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x72\x4a\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x72\x4a\x42\x68"; } // end switch(key) case 0xa: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x72\x4d\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x72\x4d\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x72\x4d\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x72\x4d\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x72\x4d\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x72\x4d\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x72\x4d\x42"; - case 2: // COMMA - return "\x04\x4b\x72\x4d\x43"; - case 3: // MINUS - return "\x04\x4b\x72\x4d\x44"; - case 4: // PERIOD - return "\x04\x4b\x72\x4d\x45"; - case 5: // SLASH - return "\x04\x4b\x72\x4d\x46"; - case 6: // 0 - return "\x04\x4b\x72\x4d\x47"; - case 7: // 1 - return "\x04\x4b\x72\x4d\x48"; - case 8: // 2 - return "\x04\x4b\x72\x4d\x49"; - case 9: // 3 - return "\x04\x4b\x72\x4d\x4a"; - case 10: // 4 - return "\x04\x4b\x72\x4d\x4b"; - case 11: // 5 - return "\x04\x4b\x72\x4d\x4c"; - case 12: // 6 - return "\x04\x4b\x72\x4d\x4d"; - case 13: // 7 - return "\x04\x4b\x72\x4d\x4e"; - case 14: // 8 - return "\x04\x4b\x72\x4d\x4f"; - case 15: // 9 - return "\x04\x4b\x72\x4d\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x72\x4d\x51"; - case 17: // EQUAL - return "\x04\x4b\x72\x4d\x52"; - case 18: // A - return "\x04\x4b\x72\x4d\x53"; - case 19: // B - return "\x04\x4b\x72\x4d\x54"; - case 20: // C - return "\x04\x4b\x72\x4d\x55"; - case 21: // D - return "\x04\x4b\x72\x4d\x56"; - case 22: // E - return "\x04\x4b\x72\x4d\x57"; - case 23: // F - return "\x04\x4b\x72\x4d\x58"; - case 24: // G - return "\x04\x4b\x72\x4d\x59"; - case 25: // H - return "\x04\x4b\x72\x4d\x5a"; - case 26: // I - return "\x04\x4b\x72\x4d\x61"; - case 27: // J - return "\x04\x4b\x72\x4d\x62"; - case 28: // K - return "\x04\x4b\x72\x4d\x63"; - case 29: // L - return "\x04\x4b\x72\x4d\x64"; - case 30: // M - return "\x04\x4b\x72\x4d\x65"; - case 31: // N - return "\x04\x4b\x72\x4d\x66"; - case 32: // O - return "\x04\x4b\x72\x4d\x67"; - case 33: // P - return "\x04\x4b\x72\x4d\x68"; - case 34: // Q - return "\x04\x4b\x72\x4d\x69"; - case 35: // R - return "\x04\x4b\x72\x4d\x6a"; - case 36: // S - return "\x04\x4b\x72\x4d\x6b"; - case 37: // T - return "\x04\x4b\x72\x4d\x6c"; - case 38: // U - return "\x04\x4b\x72\x4d\x6d"; - case 39: // V - return "\x04\x4b\x72\x4d\x6e"; - case 40: // W - return "\x04\x4b\x72\x4d\x6f"; - case 41: // X - return "\x04\x4b\x72\x4d\x70"; - case 42: // Y - return "\x04\x4b\x72\x4d\x71"; - case 43: // Z - return "\x04\x4b\x72\x4d\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x72\x4d\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x72\x4d\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x72\x4d\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x72\x4d\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x72\x4d\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x72\x4d\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x72\x4d\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x72\x4d\x42\x72"; + case 9: // PLUS return "\x05\x4b\x72\x4d\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x72\x4d\x43"; + case 11: // MINUS + return "\x04\x4b\x72\x4d\x44"; + case 12: // PERIOD + return "\x04\x4b\x72\x4d\x45"; + case 13: // SLASH + return "\x04\x4b\x72\x4d\x46"; + case 14: // 0 + return "\x04\x4b\x72\x4d\x47"; + case 15: // 1 + return "\x04\x4b\x72\x4d\x48"; + case 16: // 2 + return "\x04\x4b\x72\x4d\x49"; + case 17: // 3 + return "\x04\x4b\x72\x4d\x4a"; + case 18: // 4 + return "\x04\x4b\x72\x4d\x4b"; + case 19: // 5 + return "\x04\x4b\x72\x4d\x4c"; + case 20: // 6 + return "\x04\x4b\x72\x4d\x4d"; + case 21: // 7 + return "\x04\x4b\x72\x4d\x4e"; + case 22: // 8 + return "\x04\x4b\x72\x4d\x4f"; + case 23: // 9 + return "\x04\x4b\x72\x4d\x50"; + case 24: // COLON + return "\x05\x4b\x72\x4d\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x72\x4d\x51"; + case 26: // LESS + return "\x05\x4b\x72\x4d\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x72\x4d\x52"; + case 28: // GREATER + return "\x05\x4b\x72\x4d\x42\x75"; + case 29: // AT + return "\x05\x4b\x72\x4d\x42\x76"; + case 30: // A + return "\x04\x4b\x72\x4d\x53"; + case 31: // B + return "\x04\x4b\x72\x4d\x54"; + case 32: // C + return "\x04\x4b\x72\x4d\x55"; + case 33: // D + return "\x04\x4b\x72\x4d\x56"; + case 34: // E + return "\x04\x4b\x72\x4d\x57"; + case 35: // F + return "\x04\x4b\x72\x4d\x58"; + case 36: // G + return "\x04\x4b\x72\x4d\x59"; + case 37: // H + return "\x04\x4b\x72\x4d\x5a"; + case 38: // I + return "\x04\x4b\x72\x4d\x61"; + case 39: // J + return "\x04\x4b\x72\x4d\x62"; + case 40: // K + return "\x04\x4b\x72\x4d\x63"; + case 41: // L + return "\x04\x4b\x72\x4d\x64"; + case 42: // M + return "\x04\x4b\x72\x4d\x65"; + case 43: // N + return "\x04\x4b\x72\x4d\x66"; + case 44: // O + return "\x04\x4b\x72\x4d\x67"; + case 45: // P + return "\x04\x4b\x72\x4d\x68"; + case 46: // Q + return "\x04\x4b\x72\x4d\x69"; + case 47: // R + return "\x04\x4b\x72\x4d\x6a"; + case 48: // S + return "\x04\x4b\x72\x4d\x6b"; + case 49: // T + return "\x04\x4b\x72\x4d\x6c"; + case 50: // U + return "\x04\x4b\x72\x4d\x6d"; + case 51: // V + return "\x04\x4b\x72\x4d\x6e"; + case 52: // W + return "\x04\x4b\x72\x4d\x6f"; + case 53: // X + return "\x04\x4b\x72\x4d\x70"; + case 54: // Y + return "\x04\x4b\x72\x4d\x71"; + case 55: // Z + return "\x04\x4b\x72\x4d\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x72\x4d\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x72\x4d\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x72\x4d\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x72\x4d\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x72\x4d\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x72\x4d\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x72\x4d\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x72\x4d\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x72\x4d\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x72\x4d\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x72\x4d\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x72\x4d\x42\x30"; + case 68: // AE + return "\x05\x4b\x72\x4d\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x72\x4d\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x72\x4d\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x72\x4d\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x72\x4d\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x72\x4d\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x72\x4d\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x72\x4d\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x72\x4d\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x72\x4d\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x72\x4d\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x72\x4d\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x72\x4d\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x72\x4d\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x72\x4d\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x72\x4d\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x72\x4d\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x72\x4d\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x72\x4d\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x72\x4d\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x72\x4d\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x72\x4d\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x72\x4d\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x72\x4d\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x72\x4d\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x72\x4d\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x72\x4d\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x72\x4d\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x72\x4d\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x72\x4d\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x72\x4d\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x72\x4d\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x72\x4d\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x72\x4d\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x72\x4d\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x72\x4d\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x72\x4d\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x72\x4d\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x72\x4d\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x72\x4d\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x72\x4d\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x72\x4d\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x72\x4d\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x72\x4d\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x72\x4d\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x72\x4d\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x72\x4d\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x72\x4d\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x72\x4d\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x72\x4d\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x72\x4d\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x72\x4d\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x72\x4d\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x72\x4d\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x72\x4d\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x72\x4d\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x72\x4d\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x72\x4d\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x72\x4d\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x72\x4d\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x72\x4d\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x72\x4d\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x72\x4d\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x72\x4d\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x72\x4d\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x72\x4d\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x72\x4d\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x72\x4d\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x72\x4d\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x72\x4d\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x72\x4d\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x72\x4d\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x72\x4d\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x72\x4d\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x72\x4d\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x72\x4d\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x72\x4d\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x72\x4d\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x72\x4d\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x72\x4d\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x72\x4d\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x72\x4d\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x72\x4d\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x72\x4d\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x72\x4d\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x72\x4d\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x72\x4d\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x72\x4d\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x72\x4d\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x72\x4d\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x72\x4d\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x72\x4d\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x72\x4d\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x72\x4d\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x72\x4d\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x72\x4d\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x72\x4d\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x72\x4d\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x72\x4d\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x72\x4d\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x72\x4d\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x72\x4d\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x72\x4d\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x72\x4d\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x72\x4d\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x72\x4d\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x72\x4d\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x72\x4d\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x72\x4d\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x72\x4d\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x72\x4d\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x72\x4d\x42\x68"; } // end switch(key) case 0xb: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x72\x4e\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x72\x4e\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x72\x4e\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x72\x4e\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x72\x4e\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x72\x4e\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x72\x4e\x42"; - case 2: // COMMA - return "\x04\x4b\x72\x4e\x43"; - case 3: // MINUS - return "\x04\x4b\x72\x4e\x44"; - case 4: // PERIOD - return "\x04\x4b\x72\x4e\x45"; - case 5: // SLASH - return "\x04\x4b\x72\x4e\x46"; - case 6: // 0 - return "\x04\x4b\x72\x4e\x47"; - case 7: // 1 - return "\x04\x4b\x72\x4e\x48"; - case 8: // 2 - return "\x04\x4b\x72\x4e\x49"; - case 9: // 3 - return "\x04\x4b\x72\x4e\x4a"; - case 10: // 4 - return "\x04\x4b\x72\x4e\x4b"; - case 11: // 5 - return "\x04\x4b\x72\x4e\x4c"; - case 12: // 6 - return "\x04\x4b\x72\x4e\x4d"; - case 13: // 7 - return "\x04\x4b\x72\x4e\x4e"; - case 14: // 8 - return "\x04\x4b\x72\x4e\x4f"; - case 15: // 9 - return "\x04\x4b\x72\x4e\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x72\x4e\x51"; - case 17: // EQUAL - return "\x04\x4b\x72\x4e\x52"; - case 18: // A - return "\x04\x4b\x72\x4e\x53"; - case 19: // B - return "\x04\x4b\x72\x4e\x54"; - case 20: // C - return "\x04\x4b\x72\x4e\x55"; - case 21: // D - return "\x04\x4b\x72\x4e\x56"; - case 22: // E - return "\x04\x4b\x72\x4e\x57"; - case 23: // F - return "\x04\x4b\x72\x4e\x58"; - case 24: // G - return "\x04\x4b\x72\x4e\x59"; - case 25: // H - return "\x04\x4b\x72\x4e\x5a"; - case 26: // I - return "\x04\x4b\x72\x4e\x61"; - case 27: // J - return "\x04\x4b\x72\x4e\x62"; - case 28: // K - return "\x04\x4b\x72\x4e\x63"; - case 29: // L - return "\x04\x4b\x72\x4e\x64"; - case 30: // M - return "\x04\x4b\x72\x4e\x65"; - case 31: // N - return "\x04\x4b\x72\x4e\x66"; - case 32: // O - return "\x04\x4b\x72\x4e\x67"; - case 33: // P - return "\x04\x4b\x72\x4e\x68"; - case 34: // Q - return "\x04\x4b\x72\x4e\x69"; - case 35: // R - return "\x04\x4b\x72\x4e\x6a"; - case 36: // S - return "\x04\x4b\x72\x4e\x6b"; - case 37: // T - return "\x04\x4b\x72\x4e\x6c"; - case 38: // U - return "\x04\x4b\x72\x4e\x6d"; - case 39: // V - return "\x04\x4b\x72\x4e\x6e"; - case 40: // W - return "\x04\x4b\x72\x4e\x6f"; - case 41: // X - return "\x04\x4b\x72\x4e\x70"; - case 42: // Y - return "\x04\x4b\x72\x4e\x71"; - case 43: // Z - return "\x04\x4b\x72\x4e\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x72\x4e\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x72\x4e\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x72\x4e\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x72\x4e\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x72\x4e\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x72\x4e\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x72\x4e\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x72\x4e\x42\x72"; + case 9: // PLUS return "\x05\x4b\x72\x4e\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x72\x4e\x43"; + case 11: // MINUS + return "\x04\x4b\x72\x4e\x44"; + case 12: // PERIOD + return "\x04\x4b\x72\x4e\x45"; + case 13: // SLASH + return "\x04\x4b\x72\x4e\x46"; + case 14: // 0 + return "\x04\x4b\x72\x4e\x47"; + case 15: // 1 + return "\x04\x4b\x72\x4e\x48"; + case 16: // 2 + return "\x04\x4b\x72\x4e\x49"; + case 17: // 3 + return "\x04\x4b\x72\x4e\x4a"; + case 18: // 4 + return "\x04\x4b\x72\x4e\x4b"; + case 19: // 5 + return "\x04\x4b\x72\x4e\x4c"; + case 20: // 6 + return "\x04\x4b\x72\x4e\x4d"; + case 21: // 7 + return "\x04\x4b\x72\x4e\x4e"; + case 22: // 8 + return "\x04\x4b\x72\x4e\x4f"; + case 23: // 9 + return "\x04\x4b\x72\x4e\x50"; + case 24: // COLON + return "\x05\x4b\x72\x4e\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x72\x4e\x51"; + case 26: // LESS + return "\x05\x4b\x72\x4e\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x72\x4e\x52"; + case 28: // GREATER + return "\x05\x4b\x72\x4e\x42\x75"; + case 29: // AT + return "\x05\x4b\x72\x4e\x42\x76"; + case 30: // A + return "\x04\x4b\x72\x4e\x53"; + case 31: // B + return "\x04\x4b\x72\x4e\x54"; + case 32: // C + return "\x04\x4b\x72\x4e\x55"; + case 33: // D + return "\x04\x4b\x72\x4e\x56"; + case 34: // E + return "\x04\x4b\x72\x4e\x57"; + case 35: // F + return "\x04\x4b\x72\x4e\x58"; + case 36: // G + return "\x04\x4b\x72\x4e\x59"; + case 37: // H + return "\x04\x4b\x72\x4e\x5a"; + case 38: // I + return "\x04\x4b\x72\x4e\x61"; + case 39: // J + return "\x04\x4b\x72\x4e\x62"; + case 40: // K + return "\x04\x4b\x72\x4e\x63"; + case 41: // L + return "\x04\x4b\x72\x4e\x64"; + case 42: // M + return "\x04\x4b\x72\x4e\x65"; + case 43: // N + return "\x04\x4b\x72\x4e\x66"; + case 44: // O + return "\x04\x4b\x72\x4e\x67"; + case 45: // P + return "\x04\x4b\x72\x4e\x68"; + case 46: // Q + return "\x04\x4b\x72\x4e\x69"; + case 47: // R + return "\x04\x4b\x72\x4e\x6a"; + case 48: // S + return "\x04\x4b\x72\x4e\x6b"; + case 49: // T + return "\x04\x4b\x72\x4e\x6c"; + case 50: // U + return "\x04\x4b\x72\x4e\x6d"; + case 51: // V + return "\x04\x4b\x72\x4e\x6e"; + case 52: // W + return "\x04\x4b\x72\x4e\x6f"; + case 53: // X + return "\x04\x4b\x72\x4e\x70"; + case 54: // Y + return "\x04\x4b\x72\x4e\x71"; + case 55: // Z + return "\x04\x4b\x72\x4e\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x72\x4e\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x72\x4e\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x72\x4e\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x72\x4e\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x72\x4e\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x72\x4e\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x72\x4e\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x72\x4e\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x72\x4e\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x72\x4e\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x72\x4e\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x72\x4e\x42\x30"; + case 68: // AE + return "\x05\x4b\x72\x4e\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x72\x4e\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x72\x4e\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x72\x4e\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x72\x4e\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x72\x4e\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x72\x4e\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x72\x4e\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x72\x4e\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x72\x4e\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x72\x4e\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x72\x4e\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x72\x4e\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x72\x4e\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x72\x4e\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x72\x4e\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x72\x4e\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x72\x4e\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x72\x4e\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x72\x4e\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x72\x4e\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x72\x4e\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x72\x4e\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x72\x4e\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x72\x4e\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x72\x4e\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x72\x4e\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x72\x4e\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x72\x4e\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x72\x4e\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x72\x4e\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x72\x4e\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x72\x4e\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x72\x4e\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x72\x4e\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x72\x4e\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x72\x4e\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x72\x4e\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x72\x4e\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x72\x4e\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x72\x4e\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x72\x4e\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x72\x4e\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x72\x4e\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x72\x4e\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x72\x4e\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x72\x4e\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x72\x4e\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x72\x4e\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x72\x4e\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x72\x4e\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x72\x4e\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x72\x4e\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x72\x4e\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x72\x4e\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x72\x4e\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x72\x4e\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x72\x4e\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x72\x4e\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x72\x4e\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x72\x4e\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x72\x4e\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x72\x4e\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x72\x4e\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x72\x4e\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x72\x4e\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x72\x4e\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x72\x4e\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x72\x4e\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x72\x4e\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x72\x4e\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x72\x4e\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x72\x4e\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x72\x4e\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x72\x4e\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x72\x4e\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x72\x4e\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x72\x4e\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x72\x4e\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x72\x4e\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x72\x4e\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x72\x4e\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x72\x4e\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x72\x4e\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x72\x4e\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x72\x4e\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x72\x4e\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x72\x4e\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x72\x4e\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x72\x4e\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x72\x4e\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x72\x4e\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x72\x4e\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x72\x4e\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x72\x4e\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x72\x4e\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x72\x4e\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x72\x4e\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x72\x4e\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x72\x4e\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x72\x4e\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x72\x4e\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x72\x4e\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x72\x4e\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x72\x4e\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x72\x4e\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x72\x4e\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x72\x4e\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x72\x4e\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x72\x4e\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x72\x4e\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x72\x4e\x42\x68"; } // end switch(key) case 0xc: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x72\x4b\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x72\x4b\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x72\x4b\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x72\x4b\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x72\x4b\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x72\x4b\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x72\x4b\x42"; - case 2: // COMMA - return "\x04\x4b\x72\x4b\x43"; - case 3: // MINUS - return "\x04\x4b\x72\x4b\x44"; - case 4: // PERIOD - return "\x04\x4b\x72\x4b\x45"; - case 5: // SLASH - return "\x04\x4b\x72\x4b\x46"; - case 6: // 0 - return "\x04\x4b\x72\x4b\x47"; - case 7: // 1 - return "\x04\x4b\x72\x4b\x48"; - case 8: // 2 - return "\x04\x4b\x72\x4b\x49"; - case 9: // 3 - return "\x04\x4b\x72\x4b\x4a"; - case 10: // 4 - return "\x04\x4b\x72\x4b\x4b"; - case 11: // 5 - return "\x04\x4b\x72\x4b\x4c"; - case 12: // 6 - return "\x04\x4b\x72\x4b\x4d"; - case 13: // 7 - return "\x04\x4b\x72\x4b\x4e"; - case 14: // 8 - return "\x04\x4b\x72\x4b\x4f"; - case 15: // 9 - return "\x04\x4b\x72\x4b\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x72\x4b\x51"; - case 17: // EQUAL - return "\x04\x4b\x72\x4b\x52"; - case 18: // A - return "\x04\x4b\x72\x4b\x53"; - case 19: // B - return "\x04\x4b\x72\x4b\x54"; - case 20: // C - return "\x04\x4b\x72\x4b\x55"; - case 21: // D - return "\x04\x4b\x72\x4b\x56"; - case 22: // E - return "\x04\x4b\x72\x4b\x57"; - case 23: // F - return "\x04\x4b\x72\x4b\x58"; - case 24: // G - return "\x04\x4b\x72\x4b\x59"; - case 25: // H - return "\x04\x4b\x72\x4b\x5a"; - case 26: // I - return "\x04\x4b\x72\x4b\x61"; - case 27: // J - return "\x04\x4b\x72\x4b\x62"; - case 28: // K - return "\x04\x4b\x72\x4b\x63"; - case 29: // L - return "\x04\x4b\x72\x4b\x64"; - case 30: // M - return "\x04\x4b\x72\x4b\x65"; - case 31: // N - return "\x04\x4b\x72\x4b\x66"; - case 32: // O - return "\x04\x4b\x72\x4b\x67"; - case 33: // P - return "\x04\x4b\x72\x4b\x68"; - case 34: // Q - return "\x04\x4b\x72\x4b\x69"; - case 35: // R - return "\x04\x4b\x72\x4b\x6a"; - case 36: // S - return "\x04\x4b\x72\x4b\x6b"; - case 37: // T - return "\x04\x4b\x72\x4b\x6c"; - case 38: // U - return "\x04\x4b\x72\x4b\x6d"; - case 39: // V - return "\x04\x4b\x72\x4b\x6e"; - case 40: // W - return "\x04\x4b\x72\x4b\x6f"; - case 41: // X - return "\x04\x4b\x72\x4b\x70"; - case 42: // Y - return "\x04\x4b\x72\x4b\x71"; - case 43: // Z - return "\x04\x4b\x72\x4b\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x72\x4b\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x72\x4b\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x72\x4b\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x72\x4b\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x72\x4b\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x72\x4b\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x72\x4b\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x72\x4b\x42\x72"; + case 9: // PLUS return "\x05\x4b\x72\x4b\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x72\x4b\x43"; + case 11: // MINUS + return "\x04\x4b\x72\x4b\x44"; + case 12: // PERIOD + return "\x04\x4b\x72\x4b\x45"; + case 13: // SLASH + return "\x04\x4b\x72\x4b\x46"; + case 14: // 0 + return "\x04\x4b\x72\x4b\x47"; + case 15: // 1 + return "\x04\x4b\x72\x4b\x48"; + case 16: // 2 + return "\x04\x4b\x72\x4b\x49"; + case 17: // 3 + return "\x04\x4b\x72\x4b\x4a"; + case 18: // 4 + return "\x04\x4b\x72\x4b\x4b"; + case 19: // 5 + return "\x04\x4b\x72\x4b\x4c"; + case 20: // 6 + return "\x04\x4b\x72\x4b\x4d"; + case 21: // 7 + return "\x04\x4b\x72\x4b\x4e"; + case 22: // 8 + return "\x04\x4b\x72\x4b\x4f"; + case 23: // 9 + return "\x04\x4b\x72\x4b\x50"; + case 24: // COLON + return "\x05\x4b\x72\x4b\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x72\x4b\x51"; + case 26: // LESS + return "\x05\x4b\x72\x4b\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x72\x4b\x52"; + case 28: // GREATER + return "\x05\x4b\x72\x4b\x42\x75"; + case 29: // AT + return "\x05\x4b\x72\x4b\x42\x76"; + case 30: // A + return "\x04\x4b\x72\x4b\x53"; + case 31: // B + return "\x04\x4b\x72\x4b\x54"; + case 32: // C + return "\x04\x4b\x72\x4b\x55"; + case 33: // D + return "\x04\x4b\x72\x4b\x56"; + case 34: // E + return "\x04\x4b\x72\x4b\x57"; + case 35: // F + return "\x04\x4b\x72\x4b\x58"; + case 36: // G + return "\x04\x4b\x72\x4b\x59"; + case 37: // H + return "\x04\x4b\x72\x4b\x5a"; + case 38: // I + return "\x04\x4b\x72\x4b\x61"; + case 39: // J + return "\x04\x4b\x72\x4b\x62"; + case 40: // K + return "\x04\x4b\x72\x4b\x63"; + case 41: // L + return "\x04\x4b\x72\x4b\x64"; + case 42: // M + return "\x04\x4b\x72\x4b\x65"; + case 43: // N + return "\x04\x4b\x72\x4b\x66"; + case 44: // O + return "\x04\x4b\x72\x4b\x67"; + case 45: // P + return "\x04\x4b\x72\x4b\x68"; + case 46: // Q + return "\x04\x4b\x72\x4b\x69"; + case 47: // R + return "\x04\x4b\x72\x4b\x6a"; + case 48: // S + return "\x04\x4b\x72\x4b\x6b"; + case 49: // T + return "\x04\x4b\x72\x4b\x6c"; + case 50: // U + return "\x04\x4b\x72\x4b\x6d"; + case 51: // V + return "\x04\x4b\x72\x4b\x6e"; + case 52: // W + return "\x04\x4b\x72\x4b\x6f"; + case 53: // X + return "\x04\x4b\x72\x4b\x70"; + case 54: // Y + return "\x04\x4b\x72\x4b\x71"; + case 55: // Z + return "\x04\x4b\x72\x4b\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x72\x4b\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x72\x4b\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x72\x4b\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x72\x4b\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x72\x4b\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x72\x4b\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x72\x4b\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x72\x4b\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x72\x4b\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x72\x4b\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x72\x4b\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x72\x4b\x42\x30"; + case 68: // AE + return "\x05\x4b\x72\x4b\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x72\x4b\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x72\x4b\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x72\x4b\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x72\x4b\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x72\x4b\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x72\x4b\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x72\x4b\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x72\x4b\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x72\x4b\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x72\x4b\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x72\x4b\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x72\x4b\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x72\x4b\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x72\x4b\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x72\x4b\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x72\x4b\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x72\x4b\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x72\x4b\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x72\x4b\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x72\x4b\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x72\x4b\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x72\x4b\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x72\x4b\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x72\x4b\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x72\x4b\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x72\x4b\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x72\x4b\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x72\x4b\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x72\x4b\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x72\x4b\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x72\x4b\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x72\x4b\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x72\x4b\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x72\x4b\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x72\x4b\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x72\x4b\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x72\x4b\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x72\x4b\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x72\x4b\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x72\x4b\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x72\x4b\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x72\x4b\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x72\x4b\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x72\x4b\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x72\x4b\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x72\x4b\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x72\x4b\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x72\x4b\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x72\x4b\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x72\x4b\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x72\x4b\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x72\x4b\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x72\x4b\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x72\x4b\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x72\x4b\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x72\x4b\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x72\x4b\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x72\x4b\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x72\x4b\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x72\x4b\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x72\x4b\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x72\x4b\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x72\x4b\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x72\x4b\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x72\x4b\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x72\x4b\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x72\x4b\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x72\x4b\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x72\x4b\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x72\x4b\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x72\x4b\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x72\x4b\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x72\x4b\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x72\x4b\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x72\x4b\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x72\x4b\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x72\x4b\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x72\x4b\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x72\x4b\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x72\x4b\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x72\x4b\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x72\x4b\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x72\x4b\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x72\x4b\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x72\x4b\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x72\x4b\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x72\x4b\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x72\x4b\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x72\x4b\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x72\x4b\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x72\x4b\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x72\x4b\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x72\x4b\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x72\x4b\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x72\x4b\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x72\x4b\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x72\x4b\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x72\x4b\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x72\x4b\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x72\x4b\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x72\x4b\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x72\x4b\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x72\x4b\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x72\x4b\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x72\x4b\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x72\x4b\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x72\x4b\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x72\x4b\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x72\x4b\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x72\x4b\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x72\x4b\x42\x68"; } // end switch(key) case 0xd: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x72\x4c\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x72\x4c\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x72\x4c\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x72\x4c\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x72\x4c\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x72\x4c\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x72\x4c\x42"; - case 2: // COMMA - return "\x04\x4b\x72\x4c\x43"; - case 3: // MINUS - return "\x04\x4b\x72\x4c\x44"; - case 4: // PERIOD - return "\x04\x4b\x72\x4c\x45"; - case 5: // SLASH - return "\x04\x4b\x72\x4c\x46"; - case 6: // 0 - return "\x04\x4b\x72\x4c\x47"; - case 7: // 1 - return "\x04\x4b\x72\x4c\x48"; - case 8: // 2 - return "\x04\x4b\x72\x4c\x49"; - case 9: // 3 - return "\x04\x4b\x72\x4c\x4a"; - case 10: // 4 - return "\x04\x4b\x72\x4c\x4b"; - case 11: // 5 - return "\x04\x4b\x72\x4c\x4c"; - case 12: // 6 - return "\x04\x4b\x72\x4c\x4d"; - case 13: // 7 - return "\x04\x4b\x72\x4c\x4e"; - case 14: // 8 - return "\x04\x4b\x72\x4c\x4f"; - case 15: // 9 - return "\x04\x4b\x72\x4c\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x72\x4c\x51"; - case 17: // EQUAL - return "\x04\x4b\x72\x4c\x52"; - case 18: // A - return "\x04\x4b\x72\x4c\x53"; - case 19: // B - return "\x04\x4b\x72\x4c\x54"; - case 20: // C - return "\x04\x4b\x72\x4c\x55"; - case 21: // D - return "\x04\x4b\x72\x4c\x56"; - case 22: // E - return "\x04\x4b\x72\x4c\x57"; - case 23: // F - return "\x04\x4b\x72\x4c\x58"; - case 24: // G - return "\x04\x4b\x72\x4c\x59"; - case 25: // H - return "\x04\x4b\x72\x4c\x5a"; - case 26: // I - return "\x04\x4b\x72\x4c\x61"; - case 27: // J - return "\x04\x4b\x72\x4c\x62"; - case 28: // K - return "\x04\x4b\x72\x4c\x63"; - case 29: // L - return "\x04\x4b\x72\x4c\x64"; - case 30: // M - return "\x04\x4b\x72\x4c\x65"; - case 31: // N - return "\x04\x4b\x72\x4c\x66"; - case 32: // O - return "\x04\x4b\x72\x4c\x67"; - case 33: // P - return "\x04\x4b\x72\x4c\x68"; - case 34: // Q - return "\x04\x4b\x72\x4c\x69"; - case 35: // R - return "\x04\x4b\x72\x4c\x6a"; - case 36: // S - return "\x04\x4b\x72\x4c\x6b"; - case 37: // T - return "\x04\x4b\x72\x4c\x6c"; - case 38: // U - return "\x04\x4b\x72\x4c\x6d"; - case 39: // V - return "\x04\x4b\x72\x4c\x6e"; - case 40: // W - return "\x04\x4b\x72\x4c\x6f"; - case 41: // X - return "\x04\x4b\x72\x4c\x70"; - case 42: // Y - return "\x04\x4b\x72\x4c\x71"; - case 43: // Z - return "\x04\x4b\x72\x4c\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x72\x4c\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x72\x4c\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x72\x4c\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x72\x4c\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x72\x4c\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x72\x4c\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x72\x4c\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x72\x4c\x42\x72"; + case 9: // PLUS return "\x05\x4b\x72\x4c\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x72\x4c\x43"; + case 11: // MINUS + return "\x04\x4b\x72\x4c\x44"; + case 12: // PERIOD + return "\x04\x4b\x72\x4c\x45"; + case 13: // SLASH + return "\x04\x4b\x72\x4c\x46"; + case 14: // 0 + return "\x04\x4b\x72\x4c\x47"; + case 15: // 1 + return "\x04\x4b\x72\x4c\x48"; + case 16: // 2 + return "\x04\x4b\x72\x4c\x49"; + case 17: // 3 + return "\x04\x4b\x72\x4c\x4a"; + case 18: // 4 + return "\x04\x4b\x72\x4c\x4b"; + case 19: // 5 + return "\x04\x4b\x72\x4c\x4c"; + case 20: // 6 + return "\x04\x4b\x72\x4c\x4d"; + case 21: // 7 + return "\x04\x4b\x72\x4c\x4e"; + case 22: // 8 + return "\x04\x4b\x72\x4c\x4f"; + case 23: // 9 + return "\x04\x4b\x72\x4c\x50"; + case 24: // COLON + return "\x05\x4b\x72\x4c\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x72\x4c\x51"; + case 26: // LESS + return "\x05\x4b\x72\x4c\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x72\x4c\x52"; + case 28: // GREATER + return "\x05\x4b\x72\x4c\x42\x75"; + case 29: // AT + return "\x05\x4b\x72\x4c\x42\x76"; + case 30: // A + return "\x04\x4b\x72\x4c\x53"; + case 31: // B + return "\x04\x4b\x72\x4c\x54"; + case 32: // C + return "\x04\x4b\x72\x4c\x55"; + case 33: // D + return "\x04\x4b\x72\x4c\x56"; + case 34: // E + return "\x04\x4b\x72\x4c\x57"; + case 35: // F + return "\x04\x4b\x72\x4c\x58"; + case 36: // G + return "\x04\x4b\x72\x4c\x59"; + case 37: // H + return "\x04\x4b\x72\x4c\x5a"; + case 38: // I + return "\x04\x4b\x72\x4c\x61"; + case 39: // J + return "\x04\x4b\x72\x4c\x62"; + case 40: // K + return "\x04\x4b\x72\x4c\x63"; + case 41: // L + return "\x04\x4b\x72\x4c\x64"; + case 42: // M + return "\x04\x4b\x72\x4c\x65"; + case 43: // N + return "\x04\x4b\x72\x4c\x66"; + case 44: // O + return "\x04\x4b\x72\x4c\x67"; + case 45: // P + return "\x04\x4b\x72\x4c\x68"; + case 46: // Q + return "\x04\x4b\x72\x4c\x69"; + case 47: // R + return "\x04\x4b\x72\x4c\x6a"; + case 48: // S + return "\x04\x4b\x72\x4c\x6b"; + case 49: // T + return "\x04\x4b\x72\x4c\x6c"; + case 50: // U + return "\x04\x4b\x72\x4c\x6d"; + case 51: // V + return "\x04\x4b\x72\x4c\x6e"; + case 52: // W + return "\x04\x4b\x72\x4c\x6f"; + case 53: // X + return "\x04\x4b\x72\x4c\x70"; + case 54: // Y + return "\x04\x4b\x72\x4c\x71"; + case 55: // Z + return "\x04\x4b\x72\x4c\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x72\x4c\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x72\x4c\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x72\x4c\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x72\x4c\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x72\x4c\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x72\x4c\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x72\x4c\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x72\x4c\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x72\x4c\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x72\x4c\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x72\x4c\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x72\x4c\x42\x30"; + case 68: // AE + return "\x05\x4b\x72\x4c\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x72\x4c\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x72\x4c\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x72\x4c\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x72\x4c\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x72\x4c\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x72\x4c\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x72\x4c\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x72\x4c\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x72\x4c\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x72\x4c\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x72\x4c\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x72\x4c\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x72\x4c\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x72\x4c\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x72\x4c\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x72\x4c\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x72\x4c\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x72\x4c\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x72\x4c\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x72\x4c\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x72\x4c\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x72\x4c\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x72\x4c\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x72\x4c\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x72\x4c\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x72\x4c\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x72\x4c\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x72\x4c\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x72\x4c\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x72\x4c\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x72\x4c\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x72\x4c\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x72\x4c\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x72\x4c\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x72\x4c\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x72\x4c\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x72\x4c\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x72\x4c\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x72\x4c\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x72\x4c\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x72\x4c\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x72\x4c\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x72\x4c\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x72\x4c\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x72\x4c\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x72\x4c\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x72\x4c\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x72\x4c\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x72\x4c\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x72\x4c\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x72\x4c\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x72\x4c\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x72\x4c\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x72\x4c\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x72\x4c\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x72\x4c\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x72\x4c\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x72\x4c\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x72\x4c\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x72\x4c\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x72\x4c\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x72\x4c\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x72\x4c\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x72\x4c\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x72\x4c\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x72\x4c\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x72\x4c\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x72\x4c\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x72\x4c\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x72\x4c\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x72\x4c\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x72\x4c\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x72\x4c\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x72\x4c\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x72\x4c\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x72\x4c\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x72\x4c\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x72\x4c\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x72\x4c\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x72\x4c\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x72\x4c\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x72\x4c\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x72\x4c\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x72\x4c\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x72\x4c\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x72\x4c\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x72\x4c\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x72\x4c\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x72\x4c\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x72\x4c\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x72\x4c\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x72\x4c\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x72\x4c\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x72\x4c\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x72\x4c\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x72\x4c\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x72\x4c\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x72\x4c\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x72\x4c\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x72\x4c\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x72\x4c\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x72\x4c\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x72\x4c\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x72\x4c\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x72\x4c\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x72\x4c\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x72\x4c\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x72\x4c\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x72\x4c\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x72\x4c\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x72\x4c\x42\x68"; } // end switch(key) case 0xe: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x72\x4f\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x72\x4f\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x72\x4f\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x72\x4f\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x72\x4f\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x72\x4f\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x72\x4f\x42"; - case 2: // COMMA - return "\x04\x4b\x72\x4f\x43"; - case 3: // MINUS - return "\x04\x4b\x72\x4f\x44"; - case 4: // PERIOD - return "\x04\x4b\x72\x4f\x45"; - case 5: // SLASH - return "\x04\x4b\x72\x4f\x46"; - case 6: // 0 - return "\x04\x4b\x72\x4f\x47"; - case 7: // 1 - return "\x04\x4b\x72\x4f\x48"; - case 8: // 2 - return "\x04\x4b\x72\x4f\x49"; - case 9: // 3 - return "\x04\x4b\x72\x4f\x4a"; - case 10: // 4 - return "\x04\x4b\x72\x4f\x4b"; - case 11: // 5 - return "\x04\x4b\x72\x4f\x4c"; - case 12: // 6 - return "\x04\x4b\x72\x4f\x4d"; - case 13: // 7 - return "\x04\x4b\x72\x4f\x4e"; - case 14: // 8 - return "\x04\x4b\x72\x4f\x4f"; - case 15: // 9 - return "\x04\x4b\x72\x4f\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x72\x4f\x51"; - case 17: // EQUAL - return "\x04\x4b\x72\x4f\x52"; - case 18: // A - return "\x04\x4b\x72\x4f\x53"; - case 19: // B - return "\x04\x4b\x72\x4f\x54"; - case 20: // C - return "\x04\x4b\x72\x4f\x55"; - case 21: // D - return "\x04\x4b\x72\x4f\x56"; - case 22: // E - return "\x04\x4b\x72\x4f\x57"; - case 23: // F - return "\x04\x4b\x72\x4f\x58"; - case 24: // G - return "\x04\x4b\x72\x4f\x59"; - case 25: // H - return "\x04\x4b\x72\x4f\x5a"; - case 26: // I - return "\x04\x4b\x72\x4f\x61"; - case 27: // J - return "\x04\x4b\x72\x4f\x62"; - case 28: // K - return "\x04\x4b\x72\x4f\x63"; - case 29: // L - return "\x04\x4b\x72\x4f\x64"; - case 30: // M - return "\x04\x4b\x72\x4f\x65"; - case 31: // N - return "\x04\x4b\x72\x4f\x66"; - case 32: // O - return "\x04\x4b\x72\x4f\x67"; - case 33: // P - return "\x04\x4b\x72\x4f\x68"; - case 34: // Q - return "\x04\x4b\x72\x4f\x69"; - case 35: // R - return "\x04\x4b\x72\x4f\x6a"; - case 36: // S - return "\x04\x4b\x72\x4f\x6b"; - case 37: // T - return "\x04\x4b\x72\x4f\x6c"; - case 38: // U - return "\x04\x4b\x72\x4f\x6d"; - case 39: // V - return "\x04\x4b\x72\x4f\x6e"; - case 40: // W - return "\x04\x4b\x72\x4f\x6f"; - case 41: // X - return "\x04\x4b\x72\x4f\x70"; - case 42: // Y - return "\x04\x4b\x72\x4f\x71"; - case 43: // Z - return "\x04\x4b\x72\x4f\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x72\x4f\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x72\x4f\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x72\x4f\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x72\x4f\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x72\x4f\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x72\x4f\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x72\x4f\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x72\x4f\x42\x72"; + case 9: // PLUS return "\x05\x4b\x72\x4f\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x72\x4f\x43"; + case 11: // MINUS + return "\x04\x4b\x72\x4f\x44"; + case 12: // PERIOD + return "\x04\x4b\x72\x4f\x45"; + case 13: // SLASH + return "\x04\x4b\x72\x4f\x46"; + case 14: // 0 + return "\x04\x4b\x72\x4f\x47"; + case 15: // 1 + return "\x04\x4b\x72\x4f\x48"; + case 16: // 2 + return "\x04\x4b\x72\x4f\x49"; + case 17: // 3 + return "\x04\x4b\x72\x4f\x4a"; + case 18: // 4 + return "\x04\x4b\x72\x4f\x4b"; + case 19: // 5 + return "\x04\x4b\x72\x4f\x4c"; + case 20: // 6 + return "\x04\x4b\x72\x4f\x4d"; + case 21: // 7 + return "\x04\x4b\x72\x4f\x4e"; + case 22: // 8 + return "\x04\x4b\x72\x4f\x4f"; + case 23: // 9 + return "\x04\x4b\x72\x4f\x50"; + case 24: // COLON + return "\x05\x4b\x72\x4f\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x72\x4f\x51"; + case 26: // LESS + return "\x05\x4b\x72\x4f\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x72\x4f\x52"; + case 28: // GREATER + return "\x05\x4b\x72\x4f\x42\x75"; + case 29: // AT + return "\x05\x4b\x72\x4f\x42\x76"; + case 30: // A + return "\x04\x4b\x72\x4f\x53"; + case 31: // B + return "\x04\x4b\x72\x4f\x54"; + case 32: // C + return "\x04\x4b\x72\x4f\x55"; + case 33: // D + return "\x04\x4b\x72\x4f\x56"; + case 34: // E + return "\x04\x4b\x72\x4f\x57"; + case 35: // F + return "\x04\x4b\x72\x4f\x58"; + case 36: // G + return "\x04\x4b\x72\x4f\x59"; + case 37: // H + return "\x04\x4b\x72\x4f\x5a"; + case 38: // I + return "\x04\x4b\x72\x4f\x61"; + case 39: // J + return "\x04\x4b\x72\x4f\x62"; + case 40: // K + return "\x04\x4b\x72\x4f\x63"; + case 41: // L + return "\x04\x4b\x72\x4f\x64"; + case 42: // M + return "\x04\x4b\x72\x4f\x65"; + case 43: // N + return "\x04\x4b\x72\x4f\x66"; + case 44: // O + return "\x04\x4b\x72\x4f\x67"; + case 45: // P + return "\x04\x4b\x72\x4f\x68"; + case 46: // Q + return "\x04\x4b\x72\x4f\x69"; + case 47: // R + return "\x04\x4b\x72\x4f\x6a"; + case 48: // S + return "\x04\x4b\x72\x4f\x6b"; + case 49: // T + return "\x04\x4b\x72\x4f\x6c"; + case 50: // U + return "\x04\x4b\x72\x4f\x6d"; + case 51: // V + return "\x04\x4b\x72\x4f\x6e"; + case 52: // W + return "\x04\x4b\x72\x4f\x6f"; + case 53: // X + return "\x04\x4b\x72\x4f\x70"; + case 54: // Y + return "\x04\x4b\x72\x4f\x71"; + case 55: // Z + return "\x04\x4b\x72\x4f\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x72\x4f\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x72\x4f\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x72\x4f\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x72\x4f\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x72\x4f\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x72\x4f\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x72\x4f\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x72\x4f\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x72\x4f\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x72\x4f\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x72\x4f\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x72\x4f\x42\x30"; + case 68: // AE + return "\x05\x4b\x72\x4f\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x72\x4f\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x72\x4f\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x72\x4f\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x72\x4f\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x72\x4f\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x72\x4f\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x72\x4f\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x72\x4f\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x72\x4f\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x72\x4f\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x72\x4f\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x72\x4f\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x72\x4f\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x72\x4f\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x72\x4f\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x72\x4f\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x72\x4f\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x72\x4f\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x72\x4f\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x72\x4f\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x72\x4f\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x72\x4f\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x72\x4f\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x72\x4f\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x72\x4f\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x72\x4f\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x72\x4f\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x72\x4f\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x72\x4f\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x72\x4f\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x72\x4f\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x72\x4f\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x72\x4f\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x72\x4f\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x72\x4f\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x72\x4f\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x72\x4f\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x72\x4f\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x72\x4f\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x72\x4f\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x72\x4f\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x72\x4f\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x72\x4f\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x72\x4f\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x72\x4f\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x72\x4f\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x72\x4f\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x72\x4f\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x72\x4f\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x72\x4f\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x72\x4f\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x72\x4f\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x72\x4f\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x72\x4f\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x72\x4f\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x72\x4f\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x72\x4f\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x72\x4f\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x72\x4f\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x72\x4f\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x72\x4f\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x72\x4f\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x72\x4f\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x72\x4f\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x72\x4f\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x72\x4f\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x72\x4f\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x72\x4f\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x72\x4f\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x72\x4f\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x72\x4f\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x72\x4f\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x72\x4f\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x72\x4f\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x72\x4f\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x72\x4f\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x72\x4f\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x72\x4f\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x72\x4f\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x72\x4f\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x72\x4f\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x72\x4f\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x72\x4f\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x72\x4f\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x72\x4f\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x72\x4f\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x72\x4f\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x72\x4f\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x72\x4f\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x72\x4f\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x72\x4f\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x72\x4f\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x72\x4f\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x72\x4f\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x72\x4f\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x72\x4f\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x72\x4f\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x72\x4f\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x72\x4f\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x72\x4f\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x72\x4f\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x72\x4f\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x72\x4f\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x72\x4f\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x72\x4f\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x72\x4f\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x72\x4f\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x72\x4f\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x72\x4f\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x72\x4f\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x72\x4f\x42\x68"; } // end switch(key) case 0xf: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x72\x50\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x72\x50\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x72\x50\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x72\x50\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x72\x50\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x72\x50\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x72\x50\x42"; - case 2: // COMMA - return "\x04\x4b\x72\x50\x43"; - case 3: // MINUS - return "\x04\x4b\x72\x50\x44"; - case 4: // PERIOD - return "\x04\x4b\x72\x50\x45"; - case 5: // SLASH - return "\x04\x4b\x72\x50\x46"; - case 6: // 0 - return "\x04\x4b\x72\x50\x47"; - case 7: // 1 - return "\x04\x4b\x72\x50\x48"; - case 8: // 2 - return "\x04\x4b\x72\x50\x49"; - case 9: // 3 - return "\x04\x4b\x72\x50\x4a"; - case 10: // 4 - return "\x04\x4b\x72\x50\x4b"; - case 11: // 5 - return "\x04\x4b\x72\x50\x4c"; - case 12: // 6 - return "\x04\x4b\x72\x50\x4d"; - case 13: // 7 - return "\x04\x4b\x72\x50\x4e"; - case 14: // 8 - return "\x04\x4b\x72\x50\x4f"; - case 15: // 9 - return "\x04\x4b\x72\x50\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x72\x50\x51"; - case 17: // EQUAL - return "\x04\x4b\x72\x50\x52"; - case 18: // A - return "\x04\x4b\x72\x50\x53"; - case 19: // B - return "\x04\x4b\x72\x50\x54"; - case 20: // C - return "\x04\x4b\x72\x50\x55"; - case 21: // D - return "\x04\x4b\x72\x50\x56"; - case 22: // E - return "\x04\x4b\x72\x50\x57"; - case 23: // F - return "\x04\x4b\x72\x50\x58"; - case 24: // G - return "\x04\x4b\x72\x50\x59"; - case 25: // H - return "\x04\x4b\x72\x50\x5a"; - case 26: // I - return "\x04\x4b\x72\x50\x61"; - case 27: // J - return "\x04\x4b\x72\x50\x62"; - case 28: // K - return "\x04\x4b\x72\x50\x63"; - case 29: // L - return "\x04\x4b\x72\x50\x64"; - case 30: // M - return "\x04\x4b\x72\x50\x65"; - case 31: // N - return "\x04\x4b\x72\x50\x66"; - case 32: // O - return "\x04\x4b\x72\x50\x67"; - case 33: // P - return "\x04\x4b\x72\x50\x68"; - case 34: // Q - return "\x04\x4b\x72\x50\x69"; - case 35: // R - return "\x04\x4b\x72\x50\x6a"; - case 36: // S - return "\x04\x4b\x72\x50\x6b"; - case 37: // T - return "\x04\x4b\x72\x50\x6c"; - case 38: // U - return "\x04\x4b\x72\x50\x6d"; - case 39: // V - return "\x04\x4b\x72\x50\x6e"; - case 40: // W - return "\x04\x4b\x72\x50\x6f"; - case 41: // X - return "\x04\x4b\x72\x50\x70"; - case 42: // Y - return "\x04\x4b\x72\x50\x71"; - case 43: // Z - return "\x04\x4b\x72\x50\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x72\x50\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x72\x50\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x72\x50\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x72\x50\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x72\x50\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x72\x50\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x72\x50\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x72\x50\x42\x72"; + case 9: // PLUS return "\x05\x4b\x72\x50\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x72\x50\x43"; + case 11: // MINUS + return "\x04\x4b\x72\x50\x44"; + case 12: // PERIOD + return "\x04\x4b\x72\x50\x45"; + case 13: // SLASH + return "\x04\x4b\x72\x50\x46"; + case 14: // 0 + return "\x04\x4b\x72\x50\x47"; + case 15: // 1 + return "\x04\x4b\x72\x50\x48"; + case 16: // 2 + return "\x04\x4b\x72\x50\x49"; + case 17: // 3 + return "\x04\x4b\x72\x50\x4a"; + case 18: // 4 + return "\x04\x4b\x72\x50\x4b"; + case 19: // 5 + return "\x04\x4b\x72\x50\x4c"; + case 20: // 6 + return "\x04\x4b\x72\x50\x4d"; + case 21: // 7 + return "\x04\x4b\x72\x50\x4e"; + case 22: // 8 + return "\x04\x4b\x72\x50\x4f"; + case 23: // 9 + return "\x04\x4b\x72\x50\x50"; + case 24: // COLON + return "\x05\x4b\x72\x50\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x72\x50\x51"; + case 26: // LESS + return "\x05\x4b\x72\x50\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x72\x50\x52"; + case 28: // GREATER + return "\x05\x4b\x72\x50\x42\x75"; + case 29: // AT + return "\x05\x4b\x72\x50\x42\x76"; + case 30: // A + return "\x04\x4b\x72\x50\x53"; + case 31: // B + return "\x04\x4b\x72\x50\x54"; + case 32: // C + return "\x04\x4b\x72\x50\x55"; + case 33: // D + return "\x04\x4b\x72\x50\x56"; + case 34: // E + return "\x04\x4b\x72\x50\x57"; + case 35: // F + return "\x04\x4b\x72\x50\x58"; + case 36: // G + return "\x04\x4b\x72\x50\x59"; + case 37: // H + return "\x04\x4b\x72\x50\x5a"; + case 38: // I + return "\x04\x4b\x72\x50\x61"; + case 39: // J + return "\x04\x4b\x72\x50\x62"; + case 40: // K + return "\x04\x4b\x72\x50\x63"; + case 41: // L + return "\x04\x4b\x72\x50\x64"; + case 42: // M + return "\x04\x4b\x72\x50\x65"; + case 43: // N + return "\x04\x4b\x72\x50\x66"; + case 44: // O + return "\x04\x4b\x72\x50\x67"; + case 45: // P + return "\x04\x4b\x72\x50\x68"; + case 46: // Q + return "\x04\x4b\x72\x50\x69"; + case 47: // R + return "\x04\x4b\x72\x50\x6a"; + case 48: // S + return "\x04\x4b\x72\x50\x6b"; + case 49: // T + return "\x04\x4b\x72\x50\x6c"; + case 50: // U + return "\x04\x4b\x72\x50\x6d"; + case 51: // V + return "\x04\x4b\x72\x50\x6e"; + case 52: // W + return "\x04\x4b\x72\x50\x6f"; + case 53: // X + return "\x04\x4b\x72\x50\x70"; + case 54: // Y + return "\x04\x4b\x72\x50\x71"; + case 55: // Z + return "\x04\x4b\x72\x50\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x72\x50\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x72\x50\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x72\x50\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x72\x50\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x72\x50\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x72\x50\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x72\x50\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x72\x50\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x72\x50\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x72\x50\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x72\x50\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x72\x50\x42\x30"; + case 68: // AE + return "\x05\x4b\x72\x50\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x72\x50\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x72\x50\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x72\x50\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x72\x50\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x72\x50\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x72\x50\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x72\x50\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x72\x50\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x72\x50\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x72\x50\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x72\x50\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x72\x50\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x72\x50\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x72\x50\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x72\x50\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x72\x50\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x72\x50\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x72\x50\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x72\x50\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x72\x50\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x72\x50\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x72\x50\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x72\x50\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x72\x50\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x72\x50\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x72\x50\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x72\x50\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x72\x50\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x72\x50\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x72\x50\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x72\x50\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x72\x50\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x72\x50\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x72\x50\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x72\x50\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x72\x50\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x72\x50\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x72\x50\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x72\x50\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x72\x50\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x72\x50\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x72\x50\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x72\x50\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x72\x50\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x72\x50\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x72\x50\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x72\x50\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x72\x50\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x72\x50\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x72\x50\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x72\x50\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x72\x50\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x72\x50\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x72\x50\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x72\x50\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x72\x50\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x72\x50\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x72\x50\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x72\x50\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x72\x50\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x72\x50\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x72\x50\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x72\x50\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x72\x50\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x72\x50\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x72\x50\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x72\x50\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x72\x50\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x72\x50\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x72\x50\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x72\x50\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x72\x50\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x72\x50\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x72\x50\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x72\x50\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x72\x50\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x72\x50\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x72\x50\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x72\x50\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x72\x50\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x72\x50\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x72\x50\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x72\x50\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x72\x50\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x72\x50\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x72\x50\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x72\x50\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x72\x50\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x72\x50\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x72\x50\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x72\x50\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x72\x50\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x72\x50\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x72\x50\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x72\x50\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x72\x50\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x72\x50\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x72\x50\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x72\x50\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x72\x50\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x72\x50\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x72\x50\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x72\x50\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x72\x50\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x72\x50\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x72\x50\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x72\x50\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x72\x50\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x72\x50\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x72\x50\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x72\x50\x42\x68"; } // end switch(key) } // end switch(mods) @@ -10835,3667 +12588,5359 @@ key_lookup(uint8_t key, KeyboardMode mode, uint8_t mods, uint8_t action) { case 1: // PRESS switch (mods & 0xf) { case 0x0: - switch(key & 0x7f) { default: return NULL; - case 48: // WORLD_1 - return "\x04\x4b\x70\x41\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x70\x41\x78"; - case 50: // PLUS - return "\x05\x4b\x70\x41\x42\x69"; - case 51: // UNDERSCORE - return "\x05\x4b\x70\x41\x42\x6a"; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x04\x4b\x70\x41\x79"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x70\x41\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x70\x41\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x70\x41\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x70\x41\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x70\x41\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x70\x41\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x70\x41\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x70\x41\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x70\x41\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x70\x41\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x70\x41\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x70\x41\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x70\x41\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x70\x41\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x70\x41\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x70\x41\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x70\x41\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x70\x41\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x70\x41\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x70\x41\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x70\x41\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x70\x41\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x70\x41\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x70\x41\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x70\x41\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x70\x41\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x70\x41\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x70\x41\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x70\x41\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x70\x41\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x70\x41\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x70\x41\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x70\x41\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x70\x41\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x70\x41\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x70\x41\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x70\x41\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x70\x41\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x70\x41\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x70\x41\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x70\x41\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x70\x41\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x70\x41\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x70\x41\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x70\x41\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x70\x41\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x70\x41\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x70\x41\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x70\x41\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x70\x41\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x70\x41\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x70\x41\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x70\x41\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x70\x41\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x70\x41\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x70\x41\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x70\x41\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x70\x41\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x70\x41\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x70\x41\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x70\x41\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x70\x41\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x70\x41\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x70\x41\x42\x68"; } // end switch(key) case 0x1: - switch(key & 0x7f) { default: return NULL; - case 48: // WORLD_1 - return "\x04\x4b\x70\x42\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x70\x42\x78"; - case 50: // PLUS - return "\x05\x4b\x70\x42\x42\x69"; - case 51: // UNDERSCORE - return "\x05\x4b\x70\x42\x42\x6a"; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x04\x4b\x70\x42\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x70\x42\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x70\x42\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x70\x42\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x70\x42\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x70\x42\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x70\x42\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x70\x42\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x70\x42\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x70\x42\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x70\x42\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x70\x42\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x70\x42\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x70\x42\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x70\x42\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x70\x42\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x70\x42\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x70\x42\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x70\x42\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x70\x42\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x70\x42\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x70\x42\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x70\x42\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x70\x42\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x70\x42\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x70\x42\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x70\x42\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x70\x42\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x70\x42\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x70\x42\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x70\x42\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x70\x42\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x70\x42\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x70\x42\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x70\x42\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x70\x42\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x70\x42\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x70\x42\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x70\x42\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x70\x42\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x70\x42\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x70\x42\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x70\x42\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x70\x42\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x70\x42\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x70\x42\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x70\x42\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x70\x42\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x70\x42\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x70\x42\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x70\x42\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x70\x42\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x70\x42\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x70\x42\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x70\x42\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x70\x42\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x70\x42\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x70\x42\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x70\x42\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x70\x42\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x70\x42\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x70\x42\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x70\x42\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x70\x42\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x70\x42\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x70\x42\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x70\x42\x42\x68"; } // end switch(key) case 0x2: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x70\x45\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x70\x45\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x70\x45\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x70\x45\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x70\x45\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x70\x45\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x70\x45\x42"; - case 2: // COMMA - return "\x04\x4b\x70\x45\x43"; - case 3: // MINUS - return "\x04\x4b\x70\x45\x44"; - case 4: // PERIOD - return "\x04\x4b\x70\x45\x45"; - case 5: // SLASH - return "\x04\x4b\x70\x45\x46"; - case 6: // 0 - return "\x04\x4b\x70\x45\x47"; - case 7: // 1 - return "\x04\x4b\x70\x45\x48"; - case 8: // 2 - return "\x04\x4b\x70\x45\x49"; - case 9: // 3 - return "\x04\x4b\x70\x45\x4a"; - case 10: // 4 - return "\x04\x4b\x70\x45\x4b"; - case 11: // 5 - return "\x04\x4b\x70\x45\x4c"; - case 12: // 6 - return "\x04\x4b\x70\x45\x4d"; - case 13: // 7 - return "\x04\x4b\x70\x45\x4e"; - case 14: // 8 - return "\x04\x4b\x70\x45\x4f"; - case 15: // 9 - return "\x04\x4b\x70\x45\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x70\x45\x51"; - case 17: // EQUAL - return "\x04\x4b\x70\x45\x52"; - case 18: // A - return "\x04\x4b\x70\x45\x53"; - case 19: // B - return "\x04\x4b\x70\x45\x54"; - case 20: // C - return "\x04\x4b\x70\x45\x55"; - case 21: // D - return "\x04\x4b\x70\x45\x56"; - case 22: // E - return "\x04\x4b\x70\x45\x57"; - case 23: // F - return "\x04\x4b\x70\x45\x58"; - case 24: // G - return "\x04\x4b\x70\x45\x59"; - case 25: // H - return "\x04\x4b\x70\x45\x5a"; - case 26: // I - return "\x04\x4b\x70\x45\x61"; - case 27: // J - return "\x04\x4b\x70\x45\x62"; - case 28: // K - return "\x04\x4b\x70\x45\x63"; - case 29: // L - return "\x04\x4b\x70\x45\x64"; - case 30: // M - return "\x04\x4b\x70\x45\x65"; - case 31: // N - return "\x04\x4b\x70\x45\x66"; - case 32: // O - return "\x04\x4b\x70\x45\x67"; - case 33: // P - return "\x04\x4b\x70\x45\x68"; - case 34: // Q - return "\x04\x4b\x70\x45\x69"; - case 35: // R - return "\x04\x4b\x70\x45\x6a"; - case 36: // S - return "\x04\x4b\x70\x45\x6b"; - case 37: // T - return "\x04\x4b\x70\x45\x6c"; - case 38: // U - return "\x04\x4b\x70\x45\x6d"; - case 39: // V - return "\x04\x4b\x70\x45\x6e"; - case 40: // W - return "\x04\x4b\x70\x45\x6f"; - case 41: // X - return "\x04\x4b\x70\x45\x70"; - case 42: // Y - return "\x04\x4b\x70\x45\x71"; - case 43: // Z - return "\x04\x4b\x70\x45\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x70\x45\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x70\x45\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x70\x45\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x70\x45\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x70\x45\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x70\x45\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x70\x45\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x70\x45\x42\x72"; + case 9: // PLUS return "\x05\x4b\x70\x45\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x70\x45\x43"; + case 11: // MINUS + return "\x04\x4b\x70\x45\x44"; + case 12: // PERIOD + return "\x04\x4b\x70\x45\x45"; + case 13: // SLASH + return "\x04\x4b\x70\x45\x46"; + case 14: // 0 + return "\x04\x4b\x70\x45\x47"; + case 15: // 1 + return "\x04\x4b\x70\x45\x48"; + case 16: // 2 + return "\x04\x4b\x70\x45\x49"; + case 17: // 3 + return "\x04\x4b\x70\x45\x4a"; + case 18: // 4 + return "\x04\x4b\x70\x45\x4b"; + case 19: // 5 + return "\x04\x4b\x70\x45\x4c"; + case 20: // 6 + return "\x04\x4b\x70\x45\x4d"; + case 21: // 7 + return "\x04\x4b\x70\x45\x4e"; + case 22: // 8 + return "\x04\x4b\x70\x45\x4f"; + case 23: // 9 + return "\x04\x4b\x70\x45\x50"; + case 24: // COLON + return "\x05\x4b\x70\x45\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x70\x45\x51"; + case 26: // LESS + return "\x05\x4b\x70\x45\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x70\x45\x52"; + case 28: // GREATER + return "\x05\x4b\x70\x45\x42\x75"; + case 29: // AT + return "\x05\x4b\x70\x45\x42\x76"; + case 30: // A + return "\x04\x4b\x70\x45\x53"; + case 31: // B + return "\x04\x4b\x70\x45\x54"; + case 32: // C + return "\x04\x4b\x70\x45\x55"; + case 33: // D + return "\x04\x4b\x70\x45\x56"; + case 34: // E + return "\x04\x4b\x70\x45\x57"; + case 35: // F + return "\x04\x4b\x70\x45\x58"; + case 36: // G + return "\x04\x4b\x70\x45\x59"; + case 37: // H + return "\x04\x4b\x70\x45\x5a"; + case 38: // I + return "\x04\x4b\x70\x45\x61"; + case 39: // J + return "\x04\x4b\x70\x45\x62"; + case 40: // K + return "\x04\x4b\x70\x45\x63"; + case 41: // L + return "\x04\x4b\x70\x45\x64"; + case 42: // M + return "\x04\x4b\x70\x45\x65"; + case 43: // N + return "\x04\x4b\x70\x45\x66"; + case 44: // O + return "\x04\x4b\x70\x45\x67"; + case 45: // P + return "\x04\x4b\x70\x45\x68"; + case 46: // Q + return "\x04\x4b\x70\x45\x69"; + case 47: // R + return "\x04\x4b\x70\x45\x6a"; + case 48: // S + return "\x04\x4b\x70\x45\x6b"; + case 49: // T + return "\x04\x4b\x70\x45\x6c"; + case 50: // U + return "\x04\x4b\x70\x45\x6d"; + case 51: // V + return "\x04\x4b\x70\x45\x6e"; + case 52: // W + return "\x04\x4b\x70\x45\x6f"; + case 53: // X + return "\x04\x4b\x70\x45\x70"; + case 54: // Y + return "\x04\x4b\x70\x45\x71"; + case 55: // Z + return "\x04\x4b\x70\x45\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x70\x45\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x70\x45\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x70\x45\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x70\x45\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x70\x45\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x70\x45\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x70\x45\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x70\x45\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x70\x45\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x70\x45\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x70\x45\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x70\x45\x42\x30"; + case 68: // AE + return "\x05\x4b\x70\x45\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x70\x45\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x70\x45\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x70\x45\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x70\x45\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x70\x45\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x70\x45\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x70\x45\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x70\x45\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x70\x45\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x70\x45\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x70\x45\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x70\x45\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x70\x45\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x70\x45\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x70\x45\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x70\x45\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x70\x45\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x70\x45\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x70\x45\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x70\x45\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x70\x45\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x70\x45\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x70\x45\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x70\x45\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x70\x45\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x70\x45\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x70\x45\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x70\x45\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x70\x45\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x70\x45\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x70\x45\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x70\x45\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x70\x45\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x70\x45\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x70\x45\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x70\x45\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x70\x45\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x70\x45\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x70\x45\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x70\x45\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x70\x45\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x70\x45\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x70\x45\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x70\x45\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x70\x45\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x70\x45\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x70\x45\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x70\x45\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x70\x45\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x70\x45\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x70\x45\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x70\x45\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x70\x45\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x70\x45\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x70\x45\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x70\x45\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x70\x45\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x70\x45\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x70\x45\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x70\x45\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x70\x45\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x70\x45\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x70\x45\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x70\x45\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x70\x45\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x70\x45\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x70\x45\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x70\x45\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x70\x45\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x70\x45\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x70\x45\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x70\x45\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x70\x45\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x70\x45\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x70\x45\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x70\x45\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x70\x45\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x70\x45\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x70\x45\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x70\x45\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x70\x45\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x70\x45\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x70\x45\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x70\x45\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x70\x45\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x70\x45\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x70\x45\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x70\x45\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x70\x45\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x70\x45\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x70\x45\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x70\x45\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x70\x45\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x70\x45\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x70\x45\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x70\x45\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x70\x45\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x70\x45\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x70\x45\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x70\x45\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x70\x45\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x70\x45\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x70\x45\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x70\x45\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x70\x45\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x70\x45\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x70\x45\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x70\x45\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x70\x45\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x70\x45\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x70\x45\x42\x68"; } // end switch(key) case 0x3: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x70\x46\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x70\x46\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x70\x46\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x70\x46\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x70\x46\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x70\x46\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x70\x46\x42"; - case 2: // COMMA - return "\x04\x4b\x70\x46\x43"; - case 3: // MINUS - return "\x04\x4b\x70\x46\x44"; - case 4: // PERIOD - return "\x04\x4b\x70\x46\x45"; - case 5: // SLASH - return "\x04\x4b\x70\x46\x46"; - case 6: // 0 - return "\x04\x4b\x70\x46\x47"; - case 7: // 1 - return "\x04\x4b\x70\x46\x48"; - case 8: // 2 - return "\x04\x4b\x70\x46\x49"; - case 9: // 3 - return "\x04\x4b\x70\x46\x4a"; - case 10: // 4 - return "\x04\x4b\x70\x46\x4b"; - case 11: // 5 - return "\x04\x4b\x70\x46\x4c"; - case 12: // 6 - return "\x04\x4b\x70\x46\x4d"; - case 13: // 7 - return "\x04\x4b\x70\x46\x4e"; - case 14: // 8 - return "\x04\x4b\x70\x46\x4f"; - case 15: // 9 - return "\x04\x4b\x70\x46\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x70\x46\x51"; - case 17: // EQUAL - return "\x04\x4b\x70\x46\x52"; - case 18: // A - return "\x04\x4b\x70\x46\x53"; - case 19: // B - return "\x04\x4b\x70\x46\x54"; - case 20: // C - return "\x04\x4b\x70\x46\x55"; - case 21: // D - return "\x04\x4b\x70\x46\x56"; - case 22: // E - return "\x04\x4b\x70\x46\x57"; - case 23: // F - return "\x04\x4b\x70\x46\x58"; - case 24: // G - return "\x04\x4b\x70\x46\x59"; - case 25: // H - return "\x04\x4b\x70\x46\x5a"; - case 26: // I - return "\x04\x4b\x70\x46\x61"; - case 27: // J - return "\x04\x4b\x70\x46\x62"; - case 28: // K - return "\x04\x4b\x70\x46\x63"; - case 29: // L - return "\x04\x4b\x70\x46\x64"; - case 30: // M - return "\x04\x4b\x70\x46\x65"; - case 31: // N - return "\x04\x4b\x70\x46\x66"; - case 32: // O - return "\x04\x4b\x70\x46\x67"; - case 33: // P - return "\x04\x4b\x70\x46\x68"; - case 34: // Q - return "\x04\x4b\x70\x46\x69"; - case 35: // R - return "\x04\x4b\x70\x46\x6a"; - case 36: // S - return "\x04\x4b\x70\x46\x6b"; - case 37: // T - return "\x04\x4b\x70\x46\x6c"; - case 38: // U - return "\x04\x4b\x70\x46\x6d"; - case 39: // V - return "\x04\x4b\x70\x46\x6e"; - case 40: // W - return "\x04\x4b\x70\x46\x6f"; - case 41: // X - return "\x04\x4b\x70\x46\x70"; - case 42: // Y - return "\x04\x4b\x70\x46\x71"; - case 43: // Z - return "\x04\x4b\x70\x46\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x70\x46\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x70\x46\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x70\x46\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x70\x46\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x70\x46\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x70\x46\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x70\x46\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x70\x46\x42\x72"; + case 9: // PLUS return "\x05\x4b\x70\x46\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x70\x46\x43"; + case 11: // MINUS + return "\x04\x4b\x70\x46\x44"; + case 12: // PERIOD + return "\x04\x4b\x70\x46\x45"; + case 13: // SLASH + return "\x04\x4b\x70\x46\x46"; + case 14: // 0 + return "\x04\x4b\x70\x46\x47"; + case 15: // 1 + return "\x04\x4b\x70\x46\x48"; + case 16: // 2 + return "\x04\x4b\x70\x46\x49"; + case 17: // 3 + return "\x04\x4b\x70\x46\x4a"; + case 18: // 4 + return "\x04\x4b\x70\x46\x4b"; + case 19: // 5 + return "\x04\x4b\x70\x46\x4c"; + case 20: // 6 + return "\x04\x4b\x70\x46\x4d"; + case 21: // 7 + return "\x04\x4b\x70\x46\x4e"; + case 22: // 8 + return "\x04\x4b\x70\x46\x4f"; + case 23: // 9 + return "\x04\x4b\x70\x46\x50"; + case 24: // COLON + return "\x05\x4b\x70\x46\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x70\x46\x51"; + case 26: // LESS + return "\x05\x4b\x70\x46\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x70\x46\x52"; + case 28: // GREATER + return "\x05\x4b\x70\x46\x42\x75"; + case 29: // AT + return "\x05\x4b\x70\x46\x42\x76"; + case 30: // A + return "\x04\x4b\x70\x46\x53"; + case 31: // B + return "\x04\x4b\x70\x46\x54"; + case 32: // C + return "\x04\x4b\x70\x46\x55"; + case 33: // D + return "\x04\x4b\x70\x46\x56"; + case 34: // E + return "\x04\x4b\x70\x46\x57"; + case 35: // F + return "\x04\x4b\x70\x46\x58"; + case 36: // G + return "\x04\x4b\x70\x46\x59"; + case 37: // H + return "\x04\x4b\x70\x46\x5a"; + case 38: // I + return "\x04\x4b\x70\x46\x61"; + case 39: // J + return "\x04\x4b\x70\x46\x62"; + case 40: // K + return "\x04\x4b\x70\x46\x63"; + case 41: // L + return "\x04\x4b\x70\x46\x64"; + case 42: // M + return "\x04\x4b\x70\x46\x65"; + case 43: // N + return "\x04\x4b\x70\x46\x66"; + case 44: // O + return "\x04\x4b\x70\x46\x67"; + case 45: // P + return "\x04\x4b\x70\x46\x68"; + case 46: // Q + return "\x04\x4b\x70\x46\x69"; + case 47: // R + return "\x04\x4b\x70\x46\x6a"; + case 48: // S + return "\x04\x4b\x70\x46\x6b"; + case 49: // T + return "\x04\x4b\x70\x46\x6c"; + case 50: // U + return "\x04\x4b\x70\x46\x6d"; + case 51: // V + return "\x04\x4b\x70\x46\x6e"; + case 52: // W + return "\x04\x4b\x70\x46\x6f"; + case 53: // X + return "\x04\x4b\x70\x46\x70"; + case 54: // Y + return "\x04\x4b\x70\x46\x71"; + case 55: // Z + return "\x04\x4b\x70\x46\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x70\x46\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x70\x46\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x70\x46\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x70\x46\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x70\x46\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x70\x46\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x70\x46\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x70\x46\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x70\x46\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x70\x46\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x70\x46\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x70\x46\x42\x30"; + case 68: // AE + return "\x05\x4b\x70\x46\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x70\x46\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x70\x46\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x70\x46\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x70\x46\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x70\x46\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x70\x46\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x70\x46\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x70\x46\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x70\x46\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x70\x46\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x70\x46\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x70\x46\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x70\x46\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x70\x46\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x70\x46\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x70\x46\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x70\x46\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x70\x46\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x70\x46\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x70\x46\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x70\x46\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x70\x46\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x70\x46\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x70\x46\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x70\x46\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x70\x46\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x70\x46\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x70\x46\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x70\x46\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x70\x46\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x70\x46\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x70\x46\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x70\x46\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x70\x46\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x70\x46\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x70\x46\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x70\x46\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x70\x46\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x70\x46\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x70\x46\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x70\x46\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x70\x46\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x70\x46\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x70\x46\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x70\x46\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x70\x46\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x70\x46\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x70\x46\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x70\x46\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x70\x46\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x70\x46\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x70\x46\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x70\x46\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x70\x46\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x70\x46\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x70\x46\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x70\x46\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x70\x46\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x70\x46\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x70\x46\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x70\x46\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x70\x46\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x70\x46\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x70\x46\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x70\x46\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x70\x46\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x70\x46\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x70\x46\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x70\x46\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x70\x46\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x70\x46\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x70\x46\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x70\x46\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x70\x46\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x70\x46\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x70\x46\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x70\x46\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x70\x46\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x70\x46\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x70\x46\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x70\x46\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x70\x46\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x70\x46\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x70\x46\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x70\x46\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x70\x46\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x70\x46\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x70\x46\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x70\x46\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x70\x46\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x70\x46\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x70\x46\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x70\x46\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x70\x46\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x70\x46\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x70\x46\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x70\x46\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x70\x46\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x70\x46\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x70\x46\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x70\x46\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x70\x46\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x70\x46\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x70\x46\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x70\x46\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x70\x46\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x70\x46\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x70\x46\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x70\x46\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x70\x46\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x70\x46\x42\x68"; } // end switch(key) case 0x4: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x70\x43\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x70\x43\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x70\x43\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x70\x43\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x70\x43\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x70\x43\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x70\x43\x42"; - case 2: // COMMA - return "\x04\x4b\x70\x43\x43"; - case 3: // MINUS - return "\x04\x4b\x70\x43\x44"; - case 4: // PERIOD - return "\x04\x4b\x70\x43\x45"; - case 5: // SLASH - return "\x04\x4b\x70\x43\x46"; - case 6: // 0 - return "\x04\x4b\x70\x43\x47"; - case 7: // 1 - return "\x04\x4b\x70\x43\x48"; - case 8: // 2 - return "\x04\x4b\x70\x43\x49"; - case 9: // 3 - return "\x04\x4b\x70\x43\x4a"; - case 10: // 4 - return "\x04\x4b\x70\x43\x4b"; - case 11: // 5 - return "\x04\x4b\x70\x43\x4c"; - case 12: // 6 - return "\x04\x4b\x70\x43\x4d"; - case 13: // 7 - return "\x04\x4b\x70\x43\x4e"; - case 14: // 8 - return "\x04\x4b\x70\x43\x4f"; - case 15: // 9 - return "\x04\x4b\x70\x43\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x70\x43\x51"; - case 17: // EQUAL - return "\x04\x4b\x70\x43\x52"; - case 18: // A - return "\x04\x4b\x70\x43\x53"; - case 19: // B - return "\x04\x4b\x70\x43\x54"; - case 20: // C - return "\x04\x4b\x70\x43\x55"; - case 21: // D - return "\x04\x4b\x70\x43\x56"; - case 22: // E - return "\x04\x4b\x70\x43\x57"; - case 23: // F - return "\x04\x4b\x70\x43\x58"; - case 24: // G - return "\x04\x4b\x70\x43\x59"; - case 25: // H - return "\x04\x4b\x70\x43\x5a"; - case 26: // I - return "\x04\x4b\x70\x43\x61"; - case 27: // J - return "\x04\x4b\x70\x43\x62"; - case 28: // K - return "\x04\x4b\x70\x43\x63"; - case 29: // L - return "\x04\x4b\x70\x43\x64"; - case 30: // M - return "\x04\x4b\x70\x43\x65"; - case 31: // N - return "\x04\x4b\x70\x43\x66"; - case 32: // O - return "\x04\x4b\x70\x43\x67"; - case 33: // P - return "\x04\x4b\x70\x43\x68"; - case 34: // Q - return "\x04\x4b\x70\x43\x69"; - case 35: // R - return "\x04\x4b\x70\x43\x6a"; - case 36: // S - return "\x04\x4b\x70\x43\x6b"; - case 37: // T - return "\x04\x4b\x70\x43\x6c"; - case 38: // U - return "\x04\x4b\x70\x43\x6d"; - case 39: // V - return "\x04\x4b\x70\x43\x6e"; - case 40: // W - return "\x04\x4b\x70\x43\x6f"; - case 41: // X - return "\x04\x4b\x70\x43\x70"; - case 42: // Y - return "\x04\x4b\x70\x43\x71"; - case 43: // Z - return "\x04\x4b\x70\x43\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x70\x43\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x70\x43\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x70\x43\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x70\x43\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x70\x43\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x70\x43\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x70\x43\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x70\x43\x42\x72"; + case 9: // PLUS return "\x05\x4b\x70\x43\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x70\x43\x43"; + case 11: // MINUS + return "\x04\x4b\x70\x43\x44"; + case 12: // PERIOD + return "\x04\x4b\x70\x43\x45"; + case 13: // SLASH + return "\x04\x4b\x70\x43\x46"; + case 14: // 0 + return "\x04\x4b\x70\x43\x47"; + case 15: // 1 + return "\x04\x4b\x70\x43\x48"; + case 16: // 2 + return "\x04\x4b\x70\x43\x49"; + case 17: // 3 + return "\x04\x4b\x70\x43\x4a"; + case 18: // 4 + return "\x04\x4b\x70\x43\x4b"; + case 19: // 5 + return "\x04\x4b\x70\x43\x4c"; + case 20: // 6 + return "\x04\x4b\x70\x43\x4d"; + case 21: // 7 + return "\x04\x4b\x70\x43\x4e"; + case 22: // 8 + return "\x04\x4b\x70\x43\x4f"; + case 23: // 9 + return "\x04\x4b\x70\x43\x50"; + case 24: // COLON + return "\x05\x4b\x70\x43\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x70\x43\x51"; + case 26: // LESS + return "\x05\x4b\x70\x43\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x70\x43\x52"; + case 28: // GREATER + return "\x05\x4b\x70\x43\x42\x75"; + case 29: // AT + return "\x05\x4b\x70\x43\x42\x76"; + case 30: // A + return "\x04\x4b\x70\x43\x53"; + case 31: // B + return "\x04\x4b\x70\x43\x54"; + case 32: // C + return "\x04\x4b\x70\x43\x55"; + case 33: // D + return "\x04\x4b\x70\x43\x56"; + case 34: // E + return "\x04\x4b\x70\x43\x57"; + case 35: // F + return "\x04\x4b\x70\x43\x58"; + case 36: // G + return "\x04\x4b\x70\x43\x59"; + case 37: // H + return "\x04\x4b\x70\x43\x5a"; + case 38: // I + return "\x04\x4b\x70\x43\x61"; + case 39: // J + return "\x04\x4b\x70\x43\x62"; + case 40: // K + return "\x04\x4b\x70\x43\x63"; + case 41: // L + return "\x04\x4b\x70\x43\x64"; + case 42: // M + return "\x04\x4b\x70\x43\x65"; + case 43: // N + return "\x04\x4b\x70\x43\x66"; + case 44: // O + return "\x04\x4b\x70\x43\x67"; + case 45: // P + return "\x04\x4b\x70\x43\x68"; + case 46: // Q + return "\x04\x4b\x70\x43\x69"; + case 47: // R + return "\x04\x4b\x70\x43\x6a"; + case 48: // S + return "\x04\x4b\x70\x43\x6b"; + case 49: // T + return "\x04\x4b\x70\x43\x6c"; + case 50: // U + return "\x04\x4b\x70\x43\x6d"; + case 51: // V + return "\x04\x4b\x70\x43\x6e"; + case 52: // W + return "\x04\x4b\x70\x43\x6f"; + case 53: // X + return "\x04\x4b\x70\x43\x70"; + case 54: // Y + return "\x04\x4b\x70\x43\x71"; + case 55: // Z + return "\x04\x4b\x70\x43\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x70\x43\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x70\x43\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x70\x43\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x70\x43\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x70\x43\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x70\x43\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x70\x43\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x70\x43\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x70\x43\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x70\x43\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x70\x43\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x70\x43\x42\x30"; + case 68: // AE + return "\x05\x4b\x70\x43\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x70\x43\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x70\x43\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x70\x43\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x70\x43\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x70\x43\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x70\x43\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x70\x43\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x70\x43\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x70\x43\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x70\x43\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x70\x43\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x70\x43\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x70\x43\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x70\x43\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x70\x43\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x70\x43\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x70\x43\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x70\x43\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x70\x43\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x70\x43\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x70\x43\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x70\x43\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x70\x43\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x70\x43\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x70\x43\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x70\x43\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x70\x43\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x70\x43\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x70\x43\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x70\x43\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x70\x43\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x70\x43\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x70\x43\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x70\x43\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x70\x43\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x70\x43\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x70\x43\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x70\x43\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x70\x43\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x70\x43\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x70\x43\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x70\x43\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x70\x43\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x70\x43\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x70\x43\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x70\x43\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x70\x43\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x70\x43\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x70\x43\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x70\x43\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x70\x43\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x70\x43\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x70\x43\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x70\x43\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x70\x43\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x70\x43\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x70\x43\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x70\x43\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x70\x43\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x70\x43\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x70\x43\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x70\x43\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x70\x43\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x70\x43\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x70\x43\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x70\x43\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x70\x43\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x70\x43\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x70\x43\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x70\x43\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x70\x43\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x70\x43\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x70\x43\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x70\x43\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x70\x43\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x70\x43\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x70\x43\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x70\x43\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x70\x43\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x70\x43\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x70\x43\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x70\x43\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x70\x43\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x70\x43\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x70\x43\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x70\x43\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x70\x43\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x70\x43\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x70\x43\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x70\x43\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x70\x43\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x70\x43\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x70\x43\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x70\x43\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x70\x43\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x70\x43\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x70\x43\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x70\x43\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x70\x43\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x70\x43\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x70\x43\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x70\x43\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x70\x43\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x70\x43\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x70\x43\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x70\x43\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x70\x43\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x70\x43\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x70\x43\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x70\x43\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x70\x43\x42\x68"; } // end switch(key) case 0x5: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x70\x44\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x70\x44\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x70\x44\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x70\x44\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x70\x44\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x70\x44\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x70\x44\x42"; - case 2: // COMMA - return "\x04\x4b\x70\x44\x43"; - case 3: // MINUS - return "\x04\x4b\x70\x44\x44"; - case 4: // PERIOD - return "\x04\x4b\x70\x44\x45"; - case 5: // SLASH - return "\x04\x4b\x70\x44\x46"; - case 6: // 0 - return "\x04\x4b\x70\x44\x47"; - case 7: // 1 - return "\x04\x4b\x70\x44\x48"; - case 8: // 2 - return "\x04\x4b\x70\x44\x49"; - case 9: // 3 - return "\x04\x4b\x70\x44\x4a"; - case 10: // 4 - return "\x04\x4b\x70\x44\x4b"; - case 11: // 5 - return "\x04\x4b\x70\x44\x4c"; - case 12: // 6 - return "\x04\x4b\x70\x44\x4d"; - case 13: // 7 - return "\x04\x4b\x70\x44\x4e"; - case 14: // 8 - return "\x04\x4b\x70\x44\x4f"; - case 15: // 9 - return "\x04\x4b\x70\x44\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x70\x44\x51"; - case 17: // EQUAL - return "\x04\x4b\x70\x44\x52"; - case 18: // A - return "\x04\x4b\x70\x44\x53"; - case 19: // B - return "\x04\x4b\x70\x44\x54"; - case 20: // C - return "\x04\x4b\x70\x44\x55"; - case 21: // D - return "\x04\x4b\x70\x44\x56"; - case 22: // E - return "\x04\x4b\x70\x44\x57"; - case 23: // F - return "\x04\x4b\x70\x44\x58"; - case 24: // G - return "\x04\x4b\x70\x44\x59"; - case 25: // H - return "\x04\x4b\x70\x44\x5a"; - case 26: // I - return "\x04\x4b\x70\x44\x61"; - case 27: // J - return "\x04\x4b\x70\x44\x62"; - case 28: // K - return "\x04\x4b\x70\x44\x63"; - case 29: // L - return "\x04\x4b\x70\x44\x64"; - case 30: // M - return "\x04\x4b\x70\x44\x65"; - case 31: // N - return "\x04\x4b\x70\x44\x66"; - case 32: // O - return "\x04\x4b\x70\x44\x67"; - case 33: // P - return "\x04\x4b\x70\x44\x68"; - case 34: // Q - return "\x04\x4b\x70\x44\x69"; - case 35: // R - return "\x04\x4b\x70\x44\x6a"; - case 36: // S - return "\x04\x4b\x70\x44\x6b"; - case 37: // T - return "\x04\x4b\x70\x44\x6c"; - case 38: // U - return "\x04\x4b\x70\x44\x6d"; - case 39: // V - return "\x04\x4b\x70\x44\x6e"; - case 40: // W - return "\x04\x4b\x70\x44\x6f"; - case 41: // X - return "\x04\x4b\x70\x44\x70"; - case 42: // Y - return "\x04\x4b\x70\x44\x71"; - case 43: // Z - return "\x04\x4b\x70\x44\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x70\x44\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x70\x44\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x70\x44\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x70\x44\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x70\x44\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x70\x44\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x70\x44\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x70\x44\x42\x72"; + case 9: // PLUS return "\x05\x4b\x70\x44\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x70\x44\x43"; + case 11: // MINUS + return "\x04\x4b\x70\x44\x44"; + case 12: // PERIOD + return "\x04\x4b\x70\x44\x45"; + case 13: // SLASH + return "\x04\x4b\x70\x44\x46"; + case 14: // 0 + return "\x04\x4b\x70\x44\x47"; + case 15: // 1 + return "\x04\x4b\x70\x44\x48"; + case 16: // 2 + return "\x04\x4b\x70\x44\x49"; + case 17: // 3 + return "\x04\x4b\x70\x44\x4a"; + case 18: // 4 + return "\x04\x4b\x70\x44\x4b"; + case 19: // 5 + return "\x04\x4b\x70\x44\x4c"; + case 20: // 6 + return "\x04\x4b\x70\x44\x4d"; + case 21: // 7 + return "\x04\x4b\x70\x44\x4e"; + case 22: // 8 + return "\x04\x4b\x70\x44\x4f"; + case 23: // 9 + return "\x04\x4b\x70\x44\x50"; + case 24: // COLON + return "\x05\x4b\x70\x44\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x70\x44\x51"; + case 26: // LESS + return "\x05\x4b\x70\x44\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x70\x44\x52"; + case 28: // GREATER + return "\x05\x4b\x70\x44\x42\x75"; + case 29: // AT + return "\x05\x4b\x70\x44\x42\x76"; + case 30: // A + return "\x04\x4b\x70\x44\x53"; + case 31: // B + return "\x04\x4b\x70\x44\x54"; + case 32: // C + return "\x04\x4b\x70\x44\x55"; + case 33: // D + return "\x04\x4b\x70\x44\x56"; + case 34: // E + return "\x04\x4b\x70\x44\x57"; + case 35: // F + return "\x04\x4b\x70\x44\x58"; + case 36: // G + return "\x04\x4b\x70\x44\x59"; + case 37: // H + return "\x04\x4b\x70\x44\x5a"; + case 38: // I + return "\x04\x4b\x70\x44\x61"; + case 39: // J + return "\x04\x4b\x70\x44\x62"; + case 40: // K + return "\x04\x4b\x70\x44\x63"; + case 41: // L + return "\x04\x4b\x70\x44\x64"; + case 42: // M + return "\x04\x4b\x70\x44\x65"; + case 43: // N + return "\x04\x4b\x70\x44\x66"; + case 44: // O + return "\x04\x4b\x70\x44\x67"; + case 45: // P + return "\x04\x4b\x70\x44\x68"; + case 46: // Q + return "\x04\x4b\x70\x44\x69"; + case 47: // R + return "\x04\x4b\x70\x44\x6a"; + case 48: // S + return "\x04\x4b\x70\x44\x6b"; + case 49: // T + return "\x04\x4b\x70\x44\x6c"; + case 50: // U + return "\x04\x4b\x70\x44\x6d"; + case 51: // V + return "\x04\x4b\x70\x44\x6e"; + case 52: // W + return "\x04\x4b\x70\x44\x6f"; + case 53: // X + return "\x04\x4b\x70\x44\x70"; + case 54: // Y + return "\x04\x4b\x70\x44\x71"; + case 55: // Z + return "\x04\x4b\x70\x44\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x70\x44\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x70\x44\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x70\x44\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x70\x44\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x70\x44\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x70\x44\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x70\x44\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x70\x44\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x70\x44\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x70\x44\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x70\x44\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x70\x44\x42\x30"; + case 68: // AE + return "\x05\x4b\x70\x44\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x70\x44\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x70\x44\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x70\x44\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x70\x44\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x70\x44\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x70\x44\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x70\x44\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x70\x44\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x70\x44\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x70\x44\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x70\x44\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x70\x44\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x70\x44\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x70\x44\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x70\x44\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x70\x44\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x70\x44\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x70\x44\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x70\x44\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x70\x44\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x70\x44\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x70\x44\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x70\x44\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x70\x44\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x70\x44\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x70\x44\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x70\x44\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x70\x44\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x70\x44\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x70\x44\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x70\x44\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x70\x44\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x70\x44\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x70\x44\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x70\x44\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x70\x44\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x70\x44\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x70\x44\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x70\x44\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x70\x44\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x70\x44\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x70\x44\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x70\x44\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x70\x44\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x70\x44\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x70\x44\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x70\x44\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x70\x44\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x70\x44\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x70\x44\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x70\x44\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x70\x44\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x70\x44\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x70\x44\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x70\x44\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x70\x44\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x70\x44\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x70\x44\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x70\x44\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x70\x44\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x70\x44\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x70\x44\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x70\x44\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x70\x44\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x70\x44\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x70\x44\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x70\x44\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x70\x44\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x70\x44\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x70\x44\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x70\x44\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x70\x44\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x70\x44\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x70\x44\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x70\x44\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x70\x44\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x70\x44\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x70\x44\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x70\x44\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x70\x44\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x70\x44\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x70\x44\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x70\x44\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x70\x44\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x70\x44\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x70\x44\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x70\x44\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x70\x44\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x70\x44\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x70\x44\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x70\x44\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x70\x44\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x70\x44\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x70\x44\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x70\x44\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x70\x44\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x70\x44\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x70\x44\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x70\x44\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x70\x44\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x70\x44\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x70\x44\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x70\x44\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x70\x44\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x70\x44\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x70\x44\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x70\x44\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x70\x44\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x70\x44\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x70\x44\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x70\x44\x42\x68"; } // end switch(key) case 0x6: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x70\x47\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x70\x47\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x70\x47\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x70\x47\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x70\x47\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x70\x47\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x70\x47\x42"; - case 2: // COMMA - return "\x04\x4b\x70\x47\x43"; - case 3: // MINUS - return "\x04\x4b\x70\x47\x44"; - case 4: // PERIOD - return "\x04\x4b\x70\x47\x45"; - case 5: // SLASH - return "\x04\x4b\x70\x47\x46"; - case 6: // 0 - return "\x04\x4b\x70\x47\x47"; - case 7: // 1 - return "\x04\x4b\x70\x47\x48"; - case 8: // 2 - return "\x04\x4b\x70\x47\x49"; - case 9: // 3 - return "\x04\x4b\x70\x47\x4a"; - case 10: // 4 - return "\x04\x4b\x70\x47\x4b"; - case 11: // 5 - return "\x04\x4b\x70\x47\x4c"; - case 12: // 6 - return "\x04\x4b\x70\x47\x4d"; - case 13: // 7 - return "\x04\x4b\x70\x47\x4e"; - case 14: // 8 - return "\x04\x4b\x70\x47\x4f"; - case 15: // 9 - return "\x04\x4b\x70\x47\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x70\x47\x51"; - case 17: // EQUAL - return "\x04\x4b\x70\x47\x52"; - case 18: // A - return "\x04\x4b\x70\x47\x53"; - case 19: // B - return "\x04\x4b\x70\x47\x54"; - case 20: // C - return "\x04\x4b\x70\x47\x55"; - case 21: // D - return "\x04\x4b\x70\x47\x56"; - case 22: // E - return "\x04\x4b\x70\x47\x57"; - case 23: // F - return "\x04\x4b\x70\x47\x58"; - case 24: // G - return "\x04\x4b\x70\x47\x59"; - case 25: // H - return "\x04\x4b\x70\x47\x5a"; - case 26: // I - return "\x04\x4b\x70\x47\x61"; - case 27: // J - return "\x04\x4b\x70\x47\x62"; - case 28: // K - return "\x04\x4b\x70\x47\x63"; - case 29: // L - return "\x04\x4b\x70\x47\x64"; - case 30: // M - return "\x04\x4b\x70\x47\x65"; - case 31: // N - return "\x04\x4b\x70\x47\x66"; - case 32: // O - return "\x04\x4b\x70\x47\x67"; - case 33: // P - return "\x04\x4b\x70\x47\x68"; - case 34: // Q - return "\x04\x4b\x70\x47\x69"; - case 35: // R - return "\x04\x4b\x70\x47\x6a"; - case 36: // S - return "\x04\x4b\x70\x47\x6b"; - case 37: // T - return "\x04\x4b\x70\x47\x6c"; - case 38: // U - return "\x04\x4b\x70\x47\x6d"; - case 39: // V - return "\x04\x4b\x70\x47\x6e"; - case 40: // W - return "\x04\x4b\x70\x47\x6f"; - case 41: // X - return "\x04\x4b\x70\x47\x70"; - case 42: // Y - return "\x04\x4b\x70\x47\x71"; - case 43: // Z - return "\x04\x4b\x70\x47\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x70\x47\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x70\x47\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x70\x47\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x70\x47\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x70\x47\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x70\x47\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x70\x47\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x70\x47\x42\x72"; + case 9: // PLUS return "\x05\x4b\x70\x47\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x70\x47\x43"; + case 11: // MINUS + return "\x04\x4b\x70\x47\x44"; + case 12: // PERIOD + return "\x04\x4b\x70\x47\x45"; + case 13: // SLASH + return "\x04\x4b\x70\x47\x46"; + case 14: // 0 + return "\x04\x4b\x70\x47\x47"; + case 15: // 1 + return "\x04\x4b\x70\x47\x48"; + case 16: // 2 + return "\x04\x4b\x70\x47\x49"; + case 17: // 3 + return "\x04\x4b\x70\x47\x4a"; + case 18: // 4 + return "\x04\x4b\x70\x47\x4b"; + case 19: // 5 + return "\x04\x4b\x70\x47\x4c"; + case 20: // 6 + return "\x04\x4b\x70\x47\x4d"; + case 21: // 7 + return "\x04\x4b\x70\x47\x4e"; + case 22: // 8 + return "\x04\x4b\x70\x47\x4f"; + case 23: // 9 + return "\x04\x4b\x70\x47\x50"; + case 24: // COLON + return "\x05\x4b\x70\x47\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x70\x47\x51"; + case 26: // LESS + return "\x05\x4b\x70\x47\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x70\x47\x52"; + case 28: // GREATER + return "\x05\x4b\x70\x47\x42\x75"; + case 29: // AT + return "\x05\x4b\x70\x47\x42\x76"; + case 30: // A + return "\x04\x4b\x70\x47\x53"; + case 31: // B + return "\x04\x4b\x70\x47\x54"; + case 32: // C + return "\x04\x4b\x70\x47\x55"; + case 33: // D + return "\x04\x4b\x70\x47\x56"; + case 34: // E + return "\x04\x4b\x70\x47\x57"; + case 35: // F + return "\x04\x4b\x70\x47\x58"; + case 36: // G + return "\x04\x4b\x70\x47\x59"; + case 37: // H + return "\x04\x4b\x70\x47\x5a"; + case 38: // I + return "\x04\x4b\x70\x47\x61"; + case 39: // J + return "\x04\x4b\x70\x47\x62"; + case 40: // K + return "\x04\x4b\x70\x47\x63"; + case 41: // L + return "\x04\x4b\x70\x47\x64"; + case 42: // M + return "\x04\x4b\x70\x47\x65"; + case 43: // N + return "\x04\x4b\x70\x47\x66"; + case 44: // O + return "\x04\x4b\x70\x47\x67"; + case 45: // P + return "\x04\x4b\x70\x47\x68"; + case 46: // Q + return "\x04\x4b\x70\x47\x69"; + case 47: // R + return "\x04\x4b\x70\x47\x6a"; + case 48: // S + return "\x04\x4b\x70\x47\x6b"; + case 49: // T + return "\x04\x4b\x70\x47\x6c"; + case 50: // U + return "\x04\x4b\x70\x47\x6d"; + case 51: // V + return "\x04\x4b\x70\x47\x6e"; + case 52: // W + return "\x04\x4b\x70\x47\x6f"; + case 53: // X + return "\x04\x4b\x70\x47\x70"; + case 54: // Y + return "\x04\x4b\x70\x47\x71"; + case 55: // Z + return "\x04\x4b\x70\x47\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x70\x47\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x70\x47\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x70\x47\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x70\x47\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x70\x47\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x70\x47\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x70\x47\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x70\x47\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x70\x47\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x70\x47\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x70\x47\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x70\x47\x42\x30"; + case 68: // AE + return "\x05\x4b\x70\x47\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x70\x47\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x70\x47\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x70\x47\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x70\x47\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x70\x47\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x70\x47\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x70\x47\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x70\x47\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x70\x47\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x70\x47\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x70\x47\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x70\x47\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x70\x47\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x70\x47\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x70\x47\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x70\x47\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x70\x47\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x70\x47\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x70\x47\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x70\x47\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x70\x47\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x70\x47\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x70\x47\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x70\x47\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x70\x47\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x70\x47\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x70\x47\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x70\x47\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x70\x47\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x70\x47\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x70\x47\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x70\x47\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x70\x47\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x70\x47\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x70\x47\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x70\x47\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x70\x47\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x70\x47\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x70\x47\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x70\x47\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x70\x47\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x70\x47\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x70\x47\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x70\x47\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x70\x47\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x70\x47\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x70\x47\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x70\x47\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x70\x47\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x70\x47\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x70\x47\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x70\x47\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x70\x47\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x70\x47\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x70\x47\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x70\x47\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x70\x47\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x70\x47\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x70\x47\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x70\x47\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x70\x47\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x70\x47\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x70\x47\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x70\x47\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x70\x47\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x70\x47\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x70\x47\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x70\x47\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x70\x47\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x70\x47\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x70\x47\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x70\x47\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x70\x47\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x70\x47\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x70\x47\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x70\x47\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x70\x47\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x70\x47\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x70\x47\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x70\x47\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x70\x47\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x70\x47\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x70\x47\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x70\x47\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x70\x47\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x70\x47\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x70\x47\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x70\x47\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x70\x47\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x70\x47\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x70\x47\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x70\x47\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x70\x47\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x70\x47\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x70\x47\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x70\x47\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x70\x47\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x70\x47\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x70\x47\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x70\x47\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x70\x47\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x70\x47\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x70\x47\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x70\x47\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x70\x47\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x70\x47\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x70\x47\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x70\x47\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x70\x47\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x70\x47\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x70\x47\x42\x68"; } // end switch(key) case 0x7: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x70\x48\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x70\x48\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x70\x48\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x70\x48\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x70\x48\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x70\x48\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x70\x48\x42"; - case 2: // COMMA - return "\x04\x4b\x70\x48\x43"; - case 3: // MINUS - return "\x04\x4b\x70\x48\x44"; - case 4: // PERIOD - return "\x04\x4b\x70\x48\x45"; - case 5: // SLASH - return "\x04\x4b\x70\x48\x46"; - case 6: // 0 - return "\x04\x4b\x70\x48\x47"; - case 7: // 1 - return "\x04\x4b\x70\x48\x48"; - case 8: // 2 - return "\x04\x4b\x70\x48\x49"; - case 9: // 3 - return "\x04\x4b\x70\x48\x4a"; - case 10: // 4 - return "\x04\x4b\x70\x48\x4b"; - case 11: // 5 - return "\x04\x4b\x70\x48\x4c"; - case 12: // 6 - return "\x04\x4b\x70\x48\x4d"; - case 13: // 7 - return "\x04\x4b\x70\x48\x4e"; - case 14: // 8 - return "\x04\x4b\x70\x48\x4f"; - case 15: // 9 - return "\x04\x4b\x70\x48\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x70\x48\x51"; - case 17: // EQUAL - return "\x04\x4b\x70\x48\x52"; - case 18: // A - return "\x04\x4b\x70\x48\x53"; - case 19: // B - return "\x04\x4b\x70\x48\x54"; - case 20: // C - return "\x04\x4b\x70\x48\x55"; - case 21: // D - return "\x04\x4b\x70\x48\x56"; - case 22: // E - return "\x04\x4b\x70\x48\x57"; - case 23: // F - return "\x04\x4b\x70\x48\x58"; - case 24: // G - return "\x04\x4b\x70\x48\x59"; - case 25: // H - return "\x04\x4b\x70\x48\x5a"; - case 26: // I - return "\x04\x4b\x70\x48\x61"; - case 27: // J - return "\x04\x4b\x70\x48\x62"; - case 28: // K - return "\x04\x4b\x70\x48\x63"; - case 29: // L - return "\x04\x4b\x70\x48\x64"; - case 30: // M - return "\x04\x4b\x70\x48\x65"; - case 31: // N - return "\x04\x4b\x70\x48\x66"; - case 32: // O - return "\x04\x4b\x70\x48\x67"; - case 33: // P - return "\x04\x4b\x70\x48\x68"; - case 34: // Q - return "\x04\x4b\x70\x48\x69"; - case 35: // R - return "\x04\x4b\x70\x48\x6a"; - case 36: // S - return "\x04\x4b\x70\x48\x6b"; - case 37: // T - return "\x04\x4b\x70\x48\x6c"; - case 38: // U - return "\x04\x4b\x70\x48\x6d"; - case 39: // V - return "\x04\x4b\x70\x48\x6e"; - case 40: // W - return "\x04\x4b\x70\x48\x6f"; - case 41: // X - return "\x04\x4b\x70\x48\x70"; - case 42: // Y - return "\x04\x4b\x70\x48\x71"; - case 43: // Z - return "\x04\x4b\x70\x48\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x70\x48\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x70\x48\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x70\x48\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x70\x48\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x70\x48\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x70\x48\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x70\x48\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x70\x48\x42\x72"; + case 9: // PLUS return "\x05\x4b\x70\x48\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x70\x48\x43"; + case 11: // MINUS + return "\x04\x4b\x70\x48\x44"; + case 12: // PERIOD + return "\x04\x4b\x70\x48\x45"; + case 13: // SLASH + return "\x04\x4b\x70\x48\x46"; + case 14: // 0 + return "\x04\x4b\x70\x48\x47"; + case 15: // 1 + return "\x04\x4b\x70\x48\x48"; + case 16: // 2 + return "\x04\x4b\x70\x48\x49"; + case 17: // 3 + return "\x04\x4b\x70\x48\x4a"; + case 18: // 4 + return "\x04\x4b\x70\x48\x4b"; + case 19: // 5 + return "\x04\x4b\x70\x48\x4c"; + case 20: // 6 + return "\x04\x4b\x70\x48\x4d"; + case 21: // 7 + return "\x04\x4b\x70\x48\x4e"; + case 22: // 8 + return "\x04\x4b\x70\x48\x4f"; + case 23: // 9 + return "\x04\x4b\x70\x48\x50"; + case 24: // COLON + return "\x05\x4b\x70\x48\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x70\x48\x51"; + case 26: // LESS + return "\x05\x4b\x70\x48\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x70\x48\x52"; + case 28: // GREATER + return "\x05\x4b\x70\x48\x42\x75"; + case 29: // AT + return "\x05\x4b\x70\x48\x42\x76"; + case 30: // A + return "\x04\x4b\x70\x48\x53"; + case 31: // B + return "\x04\x4b\x70\x48\x54"; + case 32: // C + return "\x04\x4b\x70\x48\x55"; + case 33: // D + return "\x04\x4b\x70\x48\x56"; + case 34: // E + return "\x04\x4b\x70\x48\x57"; + case 35: // F + return "\x04\x4b\x70\x48\x58"; + case 36: // G + return "\x04\x4b\x70\x48\x59"; + case 37: // H + return "\x04\x4b\x70\x48\x5a"; + case 38: // I + return "\x04\x4b\x70\x48\x61"; + case 39: // J + return "\x04\x4b\x70\x48\x62"; + case 40: // K + return "\x04\x4b\x70\x48\x63"; + case 41: // L + return "\x04\x4b\x70\x48\x64"; + case 42: // M + return "\x04\x4b\x70\x48\x65"; + case 43: // N + return "\x04\x4b\x70\x48\x66"; + case 44: // O + return "\x04\x4b\x70\x48\x67"; + case 45: // P + return "\x04\x4b\x70\x48\x68"; + case 46: // Q + return "\x04\x4b\x70\x48\x69"; + case 47: // R + return "\x04\x4b\x70\x48\x6a"; + case 48: // S + return "\x04\x4b\x70\x48\x6b"; + case 49: // T + return "\x04\x4b\x70\x48\x6c"; + case 50: // U + return "\x04\x4b\x70\x48\x6d"; + case 51: // V + return "\x04\x4b\x70\x48\x6e"; + case 52: // W + return "\x04\x4b\x70\x48\x6f"; + case 53: // X + return "\x04\x4b\x70\x48\x70"; + case 54: // Y + return "\x04\x4b\x70\x48\x71"; + case 55: // Z + return "\x04\x4b\x70\x48\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x70\x48\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x70\x48\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x70\x48\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x70\x48\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x70\x48\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x70\x48\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x70\x48\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x70\x48\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x70\x48\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x70\x48\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x70\x48\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x70\x48\x42\x30"; + case 68: // AE + return "\x05\x4b\x70\x48\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x70\x48\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x70\x48\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x70\x48\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x70\x48\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x70\x48\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x70\x48\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x70\x48\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x70\x48\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x70\x48\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x70\x48\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x70\x48\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x70\x48\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x70\x48\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x70\x48\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x70\x48\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x70\x48\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x70\x48\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x70\x48\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x70\x48\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x70\x48\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x70\x48\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x70\x48\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x70\x48\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x70\x48\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x70\x48\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x70\x48\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x70\x48\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x70\x48\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x70\x48\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x70\x48\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x70\x48\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x70\x48\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x70\x48\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x70\x48\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x70\x48\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x70\x48\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x70\x48\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x70\x48\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x70\x48\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x70\x48\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x70\x48\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x70\x48\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x70\x48\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x70\x48\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x70\x48\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x70\x48\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x70\x48\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x70\x48\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x70\x48\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x70\x48\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x70\x48\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x70\x48\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x70\x48\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x70\x48\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x70\x48\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x70\x48\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x70\x48\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x70\x48\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x70\x48\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x70\x48\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x70\x48\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x70\x48\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x70\x48\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x70\x48\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x70\x48\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x70\x48\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x70\x48\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x70\x48\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x70\x48\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x70\x48\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x70\x48\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x70\x48\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x70\x48\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x70\x48\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x70\x48\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x70\x48\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x70\x48\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x70\x48\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x70\x48\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x70\x48\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x70\x48\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x70\x48\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x70\x48\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x70\x48\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x70\x48\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x70\x48\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x70\x48\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x70\x48\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x70\x48\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x70\x48\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x70\x48\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x70\x48\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x70\x48\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x70\x48\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x70\x48\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x70\x48\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x70\x48\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x70\x48\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x70\x48\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x70\x48\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x70\x48\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x70\x48\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x70\x48\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x70\x48\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x70\x48\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x70\x48\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x70\x48\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x70\x48\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x70\x48\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x70\x48\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x70\x48\x42\x68"; } // end switch(key) case 0x8: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x70\x49\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x70\x49\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x70\x49\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x70\x49\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x70\x49\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x70\x49\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x70\x49\x42"; - case 2: // COMMA - return "\x04\x4b\x70\x49\x43"; - case 3: // MINUS - return "\x04\x4b\x70\x49\x44"; - case 4: // PERIOD - return "\x04\x4b\x70\x49\x45"; - case 5: // SLASH - return "\x04\x4b\x70\x49\x46"; - case 6: // 0 - return "\x04\x4b\x70\x49\x47"; - case 7: // 1 - return "\x04\x4b\x70\x49\x48"; - case 8: // 2 - return "\x04\x4b\x70\x49\x49"; - case 9: // 3 - return "\x04\x4b\x70\x49\x4a"; - case 10: // 4 - return "\x04\x4b\x70\x49\x4b"; - case 11: // 5 - return "\x04\x4b\x70\x49\x4c"; - case 12: // 6 - return "\x04\x4b\x70\x49\x4d"; - case 13: // 7 - return "\x04\x4b\x70\x49\x4e"; - case 14: // 8 - return "\x04\x4b\x70\x49\x4f"; - case 15: // 9 - return "\x04\x4b\x70\x49\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x70\x49\x51"; - case 17: // EQUAL - return "\x04\x4b\x70\x49\x52"; - case 18: // A - return "\x04\x4b\x70\x49\x53"; - case 19: // B - return "\x04\x4b\x70\x49\x54"; - case 20: // C - return "\x04\x4b\x70\x49\x55"; - case 21: // D - return "\x04\x4b\x70\x49\x56"; - case 22: // E - return "\x04\x4b\x70\x49\x57"; - case 23: // F - return "\x04\x4b\x70\x49\x58"; - case 24: // G - return "\x04\x4b\x70\x49\x59"; - case 25: // H - return "\x04\x4b\x70\x49\x5a"; - case 26: // I - return "\x04\x4b\x70\x49\x61"; - case 27: // J - return "\x04\x4b\x70\x49\x62"; - case 28: // K - return "\x04\x4b\x70\x49\x63"; - case 29: // L - return "\x04\x4b\x70\x49\x64"; - case 30: // M - return "\x04\x4b\x70\x49\x65"; - case 31: // N - return "\x04\x4b\x70\x49\x66"; - case 32: // O - return "\x04\x4b\x70\x49\x67"; - case 33: // P - return "\x04\x4b\x70\x49\x68"; - case 34: // Q - return "\x04\x4b\x70\x49\x69"; - case 35: // R - return "\x04\x4b\x70\x49\x6a"; - case 36: // S - return "\x04\x4b\x70\x49\x6b"; - case 37: // T - return "\x04\x4b\x70\x49\x6c"; - case 38: // U - return "\x04\x4b\x70\x49\x6d"; - case 39: // V - return "\x04\x4b\x70\x49\x6e"; - case 40: // W - return "\x04\x4b\x70\x49\x6f"; - case 41: // X - return "\x04\x4b\x70\x49\x70"; - case 42: // Y - return "\x04\x4b\x70\x49\x71"; - case 43: // Z - return "\x04\x4b\x70\x49\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x70\x49\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x70\x49\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x70\x49\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x70\x49\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x70\x49\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x70\x49\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x70\x49\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x70\x49\x42\x72"; + case 9: // PLUS return "\x05\x4b\x70\x49\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x70\x49\x43"; + case 11: // MINUS + return "\x04\x4b\x70\x49\x44"; + case 12: // PERIOD + return "\x04\x4b\x70\x49\x45"; + case 13: // SLASH + return "\x04\x4b\x70\x49\x46"; + case 14: // 0 + return "\x04\x4b\x70\x49\x47"; + case 15: // 1 + return "\x04\x4b\x70\x49\x48"; + case 16: // 2 + return "\x04\x4b\x70\x49\x49"; + case 17: // 3 + return "\x04\x4b\x70\x49\x4a"; + case 18: // 4 + return "\x04\x4b\x70\x49\x4b"; + case 19: // 5 + return "\x04\x4b\x70\x49\x4c"; + case 20: // 6 + return "\x04\x4b\x70\x49\x4d"; + case 21: // 7 + return "\x04\x4b\x70\x49\x4e"; + case 22: // 8 + return "\x04\x4b\x70\x49\x4f"; + case 23: // 9 + return "\x04\x4b\x70\x49\x50"; + case 24: // COLON + return "\x05\x4b\x70\x49\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x70\x49\x51"; + case 26: // LESS + return "\x05\x4b\x70\x49\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x70\x49\x52"; + case 28: // GREATER + return "\x05\x4b\x70\x49\x42\x75"; + case 29: // AT + return "\x05\x4b\x70\x49\x42\x76"; + case 30: // A + return "\x04\x4b\x70\x49\x53"; + case 31: // B + return "\x04\x4b\x70\x49\x54"; + case 32: // C + return "\x04\x4b\x70\x49\x55"; + case 33: // D + return "\x04\x4b\x70\x49\x56"; + case 34: // E + return "\x04\x4b\x70\x49\x57"; + case 35: // F + return "\x04\x4b\x70\x49\x58"; + case 36: // G + return "\x04\x4b\x70\x49\x59"; + case 37: // H + return "\x04\x4b\x70\x49\x5a"; + case 38: // I + return "\x04\x4b\x70\x49\x61"; + case 39: // J + return "\x04\x4b\x70\x49\x62"; + case 40: // K + return "\x04\x4b\x70\x49\x63"; + case 41: // L + return "\x04\x4b\x70\x49\x64"; + case 42: // M + return "\x04\x4b\x70\x49\x65"; + case 43: // N + return "\x04\x4b\x70\x49\x66"; + case 44: // O + return "\x04\x4b\x70\x49\x67"; + case 45: // P + return "\x04\x4b\x70\x49\x68"; + case 46: // Q + return "\x04\x4b\x70\x49\x69"; + case 47: // R + return "\x04\x4b\x70\x49\x6a"; + case 48: // S + return "\x04\x4b\x70\x49\x6b"; + case 49: // T + return "\x04\x4b\x70\x49\x6c"; + case 50: // U + return "\x04\x4b\x70\x49\x6d"; + case 51: // V + return "\x04\x4b\x70\x49\x6e"; + case 52: // W + return "\x04\x4b\x70\x49\x6f"; + case 53: // X + return "\x04\x4b\x70\x49\x70"; + case 54: // Y + return "\x04\x4b\x70\x49\x71"; + case 55: // Z + return "\x04\x4b\x70\x49\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x70\x49\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x70\x49\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x70\x49\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x70\x49\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x70\x49\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x70\x49\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x70\x49\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x70\x49\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x70\x49\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x70\x49\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x70\x49\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x70\x49\x42\x30"; + case 68: // AE + return "\x05\x4b\x70\x49\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x70\x49\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x70\x49\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x70\x49\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x70\x49\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x70\x49\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x70\x49\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x70\x49\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x70\x49\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x70\x49\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x70\x49\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x70\x49\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x70\x49\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x70\x49\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x70\x49\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x70\x49\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x70\x49\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x70\x49\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x70\x49\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x70\x49\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x70\x49\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x70\x49\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x70\x49\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x70\x49\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x70\x49\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x70\x49\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x70\x49\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x70\x49\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x70\x49\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x70\x49\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x70\x49\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x70\x49\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x70\x49\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x70\x49\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x70\x49\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x70\x49\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x70\x49\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x70\x49\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x70\x49\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x70\x49\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x70\x49\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x70\x49\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x70\x49\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x70\x49\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x70\x49\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x70\x49\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x70\x49\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x70\x49\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x70\x49\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x70\x49\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x70\x49\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x70\x49\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x70\x49\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x70\x49\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x70\x49\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x70\x49\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x70\x49\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x70\x49\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x70\x49\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x70\x49\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x70\x49\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x70\x49\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x70\x49\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x70\x49\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x70\x49\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x70\x49\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x70\x49\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x70\x49\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x70\x49\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x70\x49\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x70\x49\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x70\x49\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x70\x49\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x70\x49\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x70\x49\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x70\x49\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x70\x49\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x70\x49\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x70\x49\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x70\x49\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x70\x49\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x70\x49\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x70\x49\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x70\x49\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x70\x49\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x70\x49\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x70\x49\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x70\x49\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x70\x49\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x70\x49\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x70\x49\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x70\x49\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x70\x49\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x70\x49\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x70\x49\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x70\x49\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x70\x49\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x70\x49\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x70\x49\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x70\x49\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x70\x49\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x70\x49\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x70\x49\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x70\x49\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x70\x49\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x70\x49\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x70\x49\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x70\x49\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x70\x49\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x70\x49\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x70\x49\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x70\x49\x42\x68"; } // end switch(key) case 0x9: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x70\x4a\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x70\x4a\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x70\x4a\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x70\x4a\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x70\x4a\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x70\x4a\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x70\x4a\x42"; - case 2: // COMMA - return "\x04\x4b\x70\x4a\x43"; - case 3: // MINUS - return "\x04\x4b\x70\x4a\x44"; - case 4: // PERIOD - return "\x04\x4b\x70\x4a\x45"; - case 5: // SLASH - return "\x04\x4b\x70\x4a\x46"; - case 6: // 0 - return "\x04\x4b\x70\x4a\x47"; - case 7: // 1 - return "\x04\x4b\x70\x4a\x48"; - case 8: // 2 - return "\x04\x4b\x70\x4a\x49"; - case 9: // 3 - return "\x04\x4b\x70\x4a\x4a"; - case 10: // 4 - return "\x04\x4b\x70\x4a\x4b"; - case 11: // 5 - return "\x04\x4b\x70\x4a\x4c"; - case 12: // 6 - return "\x04\x4b\x70\x4a\x4d"; - case 13: // 7 - return "\x04\x4b\x70\x4a\x4e"; - case 14: // 8 - return "\x04\x4b\x70\x4a\x4f"; - case 15: // 9 - return "\x04\x4b\x70\x4a\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x70\x4a\x51"; - case 17: // EQUAL - return "\x04\x4b\x70\x4a\x52"; - case 18: // A - return "\x04\x4b\x70\x4a\x53"; - case 19: // B - return "\x04\x4b\x70\x4a\x54"; - case 20: // C - return "\x04\x4b\x70\x4a\x55"; - case 21: // D - return "\x04\x4b\x70\x4a\x56"; - case 22: // E - return "\x04\x4b\x70\x4a\x57"; - case 23: // F - return "\x04\x4b\x70\x4a\x58"; - case 24: // G - return "\x04\x4b\x70\x4a\x59"; - case 25: // H - return "\x04\x4b\x70\x4a\x5a"; - case 26: // I - return "\x04\x4b\x70\x4a\x61"; - case 27: // J - return "\x04\x4b\x70\x4a\x62"; - case 28: // K - return "\x04\x4b\x70\x4a\x63"; - case 29: // L - return "\x04\x4b\x70\x4a\x64"; - case 30: // M - return "\x04\x4b\x70\x4a\x65"; - case 31: // N - return "\x04\x4b\x70\x4a\x66"; - case 32: // O - return "\x04\x4b\x70\x4a\x67"; - case 33: // P - return "\x04\x4b\x70\x4a\x68"; - case 34: // Q - return "\x04\x4b\x70\x4a\x69"; - case 35: // R - return "\x04\x4b\x70\x4a\x6a"; - case 36: // S - return "\x04\x4b\x70\x4a\x6b"; - case 37: // T - return "\x04\x4b\x70\x4a\x6c"; - case 38: // U - return "\x04\x4b\x70\x4a\x6d"; - case 39: // V - return "\x04\x4b\x70\x4a\x6e"; - case 40: // W - return "\x04\x4b\x70\x4a\x6f"; - case 41: // X - return "\x04\x4b\x70\x4a\x70"; - case 42: // Y - return "\x04\x4b\x70\x4a\x71"; - case 43: // Z - return "\x04\x4b\x70\x4a\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x70\x4a\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x70\x4a\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x70\x4a\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x70\x4a\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x70\x4a\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x70\x4a\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x70\x4a\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x70\x4a\x42\x72"; + case 9: // PLUS return "\x05\x4b\x70\x4a\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x70\x4a\x43"; + case 11: // MINUS + return "\x04\x4b\x70\x4a\x44"; + case 12: // PERIOD + return "\x04\x4b\x70\x4a\x45"; + case 13: // SLASH + return "\x04\x4b\x70\x4a\x46"; + case 14: // 0 + return "\x04\x4b\x70\x4a\x47"; + case 15: // 1 + return "\x04\x4b\x70\x4a\x48"; + case 16: // 2 + return "\x04\x4b\x70\x4a\x49"; + case 17: // 3 + return "\x04\x4b\x70\x4a\x4a"; + case 18: // 4 + return "\x04\x4b\x70\x4a\x4b"; + case 19: // 5 + return "\x04\x4b\x70\x4a\x4c"; + case 20: // 6 + return "\x04\x4b\x70\x4a\x4d"; + case 21: // 7 + return "\x04\x4b\x70\x4a\x4e"; + case 22: // 8 + return "\x04\x4b\x70\x4a\x4f"; + case 23: // 9 + return "\x04\x4b\x70\x4a\x50"; + case 24: // COLON + return "\x05\x4b\x70\x4a\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x70\x4a\x51"; + case 26: // LESS + return "\x05\x4b\x70\x4a\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x70\x4a\x52"; + case 28: // GREATER + return "\x05\x4b\x70\x4a\x42\x75"; + case 29: // AT + return "\x05\x4b\x70\x4a\x42\x76"; + case 30: // A + return "\x04\x4b\x70\x4a\x53"; + case 31: // B + return "\x04\x4b\x70\x4a\x54"; + case 32: // C + return "\x04\x4b\x70\x4a\x55"; + case 33: // D + return "\x04\x4b\x70\x4a\x56"; + case 34: // E + return "\x04\x4b\x70\x4a\x57"; + case 35: // F + return "\x04\x4b\x70\x4a\x58"; + case 36: // G + return "\x04\x4b\x70\x4a\x59"; + case 37: // H + return "\x04\x4b\x70\x4a\x5a"; + case 38: // I + return "\x04\x4b\x70\x4a\x61"; + case 39: // J + return "\x04\x4b\x70\x4a\x62"; + case 40: // K + return "\x04\x4b\x70\x4a\x63"; + case 41: // L + return "\x04\x4b\x70\x4a\x64"; + case 42: // M + return "\x04\x4b\x70\x4a\x65"; + case 43: // N + return "\x04\x4b\x70\x4a\x66"; + case 44: // O + return "\x04\x4b\x70\x4a\x67"; + case 45: // P + return "\x04\x4b\x70\x4a\x68"; + case 46: // Q + return "\x04\x4b\x70\x4a\x69"; + case 47: // R + return "\x04\x4b\x70\x4a\x6a"; + case 48: // S + return "\x04\x4b\x70\x4a\x6b"; + case 49: // T + return "\x04\x4b\x70\x4a\x6c"; + case 50: // U + return "\x04\x4b\x70\x4a\x6d"; + case 51: // V + return "\x04\x4b\x70\x4a\x6e"; + case 52: // W + return "\x04\x4b\x70\x4a\x6f"; + case 53: // X + return "\x04\x4b\x70\x4a\x70"; + case 54: // Y + return "\x04\x4b\x70\x4a\x71"; + case 55: // Z + return "\x04\x4b\x70\x4a\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x70\x4a\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x70\x4a\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x70\x4a\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x70\x4a\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x70\x4a\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x70\x4a\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x70\x4a\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x70\x4a\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x70\x4a\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x70\x4a\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x70\x4a\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x70\x4a\x42\x30"; + case 68: // AE + return "\x05\x4b\x70\x4a\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x70\x4a\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x70\x4a\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x70\x4a\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x70\x4a\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x70\x4a\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x70\x4a\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x70\x4a\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x70\x4a\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x70\x4a\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x70\x4a\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x70\x4a\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x70\x4a\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x70\x4a\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x70\x4a\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x70\x4a\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x70\x4a\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x70\x4a\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x70\x4a\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x70\x4a\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x70\x4a\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x70\x4a\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x70\x4a\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x70\x4a\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x70\x4a\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x70\x4a\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x70\x4a\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x70\x4a\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x70\x4a\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x70\x4a\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x70\x4a\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x70\x4a\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x70\x4a\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x70\x4a\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x70\x4a\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x70\x4a\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x70\x4a\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x70\x4a\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x70\x4a\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x70\x4a\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x70\x4a\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x70\x4a\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x70\x4a\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x70\x4a\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x70\x4a\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x70\x4a\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x70\x4a\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x70\x4a\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x70\x4a\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x70\x4a\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x70\x4a\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x70\x4a\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x70\x4a\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x70\x4a\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x70\x4a\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x70\x4a\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x70\x4a\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x70\x4a\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x70\x4a\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x70\x4a\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x70\x4a\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x70\x4a\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x70\x4a\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x70\x4a\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x70\x4a\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x70\x4a\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x70\x4a\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x70\x4a\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x70\x4a\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x70\x4a\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x70\x4a\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x70\x4a\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x70\x4a\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x70\x4a\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x70\x4a\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x70\x4a\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x70\x4a\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x70\x4a\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x70\x4a\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x70\x4a\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x70\x4a\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x70\x4a\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x70\x4a\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x70\x4a\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x70\x4a\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x70\x4a\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x70\x4a\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x70\x4a\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x70\x4a\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x70\x4a\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x70\x4a\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x70\x4a\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x70\x4a\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x70\x4a\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x70\x4a\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x70\x4a\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x70\x4a\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x70\x4a\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x70\x4a\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x70\x4a\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x70\x4a\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x70\x4a\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x70\x4a\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x70\x4a\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x70\x4a\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x70\x4a\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x70\x4a\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x70\x4a\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x70\x4a\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x70\x4a\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x70\x4a\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x70\x4a\x42\x68"; } // end switch(key) case 0xa: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x70\x4d\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x70\x4d\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x70\x4d\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x70\x4d\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x70\x4d\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x70\x4d\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x70\x4d\x42"; - case 2: // COMMA - return "\x04\x4b\x70\x4d\x43"; - case 3: // MINUS - return "\x04\x4b\x70\x4d\x44"; - case 4: // PERIOD - return "\x04\x4b\x70\x4d\x45"; - case 5: // SLASH - return "\x04\x4b\x70\x4d\x46"; - case 6: // 0 - return "\x04\x4b\x70\x4d\x47"; - case 7: // 1 - return "\x04\x4b\x70\x4d\x48"; - case 8: // 2 - return "\x04\x4b\x70\x4d\x49"; - case 9: // 3 - return "\x04\x4b\x70\x4d\x4a"; - case 10: // 4 - return "\x04\x4b\x70\x4d\x4b"; - case 11: // 5 - return "\x04\x4b\x70\x4d\x4c"; - case 12: // 6 - return "\x04\x4b\x70\x4d\x4d"; - case 13: // 7 - return "\x04\x4b\x70\x4d\x4e"; - case 14: // 8 - return "\x04\x4b\x70\x4d\x4f"; - case 15: // 9 - return "\x04\x4b\x70\x4d\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x70\x4d\x51"; - case 17: // EQUAL - return "\x04\x4b\x70\x4d\x52"; - case 18: // A - return "\x04\x4b\x70\x4d\x53"; - case 19: // B - return "\x04\x4b\x70\x4d\x54"; - case 20: // C - return "\x04\x4b\x70\x4d\x55"; - case 21: // D - return "\x04\x4b\x70\x4d\x56"; - case 22: // E - return "\x04\x4b\x70\x4d\x57"; - case 23: // F - return "\x04\x4b\x70\x4d\x58"; - case 24: // G - return "\x04\x4b\x70\x4d\x59"; - case 25: // H - return "\x04\x4b\x70\x4d\x5a"; - case 26: // I - return "\x04\x4b\x70\x4d\x61"; - case 27: // J - return "\x04\x4b\x70\x4d\x62"; - case 28: // K - return "\x04\x4b\x70\x4d\x63"; - case 29: // L - return "\x04\x4b\x70\x4d\x64"; - case 30: // M - return "\x04\x4b\x70\x4d\x65"; - case 31: // N - return "\x04\x4b\x70\x4d\x66"; - case 32: // O - return "\x04\x4b\x70\x4d\x67"; - case 33: // P - return "\x04\x4b\x70\x4d\x68"; - case 34: // Q - return "\x04\x4b\x70\x4d\x69"; - case 35: // R - return "\x04\x4b\x70\x4d\x6a"; - case 36: // S - return "\x04\x4b\x70\x4d\x6b"; - case 37: // T - return "\x04\x4b\x70\x4d\x6c"; - case 38: // U - return "\x04\x4b\x70\x4d\x6d"; - case 39: // V - return "\x04\x4b\x70\x4d\x6e"; - case 40: // W - return "\x04\x4b\x70\x4d\x6f"; - case 41: // X - return "\x04\x4b\x70\x4d\x70"; - case 42: // Y - return "\x04\x4b\x70\x4d\x71"; - case 43: // Z - return "\x04\x4b\x70\x4d\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x70\x4d\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x70\x4d\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x70\x4d\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x70\x4d\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x70\x4d\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x70\x4d\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x70\x4d\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x70\x4d\x42\x72"; + case 9: // PLUS return "\x05\x4b\x70\x4d\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x70\x4d\x43"; + case 11: // MINUS + return "\x04\x4b\x70\x4d\x44"; + case 12: // PERIOD + return "\x04\x4b\x70\x4d\x45"; + case 13: // SLASH + return "\x04\x4b\x70\x4d\x46"; + case 14: // 0 + return "\x04\x4b\x70\x4d\x47"; + case 15: // 1 + return "\x04\x4b\x70\x4d\x48"; + case 16: // 2 + return "\x04\x4b\x70\x4d\x49"; + case 17: // 3 + return "\x04\x4b\x70\x4d\x4a"; + case 18: // 4 + return "\x04\x4b\x70\x4d\x4b"; + case 19: // 5 + return "\x04\x4b\x70\x4d\x4c"; + case 20: // 6 + return "\x04\x4b\x70\x4d\x4d"; + case 21: // 7 + return "\x04\x4b\x70\x4d\x4e"; + case 22: // 8 + return "\x04\x4b\x70\x4d\x4f"; + case 23: // 9 + return "\x04\x4b\x70\x4d\x50"; + case 24: // COLON + return "\x05\x4b\x70\x4d\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x70\x4d\x51"; + case 26: // LESS + return "\x05\x4b\x70\x4d\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x70\x4d\x52"; + case 28: // GREATER + return "\x05\x4b\x70\x4d\x42\x75"; + case 29: // AT + return "\x05\x4b\x70\x4d\x42\x76"; + case 30: // A + return "\x04\x4b\x70\x4d\x53"; + case 31: // B + return "\x04\x4b\x70\x4d\x54"; + case 32: // C + return "\x04\x4b\x70\x4d\x55"; + case 33: // D + return "\x04\x4b\x70\x4d\x56"; + case 34: // E + return "\x04\x4b\x70\x4d\x57"; + case 35: // F + return "\x04\x4b\x70\x4d\x58"; + case 36: // G + return "\x04\x4b\x70\x4d\x59"; + case 37: // H + return "\x04\x4b\x70\x4d\x5a"; + case 38: // I + return "\x04\x4b\x70\x4d\x61"; + case 39: // J + return "\x04\x4b\x70\x4d\x62"; + case 40: // K + return "\x04\x4b\x70\x4d\x63"; + case 41: // L + return "\x04\x4b\x70\x4d\x64"; + case 42: // M + return "\x04\x4b\x70\x4d\x65"; + case 43: // N + return "\x04\x4b\x70\x4d\x66"; + case 44: // O + return "\x04\x4b\x70\x4d\x67"; + case 45: // P + return "\x04\x4b\x70\x4d\x68"; + case 46: // Q + return "\x04\x4b\x70\x4d\x69"; + case 47: // R + return "\x04\x4b\x70\x4d\x6a"; + case 48: // S + return "\x04\x4b\x70\x4d\x6b"; + case 49: // T + return "\x04\x4b\x70\x4d\x6c"; + case 50: // U + return "\x04\x4b\x70\x4d\x6d"; + case 51: // V + return "\x04\x4b\x70\x4d\x6e"; + case 52: // W + return "\x04\x4b\x70\x4d\x6f"; + case 53: // X + return "\x04\x4b\x70\x4d\x70"; + case 54: // Y + return "\x04\x4b\x70\x4d\x71"; + case 55: // Z + return "\x04\x4b\x70\x4d\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x70\x4d\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x70\x4d\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x70\x4d\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x70\x4d\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x70\x4d\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x70\x4d\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x70\x4d\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x70\x4d\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x70\x4d\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x70\x4d\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x70\x4d\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x70\x4d\x42\x30"; + case 68: // AE + return "\x05\x4b\x70\x4d\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x70\x4d\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x70\x4d\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x70\x4d\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x70\x4d\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x70\x4d\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x70\x4d\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x70\x4d\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x70\x4d\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x70\x4d\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x70\x4d\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x70\x4d\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x70\x4d\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x70\x4d\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x70\x4d\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x70\x4d\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x70\x4d\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x70\x4d\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x70\x4d\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x70\x4d\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x70\x4d\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x70\x4d\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x70\x4d\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x70\x4d\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x70\x4d\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x70\x4d\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x70\x4d\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x70\x4d\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x70\x4d\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x70\x4d\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x70\x4d\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x70\x4d\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x70\x4d\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x70\x4d\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x70\x4d\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x70\x4d\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x70\x4d\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x70\x4d\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x70\x4d\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x70\x4d\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x70\x4d\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x70\x4d\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x70\x4d\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x70\x4d\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x70\x4d\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x70\x4d\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x70\x4d\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x70\x4d\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x70\x4d\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x70\x4d\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x70\x4d\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x70\x4d\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x70\x4d\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x70\x4d\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x70\x4d\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x70\x4d\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x70\x4d\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x70\x4d\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x70\x4d\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x70\x4d\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x70\x4d\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x70\x4d\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x70\x4d\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x70\x4d\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x70\x4d\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x70\x4d\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x70\x4d\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x70\x4d\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x70\x4d\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x70\x4d\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x70\x4d\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x70\x4d\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x70\x4d\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x70\x4d\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x70\x4d\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x70\x4d\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x70\x4d\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x70\x4d\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x70\x4d\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x70\x4d\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x70\x4d\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x70\x4d\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x70\x4d\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x70\x4d\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x70\x4d\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x70\x4d\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x70\x4d\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x70\x4d\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x70\x4d\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x70\x4d\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x70\x4d\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x70\x4d\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x70\x4d\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x70\x4d\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x70\x4d\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x70\x4d\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x70\x4d\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x70\x4d\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x70\x4d\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x70\x4d\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x70\x4d\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x70\x4d\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x70\x4d\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x70\x4d\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x70\x4d\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x70\x4d\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x70\x4d\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x70\x4d\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x70\x4d\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x70\x4d\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x70\x4d\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x70\x4d\x42\x68"; } // end switch(key) case 0xb: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x70\x4e\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x70\x4e\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x70\x4e\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x70\x4e\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x70\x4e\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x70\x4e\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x70\x4e\x42"; - case 2: // COMMA - return "\x04\x4b\x70\x4e\x43"; - case 3: // MINUS - return "\x04\x4b\x70\x4e\x44"; - case 4: // PERIOD - return "\x04\x4b\x70\x4e\x45"; - case 5: // SLASH - return "\x04\x4b\x70\x4e\x46"; - case 6: // 0 - return "\x04\x4b\x70\x4e\x47"; - case 7: // 1 - return "\x04\x4b\x70\x4e\x48"; - case 8: // 2 - return "\x04\x4b\x70\x4e\x49"; - case 9: // 3 - return "\x04\x4b\x70\x4e\x4a"; - case 10: // 4 - return "\x04\x4b\x70\x4e\x4b"; - case 11: // 5 - return "\x04\x4b\x70\x4e\x4c"; - case 12: // 6 - return "\x04\x4b\x70\x4e\x4d"; - case 13: // 7 - return "\x04\x4b\x70\x4e\x4e"; - case 14: // 8 - return "\x04\x4b\x70\x4e\x4f"; - case 15: // 9 - return "\x04\x4b\x70\x4e\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x70\x4e\x51"; - case 17: // EQUAL - return "\x04\x4b\x70\x4e\x52"; - case 18: // A - return "\x04\x4b\x70\x4e\x53"; - case 19: // B - return "\x04\x4b\x70\x4e\x54"; - case 20: // C - return "\x04\x4b\x70\x4e\x55"; - case 21: // D - return "\x04\x4b\x70\x4e\x56"; - case 22: // E - return "\x04\x4b\x70\x4e\x57"; - case 23: // F - return "\x04\x4b\x70\x4e\x58"; - case 24: // G - return "\x04\x4b\x70\x4e\x59"; - case 25: // H - return "\x04\x4b\x70\x4e\x5a"; - case 26: // I - return "\x04\x4b\x70\x4e\x61"; - case 27: // J - return "\x04\x4b\x70\x4e\x62"; - case 28: // K - return "\x04\x4b\x70\x4e\x63"; - case 29: // L - return "\x04\x4b\x70\x4e\x64"; - case 30: // M - return "\x04\x4b\x70\x4e\x65"; - case 31: // N - return "\x04\x4b\x70\x4e\x66"; - case 32: // O - return "\x04\x4b\x70\x4e\x67"; - case 33: // P - return "\x04\x4b\x70\x4e\x68"; - case 34: // Q - return "\x04\x4b\x70\x4e\x69"; - case 35: // R - return "\x04\x4b\x70\x4e\x6a"; - case 36: // S - return "\x04\x4b\x70\x4e\x6b"; - case 37: // T - return "\x04\x4b\x70\x4e\x6c"; - case 38: // U - return "\x04\x4b\x70\x4e\x6d"; - case 39: // V - return "\x04\x4b\x70\x4e\x6e"; - case 40: // W - return "\x04\x4b\x70\x4e\x6f"; - case 41: // X - return "\x04\x4b\x70\x4e\x70"; - case 42: // Y - return "\x04\x4b\x70\x4e\x71"; - case 43: // Z - return "\x04\x4b\x70\x4e\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x70\x4e\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x70\x4e\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x70\x4e\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x70\x4e\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x70\x4e\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x70\x4e\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x70\x4e\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x70\x4e\x42\x72"; + case 9: // PLUS return "\x05\x4b\x70\x4e\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x70\x4e\x43"; + case 11: // MINUS + return "\x04\x4b\x70\x4e\x44"; + case 12: // PERIOD + return "\x04\x4b\x70\x4e\x45"; + case 13: // SLASH + return "\x04\x4b\x70\x4e\x46"; + case 14: // 0 + return "\x04\x4b\x70\x4e\x47"; + case 15: // 1 + return "\x04\x4b\x70\x4e\x48"; + case 16: // 2 + return "\x04\x4b\x70\x4e\x49"; + case 17: // 3 + return "\x04\x4b\x70\x4e\x4a"; + case 18: // 4 + return "\x04\x4b\x70\x4e\x4b"; + case 19: // 5 + return "\x04\x4b\x70\x4e\x4c"; + case 20: // 6 + return "\x04\x4b\x70\x4e\x4d"; + case 21: // 7 + return "\x04\x4b\x70\x4e\x4e"; + case 22: // 8 + return "\x04\x4b\x70\x4e\x4f"; + case 23: // 9 + return "\x04\x4b\x70\x4e\x50"; + case 24: // COLON + return "\x05\x4b\x70\x4e\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x70\x4e\x51"; + case 26: // LESS + return "\x05\x4b\x70\x4e\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x70\x4e\x52"; + case 28: // GREATER + return "\x05\x4b\x70\x4e\x42\x75"; + case 29: // AT + return "\x05\x4b\x70\x4e\x42\x76"; + case 30: // A + return "\x04\x4b\x70\x4e\x53"; + case 31: // B + return "\x04\x4b\x70\x4e\x54"; + case 32: // C + return "\x04\x4b\x70\x4e\x55"; + case 33: // D + return "\x04\x4b\x70\x4e\x56"; + case 34: // E + return "\x04\x4b\x70\x4e\x57"; + case 35: // F + return "\x04\x4b\x70\x4e\x58"; + case 36: // G + return "\x04\x4b\x70\x4e\x59"; + case 37: // H + return "\x04\x4b\x70\x4e\x5a"; + case 38: // I + return "\x04\x4b\x70\x4e\x61"; + case 39: // J + return "\x04\x4b\x70\x4e\x62"; + case 40: // K + return "\x04\x4b\x70\x4e\x63"; + case 41: // L + return "\x04\x4b\x70\x4e\x64"; + case 42: // M + return "\x04\x4b\x70\x4e\x65"; + case 43: // N + return "\x04\x4b\x70\x4e\x66"; + case 44: // O + return "\x04\x4b\x70\x4e\x67"; + case 45: // P + return "\x04\x4b\x70\x4e\x68"; + case 46: // Q + return "\x04\x4b\x70\x4e\x69"; + case 47: // R + return "\x04\x4b\x70\x4e\x6a"; + case 48: // S + return "\x04\x4b\x70\x4e\x6b"; + case 49: // T + return "\x04\x4b\x70\x4e\x6c"; + case 50: // U + return "\x04\x4b\x70\x4e\x6d"; + case 51: // V + return "\x04\x4b\x70\x4e\x6e"; + case 52: // W + return "\x04\x4b\x70\x4e\x6f"; + case 53: // X + return "\x04\x4b\x70\x4e\x70"; + case 54: // Y + return "\x04\x4b\x70\x4e\x71"; + case 55: // Z + return "\x04\x4b\x70\x4e\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x70\x4e\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x70\x4e\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x70\x4e\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x70\x4e\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x70\x4e\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x70\x4e\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x70\x4e\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x70\x4e\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x70\x4e\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x70\x4e\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x70\x4e\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x70\x4e\x42\x30"; + case 68: // AE + return "\x05\x4b\x70\x4e\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x70\x4e\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x70\x4e\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x70\x4e\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x70\x4e\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x70\x4e\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x70\x4e\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x70\x4e\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x70\x4e\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x70\x4e\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x70\x4e\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x70\x4e\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x70\x4e\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x70\x4e\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x70\x4e\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x70\x4e\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x70\x4e\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x70\x4e\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x70\x4e\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x70\x4e\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x70\x4e\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x70\x4e\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x70\x4e\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x70\x4e\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x70\x4e\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x70\x4e\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x70\x4e\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x70\x4e\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x70\x4e\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x70\x4e\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x70\x4e\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x70\x4e\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x70\x4e\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x70\x4e\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x70\x4e\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x70\x4e\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x70\x4e\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x70\x4e\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x70\x4e\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x70\x4e\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x70\x4e\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x70\x4e\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x70\x4e\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x70\x4e\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x70\x4e\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x70\x4e\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x70\x4e\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x70\x4e\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x70\x4e\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x70\x4e\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x70\x4e\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x70\x4e\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x70\x4e\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x70\x4e\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x70\x4e\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x70\x4e\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x70\x4e\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x70\x4e\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x70\x4e\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x70\x4e\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x70\x4e\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x70\x4e\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x70\x4e\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x70\x4e\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x70\x4e\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x70\x4e\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x70\x4e\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x70\x4e\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x70\x4e\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x70\x4e\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x70\x4e\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x70\x4e\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x70\x4e\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x70\x4e\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x70\x4e\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x70\x4e\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x70\x4e\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x70\x4e\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x70\x4e\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x70\x4e\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x70\x4e\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x70\x4e\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x70\x4e\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x70\x4e\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x70\x4e\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x70\x4e\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x70\x4e\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x70\x4e\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x70\x4e\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x70\x4e\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x70\x4e\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x70\x4e\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x70\x4e\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x70\x4e\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x70\x4e\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x70\x4e\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x70\x4e\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x70\x4e\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x70\x4e\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x70\x4e\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x70\x4e\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x70\x4e\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x70\x4e\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x70\x4e\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x70\x4e\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x70\x4e\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x70\x4e\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x70\x4e\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x70\x4e\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x70\x4e\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x70\x4e\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x70\x4e\x42\x68"; } // end switch(key) case 0xc: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x70\x4b\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x70\x4b\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x70\x4b\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x70\x4b\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x70\x4b\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x70\x4b\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x70\x4b\x42"; - case 2: // COMMA - return "\x04\x4b\x70\x4b\x43"; - case 3: // MINUS - return "\x04\x4b\x70\x4b\x44"; - case 4: // PERIOD - return "\x04\x4b\x70\x4b\x45"; - case 5: // SLASH - return "\x04\x4b\x70\x4b\x46"; - case 6: // 0 - return "\x04\x4b\x70\x4b\x47"; - case 7: // 1 - return "\x04\x4b\x70\x4b\x48"; - case 8: // 2 - return "\x04\x4b\x70\x4b\x49"; - case 9: // 3 - return "\x04\x4b\x70\x4b\x4a"; - case 10: // 4 - return "\x04\x4b\x70\x4b\x4b"; - case 11: // 5 - return "\x04\x4b\x70\x4b\x4c"; - case 12: // 6 - return "\x04\x4b\x70\x4b\x4d"; - case 13: // 7 - return "\x04\x4b\x70\x4b\x4e"; - case 14: // 8 - return "\x04\x4b\x70\x4b\x4f"; - case 15: // 9 - return "\x04\x4b\x70\x4b\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x70\x4b\x51"; - case 17: // EQUAL - return "\x04\x4b\x70\x4b\x52"; - case 18: // A - return "\x04\x4b\x70\x4b\x53"; - case 19: // B - return "\x04\x4b\x70\x4b\x54"; - case 20: // C - return "\x04\x4b\x70\x4b\x55"; - case 21: // D - return "\x04\x4b\x70\x4b\x56"; - case 22: // E - return "\x04\x4b\x70\x4b\x57"; - case 23: // F - return "\x04\x4b\x70\x4b\x58"; - case 24: // G - return "\x04\x4b\x70\x4b\x59"; - case 25: // H - return "\x04\x4b\x70\x4b\x5a"; - case 26: // I - return "\x04\x4b\x70\x4b\x61"; - case 27: // J - return "\x04\x4b\x70\x4b\x62"; - case 28: // K - return "\x04\x4b\x70\x4b\x63"; - case 29: // L - return "\x04\x4b\x70\x4b\x64"; - case 30: // M - return "\x04\x4b\x70\x4b\x65"; - case 31: // N - return "\x04\x4b\x70\x4b\x66"; - case 32: // O - return "\x04\x4b\x70\x4b\x67"; - case 33: // P - return "\x04\x4b\x70\x4b\x68"; - case 34: // Q - return "\x04\x4b\x70\x4b\x69"; - case 35: // R - return "\x04\x4b\x70\x4b\x6a"; - case 36: // S - return "\x04\x4b\x70\x4b\x6b"; - case 37: // T - return "\x04\x4b\x70\x4b\x6c"; - case 38: // U - return "\x04\x4b\x70\x4b\x6d"; - case 39: // V - return "\x04\x4b\x70\x4b\x6e"; - case 40: // W - return "\x04\x4b\x70\x4b\x6f"; - case 41: // X - return "\x04\x4b\x70\x4b\x70"; - case 42: // Y - return "\x04\x4b\x70\x4b\x71"; - case 43: // Z - return "\x04\x4b\x70\x4b\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x70\x4b\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x70\x4b\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x70\x4b\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x70\x4b\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x70\x4b\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x70\x4b\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x70\x4b\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x70\x4b\x42\x72"; + case 9: // PLUS return "\x05\x4b\x70\x4b\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x70\x4b\x43"; + case 11: // MINUS + return "\x04\x4b\x70\x4b\x44"; + case 12: // PERIOD + return "\x04\x4b\x70\x4b\x45"; + case 13: // SLASH + return "\x04\x4b\x70\x4b\x46"; + case 14: // 0 + return "\x04\x4b\x70\x4b\x47"; + case 15: // 1 + return "\x04\x4b\x70\x4b\x48"; + case 16: // 2 + return "\x04\x4b\x70\x4b\x49"; + case 17: // 3 + return "\x04\x4b\x70\x4b\x4a"; + case 18: // 4 + return "\x04\x4b\x70\x4b\x4b"; + case 19: // 5 + return "\x04\x4b\x70\x4b\x4c"; + case 20: // 6 + return "\x04\x4b\x70\x4b\x4d"; + case 21: // 7 + return "\x04\x4b\x70\x4b\x4e"; + case 22: // 8 + return "\x04\x4b\x70\x4b\x4f"; + case 23: // 9 + return "\x04\x4b\x70\x4b\x50"; + case 24: // COLON + return "\x05\x4b\x70\x4b\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x70\x4b\x51"; + case 26: // LESS + return "\x05\x4b\x70\x4b\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x70\x4b\x52"; + case 28: // GREATER + return "\x05\x4b\x70\x4b\x42\x75"; + case 29: // AT + return "\x05\x4b\x70\x4b\x42\x76"; + case 30: // A + return "\x04\x4b\x70\x4b\x53"; + case 31: // B + return "\x04\x4b\x70\x4b\x54"; + case 32: // C + return "\x04\x4b\x70\x4b\x55"; + case 33: // D + return "\x04\x4b\x70\x4b\x56"; + case 34: // E + return "\x04\x4b\x70\x4b\x57"; + case 35: // F + return "\x04\x4b\x70\x4b\x58"; + case 36: // G + return "\x04\x4b\x70\x4b\x59"; + case 37: // H + return "\x04\x4b\x70\x4b\x5a"; + case 38: // I + return "\x04\x4b\x70\x4b\x61"; + case 39: // J + return "\x04\x4b\x70\x4b\x62"; + case 40: // K + return "\x04\x4b\x70\x4b\x63"; + case 41: // L + return "\x04\x4b\x70\x4b\x64"; + case 42: // M + return "\x04\x4b\x70\x4b\x65"; + case 43: // N + return "\x04\x4b\x70\x4b\x66"; + case 44: // O + return "\x04\x4b\x70\x4b\x67"; + case 45: // P + return "\x04\x4b\x70\x4b\x68"; + case 46: // Q + return "\x04\x4b\x70\x4b\x69"; + case 47: // R + return "\x04\x4b\x70\x4b\x6a"; + case 48: // S + return "\x04\x4b\x70\x4b\x6b"; + case 49: // T + return "\x04\x4b\x70\x4b\x6c"; + case 50: // U + return "\x04\x4b\x70\x4b\x6d"; + case 51: // V + return "\x04\x4b\x70\x4b\x6e"; + case 52: // W + return "\x04\x4b\x70\x4b\x6f"; + case 53: // X + return "\x04\x4b\x70\x4b\x70"; + case 54: // Y + return "\x04\x4b\x70\x4b\x71"; + case 55: // Z + return "\x04\x4b\x70\x4b\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x70\x4b\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x70\x4b\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x70\x4b\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x70\x4b\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x70\x4b\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x70\x4b\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x70\x4b\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x70\x4b\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x70\x4b\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x70\x4b\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x70\x4b\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x70\x4b\x42\x30"; + case 68: // AE + return "\x05\x4b\x70\x4b\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x70\x4b\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x70\x4b\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x70\x4b\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x70\x4b\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x70\x4b\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x70\x4b\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x70\x4b\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x70\x4b\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x70\x4b\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x70\x4b\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x70\x4b\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x70\x4b\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x70\x4b\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x70\x4b\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x70\x4b\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x70\x4b\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x70\x4b\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x70\x4b\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x70\x4b\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x70\x4b\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x70\x4b\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x70\x4b\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x70\x4b\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x70\x4b\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x70\x4b\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x70\x4b\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x70\x4b\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x70\x4b\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x70\x4b\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x70\x4b\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x70\x4b\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x70\x4b\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x70\x4b\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x70\x4b\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x70\x4b\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x70\x4b\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x70\x4b\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x70\x4b\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x70\x4b\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x70\x4b\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x70\x4b\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x70\x4b\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x70\x4b\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x70\x4b\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x70\x4b\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x70\x4b\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x70\x4b\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x70\x4b\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x70\x4b\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x70\x4b\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x70\x4b\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x70\x4b\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x70\x4b\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x70\x4b\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x70\x4b\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x70\x4b\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x70\x4b\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x70\x4b\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x70\x4b\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x70\x4b\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x70\x4b\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x70\x4b\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x70\x4b\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x70\x4b\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x70\x4b\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x70\x4b\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x70\x4b\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x70\x4b\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x70\x4b\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x70\x4b\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x70\x4b\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x70\x4b\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x70\x4b\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x70\x4b\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x70\x4b\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x70\x4b\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x70\x4b\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x70\x4b\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x70\x4b\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x70\x4b\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x70\x4b\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x70\x4b\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x70\x4b\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x70\x4b\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x70\x4b\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x70\x4b\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x70\x4b\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x70\x4b\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x70\x4b\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x70\x4b\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x70\x4b\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x70\x4b\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x70\x4b\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x70\x4b\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x70\x4b\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x70\x4b\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x70\x4b\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x70\x4b\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x70\x4b\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x70\x4b\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x70\x4b\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x70\x4b\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x70\x4b\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x70\x4b\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x70\x4b\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x70\x4b\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x70\x4b\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x70\x4b\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x70\x4b\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x70\x4b\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x70\x4b\x42\x68"; } // end switch(key) case 0xd: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x70\x4c\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x70\x4c\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x70\x4c\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x70\x4c\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x70\x4c\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x70\x4c\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x70\x4c\x42"; - case 2: // COMMA - return "\x04\x4b\x70\x4c\x43"; - case 3: // MINUS - return "\x04\x4b\x70\x4c\x44"; - case 4: // PERIOD - return "\x04\x4b\x70\x4c\x45"; - case 5: // SLASH - return "\x04\x4b\x70\x4c\x46"; - case 6: // 0 - return "\x04\x4b\x70\x4c\x47"; - case 7: // 1 - return "\x04\x4b\x70\x4c\x48"; - case 8: // 2 - return "\x04\x4b\x70\x4c\x49"; - case 9: // 3 - return "\x04\x4b\x70\x4c\x4a"; - case 10: // 4 - return "\x04\x4b\x70\x4c\x4b"; - case 11: // 5 - return "\x04\x4b\x70\x4c\x4c"; - case 12: // 6 - return "\x04\x4b\x70\x4c\x4d"; - case 13: // 7 - return "\x04\x4b\x70\x4c\x4e"; - case 14: // 8 - return "\x04\x4b\x70\x4c\x4f"; - case 15: // 9 - return "\x04\x4b\x70\x4c\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x70\x4c\x51"; - case 17: // EQUAL - return "\x04\x4b\x70\x4c\x52"; - case 18: // A - return "\x04\x4b\x70\x4c\x53"; - case 19: // B - return "\x04\x4b\x70\x4c\x54"; - case 20: // C - return "\x04\x4b\x70\x4c\x55"; - case 21: // D - return "\x04\x4b\x70\x4c\x56"; - case 22: // E - return "\x04\x4b\x70\x4c\x57"; - case 23: // F - return "\x04\x4b\x70\x4c\x58"; - case 24: // G - return "\x04\x4b\x70\x4c\x59"; - case 25: // H - return "\x04\x4b\x70\x4c\x5a"; - case 26: // I - return "\x04\x4b\x70\x4c\x61"; - case 27: // J - return "\x04\x4b\x70\x4c\x62"; - case 28: // K - return "\x04\x4b\x70\x4c\x63"; - case 29: // L - return "\x04\x4b\x70\x4c\x64"; - case 30: // M - return "\x04\x4b\x70\x4c\x65"; - case 31: // N - return "\x04\x4b\x70\x4c\x66"; - case 32: // O - return "\x04\x4b\x70\x4c\x67"; - case 33: // P - return "\x04\x4b\x70\x4c\x68"; - case 34: // Q - return "\x04\x4b\x70\x4c\x69"; - case 35: // R - return "\x04\x4b\x70\x4c\x6a"; - case 36: // S - return "\x04\x4b\x70\x4c\x6b"; - case 37: // T - return "\x04\x4b\x70\x4c\x6c"; - case 38: // U - return "\x04\x4b\x70\x4c\x6d"; - case 39: // V - return "\x04\x4b\x70\x4c\x6e"; - case 40: // W - return "\x04\x4b\x70\x4c\x6f"; - case 41: // X - return "\x04\x4b\x70\x4c\x70"; - case 42: // Y - return "\x04\x4b\x70\x4c\x71"; - case 43: // Z - return "\x04\x4b\x70\x4c\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x70\x4c\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x70\x4c\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x70\x4c\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x70\x4c\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x70\x4c\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x70\x4c\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x70\x4c\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x70\x4c\x42\x72"; + case 9: // PLUS return "\x05\x4b\x70\x4c\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x70\x4c\x43"; + case 11: // MINUS + return "\x04\x4b\x70\x4c\x44"; + case 12: // PERIOD + return "\x04\x4b\x70\x4c\x45"; + case 13: // SLASH + return "\x04\x4b\x70\x4c\x46"; + case 14: // 0 + return "\x04\x4b\x70\x4c\x47"; + case 15: // 1 + return "\x04\x4b\x70\x4c\x48"; + case 16: // 2 + return "\x04\x4b\x70\x4c\x49"; + case 17: // 3 + return "\x04\x4b\x70\x4c\x4a"; + case 18: // 4 + return "\x04\x4b\x70\x4c\x4b"; + case 19: // 5 + return "\x04\x4b\x70\x4c\x4c"; + case 20: // 6 + return "\x04\x4b\x70\x4c\x4d"; + case 21: // 7 + return "\x04\x4b\x70\x4c\x4e"; + case 22: // 8 + return "\x04\x4b\x70\x4c\x4f"; + case 23: // 9 + return "\x04\x4b\x70\x4c\x50"; + case 24: // COLON + return "\x05\x4b\x70\x4c\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x70\x4c\x51"; + case 26: // LESS + return "\x05\x4b\x70\x4c\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x70\x4c\x52"; + case 28: // GREATER + return "\x05\x4b\x70\x4c\x42\x75"; + case 29: // AT + return "\x05\x4b\x70\x4c\x42\x76"; + case 30: // A + return "\x04\x4b\x70\x4c\x53"; + case 31: // B + return "\x04\x4b\x70\x4c\x54"; + case 32: // C + return "\x04\x4b\x70\x4c\x55"; + case 33: // D + return "\x04\x4b\x70\x4c\x56"; + case 34: // E + return "\x04\x4b\x70\x4c\x57"; + case 35: // F + return "\x04\x4b\x70\x4c\x58"; + case 36: // G + return "\x04\x4b\x70\x4c\x59"; + case 37: // H + return "\x04\x4b\x70\x4c\x5a"; + case 38: // I + return "\x04\x4b\x70\x4c\x61"; + case 39: // J + return "\x04\x4b\x70\x4c\x62"; + case 40: // K + return "\x04\x4b\x70\x4c\x63"; + case 41: // L + return "\x04\x4b\x70\x4c\x64"; + case 42: // M + return "\x04\x4b\x70\x4c\x65"; + case 43: // N + return "\x04\x4b\x70\x4c\x66"; + case 44: // O + return "\x04\x4b\x70\x4c\x67"; + case 45: // P + return "\x04\x4b\x70\x4c\x68"; + case 46: // Q + return "\x04\x4b\x70\x4c\x69"; + case 47: // R + return "\x04\x4b\x70\x4c\x6a"; + case 48: // S + return "\x04\x4b\x70\x4c\x6b"; + case 49: // T + return "\x04\x4b\x70\x4c\x6c"; + case 50: // U + return "\x04\x4b\x70\x4c\x6d"; + case 51: // V + return "\x04\x4b\x70\x4c\x6e"; + case 52: // W + return "\x04\x4b\x70\x4c\x6f"; + case 53: // X + return "\x04\x4b\x70\x4c\x70"; + case 54: // Y + return "\x04\x4b\x70\x4c\x71"; + case 55: // Z + return "\x04\x4b\x70\x4c\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x70\x4c\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x70\x4c\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x70\x4c\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x70\x4c\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x70\x4c\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x70\x4c\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x70\x4c\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x70\x4c\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x70\x4c\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x70\x4c\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x70\x4c\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x70\x4c\x42\x30"; + case 68: // AE + return "\x05\x4b\x70\x4c\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x70\x4c\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x70\x4c\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x70\x4c\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x70\x4c\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x70\x4c\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x70\x4c\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x70\x4c\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x70\x4c\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x70\x4c\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x70\x4c\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x70\x4c\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x70\x4c\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x70\x4c\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x70\x4c\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x70\x4c\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x70\x4c\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x70\x4c\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x70\x4c\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x70\x4c\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x70\x4c\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x70\x4c\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x70\x4c\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x70\x4c\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x70\x4c\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x70\x4c\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x70\x4c\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x70\x4c\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x70\x4c\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x70\x4c\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x70\x4c\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x70\x4c\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x70\x4c\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x70\x4c\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x70\x4c\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x70\x4c\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x70\x4c\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x70\x4c\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x70\x4c\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x70\x4c\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x70\x4c\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x70\x4c\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x70\x4c\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x70\x4c\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x70\x4c\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x70\x4c\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x70\x4c\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x70\x4c\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x70\x4c\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x70\x4c\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x70\x4c\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x70\x4c\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x70\x4c\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x70\x4c\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x70\x4c\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x70\x4c\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x70\x4c\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x70\x4c\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x70\x4c\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x70\x4c\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x70\x4c\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x70\x4c\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x70\x4c\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x70\x4c\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x70\x4c\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x70\x4c\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x70\x4c\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x70\x4c\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x70\x4c\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x70\x4c\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x70\x4c\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x70\x4c\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x70\x4c\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x70\x4c\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x70\x4c\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x70\x4c\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x70\x4c\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x70\x4c\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x70\x4c\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x70\x4c\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x70\x4c\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x70\x4c\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x70\x4c\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x70\x4c\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x70\x4c\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x70\x4c\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x70\x4c\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x70\x4c\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x70\x4c\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x70\x4c\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x70\x4c\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x70\x4c\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x70\x4c\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x70\x4c\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x70\x4c\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x70\x4c\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x70\x4c\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x70\x4c\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x70\x4c\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x70\x4c\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x70\x4c\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x70\x4c\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x70\x4c\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x70\x4c\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x70\x4c\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x70\x4c\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x70\x4c\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x70\x4c\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x70\x4c\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x70\x4c\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x70\x4c\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x70\x4c\x42\x68"; } // end switch(key) case 0xe: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x70\x4f\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x70\x4f\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x70\x4f\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x70\x4f\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x70\x4f\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x70\x4f\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x70\x4f\x42"; - case 2: // COMMA - return "\x04\x4b\x70\x4f\x43"; - case 3: // MINUS - return "\x04\x4b\x70\x4f\x44"; - case 4: // PERIOD - return "\x04\x4b\x70\x4f\x45"; - case 5: // SLASH - return "\x04\x4b\x70\x4f\x46"; - case 6: // 0 - return "\x04\x4b\x70\x4f\x47"; - case 7: // 1 - return "\x04\x4b\x70\x4f\x48"; - case 8: // 2 - return "\x04\x4b\x70\x4f\x49"; - case 9: // 3 - return "\x04\x4b\x70\x4f\x4a"; - case 10: // 4 - return "\x04\x4b\x70\x4f\x4b"; - case 11: // 5 - return "\x04\x4b\x70\x4f\x4c"; - case 12: // 6 - return "\x04\x4b\x70\x4f\x4d"; - case 13: // 7 - return "\x04\x4b\x70\x4f\x4e"; - case 14: // 8 - return "\x04\x4b\x70\x4f\x4f"; - case 15: // 9 - return "\x04\x4b\x70\x4f\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x70\x4f\x51"; - case 17: // EQUAL - return "\x04\x4b\x70\x4f\x52"; - case 18: // A - return "\x04\x4b\x70\x4f\x53"; - case 19: // B - return "\x04\x4b\x70\x4f\x54"; - case 20: // C - return "\x04\x4b\x70\x4f\x55"; - case 21: // D - return "\x04\x4b\x70\x4f\x56"; - case 22: // E - return "\x04\x4b\x70\x4f\x57"; - case 23: // F - return "\x04\x4b\x70\x4f\x58"; - case 24: // G - return "\x04\x4b\x70\x4f\x59"; - case 25: // H - return "\x04\x4b\x70\x4f\x5a"; - case 26: // I - return "\x04\x4b\x70\x4f\x61"; - case 27: // J - return "\x04\x4b\x70\x4f\x62"; - case 28: // K - return "\x04\x4b\x70\x4f\x63"; - case 29: // L - return "\x04\x4b\x70\x4f\x64"; - case 30: // M - return "\x04\x4b\x70\x4f\x65"; - case 31: // N - return "\x04\x4b\x70\x4f\x66"; - case 32: // O - return "\x04\x4b\x70\x4f\x67"; - case 33: // P - return "\x04\x4b\x70\x4f\x68"; - case 34: // Q - return "\x04\x4b\x70\x4f\x69"; - case 35: // R - return "\x04\x4b\x70\x4f\x6a"; - case 36: // S - return "\x04\x4b\x70\x4f\x6b"; - case 37: // T - return "\x04\x4b\x70\x4f\x6c"; - case 38: // U - return "\x04\x4b\x70\x4f\x6d"; - case 39: // V - return "\x04\x4b\x70\x4f\x6e"; - case 40: // W - return "\x04\x4b\x70\x4f\x6f"; - case 41: // X - return "\x04\x4b\x70\x4f\x70"; - case 42: // Y - return "\x04\x4b\x70\x4f\x71"; - case 43: // Z - return "\x04\x4b\x70\x4f\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x70\x4f\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x70\x4f\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x70\x4f\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x70\x4f\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x70\x4f\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x70\x4f\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x70\x4f\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x70\x4f\x42\x72"; + case 9: // PLUS return "\x05\x4b\x70\x4f\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x70\x4f\x43"; + case 11: // MINUS + return "\x04\x4b\x70\x4f\x44"; + case 12: // PERIOD + return "\x04\x4b\x70\x4f\x45"; + case 13: // SLASH + return "\x04\x4b\x70\x4f\x46"; + case 14: // 0 + return "\x04\x4b\x70\x4f\x47"; + case 15: // 1 + return "\x04\x4b\x70\x4f\x48"; + case 16: // 2 + return "\x04\x4b\x70\x4f\x49"; + case 17: // 3 + return "\x04\x4b\x70\x4f\x4a"; + case 18: // 4 + return "\x04\x4b\x70\x4f\x4b"; + case 19: // 5 + return "\x04\x4b\x70\x4f\x4c"; + case 20: // 6 + return "\x04\x4b\x70\x4f\x4d"; + case 21: // 7 + return "\x04\x4b\x70\x4f\x4e"; + case 22: // 8 + return "\x04\x4b\x70\x4f\x4f"; + case 23: // 9 + return "\x04\x4b\x70\x4f\x50"; + case 24: // COLON + return "\x05\x4b\x70\x4f\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x70\x4f\x51"; + case 26: // LESS + return "\x05\x4b\x70\x4f\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x70\x4f\x52"; + case 28: // GREATER + return "\x05\x4b\x70\x4f\x42\x75"; + case 29: // AT + return "\x05\x4b\x70\x4f\x42\x76"; + case 30: // A + return "\x04\x4b\x70\x4f\x53"; + case 31: // B + return "\x04\x4b\x70\x4f\x54"; + case 32: // C + return "\x04\x4b\x70\x4f\x55"; + case 33: // D + return "\x04\x4b\x70\x4f\x56"; + case 34: // E + return "\x04\x4b\x70\x4f\x57"; + case 35: // F + return "\x04\x4b\x70\x4f\x58"; + case 36: // G + return "\x04\x4b\x70\x4f\x59"; + case 37: // H + return "\x04\x4b\x70\x4f\x5a"; + case 38: // I + return "\x04\x4b\x70\x4f\x61"; + case 39: // J + return "\x04\x4b\x70\x4f\x62"; + case 40: // K + return "\x04\x4b\x70\x4f\x63"; + case 41: // L + return "\x04\x4b\x70\x4f\x64"; + case 42: // M + return "\x04\x4b\x70\x4f\x65"; + case 43: // N + return "\x04\x4b\x70\x4f\x66"; + case 44: // O + return "\x04\x4b\x70\x4f\x67"; + case 45: // P + return "\x04\x4b\x70\x4f\x68"; + case 46: // Q + return "\x04\x4b\x70\x4f\x69"; + case 47: // R + return "\x04\x4b\x70\x4f\x6a"; + case 48: // S + return "\x04\x4b\x70\x4f\x6b"; + case 49: // T + return "\x04\x4b\x70\x4f\x6c"; + case 50: // U + return "\x04\x4b\x70\x4f\x6d"; + case 51: // V + return "\x04\x4b\x70\x4f\x6e"; + case 52: // W + return "\x04\x4b\x70\x4f\x6f"; + case 53: // X + return "\x04\x4b\x70\x4f\x70"; + case 54: // Y + return "\x04\x4b\x70\x4f\x71"; + case 55: // Z + return "\x04\x4b\x70\x4f\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x70\x4f\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x70\x4f\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x70\x4f\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x70\x4f\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x70\x4f\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x70\x4f\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x70\x4f\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x70\x4f\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x70\x4f\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x70\x4f\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x70\x4f\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x70\x4f\x42\x30"; + case 68: // AE + return "\x05\x4b\x70\x4f\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x70\x4f\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x70\x4f\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x70\x4f\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x70\x4f\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x70\x4f\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x70\x4f\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x70\x4f\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x70\x4f\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x70\x4f\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x70\x4f\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x70\x4f\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x70\x4f\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x70\x4f\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x70\x4f\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x70\x4f\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x70\x4f\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x70\x4f\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x70\x4f\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x70\x4f\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x70\x4f\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x70\x4f\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x70\x4f\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x70\x4f\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x70\x4f\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x70\x4f\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x70\x4f\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x70\x4f\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x70\x4f\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x70\x4f\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x70\x4f\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x70\x4f\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x70\x4f\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x70\x4f\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x70\x4f\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x70\x4f\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x70\x4f\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x70\x4f\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x70\x4f\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x70\x4f\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x70\x4f\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x70\x4f\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x70\x4f\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x70\x4f\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x70\x4f\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x70\x4f\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x70\x4f\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x70\x4f\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x70\x4f\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x70\x4f\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x70\x4f\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x70\x4f\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x70\x4f\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x70\x4f\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x70\x4f\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x70\x4f\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x70\x4f\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x70\x4f\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x70\x4f\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x70\x4f\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x70\x4f\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x70\x4f\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x70\x4f\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x70\x4f\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x70\x4f\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x70\x4f\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x70\x4f\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x70\x4f\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x70\x4f\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x70\x4f\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x70\x4f\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x70\x4f\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x70\x4f\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x70\x4f\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x70\x4f\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x70\x4f\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x70\x4f\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x70\x4f\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x70\x4f\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x70\x4f\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x70\x4f\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x70\x4f\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x70\x4f\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x70\x4f\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x70\x4f\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x70\x4f\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x70\x4f\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x70\x4f\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x70\x4f\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x70\x4f\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x70\x4f\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x70\x4f\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x70\x4f\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x70\x4f\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x70\x4f\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x70\x4f\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x70\x4f\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x70\x4f\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x70\x4f\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x70\x4f\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x70\x4f\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x70\x4f\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x70\x4f\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x70\x4f\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x70\x4f\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x70\x4f\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x70\x4f\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x70\x4f\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x70\x4f\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x70\x4f\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x70\x4f\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x70\x4f\x42\x68"; } // end switch(key) case 0xf: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x70\x50\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x70\x50\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x70\x50\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x70\x50\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x70\x50\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x70\x50\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x70\x50\x42"; - case 2: // COMMA - return "\x04\x4b\x70\x50\x43"; - case 3: // MINUS - return "\x04\x4b\x70\x50\x44"; - case 4: // PERIOD - return "\x04\x4b\x70\x50\x45"; - case 5: // SLASH - return "\x04\x4b\x70\x50\x46"; - case 6: // 0 - return "\x04\x4b\x70\x50\x47"; - case 7: // 1 - return "\x04\x4b\x70\x50\x48"; - case 8: // 2 - return "\x04\x4b\x70\x50\x49"; - case 9: // 3 - return "\x04\x4b\x70\x50\x4a"; - case 10: // 4 - return "\x04\x4b\x70\x50\x4b"; - case 11: // 5 - return "\x04\x4b\x70\x50\x4c"; - case 12: // 6 - return "\x04\x4b\x70\x50\x4d"; - case 13: // 7 - return "\x04\x4b\x70\x50\x4e"; - case 14: // 8 - return "\x04\x4b\x70\x50\x4f"; - case 15: // 9 - return "\x04\x4b\x70\x50\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x70\x50\x51"; - case 17: // EQUAL - return "\x04\x4b\x70\x50\x52"; - case 18: // A - return "\x04\x4b\x70\x50\x53"; - case 19: // B - return "\x04\x4b\x70\x50\x54"; - case 20: // C - return "\x04\x4b\x70\x50\x55"; - case 21: // D - return "\x04\x4b\x70\x50\x56"; - case 22: // E - return "\x04\x4b\x70\x50\x57"; - case 23: // F - return "\x04\x4b\x70\x50\x58"; - case 24: // G - return "\x04\x4b\x70\x50\x59"; - case 25: // H - return "\x04\x4b\x70\x50\x5a"; - case 26: // I - return "\x04\x4b\x70\x50\x61"; - case 27: // J - return "\x04\x4b\x70\x50\x62"; - case 28: // K - return "\x04\x4b\x70\x50\x63"; - case 29: // L - return "\x04\x4b\x70\x50\x64"; - case 30: // M - return "\x04\x4b\x70\x50\x65"; - case 31: // N - return "\x04\x4b\x70\x50\x66"; - case 32: // O - return "\x04\x4b\x70\x50\x67"; - case 33: // P - return "\x04\x4b\x70\x50\x68"; - case 34: // Q - return "\x04\x4b\x70\x50\x69"; - case 35: // R - return "\x04\x4b\x70\x50\x6a"; - case 36: // S - return "\x04\x4b\x70\x50\x6b"; - case 37: // T - return "\x04\x4b\x70\x50\x6c"; - case 38: // U - return "\x04\x4b\x70\x50\x6d"; - case 39: // V - return "\x04\x4b\x70\x50\x6e"; - case 40: // W - return "\x04\x4b\x70\x50\x6f"; - case 41: // X - return "\x04\x4b\x70\x50\x70"; - case 42: // Y - return "\x04\x4b\x70\x50\x71"; - case 43: // Z - return "\x04\x4b\x70\x50\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x70\x50\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x70\x50\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x70\x50\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x70\x50\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x70\x50\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x70\x50\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x70\x50\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x70\x50\x42\x72"; + case 9: // PLUS return "\x05\x4b\x70\x50\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x70\x50\x43"; + case 11: // MINUS + return "\x04\x4b\x70\x50\x44"; + case 12: // PERIOD + return "\x04\x4b\x70\x50\x45"; + case 13: // SLASH + return "\x04\x4b\x70\x50\x46"; + case 14: // 0 + return "\x04\x4b\x70\x50\x47"; + case 15: // 1 + return "\x04\x4b\x70\x50\x48"; + case 16: // 2 + return "\x04\x4b\x70\x50\x49"; + case 17: // 3 + return "\x04\x4b\x70\x50\x4a"; + case 18: // 4 + return "\x04\x4b\x70\x50\x4b"; + case 19: // 5 + return "\x04\x4b\x70\x50\x4c"; + case 20: // 6 + return "\x04\x4b\x70\x50\x4d"; + case 21: // 7 + return "\x04\x4b\x70\x50\x4e"; + case 22: // 8 + return "\x04\x4b\x70\x50\x4f"; + case 23: // 9 + return "\x04\x4b\x70\x50\x50"; + case 24: // COLON + return "\x05\x4b\x70\x50\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x70\x50\x51"; + case 26: // LESS + return "\x05\x4b\x70\x50\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x70\x50\x52"; + case 28: // GREATER + return "\x05\x4b\x70\x50\x42\x75"; + case 29: // AT + return "\x05\x4b\x70\x50\x42\x76"; + case 30: // A + return "\x04\x4b\x70\x50\x53"; + case 31: // B + return "\x04\x4b\x70\x50\x54"; + case 32: // C + return "\x04\x4b\x70\x50\x55"; + case 33: // D + return "\x04\x4b\x70\x50\x56"; + case 34: // E + return "\x04\x4b\x70\x50\x57"; + case 35: // F + return "\x04\x4b\x70\x50\x58"; + case 36: // G + return "\x04\x4b\x70\x50\x59"; + case 37: // H + return "\x04\x4b\x70\x50\x5a"; + case 38: // I + return "\x04\x4b\x70\x50\x61"; + case 39: // J + return "\x04\x4b\x70\x50\x62"; + case 40: // K + return "\x04\x4b\x70\x50\x63"; + case 41: // L + return "\x04\x4b\x70\x50\x64"; + case 42: // M + return "\x04\x4b\x70\x50\x65"; + case 43: // N + return "\x04\x4b\x70\x50\x66"; + case 44: // O + return "\x04\x4b\x70\x50\x67"; + case 45: // P + return "\x04\x4b\x70\x50\x68"; + case 46: // Q + return "\x04\x4b\x70\x50\x69"; + case 47: // R + return "\x04\x4b\x70\x50\x6a"; + case 48: // S + return "\x04\x4b\x70\x50\x6b"; + case 49: // T + return "\x04\x4b\x70\x50\x6c"; + case 50: // U + return "\x04\x4b\x70\x50\x6d"; + case 51: // V + return "\x04\x4b\x70\x50\x6e"; + case 52: // W + return "\x04\x4b\x70\x50\x6f"; + case 53: // X + return "\x04\x4b\x70\x50\x70"; + case 54: // Y + return "\x04\x4b\x70\x50\x71"; + case 55: // Z + return "\x04\x4b\x70\x50\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x70\x50\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x70\x50\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x70\x50\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x70\x50\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x70\x50\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x70\x50\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x70\x50\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x70\x50\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x70\x50\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x70\x50\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x70\x50\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x70\x50\x42\x30"; + case 68: // AE + return "\x05\x4b\x70\x50\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x70\x50\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x70\x50\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x70\x50\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x70\x50\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x70\x50\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x70\x50\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x70\x50\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x70\x50\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x70\x50\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x70\x50\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x70\x50\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x70\x50\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x70\x50\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x70\x50\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x70\x50\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x70\x50\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x70\x50\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x70\x50\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x70\x50\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x70\x50\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x70\x50\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x70\x50\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x70\x50\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x70\x50\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x70\x50\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x70\x50\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x70\x50\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x70\x50\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x70\x50\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x70\x50\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x70\x50\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x70\x50\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x70\x50\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x70\x50\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x70\x50\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x70\x50\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x70\x50\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x70\x50\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x70\x50\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x70\x50\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x70\x50\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x70\x50\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x70\x50\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x70\x50\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x70\x50\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x70\x50\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x70\x50\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x70\x50\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x70\x50\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x70\x50\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x70\x50\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x70\x50\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x70\x50\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x70\x50\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x70\x50\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x70\x50\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x70\x50\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x70\x50\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x70\x50\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x70\x50\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x70\x50\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x70\x50\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x70\x50\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x70\x50\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x70\x50\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x70\x50\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x70\x50\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x70\x50\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x70\x50\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x70\x50\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x70\x50\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x70\x50\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x70\x50\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x70\x50\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x70\x50\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x70\x50\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x70\x50\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x70\x50\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x70\x50\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x70\x50\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x70\x50\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x70\x50\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x70\x50\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x70\x50\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x70\x50\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x70\x50\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x70\x50\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x70\x50\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x70\x50\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x70\x50\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x70\x50\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x70\x50\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x70\x50\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x70\x50\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x70\x50\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x70\x50\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x70\x50\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x70\x50\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x70\x50\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x70\x50\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x70\x50\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x70\x50\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x70\x50\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x70\x50\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x70\x50\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x70\x50\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x70\x50\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x70\x50\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x70\x50\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x70\x50\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x70\x50\x42\x68"; } // end switch(key) } // end switch(mods) @@ -14504,3667 +17949,5359 @@ key_lookup(uint8_t key, KeyboardMode mode, uint8_t mods, uint8_t action) { case 2: // REPEAT switch (mods & 0xf) { case 0x0: - switch(key & 0x7f) { default: return NULL; - case 48: // WORLD_1 - return "\x04\x4b\x74\x41\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x74\x41\x78"; - case 50: // PLUS - return "\x05\x4b\x74\x41\x42\x69"; - case 51: // UNDERSCORE - return "\x05\x4b\x74\x41\x42\x6a"; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x04\x4b\x74\x41\x79"; - case 53: // ENTER + case 114: // ENTER return "\x01\x0d"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x74\x41\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x01\x7f"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x74\x41\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x74\x41\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x74\x41\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x74\x41\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x74\x41\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x74\x41\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x74\x41\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x74\x41\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x74\x41\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x74\x41\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x74\x41\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x74\x41\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x74\x41\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x74\x41\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x74\x41\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x74\x41\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x74\x41\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x74\x41\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x74\x41\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x74\x41\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x74\x41\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x74\x41\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x74\x41\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x74\x41\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x74\x41\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x74\x41\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x74\x41\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x74\x41\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x74\x41\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x74\x41\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x74\x41\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x74\x41\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x74\x41\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x74\x41\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x74\x41\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x74\x41\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x74\x41\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x74\x41\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x74\x41\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x74\x41\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x74\x41\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x74\x41\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x74\x41\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x74\x41\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x74\x41\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x74\x41\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x74\x41\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x74\x41\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x74\x41\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x74\x41\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x74\x41\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x74\x41\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x74\x41\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x74\x41\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x74\x41\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x74\x41\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x74\x41\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x74\x41\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x74\x41\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x74\x41\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x74\x41\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x74\x41\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x74\x41\x42\x68"; } // end switch(key) case 0x1: - switch(key & 0x7f) { default: return NULL; - case 48: // WORLD_1 - return "\x04\x4b\x74\x42\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x74\x42\x78"; - case 50: // PLUS - return "\x05\x4b\x74\x42\x42\x69"; - case 51: // UNDERSCORE - return "\x05\x4b\x74\x42\x42\x6a"; - case 52: // ESCAPE + switch(key & 0xff) { default: return NULL; + case 113: // ESCAPE return "\x04\x4b\x74\x42\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x74\x42\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x74\x42\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x74\x42\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x74\x42\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x74\x42\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x74\x42\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x74\x42\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x74\x42\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x74\x42\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x74\x42\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x74\x42\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x74\x42\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x74\x42\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x74\x42\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x74\x42\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x74\x42\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x74\x42\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x74\x42\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x74\x42\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x74\x42\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x74\x42\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x74\x42\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x74\x42\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x74\x42\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x74\x42\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x74\x42\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x74\x42\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x74\x42\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x74\x42\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x74\x42\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x74\x42\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x74\x42\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x74\x42\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x74\x42\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x74\x42\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x74\x42\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x74\x42\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x74\x42\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x74\x42\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x74\x42\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x74\x42\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x74\x42\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x74\x42\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x74\x42\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x74\x42\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x74\x42\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x74\x42\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x74\x42\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x74\x42\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x74\x42\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x74\x42\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x74\x42\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x74\x42\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x74\x42\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x74\x42\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x74\x42\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x74\x42\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x74\x42\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x74\x42\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x74\x42\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x74\x42\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x74\x42\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x74\x42\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x74\x42\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x74\x42\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x74\x42\x42\x68"; } // end switch(key) case 0x2: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x74\x45\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x74\x45\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x74\x45\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x74\x45\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x74\x45\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x74\x45\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x74\x45\x42"; - case 2: // COMMA - return "\x04\x4b\x74\x45\x43"; - case 3: // MINUS - return "\x04\x4b\x74\x45\x44"; - case 4: // PERIOD - return "\x04\x4b\x74\x45\x45"; - case 5: // SLASH - return "\x04\x4b\x74\x45\x46"; - case 6: // 0 - return "\x04\x4b\x74\x45\x47"; - case 7: // 1 - return "\x04\x4b\x74\x45\x48"; - case 8: // 2 - return "\x04\x4b\x74\x45\x49"; - case 9: // 3 - return "\x04\x4b\x74\x45\x4a"; - case 10: // 4 - return "\x04\x4b\x74\x45\x4b"; - case 11: // 5 - return "\x04\x4b\x74\x45\x4c"; - case 12: // 6 - return "\x04\x4b\x74\x45\x4d"; - case 13: // 7 - return "\x04\x4b\x74\x45\x4e"; - case 14: // 8 - return "\x04\x4b\x74\x45\x4f"; - case 15: // 9 - return "\x04\x4b\x74\x45\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x74\x45\x51"; - case 17: // EQUAL - return "\x04\x4b\x74\x45\x52"; - case 18: // A - return "\x04\x4b\x74\x45\x53"; - case 19: // B - return "\x04\x4b\x74\x45\x54"; - case 20: // C - return "\x04\x4b\x74\x45\x55"; - case 21: // D - return "\x04\x4b\x74\x45\x56"; - case 22: // E - return "\x04\x4b\x74\x45\x57"; - case 23: // F - return "\x04\x4b\x74\x45\x58"; - case 24: // G - return "\x04\x4b\x74\x45\x59"; - case 25: // H - return "\x04\x4b\x74\x45\x5a"; - case 26: // I - return "\x04\x4b\x74\x45\x61"; - case 27: // J - return "\x04\x4b\x74\x45\x62"; - case 28: // K - return "\x04\x4b\x74\x45\x63"; - case 29: // L - return "\x04\x4b\x74\x45\x64"; - case 30: // M - return "\x04\x4b\x74\x45\x65"; - case 31: // N - return "\x04\x4b\x74\x45\x66"; - case 32: // O - return "\x04\x4b\x74\x45\x67"; - case 33: // P - return "\x04\x4b\x74\x45\x68"; - case 34: // Q - return "\x04\x4b\x74\x45\x69"; - case 35: // R - return "\x04\x4b\x74\x45\x6a"; - case 36: // S - return "\x04\x4b\x74\x45\x6b"; - case 37: // T - return "\x04\x4b\x74\x45\x6c"; - case 38: // U - return "\x04\x4b\x74\x45\x6d"; - case 39: // V - return "\x04\x4b\x74\x45\x6e"; - case 40: // W - return "\x04\x4b\x74\x45\x6f"; - case 41: // X - return "\x04\x4b\x74\x45\x70"; - case 42: // Y - return "\x04\x4b\x74\x45\x71"; - case 43: // Z - return "\x04\x4b\x74\x45\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x74\x45\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x74\x45\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x74\x45\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x74\x45\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x74\x45\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x74\x45\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x74\x45\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x74\x45\x42\x72"; + case 9: // PLUS return "\x05\x4b\x74\x45\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x74\x45\x43"; + case 11: // MINUS + return "\x04\x4b\x74\x45\x44"; + case 12: // PERIOD + return "\x04\x4b\x74\x45\x45"; + case 13: // SLASH + return "\x04\x4b\x74\x45\x46"; + case 14: // 0 + return "\x04\x4b\x74\x45\x47"; + case 15: // 1 + return "\x04\x4b\x74\x45\x48"; + case 16: // 2 + return "\x04\x4b\x74\x45\x49"; + case 17: // 3 + return "\x04\x4b\x74\x45\x4a"; + case 18: // 4 + return "\x04\x4b\x74\x45\x4b"; + case 19: // 5 + return "\x04\x4b\x74\x45\x4c"; + case 20: // 6 + return "\x04\x4b\x74\x45\x4d"; + case 21: // 7 + return "\x04\x4b\x74\x45\x4e"; + case 22: // 8 + return "\x04\x4b\x74\x45\x4f"; + case 23: // 9 + return "\x04\x4b\x74\x45\x50"; + case 24: // COLON + return "\x05\x4b\x74\x45\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x74\x45\x51"; + case 26: // LESS + return "\x05\x4b\x74\x45\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x74\x45\x52"; + case 28: // GREATER + return "\x05\x4b\x74\x45\x42\x75"; + case 29: // AT + return "\x05\x4b\x74\x45\x42\x76"; + case 30: // A + return "\x04\x4b\x74\x45\x53"; + case 31: // B + return "\x04\x4b\x74\x45\x54"; + case 32: // C + return "\x04\x4b\x74\x45\x55"; + case 33: // D + return "\x04\x4b\x74\x45\x56"; + case 34: // E + return "\x04\x4b\x74\x45\x57"; + case 35: // F + return "\x04\x4b\x74\x45\x58"; + case 36: // G + return "\x04\x4b\x74\x45\x59"; + case 37: // H + return "\x04\x4b\x74\x45\x5a"; + case 38: // I + return "\x04\x4b\x74\x45\x61"; + case 39: // J + return "\x04\x4b\x74\x45\x62"; + case 40: // K + return "\x04\x4b\x74\x45\x63"; + case 41: // L + return "\x04\x4b\x74\x45\x64"; + case 42: // M + return "\x04\x4b\x74\x45\x65"; + case 43: // N + return "\x04\x4b\x74\x45\x66"; + case 44: // O + return "\x04\x4b\x74\x45\x67"; + case 45: // P + return "\x04\x4b\x74\x45\x68"; + case 46: // Q + return "\x04\x4b\x74\x45\x69"; + case 47: // R + return "\x04\x4b\x74\x45\x6a"; + case 48: // S + return "\x04\x4b\x74\x45\x6b"; + case 49: // T + return "\x04\x4b\x74\x45\x6c"; + case 50: // U + return "\x04\x4b\x74\x45\x6d"; + case 51: // V + return "\x04\x4b\x74\x45\x6e"; + case 52: // W + return "\x04\x4b\x74\x45\x6f"; + case 53: // X + return "\x04\x4b\x74\x45\x70"; + case 54: // Y + return "\x04\x4b\x74\x45\x71"; + case 55: // Z + return "\x04\x4b\x74\x45\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x74\x45\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x74\x45\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x74\x45\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x74\x45\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x74\x45\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x74\x45\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x74\x45\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x74\x45\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x74\x45\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x74\x45\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x74\x45\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x74\x45\x42\x30"; + case 68: // AE + return "\x05\x4b\x74\x45\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x74\x45\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x74\x45\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x74\x45\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x74\x45\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x74\x45\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x74\x45\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x74\x45\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x74\x45\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x74\x45\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x74\x45\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x74\x45\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x74\x45\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x74\x45\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x74\x45\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x74\x45\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x74\x45\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x74\x45\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x74\x45\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x74\x45\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x74\x45\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x74\x45\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x74\x45\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x74\x45\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x74\x45\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x74\x45\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x74\x45\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x74\x45\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x74\x45\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x74\x45\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x74\x45\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x74\x45\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x74\x45\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x74\x45\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x74\x45\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x74\x45\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x74\x45\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x74\x45\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x74\x45\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x74\x45\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x74\x45\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x74\x45\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x74\x45\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x74\x45\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x74\x45\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x74\x45\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x74\x45\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x74\x45\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x74\x45\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x74\x45\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x74\x45\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x74\x45\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x74\x45\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x74\x45\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x74\x45\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x74\x45\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x74\x45\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x74\x45\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x74\x45\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x74\x45\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x74\x45\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x74\x45\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x74\x45\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x74\x45\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x74\x45\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x74\x45\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x74\x45\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x74\x45\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x74\x45\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x74\x45\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x74\x45\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x74\x45\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x74\x45\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x74\x45\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x74\x45\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x74\x45\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x74\x45\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x74\x45\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x74\x45\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x74\x45\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x74\x45\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x74\x45\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x74\x45\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x74\x45\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x74\x45\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x74\x45\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x74\x45\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x74\x45\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x74\x45\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x74\x45\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x74\x45\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x74\x45\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x74\x45\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x74\x45\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x74\x45\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x74\x45\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x74\x45\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x74\x45\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x74\x45\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x74\x45\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x74\x45\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x74\x45\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x74\x45\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x74\x45\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x74\x45\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x74\x45\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x74\x45\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x74\x45\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x74\x45\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x74\x45\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x74\x45\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x74\x45\x42\x68"; } // end switch(key) case 0x3: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x74\x46\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x74\x46\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x74\x46\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x74\x46\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x74\x46\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x74\x46\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x74\x46\x42"; - case 2: // COMMA - return "\x04\x4b\x74\x46\x43"; - case 3: // MINUS - return "\x04\x4b\x74\x46\x44"; - case 4: // PERIOD - return "\x04\x4b\x74\x46\x45"; - case 5: // SLASH - return "\x04\x4b\x74\x46\x46"; - case 6: // 0 - return "\x04\x4b\x74\x46\x47"; - case 7: // 1 - return "\x04\x4b\x74\x46\x48"; - case 8: // 2 - return "\x04\x4b\x74\x46\x49"; - case 9: // 3 - return "\x04\x4b\x74\x46\x4a"; - case 10: // 4 - return "\x04\x4b\x74\x46\x4b"; - case 11: // 5 - return "\x04\x4b\x74\x46\x4c"; - case 12: // 6 - return "\x04\x4b\x74\x46\x4d"; - case 13: // 7 - return "\x04\x4b\x74\x46\x4e"; - case 14: // 8 - return "\x04\x4b\x74\x46\x4f"; - case 15: // 9 - return "\x04\x4b\x74\x46\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x74\x46\x51"; - case 17: // EQUAL - return "\x04\x4b\x74\x46\x52"; - case 18: // A - return "\x04\x4b\x74\x46\x53"; - case 19: // B - return "\x04\x4b\x74\x46\x54"; - case 20: // C - return "\x04\x4b\x74\x46\x55"; - case 21: // D - return "\x04\x4b\x74\x46\x56"; - case 22: // E - return "\x04\x4b\x74\x46\x57"; - case 23: // F - return "\x04\x4b\x74\x46\x58"; - case 24: // G - return "\x04\x4b\x74\x46\x59"; - case 25: // H - return "\x04\x4b\x74\x46\x5a"; - case 26: // I - return "\x04\x4b\x74\x46\x61"; - case 27: // J - return "\x04\x4b\x74\x46\x62"; - case 28: // K - return "\x04\x4b\x74\x46\x63"; - case 29: // L - return "\x04\x4b\x74\x46\x64"; - case 30: // M - return "\x04\x4b\x74\x46\x65"; - case 31: // N - return "\x04\x4b\x74\x46\x66"; - case 32: // O - return "\x04\x4b\x74\x46\x67"; - case 33: // P - return "\x04\x4b\x74\x46\x68"; - case 34: // Q - return "\x04\x4b\x74\x46\x69"; - case 35: // R - return "\x04\x4b\x74\x46\x6a"; - case 36: // S - return "\x04\x4b\x74\x46\x6b"; - case 37: // T - return "\x04\x4b\x74\x46\x6c"; - case 38: // U - return "\x04\x4b\x74\x46\x6d"; - case 39: // V - return "\x04\x4b\x74\x46\x6e"; - case 40: // W - return "\x04\x4b\x74\x46\x6f"; - case 41: // X - return "\x04\x4b\x74\x46\x70"; - case 42: // Y - return "\x04\x4b\x74\x46\x71"; - case 43: // Z - return "\x04\x4b\x74\x46\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x74\x46\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x74\x46\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x74\x46\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x74\x46\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x74\x46\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x74\x46\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x74\x46\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x74\x46\x42\x72"; + case 9: // PLUS return "\x05\x4b\x74\x46\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x74\x46\x43"; + case 11: // MINUS + return "\x04\x4b\x74\x46\x44"; + case 12: // PERIOD + return "\x04\x4b\x74\x46\x45"; + case 13: // SLASH + return "\x04\x4b\x74\x46\x46"; + case 14: // 0 + return "\x04\x4b\x74\x46\x47"; + case 15: // 1 + return "\x04\x4b\x74\x46\x48"; + case 16: // 2 + return "\x04\x4b\x74\x46\x49"; + case 17: // 3 + return "\x04\x4b\x74\x46\x4a"; + case 18: // 4 + return "\x04\x4b\x74\x46\x4b"; + case 19: // 5 + return "\x04\x4b\x74\x46\x4c"; + case 20: // 6 + return "\x04\x4b\x74\x46\x4d"; + case 21: // 7 + return "\x04\x4b\x74\x46\x4e"; + case 22: // 8 + return "\x04\x4b\x74\x46\x4f"; + case 23: // 9 + return "\x04\x4b\x74\x46\x50"; + case 24: // COLON + return "\x05\x4b\x74\x46\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x74\x46\x51"; + case 26: // LESS + return "\x05\x4b\x74\x46\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x74\x46\x52"; + case 28: // GREATER + return "\x05\x4b\x74\x46\x42\x75"; + case 29: // AT + return "\x05\x4b\x74\x46\x42\x76"; + case 30: // A + return "\x04\x4b\x74\x46\x53"; + case 31: // B + return "\x04\x4b\x74\x46\x54"; + case 32: // C + return "\x04\x4b\x74\x46\x55"; + case 33: // D + return "\x04\x4b\x74\x46\x56"; + case 34: // E + return "\x04\x4b\x74\x46\x57"; + case 35: // F + return "\x04\x4b\x74\x46\x58"; + case 36: // G + return "\x04\x4b\x74\x46\x59"; + case 37: // H + return "\x04\x4b\x74\x46\x5a"; + case 38: // I + return "\x04\x4b\x74\x46\x61"; + case 39: // J + return "\x04\x4b\x74\x46\x62"; + case 40: // K + return "\x04\x4b\x74\x46\x63"; + case 41: // L + return "\x04\x4b\x74\x46\x64"; + case 42: // M + return "\x04\x4b\x74\x46\x65"; + case 43: // N + return "\x04\x4b\x74\x46\x66"; + case 44: // O + return "\x04\x4b\x74\x46\x67"; + case 45: // P + return "\x04\x4b\x74\x46\x68"; + case 46: // Q + return "\x04\x4b\x74\x46\x69"; + case 47: // R + return "\x04\x4b\x74\x46\x6a"; + case 48: // S + return "\x04\x4b\x74\x46\x6b"; + case 49: // T + return "\x04\x4b\x74\x46\x6c"; + case 50: // U + return "\x04\x4b\x74\x46\x6d"; + case 51: // V + return "\x04\x4b\x74\x46\x6e"; + case 52: // W + return "\x04\x4b\x74\x46\x6f"; + case 53: // X + return "\x04\x4b\x74\x46\x70"; + case 54: // Y + return "\x04\x4b\x74\x46\x71"; + case 55: // Z + return "\x04\x4b\x74\x46\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x74\x46\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x74\x46\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x74\x46\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x74\x46\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x74\x46\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x74\x46\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x74\x46\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x74\x46\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x74\x46\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x74\x46\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x74\x46\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x74\x46\x42\x30"; + case 68: // AE + return "\x05\x4b\x74\x46\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x74\x46\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x74\x46\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x74\x46\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x74\x46\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x74\x46\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x74\x46\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x74\x46\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x74\x46\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x74\x46\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x74\x46\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x74\x46\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x74\x46\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x74\x46\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x74\x46\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x74\x46\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x74\x46\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x74\x46\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x74\x46\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x74\x46\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x74\x46\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x74\x46\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x74\x46\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x74\x46\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x74\x46\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x74\x46\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x74\x46\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x74\x46\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x74\x46\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x74\x46\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x74\x46\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x74\x46\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x74\x46\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x74\x46\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x74\x46\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x74\x46\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x74\x46\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x74\x46\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x74\x46\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x74\x46\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x74\x46\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x74\x46\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x74\x46\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x74\x46\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x74\x46\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x74\x46\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x74\x46\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x74\x46\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x74\x46\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x74\x46\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x74\x46\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x74\x46\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x74\x46\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x74\x46\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x74\x46\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x74\x46\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x74\x46\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x74\x46\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x74\x46\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x74\x46\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x74\x46\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x74\x46\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x74\x46\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x74\x46\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x74\x46\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x74\x46\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x74\x46\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x74\x46\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x74\x46\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x74\x46\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x74\x46\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x74\x46\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x74\x46\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x74\x46\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x74\x46\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x74\x46\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x74\x46\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x74\x46\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x74\x46\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x74\x46\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x74\x46\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x74\x46\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x74\x46\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x74\x46\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x74\x46\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x74\x46\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x74\x46\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x74\x46\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x74\x46\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x74\x46\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x74\x46\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x74\x46\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x74\x46\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x74\x46\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x74\x46\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x74\x46\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x74\x46\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x74\x46\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x74\x46\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x74\x46\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x74\x46\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x74\x46\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x74\x46\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x74\x46\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x74\x46\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x74\x46\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x74\x46\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x74\x46\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x74\x46\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x74\x46\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x74\x46\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x74\x46\x42\x68"; } // end switch(key) case 0x4: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x74\x43\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x74\x43\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x74\x43\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x74\x43\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x74\x43\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x74\x43\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x74\x43\x42"; - case 2: // COMMA - return "\x04\x4b\x74\x43\x43"; - case 3: // MINUS - return "\x04\x4b\x74\x43\x44"; - case 4: // PERIOD - return "\x04\x4b\x74\x43\x45"; - case 5: // SLASH - return "\x04\x4b\x74\x43\x46"; - case 6: // 0 - return "\x04\x4b\x74\x43\x47"; - case 7: // 1 - return "\x04\x4b\x74\x43\x48"; - case 8: // 2 - return "\x04\x4b\x74\x43\x49"; - case 9: // 3 - return "\x04\x4b\x74\x43\x4a"; - case 10: // 4 - return "\x04\x4b\x74\x43\x4b"; - case 11: // 5 - return "\x04\x4b\x74\x43\x4c"; - case 12: // 6 - return "\x04\x4b\x74\x43\x4d"; - case 13: // 7 - return "\x04\x4b\x74\x43\x4e"; - case 14: // 8 - return "\x04\x4b\x74\x43\x4f"; - case 15: // 9 - return "\x04\x4b\x74\x43\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x74\x43\x51"; - case 17: // EQUAL - return "\x04\x4b\x74\x43\x52"; - case 18: // A - return "\x04\x4b\x74\x43\x53"; - case 19: // B - return "\x04\x4b\x74\x43\x54"; - case 20: // C - return "\x04\x4b\x74\x43\x55"; - case 21: // D - return "\x04\x4b\x74\x43\x56"; - case 22: // E - return "\x04\x4b\x74\x43\x57"; - case 23: // F - return "\x04\x4b\x74\x43\x58"; - case 24: // G - return "\x04\x4b\x74\x43\x59"; - case 25: // H - return "\x04\x4b\x74\x43\x5a"; - case 26: // I - return "\x04\x4b\x74\x43\x61"; - case 27: // J - return "\x04\x4b\x74\x43\x62"; - case 28: // K - return "\x04\x4b\x74\x43\x63"; - case 29: // L - return "\x04\x4b\x74\x43\x64"; - case 30: // M - return "\x04\x4b\x74\x43\x65"; - case 31: // N - return "\x04\x4b\x74\x43\x66"; - case 32: // O - return "\x04\x4b\x74\x43\x67"; - case 33: // P - return "\x04\x4b\x74\x43\x68"; - case 34: // Q - return "\x04\x4b\x74\x43\x69"; - case 35: // R - return "\x04\x4b\x74\x43\x6a"; - case 36: // S - return "\x04\x4b\x74\x43\x6b"; - case 37: // T - return "\x04\x4b\x74\x43\x6c"; - case 38: // U - return "\x04\x4b\x74\x43\x6d"; - case 39: // V - return "\x04\x4b\x74\x43\x6e"; - case 40: // W - return "\x04\x4b\x74\x43\x6f"; - case 41: // X - return "\x04\x4b\x74\x43\x70"; - case 42: // Y - return "\x04\x4b\x74\x43\x71"; - case 43: // Z - return "\x04\x4b\x74\x43\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x74\x43\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x74\x43\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x74\x43\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x74\x43\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x74\x43\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x74\x43\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x74\x43\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x74\x43\x42\x72"; + case 9: // PLUS return "\x05\x4b\x74\x43\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x74\x43\x43"; + case 11: // MINUS + return "\x04\x4b\x74\x43\x44"; + case 12: // PERIOD + return "\x04\x4b\x74\x43\x45"; + case 13: // SLASH + return "\x04\x4b\x74\x43\x46"; + case 14: // 0 + return "\x04\x4b\x74\x43\x47"; + case 15: // 1 + return "\x04\x4b\x74\x43\x48"; + case 16: // 2 + return "\x04\x4b\x74\x43\x49"; + case 17: // 3 + return "\x04\x4b\x74\x43\x4a"; + case 18: // 4 + return "\x04\x4b\x74\x43\x4b"; + case 19: // 5 + return "\x04\x4b\x74\x43\x4c"; + case 20: // 6 + return "\x04\x4b\x74\x43\x4d"; + case 21: // 7 + return "\x04\x4b\x74\x43\x4e"; + case 22: // 8 + return "\x04\x4b\x74\x43\x4f"; + case 23: // 9 + return "\x04\x4b\x74\x43\x50"; + case 24: // COLON + return "\x05\x4b\x74\x43\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x74\x43\x51"; + case 26: // LESS + return "\x05\x4b\x74\x43\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x74\x43\x52"; + case 28: // GREATER + return "\x05\x4b\x74\x43\x42\x75"; + case 29: // AT + return "\x05\x4b\x74\x43\x42\x76"; + case 30: // A + return "\x04\x4b\x74\x43\x53"; + case 31: // B + return "\x04\x4b\x74\x43\x54"; + case 32: // C + return "\x04\x4b\x74\x43\x55"; + case 33: // D + return "\x04\x4b\x74\x43\x56"; + case 34: // E + return "\x04\x4b\x74\x43\x57"; + case 35: // F + return "\x04\x4b\x74\x43\x58"; + case 36: // G + return "\x04\x4b\x74\x43\x59"; + case 37: // H + return "\x04\x4b\x74\x43\x5a"; + case 38: // I + return "\x04\x4b\x74\x43\x61"; + case 39: // J + return "\x04\x4b\x74\x43\x62"; + case 40: // K + return "\x04\x4b\x74\x43\x63"; + case 41: // L + return "\x04\x4b\x74\x43\x64"; + case 42: // M + return "\x04\x4b\x74\x43\x65"; + case 43: // N + return "\x04\x4b\x74\x43\x66"; + case 44: // O + return "\x04\x4b\x74\x43\x67"; + case 45: // P + return "\x04\x4b\x74\x43\x68"; + case 46: // Q + return "\x04\x4b\x74\x43\x69"; + case 47: // R + return "\x04\x4b\x74\x43\x6a"; + case 48: // S + return "\x04\x4b\x74\x43\x6b"; + case 49: // T + return "\x04\x4b\x74\x43\x6c"; + case 50: // U + return "\x04\x4b\x74\x43\x6d"; + case 51: // V + return "\x04\x4b\x74\x43\x6e"; + case 52: // W + return "\x04\x4b\x74\x43\x6f"; + case 53: // X + return "\x04\x4b\x74\x43\x70"; + case 54: // Y + return "\x04\x4b\x74\x43\x71"; + case 55: // Z + return "\x04\x4b\x74\x43\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x74\x43\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x74\x43\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x74\x43\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x74\x43\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x74\x43\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x74\x43\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x74\x43\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x74\x43\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x74\x43\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x74\x43\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x74\x43\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x74\x43\x42\x30"; + case 68: // AE + return "\x05\x4b\x74\x43\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x74\x43\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x74\x43\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x74\x43\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x74\x43\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x74\x43\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x74\x43\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x74\x43\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x74\x43\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x74\x43\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x74\x43\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x74\x43\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x74\x43\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x74\x43\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x74\x43\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x74\x43\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x74\x43\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x74\x43\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x74\x43\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x74\x43\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x74\x43\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x74\x43\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x74\x43\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x74\x43\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x74\x43\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x74\x43\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x74\x43\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x74\x43\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x74\x43\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x74\x43\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x74\x43\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x74\x43\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x74\x43\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x74\x43\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x74\x43\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x74\x43\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x74\x43\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x74\x43\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x74\x43\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x74\x43\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x74\x43\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x74\x43\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x74\x43\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x74\x43\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x74\x43\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x74\x43\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x74\x43\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x74\x43\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x74\x43\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x74\x43\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x74\x43\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x74\x43\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x74\x43\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x74\x43\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x74\x43\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x74\x43\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x74\x43\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x74\x43\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x74\x43\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x74\x43\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x74\x43\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x74\x43\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x74\x43\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x74\x43\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x74\x43\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x74\x43\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x74\x43\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x74\x43\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x74\x43\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x74\x43\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x74\x43\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x74\x43\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x74\x43\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x74\x43\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x74\x43\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x74\x43\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x74\x43\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x74\x43\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x74\x43\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x74\x43\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x74\x43\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x74\x43\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x74\x43\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x74\x43\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x74\x43\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x74\x43\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x74\x43\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x74\x43\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x74\x43\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x74\x43\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x74\x43\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x74\x43\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x74\x43\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x74\x43\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x74\x43\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x74\x43\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x74\x43\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x74\x43\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x74\x43\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x74\x43\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x74\x43\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x74\x43\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x74\x43\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x74\x43\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x74\x43\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x74\x43\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x74\x43\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x74\x43\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x74\x43\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x74\x43\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x74\x43\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x74\x43\x42\x68"; } // end switch(key) case 0x5: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x74\x44\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x74\x44\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x74\x44\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x74\x44\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x74\x44\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x74\x44\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x74\x44\x42"; - case 2: // COMMA - return "\x04\x4b\x74\x44\x43"; - case 3: // MINUS - return "\x04\x4b\x74\x44\x44"; - case 4: // PERIOD - return "\x04\x4b\x74\x44\x45"; - case 5: // SLASH - return "\x04\x4b\x74\x44\x46"; - case 6: // 0 - return "\x04\x4b\x74\x44\x47"; - case 7: // 1 - return "\x04\x4b\x74\x44\x48"; - case 8: // 2 - return "\x04\x4b\x74\x44\x49"; - case 9: // 3 - return "\x04\x4b\x74\x44\x4a"; - case 10: // 4 - return "\x04\x4b\x74\x44\x4b"; - case 11: // 5 - return "\x04\x4b\x74\x44\x4c"; - case 12: // 6 - return "\x04\x4b\x74\x44\x4d"; - case 13: // 7 - return "\x04\x4b\x74\x44\x4e"; - case 14: // 8 - return "\x04\x4b\x74\x44\x4f"; - case 15: // 9 - return "\x04\x4b\x74\x44\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x74\x44\x51"; - case 17: // EQUAL - return "\x04\x4b\x74\x44\x52"; - case 18: // A - return "\x04\x4b\x74\x44\x53"; - case 19: // B - return "\x04\x4b\x74\x44\x54"; - case 20: // C - return "\x04\x4b\x74\x44\x55"; - case 21: // D - return "\x04\x4b\x74\x44\x56"; - case 22: // E - return "\x04\x4b\x74\x44\x57"; - case 23: // F - return "\x04\x4b\x74\x44\x58"; - case 24: // G - return "\x04\x4b\x74\x44\x59"; - case 25: // H - return "\x04\x4b\x74\x44\x5a"; - case 26: // I - return "\x04\x4b\x74\x44\x61"; - case 27: // J - return "\x04\x4b\x74\x44\x62"; - case 28: // K - return "\x04\x4b\x74\x44\x63"; - case 29: // L - return "\x04\x4b\x74\x44\x64"; - case 30: // M - return "\x04\x4b\x74\x44\x65"; - case 31: // N - return "\x04\x4b\x74\x44\x66"; - case 32: // O - return "\x04\x4b\x74\x44\x67"; - case 33: // P - return "\x04\x4b\x74\x44\x68"; - case 34: // Q - return "\x04\x4b\x74\x44\x69"; - case 35: // R - return "\x04\x4b\x74\x44\x6a"; - case 36: // S - return "\x04\x4b\x74\x44\x6b"; - case 37: // T - return "\x04\x4b\x74\x44\x6c"; - case 38: // U - return "\x04\x4b\x74\x44\x6d"; - case 39: // V - return "\x04\x4b\x74\x44\x6e"; - case 40: // W - return "\x04\x4b\x74\x44\x6f"; - case 41: // X - return "\x04\x4b\x74\x44\x70"; - case 42: // Y - return "\x04\x4b\x74\x44\x71"; - case 43: // Z - return "\x04\x4b\x74\x44\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x74\x44\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x74\x44\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x74\x44\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x74\x44\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x74\x44\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x74\x44\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x74\x44\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x74\x44\x42\x72"; + case 9: // PLUS return "\x05\x4b\x74\x44\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x74\x44\x43"; + case 11: // MINUS + return "\x04\x4b\x74\x44\x44"; + case 12: // PERIOD + return "\x04\x4b\x74\x44\x45"; + case 13: // SLASH + return "\x04\x4b\x74\x44\x46"; + case 14: // 0 + return "\x04\x4b\x74\x44\x47"; + case 15: // 1 + return "\x04\x4b\x74\x44\x48"; + case 16: // 2 + return "\x04\x4b\x74\x44\x49"; + case 17: // 3 + return "\x04\x4b\x74\x44\x4a"; + case 18: // 4 + return "\x04\x4b\x74\x44\x4b"; + case 19: // 5 + return "\x04\x4b\x74\x44\x4c"; + case 20: // 6 + return "\x04\x4b\x74\x44\x4d"; + case 21: // 7 + return "\x04\x4b\x74\x44\x4e"; + case 22: // 8 + return "\x04\x4b\x74\x44\x4f"; + case 23: // 9 + return "\x04\x4b\x74\x44\x50"; + case 24: // COLON + return "\x05\x4b\x74\x44\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x74\x44\x51"; + case 26: // LESS + return "\x05\x4b\x74\x44\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x74\x44\x52"; + case 28: // GREATER + return "\x05\x4b\x74\x44\x42\x75"; + case 29: // AT + return "\x05\x4b\x74\x44\x42\x76"; + case 30: // A + return "\x04\x4b\x74\x44\x53"; + case 31: // B + return "\x04\x4b\x74\x44\x54"; + case 32: // C + return "\x04\x4b\x74\x44\x55"; + case 33: // D + return "\x04\x4b\x74\x44\x56"; + case 34: // E + return "\x04\x4b\x74\x44\x57"; + case 35: // F + return "\x04\x4b\x74\x44\x58"; + case 36: // G + return "\x04\x4b\x74\x44\x59"; + case 37: // H + return "\x04\x4b\x74\x44\x5a"; + case 38: // I + return "\x04\x4b\x74\x44\x61"; + case 39: // J + return "\x04\x4b\x74\x44\x62"; + case 40: // K + return "\x04\x4b\x74\x44\x63"; + case 41: // L + return "\x04\x4b\x74\x44\x64"; + case 42: // M + return "\x04\x4b\x74\x44\x65"; + case 43: // N + return "\x04\x4b\x74\x44\x66"; + case 44: // O + return "\x04\x4b\x74\x44\x67"; + case 45: // P + return "\x04\x4b\x74\x44\x68"; + case 46: // Q + return "\x04\x4b\x74\x44\x69"; + case 47: // R + return "\x04\x4b\x74\x44\x6a"; + case 48: // S + return "\x04\x4b\x74\x44\x6b"; + case 49: // T + return "\x04\x4b\x74\x44\x6c"; + case 50: // U + return "\x04\x4b\x74\x44\x6d"; + case 51: // V + return "\x04\x4b\x74\x44\x6e"; + case 52: // W + return "\x04\x4b\x74\x44\x6f"; + case 53: // X + return "\x04\x4b\x74\x44\x70"; + case 54: // Y + return "\x04\x4b\x74\x44\x71"; + case 55: // Z + return "\x04\x4b\x74\x44\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x74\x44\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x74\x44\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x74\x44\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x74\x44\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x74\x44\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x74\x44\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x74\x44\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x74\x44\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x74\x44\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x74\x44\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x74\x44\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x74\x44\x42\x30"; + case 68: // AE + return "\x05\x4b\x74\x44\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x74\x44\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x74\x44\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x74\x44\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x74\x44\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x74\x44\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x74\x44\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x74\x44\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x74\x44\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x74\x44\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x74\x44\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x74\x44\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x74\x44\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x74\x44\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x74\x44\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x74\x44\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x74\x44\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x74\x44\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x74\x44\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x74\x44\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x74\x44\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x74\x44\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x74\x44\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x74\x44\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x74\x44\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x74\x44\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x74\x44\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x74\x44\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x74\x44\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x74\x44\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x74\x44\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x74\x44\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x74\x44\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x74\x44\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x74\x44\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x74\x44\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x74\x44\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x74\x44\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x74\x44\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x74\x44\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x74\x44\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x74\x44\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x74\x44\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x74\x44\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x74\x44\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x74\x44\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x74\x44\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x74\x44\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x74\x44\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x74\x44\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x74\x44\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x74\x44\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x74\x44\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x74\x44\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x74\x44\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x74\x44\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x74\x44\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x74\x44\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x74\x44\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x74\x44\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x74\x44\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x74\x44\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x74\x44\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x74\x44\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x74\x44\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x74\x44\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x74\x44\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x74\x44\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x74\x44\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x74\x44\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x74\x44\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x74\x44\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x74\x44\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x74\x44\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x74\x44\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x74\x44\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x74\x44\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x74\x44\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x74\x44\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x74\x44\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x74\x44\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x74\x44\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x74\x44\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x74\x44\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x74\x44\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x74\x44\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x74\x44\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x74\x44\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x74\x44\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x74\x44\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x74\x44\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x74\x44\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x74\x44\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x74\x44\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x74\x44\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x74\x44\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x74\x44\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x74\x44\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x74\x44\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x74\x44\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x74\x44\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x74\x44\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x74\x44\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x74\x44\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x74\x44\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x74\x44\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x74\x44\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x74\x44\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x74\x44\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x74\x44\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x74\x44\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x74\x44\x42\x68"; } // end switch(key) case 0x6: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x74\x47\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x74\x47\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x74\x47\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x74\x47\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x74\x47\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x74\x47\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x74\x47\x42"; - case 2: // COMMA - return "\x04\x4b\x74\x47\x43"; - case 3: // MINUS - return "\x04\x4b\x74\x47\x44"; - case 4: // PERIOD - return "\x04\x4b\x74\x47\x45"; - case 5: // SLASH - return "\x04\x4b\x74\x47\x46"; - case 6: // 0 - return "\x04\x4b\x74\x47\x47"; - case 7: // 1 - return "\x04\x4b\x74\x47\x48"; - case 8: // 2 - return "\x04\x4b\x74\x47\x49"; - case 9: // 3 - return "\x04\x4b\x74\x47\x4a"; - case 10: // 4 - return "\x04\x4b\x74\x47\x4b"; - case 11: // 5 - return "\x04\x4b\x74\x47\x4c"; - case 12: // 6 - return "\x04\x4b\x74\x47\x4d"; - case 13: // 7 - return "\x04\x4b\x74\x47\x4e"; - case 14: // 8 - return "\x04\x4b\x74\x47\x4f"; - case 15: // 9 - return "\x04\x4b\x74\x47\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x74\x47\x51"; - case 17: // EQUAL - return "\x04\x4b\x74\x47\x52"; - case 18: // A - return "\x04\x4b\x74\x47\x53"; - case 19: // B - return "\x04\x4b\x74\x47\x54"; - case 20: // C - return "\x04\x4b\x74\x47\x55"; - case 21: // D - return "\x04\x4b\x74\x47\x56"; - case 22: // E - return "\x04\x4b\x74\x47\x57"; - case 23: // F - return "\x04\x4b\x74\x47\x58"; - case 24: // G - return "\x04\x4b\x74\x47\x59"; - case 25: // H - return "\x04\x4b\x74\x47\x5a"; - case 26: // I - return "\x04\x4b\x74\x47\x61"; - case 27: // J - return "\x04\x4b\x74\x47\x62"; - case 28: // K - return "\x04\x4b\x74\x47\x63"; - case 29: // L - return "\x04\x4b\x74\x47\x64"; - case 30: // M - return "\x04\x4b\x74\x47\x65"; - case 31: // N - return "\x04\x4b\x74\x47\x66"; - case 32: // O - return "\x04\x4b\x74\x47\x67"; - case 33: // P - return "\x04\x4b\x74\x47\x68"; - case 34: // Q - return "\x04\x4b\x74\x47\x69"; - case 35: // R - return "\x04\x4b\x74\x47\x6a"; - case 36: // S - return "\x04\x4b\x74\x47\x6b"; - case 37: // T - return "\x04\x4b\x74\x47\x6c"; - case 38: // U - return "\x04\x4b\x74\x47\x6d"; - case 39: // V - return "\x04\x4b\x74\x47\x6e"; - case 40: // W - return "\x04\x4b\x74\x47\x6f"; - case 41: // X - return "\x04\x4b\x74\x47\x70"; - case 42: // Y - return "\x04\x4b\x74\x47\x71"; - case 43: // Z - return "\x04\x4b\x74\x47\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x74\x47\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x74\x47\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x74\x47\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x74\x47\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x74\x47\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x74\x47\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x74\x47\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x74\x47\x42\x72"; + case 9: // PLUS return "\x05\x4b\x74\x47\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x74\x47\x43"; + case 11: // MINUS + return "\x04\x4b\x74\x47\x44"; + case 12: // PERIOD + return "\x04\x4b\x74\x47\x45"; + case 13: // SLASH + return "\x04\x4b\x74\x47\x46"; + case 14: // 0 + return "\x04\x4b\x74\x47\x47"; + case 15: // 1 + return "\x04\x4b\x74\x47\x48"; + case 16: // 2 + return "\x04\x4b\x74\x47\x49"; + case 17: // 3 + return "\x04\x4b\x74\x47\x4a"; + case 18: // 4 + return "\x04\x4b\x74\x47\x4b"; + case 19: // 5 + return "\x04\x4b\x74\x47\x4c"; + case 20: // 6 + return "\x04\x4b\x74\x47\x4d"; + case 21: // 7 + return "\x04\x4b\x74\x47\x4e"; + case 22: // 8 + return "\x04\x4b\x74\x47\x4f"; + case 23: // 9 + return "\x04\x4b\x74\x47\x50"; + case 24: // COLON + return "\x05\x4b\x74\x47\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x74\x47\x51"; + case 26: // LESS + return "\x05\x4b\x74\x47\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x74\x47\x52"; + case 28: // GREATER + return "\x05\x4b\x74\x47\x42\x75"; + case 29: // AT + return "\x05\x4b\x74\x47\x42\x76"; + case 30: // A + return "\x04\x4b\x74\x47\x53"; + case 31: // B + return "\x04\x4b\x74\x47\x54"; + case 32: // C + return "\x04\x4b\x74\x47\x55"; + case 33: // D + return "\x04\x4b\x74\x47\x56"; + case 34: // E + return "\x04\x4b\x74\x47\x57"; + case 35: // F + return "\x04\x4b\x74\x47\x58"; + case 36: // G + return "\x04\x4b\x74\x47\x59"; + case 37: // H + return "\x04\x4b\x74\x47\x5a"; + case 38: // I + return "\x04\x4b\x74\x47\x61"; + case 39: // J + return "\x04\x4b\x74\x47\x62"; + case 40: // K + return "\x04\x4b\x74\x47\x63"; + case 41: // L + return "\x04\x4b\x74\x47\x64"; + case 42: // M + return "\x04\x4b\x74\x47\x65"; + case 43: // N + return "\x04\x4b\x74\x47\x66"; + case 44: // O + return "\x04\x4b\x74\x47\x67"; + case 45: // P + return "\x04\x4b\x74\x47\x68"; + case 46: // Q + return "\x04\x4b\x74\x47\x69"; + case 47: // R + return "\x04\x4b\x74\x47\x6a"; + case 48: // S + return "\x04\x4b\x74\x47\x6b"; + case 49: // T + return "\x04\x4b\x74\x47\x6c"; + case 50: // U + return "\x04\x4b\x74\x47\x6d"; + case 51: // V + return "\x04\x4b\x74\x47\x6e"; + case 52: // W + return "\x04\x4b\x74\x47\x6f"; + case 53: // X + return "\x04\x4b\x74\x47\x70"; + case 54: // Y + return "\x04\x4b\x74\x47\x71"; + case 55: // Z + return "\x04\x4b\x74\x47\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x74\x47\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x74\x47\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x74\x47\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x74\x47\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x74\x47\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x74\x47\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x74\x47\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x74\x47\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x74\x47\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x74\x47\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x74\x47\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x74\x47\x42\x30"; + case 68: // AE + return "\x05\x4b\x74\x47\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x74\x47\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x74\x47\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x74\x47\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x74\x47\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x74\x47\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x74\x47\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x74\x47\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x74\x47\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x74\x47\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x74\x47\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x74\x47\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x74\x47\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x74\x47\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x74\x47\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x74\x47\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x74\x47\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x74\x47\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x74\x47\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x74\x47\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x74\x47\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x74\x47\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x74\x47\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x74\x47\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x74\x47\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x74\x47\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x74\x47\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x74\x47\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x74\x47\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x74\x47\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x74\x47\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x74\x47\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x74\x47\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x74\x47\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x74\x47\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x74\x47\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x74\x47\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x74\x47\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x74\x47\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x74\x47\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x74\x47\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x74\x47\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x74\x47\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x74\x47\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x74\x47\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x74\x47\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x74\x47\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x74\x47\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x74\x47\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x74\x47\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x74\x47\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x74\x47\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x74\x47\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x74\x47\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x74\x47\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x74\x47\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x74\x47\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x74\x47\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x74\x47\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x74\x47\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x74\x47\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x74\x47\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x74\x47\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x74\x47\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x74\x47\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x74\x47\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x74\x47\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x74\x47\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x74\x47\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x74\x47\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x74\x47\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x74\x47\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x74\x47\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x74\x47\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x74\x47\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x74\x47\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x74\x47\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x74\x47\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x74\x47\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x74\x47\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x74\x47\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x74\x47\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x74\x47\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x74\x47\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x74\x47\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x74\x47\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x74\x47\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x74\x47\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x74\x47\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x74\x47\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x74\x47\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x74\x47\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x74\x47\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x74\x47\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x74\x47\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x74\x47\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x74\x47\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x74\x47\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x74\x47\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x74\x47\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x74\x47\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x74\x47\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x74\x47\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x74\x47\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x74\x47\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x74\x47\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x74\x47\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x74\x47\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x74\x47\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x74\x47\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x74\x47\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x74\x47\x42\x68"; } // end switch(key) case 0x7: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x74\x48\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x74\x48\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x74\x48\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x74\x48\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x74\x48\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x74\x48\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x74\x48\x42"; - case 2: // COMMA - return "\x04\x4b\x74\x48\x43"; - case 3: // MINUS - return "\x04\x4b\x74\x48\x44"; - case 4: // PERIOD - return "\x04\x4b\x74\x48\x45"; - case 5: // SLASH - return "\x04\x4b\x74\x48\x46"; - case 6: // 0 - return "\x04\x4b\x74\x48\x47"; - case 7: // 1 - return "\x04\x4b\x74\x48\x48"; - case 8: // 2 - return "\x04\x4b\x74\x48\x49"; - case 9: // 3 - return "\x04\x4b\x74\x48\x4a"; - case 10: // 4 - return "\x04\x4b\x74\x48\x4b"; - case 11: // 5 - return "\x04\x4b\x74\x48\x4c"; - case 12: // 6 - return "\x04\x4b\x74\x48\x4d"; - case 13: // 7 - return "\x04\x4b\x74\x48\x4e"; - case 14: // 8 - return "\x04\x4b\x74\x48\x4f"; - case 15: // 9 - return "\x04\x4b\x74\x48\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x74\x48\x51"; - case 17: // EQUAL - return "\x04\x4b\x74\x48\x52"; - case 18: // A - return "\x04\x4b\x74\x48\x53"; - case 19: // B - return "\x04\x4b\x74\x48\x54"; - case 20: // C - return "\x04\x4b\x74\x48\x55"; - case 21: // D - return "\x04\x4b\x74\x48\x56"; - case 22: // E - return "\x04\x4b\x74\x48\x57"; - case 23: // F - return "\x04\x4b\x74\x48\x58"; - case 24: // G - return "\x04\x4b\x74\x48\x59"; - case 25: // H - return "\x04\x4b\x74\x48\x5a"; - case 26: // I - return "\x04\x4b\x74\x48\x61"; - case 27: // J - return "\x04\x4b\x74\x48\x62"; - case 28: // K - return "\x04\x4b\x74\x48\x63"; - case 29: // L - return "\x04\x4b\x74\x48\x64"; - case 30: // M - return "\x04\x4b\x74\x48\x65"; - case 31: // N - return "\x04\x4b\x74\x48\x66"; - case 32: // O - return "\x04\x4b\x74\x48\x67"; - case 33: // P - return "\x04\x4b\x74\x48\x68"; - case 34: // Q - return "\x04\x4b\x74\x48\x69"; - case 35: // R - return "\x04\x4b\x74\x48\x6a"; - case 36: // S - return "\x04\x4b\x74\x48\x6b"; - case 37: // T - return "\x04\x4b\x74\x48\x6c"; - case 38: // U - return "\x04\x4b\x74\x48\x6d"; - case 39: // V - return "\x04\x4b\x74\x48\x6e"; - case 40: // W - return "\x04\x4b\x74\x48\x6f"; - case 41: // X - return "\x04\x4b\x74\x48\x70"; - case 42: // Y - return "\x04\x4b\x74\x48\x71"; - case 43: // Z - return "\x04\x4b\x74\x48\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x74\x48\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x74\x48\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x74\x48\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x74\x48\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x74\x48\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x74\x48\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x74\x48\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x74\x48\x42\x72"; + case 9: // PLUS return "\x05\x4b\x74\x48\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x74\x48\x43"; + case 11: // MINUS + return "\x04\x4b\x74\x48\x44"; + case 12: // PERIOD + return "\x04\x4b\x74\x48\x45"; + case 13: // SLASH + return "\x04\x4b\x74\x48\x46"; + case 14: // 0 + return "\x04\x4b\x74\x48\x47"; + case 15: // 1 + return "\x04\x4b\x74\x48\x48"; + case 16: // 2 + return "\x04\x4b\x74\x48\x49"; + case 17: // 3 + return "\x04\x4b\x74\x48\x4a"; + case 18: // 4 + return "\x04\x4b\x74\x48\x4b"; + case 19: // 5 + return "\x04\x4b\x74\x48\x4c"; + case 20: // 6 + return "\x04\x4b\x74\x48\x4d"; + case 21: // 7 + return "\x04\x4b\x74\x48\x4e"; + case 22: // 8 + return "\x04\x4b\x74\x48\x4f"; + case 23: // 9 + return "\x04\x4b\x74\x48\x50"; + case 24: // COLON + return "\x05\x4b\x74\x48\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x74\x48\x51"; + case 26: // LESS + return "\x05\x4b\x74\x48\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x74\x48\x52"; + case 28: // GREATER + return "\x05\x4b\x74\x48\x42\x75"; + case 29: // AT + return "\x05\x4b\x74\x48\x42\x76"; + case 30: // A + return "\x04\x4b\x74\x48\x53"; + case 31: // B + return "\x04\x4b\x74\x48\x54"; + case 32: // C + return "\x04\x4b\x74\x48\x55"; + case 33: // D + return "\x04\x4b\x74\x48\x56"; + case 34: // E + return "\x04\x4b\x74\x48\x57"; + case 35: // F + return "\x04\x4b\x74\x48\x58"; + case 36: // G + return "\x04\x4b\x74\x48\x59"; + case 37: // H + return "\x04\x4b\x74\x48\x5a"; + case 38: // I + return "\x04\x4b\x74\x48\x61"; + case 39: // J + return "\x04\x4b\x74\x48\x62"; + case 40: // K + return "\x04\x4b\x74\x48\x63"; + case 41: // L + return "\x04\x4b\x74\x48\x64"; + case 42: // M + return "\x04\x4b\x74\x48\x65"; + case 43: // N + return "\x04\x4b\x74\x48\x66"; + case 44: // O + return "\x04\x4b\x74\x48\x67"; + case 45: // P + return "\x04\x4b\x74\x48\x68"; + case 46: // Q + return "\x04\x4b\x74\x48\x69"; + case 47: // R + return "\x04\x4b\x74\x48\x6a"; + case 48: // S + return "\x04\x4b\x74\x48\x6b"; + case 49: // T + return "\x04\x4b\x74\x48\x6c"; + case 50: // U + return "\x04\x4b\x74\x48\x6d"; + case 51: // V + return "\x04\x4b\x74\x48\x6e"; + case 52: // W + return "\x04\x4b\x74\x48\x6f"; + case 53: // X + return "\x04\x4b\x74\x48\x70"; + case 54: // Y + return "\x04\x4b\x74\x48\x71"; + case 55: // Z + return "\x04\x4b\x74\x48\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x74\x48\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x74\x48\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x74\x48\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x74\x48\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x74\x48\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x74\x48\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x74\x48\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x74\x48\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x74\x48\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x74\x48\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x74\x48\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x74\x48\x42\x30"; + case 68: // AE + return "\x05\x4b\x74\x48\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x74\x48\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x74\x48\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x74\x48\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x74\x48\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x74\x48\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x74\x48\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x74\x48\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x74\x48\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x74\x48\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x74\x48\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x74\x48\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x74\x48\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x74\x48\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x74\x48\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x74\x48\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x74\x48\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x74\x48\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x74\x48\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x74\x48\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x74\x48\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x74\x48\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x74\x48\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x74\x48\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x74\x48\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x74\x48\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x74\x48\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x74\x48\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x74\x48\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x74\x48\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x74\x48\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x74\x48\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x74\x48\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x74\x48\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x74\x48\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x74\x48\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x74\x48\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x74\x48\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x74\x48\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x74\x48\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x74\x48\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x74\x48\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x74\x48\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x74\x48\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x74\x48\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x74\x48\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x74\x48\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x74\x48\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x74\x48\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x74\x48\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x74\x48\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x74\x48\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x74\x48\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x74\x48\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x74\x48\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x74\x48\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x74\x48\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x74\x48\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x74\x48\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x74\x48\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x74\x48\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x74\x48\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x74\x48\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x74\x48\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x74\x48\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x74\x48\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x74\x48\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x74\x48\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x74\x48\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x74\x48\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x74\x48\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x74\x48\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x74\x48\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x74\x48\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x74\x48\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x74\x48\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x74\x48\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x74\x48\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x74\x48\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x74\x48\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x74\x48\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x74\x48\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x74\x48\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x74\x48\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x74\x48\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x74\x48\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x74\x48\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x74\x48\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x74\x48\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x74\x48\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x74\x48\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x74\x48\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x74\x48\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x74\x48\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x74\x48\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x74\x48\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x74\x48\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x74\x48\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x74\x48\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x74\x48\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x74\x48\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x74\x48\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x74\x48\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x74\x48\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x74\x48\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x74\x48\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x74\x48\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x74\x48\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x74\x48\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x74\x48\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x74\x48\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x74\x48\x42\x68"; } // end switch(key) case 0x8: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x74\x49\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x74\x49\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x74\x49\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x74\x49\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x74\x49\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x74\x49\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x74\x49\x42"; - case 2: // COMMA - return "\x04\x4b\x74\x49\x43"; - case 3: // MINUS - return "\x04\x4b\x74\x49\x44"; - case 4: // PERIOD - return "\x04\x4b\x74\x49\x45"; - case 5: // SLASH - return "\x04\x4b\x74\x49\x46"; - case 6: // 0 - return "\x04\x4b\x74\x49\x47"; - case 7: // 1 - return "\x04\x4b\x74\x49\x48"; - case 8: // 2 - return "\x04\x4b\x74\x49\x49"; - case 9: // 3 - return "\x04\x4b\x74\x49\x4a"; - case 10: // 4 - return "\x04\x4b\x74\x49\x4b"; - case 11: // 5 - return "\x04\x4b\x74\x49\x4c"; - case 12: // 6 - return "\x04\x4b\x74\x49\x4d"; - case 13: // 7 - return "\x04\x4b\x74\x49\x4e"; - case 14: // 8 - return "\x04\x4b\x74\x49\x4f"; - case 15: // 9 - return "\x04\x4b\x74\x49\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x74\x49\x51"; - case 17: // EQUAL - return "\x04\x4b\x74\x49\x52"; - case 18: // A - return "\x04\x4b\x74\x49\x53"; - case 19: // B - return "\x04\x4b\x74\x49\x54"; - case 20: // C - return "\x04\x4b\x74\x49\x55"; - case 21: // D - return "\x04\x4b\x74\x49\x56"; - case 22: // E - return "\x04\x4b\x74\x49\x57"; - case 23: // F - return "\x04\x4b\x74\x49\x58"; - case 24: // G - return "\x04\x4b\x74\x49\x59"; - case 25: // H - return "\x04\x4b\x74\x49\x5a"; - case 26: // I - return "\x04\x4b\x74\x49\x61"; - case 27: // J - return "\x04\x4b\x74\x49\x62"; - case 28: // K - return "\x04\x4b\x74\x49\x63"; - case 29: // L - return "\x04\x4b\x74\x49\x64"; - case 30: // M - return "\x04\x4b\x74\x49\x65"; - case 31: // N - return "\x04\x4b\x74\x49\x66"; - case 32: // O - return "\x04\x4b\x74\x49\x67"; - case 33: // P - return "\x04\x4b\x74\x49\x68"; - case 34: // Q - return "\x04\x4b\x74\x49\x69"; - case 35: // R - return "\x04\x4b\x74\x49\x6a"; - case 36: // S - return "\x04\x4b\x74\x49\x6b"; - case 37: // T - return "\x04\x4b\x74\x49\x6c"; - case 38: // U - return "\x04\x4b\x74\x49\x6d"; - case 39: // V - return "\x04\x4b\x74\x49\x6e"; - case 40: // W - return "\x04\x4b\x74\x49\x6f"; - case 41: // X - return "\x04\x4b\x74\x49\x70"; - case 42: // Y - return "\x04\x4b\x74\x49\x71"; - case 43: // Z - return "\x04\x4b\x74\x49\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x74\x49\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x74\x49\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x74\x49\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x74\x49\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x74\x49\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x74\x49\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x74\x49\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x74\x49\x42\x72"; + case 9: // PLUS return "\x05\x4b\x74\x49\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x74\x49\x43"; + case 11: // MINUS + return "\x04\x4b\x74\x49\x44"; + case 12: // PERIOD + return "\x04\x4b\x74\x49\x45"; + case 13: // SLASH + return "\x04\x4b\x74\x49\x46"; + case 14: // 0 + return "\x04\x4b\x74\x49\x47"; + case 15: // 1 + return "\x04\x4b\x74\x49\x48"; + case 16: // 2 + return "\x04\x4b\x74\x49\x49"; + case 17: // 3 + return "\x04\x4b\x74\x49\x4a"; + case 18: // 4 + return "\x04\x4b\x74\x49\x4b"; + case 19: // 5 + return "\x04\x4b\x74\x49\x4c"; + case 20: // 6 + return "\x04\x4b\x74\x49\x4d"; + case 21: // 7 + return "\x04\x4b\x74\x49\x4e"; + case 22: // 8 + return "\x04\x4b\x74\x49\x4f"; + case 23: // 9 + return "\x04\x4b\x74\x49\x50"; + case 24: // COLON + return "\x05\x4b\x74\x49\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x74\x49\x51"; + case 26: // LESS + return "\x05\x4b\x74\x49\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x74\x49\x52"; + case 28: // GREATER + return "\x05\x4b\x74\x49\x42\x75"; + case 29: // AT + return "\x05\x4b\x74\x49\x42\x76"; + case 30: // A + return "\x04\x4b\x74\x49\x53"; + case 31: // B + return "\x04\x4b\x74\x49\x54"; + case 32: // C + return "\x04\x4b\x74\x49\x55"; + case 33: // D + return "\x04\x4b\x74\x49\x56"; + case 34: // E + return "\x04\x4b\x74\x49\x57"; + case 35: // F + return "\x04\x4b\x74\x49\x58"; + case 36: // G + return "\x04\x4b\x74\x49\x59"; + case 37: // H + return "\x04\x4b\x74\x49\x5a"; + case 38: // I + return "\x04\x4b\x74\x49\x61"; + case 39: // J + return "\x04\x4b\x74\x49\x62"; + case 40: // K + return "\x04\x4b\x74\x49\x63"; + case 41: // L + return "\x04\x4b\x74\x49\x64"; + case 42: // M + return "\x04\x4b\x74\x49\x65"; + case 43: // N + return "\x04\x4b\x74\x49\x66"; + case 44: // O + return "\x04\x4b\x74\x49\x67"; + case 45: // P + return "\x04\x4b\x74\x49\x68"; + case 46: // Q + return "\x04\x4b\x74\x49\x69"; + case 47: // R + return "\x04\x4b\x74\x49\x6a"; + case 48: // S + return "\x04\x4b\x74\x49\x6b"; + case 49: // T + return "\x04\x4b\x74\x49\x6c"; + case 50: // U + return "\x04\x4b\x74\x49\x6d"; + case 51: // V + return "\x04\x4b\x74\x49\x6e"; + case 52: // W + return "\x04\x4b\x74\x49\x6f"; + case 53: // X + return "\x04\x4b\x74\x49\x70"; + case 54: // Y + return "\x04\x4b\x74\x49\x71"; + case 55: // Z + return "\x04\x4b\x74\x49\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x74\x49\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x74\x49\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x74\x49\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x74\x49\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x74\x49\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x74\x49\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x74\x49\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x74\x49\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x74\x49\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x74\x49\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x74\x49\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x74\x49\x42\x30"; + case 68: // AE + return "\x05\x4b\x74\x49\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x74\x49\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x74\x49\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x74\x49\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x74\x49\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x74\x49\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x74\x49\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x74\x49\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x74\x49\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x74\x49\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x74\x49\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x74\x49\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x74\x49\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x74\x49\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x74\x49\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x74\x49\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x74\x49\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x74\x49\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x74\x49\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x74\x49\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x74\x49\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x74\x49\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x74\x49\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x74\x49\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x74\x49\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x74\x49\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x74\x49\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x74\x49\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x74\x49\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x74\x49\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x74\x49\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x74\x49\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x74\x49\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x74\x49\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x74\x49\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x74\x49\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x74\x49\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x74\x49\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x74\x49\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x74\x49\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x74\x49\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x74\x49\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x74\x49\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x74\x49\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x74\x49\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x74\x49\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x74\x49\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x74\x49\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x74\x49\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x74\x49\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x74\x49\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x74\x49\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x74\x49\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x74\x49\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x74\x49\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x74\x49\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x74\x49\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x74\x49\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x74\x49\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x74\x49\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x74\x49\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x74\x49\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x74\x49\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x74\x49\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x74\x49\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x74\x49\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x74\x49\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x74\x49\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x74\x49\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x74\x49\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x74\x49\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x74\x49\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x74\x49\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x74\x49\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x74\x49\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x74\x49\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x74\x49\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x74\x49\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x74\x49\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x74\x49\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x74\x49\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x74\x49\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x74\x49\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x74\x49\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x74\x49\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x74\x49\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x74\x49\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x74\x49\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x74\x49\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x74\x49\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x74\x49\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x74\x49\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x74\x49\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x74\x49\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x74\x49\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x74\x49\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x74\x49\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x74\x49\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x74\x49\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x74\x49\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x74\x49\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x74\x49\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x74\x49\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x74\x49\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x74\x49\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x74\x49\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x74\x49\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x74\x49\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x74\x49\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x74\x49\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x74\x49\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x74\x49\x42\x68"; } // end switch(key) case 0x9: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x74\x4a\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x74\x4a\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x74\x4a\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x74\x4a\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x74\x4a\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x74\x4a\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x74\x4a\x42"; - case 2: // COMMA - return "\x04\x4b\x74\x4a\x43"; - case 3: // MINUS - return "\x04\x4b\x74\x4a\x44"; - case 4: // PERIOD - return "\x04\x4b\x74\x4a\x45"; - case 5: // SLASH - return "\x04\x4b\x74\x4a\x46"; - case 6: // 0 - return "\x04\x4b\x74\x4a\x47"; - case 7: // 1 - return "\x04\x4b\x74\x4a\x48"; - case 8: // 2 - return "\x04\x4b\x74\x4a\x49"; - case 9: // 3 - return "\x04\x4b\x74\x4a\x4a"; - case 10: // 4 - return "\x04\x4b\x74\x4a\x4b"; - case 11: // 5 - return "\x04\x4b\x74\x4a\x4c"; - case 12: // 6 - return "\x04\x4b\x74\x4a\x4d"; - case 13: // 7 - return "\x04\x4b\x74\x4a\x4e"; - case 14: // 8 - return "\x04\x4b\x74\x4a\x4f"; - case 15: // 9 - return "\x04\x4b\x74\x4a\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x74\x4a\x51"; - case 17: // EQUAL - return "\x04\x4b\x74\x4a\x52"; - case 18: // A - return "\x04\x4b\x74\x4a\x53"; - case 19: // B - return "\x04\x4b\x74\x4a\x54"; - case 20: // C - return "\x04\x4b\x74\x4a\x55"; - case 21: // D - return "\x04\x4b\x74\x4a\x56"; - case 22: // E - return "\x04\x4b\x74\x4a\x57"; - case 23: // F - return "\x04\x4b\x74\x4a\x58"; - case 24: // G - return "\x04\x4b\x74\x4a\x59"; - case 25: // H - return "\x04\x4b\x74\x4a\x5a"; - case 26: // I - return "\x04\x4b\x74\x4a\x61"; - case 27: // J - return "\x04\x4b\x74\x4a\x62"; - case 28: // K - return "\x04\x4b\x74\x4a\x63"; - case 29: // L - return "\x04\x4b\x74\x4a\x64"; - case 30: // M - return "\x04\x4b\x74\x4a\x65"; - case 31: // N - return "\x04\x4b\x74\x4a\x66"; - case 32: // O - return "\x04\x4b\x74\x4a\x67"; - case 33: // P - return "\x04\x4b\x74\x4a\x68"; - case 34: // Q - return "\x04\x4b\x74\x4a\x69"; - case 35: // R - return "\x04\x4b\x74\x4a\x6a"; - case 36: // S - return "\x04\x4b\x74\x4a\x6b"; - case 37: // T - return "\x04\x4b\x74\x4a\x6c"; - case 38: // U - return "\x04\x4b\x74\x4a\x6d"; - case 39: // V - return "\x04\x4b\x74\x4a\x6e"; - case 40: // W - return "\x04\x4b\x74\x4a\x6f"; - case 41: // X - return "\x04\x4b\x74\x4a\x70"; - case 42: // Y - return "\x04\x4b\x74\x4a\x71"; - case 43: // Z - return "\x04\x4b\x74\x4a\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x74\x4a\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x74\x4a\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x74\x4a\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x74\x4a\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x74\x4a\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x74\x4a\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x74\x4a\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x74\x4a\x42\x72"; + case 9: // PLUS return "\x05\x4b\x74\x4a\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x74\x4a\x43"; + case 11: // MINUS + return "\x04\x4b\x74\x4a\x44"; + case 12: // PERIOD + return "\x04\x4b\x74\x4a\x45"; + case 13: // SLASH + return "\x04\x4b\x74\x4a\x46"; + case 14: // 0 + return "\x04\x4b\x74\x4a\x47"; + case 15: // 1 + return "\x04\x4b\x74\x4a\x48"; + case 16: // 2 + return "\x04\x4b\x74\x4a\x49"; + case 17: // 3 + return "\x04\x4b\x74\x4a\x4a"; + case 18: // 4 + return "\x04\x4b\x74\x4a\x4b"; + case 19: // 5 + return "\x04\x4b\x74\x4a\x4c"; + case 20: // 6 + return "\x04\x4b\x74\x4a\x4d"; + case 21: // 7 + return "\x04\x4b\x74\x4a\x4e"; + case 22: // 8 + return "\x04\x4b\x74\x4a\x4f"; + case 23: // 9 + return "\x04\x4b\x74\x4a\x50"; + case 24: // COLON + return "\x05\x4b\x74\x4a\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x74\x4a\x51"; + case 26: // LESS + return "\x05\x4b\x74\x4a\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x74\x4a\x52"; + case 28: // GREATER + return "\x05\x4b\x74\x4a\x42\x75"; + case 29: // AT + return "\x05\x4b\x74\x4a\x42\x76"; + case 30: // A + return "\x04\x4b\x74\x4a\x53"; + case 31: // B + return "\x04\x4b\x74\x4a\x54"; + case 32: // C + return "\x04\x4b\x74\x4a\x55"; + case 33: // D + return "\x04\x4b\x74\x4a\x56"; + case 34: // E + return "\x04\x4b\x74\x4a\x57"; + case 35: // F + return "\x04\x4b\x74\x4a\x58"; + case 36: // G + return "\x04\x4b\x74\x4a\x59"; + case 37: // H + return "\x04\x4b\x74\x4a\x5a"; + case 38: // I + return "\x04\x4b\x74\x4a\x61"; + case 39: // J + return "\x04\x4b\x74\x4a\x62"; + case 40: // K + return "\x04\x4b\x74\x4a\x63"; + case 41: // L + return "\x04\x4b\x74\x4a\x64"; + case 42: // M + return "\x04\x4b\x74\x4a\x65"; + case 43: // N + return "\x04\x4b\x74\x4a\x66"; + case 44: // O + return "\x04\x4b\x74\x4a\x67"; + case 45: // P + return "\x04\x4b\x74\x4a\x68"; + case 46: // Q + return "\x04\x4b\x74\x4a\x69"; + case 47: // R + return "\x04\x4b\x74\x4a\x6a"; + case 48: // S + return "\x04\x4b\x74\x4a\x6b"; + case 49: // T + return "\x04\x4b\x74\x4a\x6c"; + case 50: // U + return "\x04\x4b\x74\x4a\x6d"; + case 51: // V + return "\x04\x4b\x74\x4a\x6e"; + case 52: // W + return "\x04\x4b\x74\x4a\x6f"; + case 53: // X + return "\x04\x4b\x74\x4a\x70"; + case 54: // Y + return "\x04\x4b\x74\x4a\x71"; + case 55: // Z + return "\x04\x4b\x74\x4a\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x74\x4a\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x74\x4a\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x74\x4a\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x74\x4a\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x74\x4a\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x74\x4a\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x74\x4a\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x74\x4a\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x74\x4a\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x74\x4a\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x74\x4a\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x74\x4a\x42\x30"; + case 68: // AE + return "\x05\x4b\x74\x4a\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x74\x4a\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x74\x4a\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x74\x4a\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x74\x4a\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x74\x4a\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x74\x4a\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x74\x4a\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x74\x4a\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x74\x4a\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x74\x4a\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x74\x4a\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x74\x4a\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x74\x4a\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x74\x4a\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x74\x4a\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x74\x4a\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x74\x4a\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x74\x4a\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x74\x4a\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x74\x4a\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x74\x4a\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x74\x4a\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x74\x4a\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x74\x4a\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x74\x4a\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x74\x4a\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x74\x4a\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x74\x4a\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x74\x4a\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x74\x4a\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x74\x4a\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x74\x4a\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x74\x4a\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x74\x4a\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x74\x4a\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x74\x4a\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x74\x4a\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x74\x4a\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x74\x4a\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x74\x4a\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x74\x4a\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x74\x4a\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x74\x4a\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x74\x4a\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x74\x4a\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x74\x4a\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x74\x4a\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x74\x4a\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x74\x4a\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x74\x4a\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x74\x4a\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x74\x4a\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x74\x4a\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x74\x4a\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x74\x4a\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x74\x4a\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x74\x4a\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x74\x4a\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x74\x4a\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x74\x4a\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x74\x4a\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x74\x4a\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x74\x4a\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x74\x4a\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x74\x4a\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x74\x4a\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x74\x4a\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x74\x4a\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x74\x4a\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x74\x4a\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x74\x4a\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x74\x4a\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x74\x4a\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x74\x4a\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x74\x4a\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x74\x4a\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x74\x4a\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x74\x4a\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x74\x4a\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x74\x4a\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x74\x4a\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x74\x4a\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x74\x4a\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x74\x4a\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x74\x4a\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x74\x4a\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x74\x4a\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x74\x4a\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x74\x4a\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x74\x4a\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x74\x4a\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x74\x4a\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x74\x4a\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x74\x4a\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x74\x4a\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x74\x4a\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x74\x4a\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x74\x4a\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x74\x4a\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x74\x4a\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x74\x4a\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x74\x4a\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x74\x4a\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x74\x4a\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x74\x4a\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x74\x4a\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x74\x4a\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x74\x4a\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x74\x4a\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x74\x4a\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x74\x4a\x42\x68"; } // end switch(key) case 0xa: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x74\x4d\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x74\x4d\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x74\x4d\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x74\x4d\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x74\x4d\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x74\x4d\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x74\x4d\x42"; - case 2: // COMMA - return "\x04\x4b\x74\x4d\x43"; - case 3: // MINUS - return "\x04\x4b\x74\x4d\x44"; - case 4: // PERIOD - return "\x04\x4b\x74\x4d\x45"; - case 5: // SLASH - return "\x04\x4b\x74\x4d\x46"; - case 6: // 0 - return "\x04\x4b\x74\x4d\x47"; - case 7: // 1 - return "\x04\x4b\x74\x4d\x48"; - case 8: // 2 - return "\x04\x4b\x74\x4d\x49"; - case 9: // 3 - return "\x04\x4b\x74\x4d\x4a"; - case 10: // 4 - return "\x04\x4b\x74\x4d\x4b"; - case 11: // 5 - return "\x04\x4b\x74\x4d\x4c"; - case 12: // 6 - return "\x04\x4b\x74\x4d\x4d"; - case 13: // 7 - return "\x04\x4b\x74\x4d\x4e"; - case 14: // 8 - return "\x04\x4b\x74\x4d\x4f"; - case 15: // 9 - return "\x04\x4b\x74\x4d\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x74\x4d\x51"; - case 17: // EQUAL - return "\x04\x4b\x74\x4d\x52"; - case 18: // A - return "\x04\x4b\x74\x4d\x53"; - case 19: // B - return "\x04\x4b\x74\x4d\x54"; - case 20: // C - return "\x04\x4b\x74\x4d\x55"; - case 21: // D - return "\x04\x4b\x74\x4d\x56"; - case 22: // E - return "\x04\x4b\x74\x4d\x57"; - case 23: // F - return "\x04\x4b\x74\x4d\x58"; - case 24: // G - return "\x04\x4b\x74\x4d\x59"; - case 25: // H - return "\x04\x4b\x74\x4d\x5a"; - case 26: // I - return "\x04\x4b\x74\x4d\x61"; - case 27: // J - return "\x04\x4b\x74\x4d\x62"; - case 28: // K - return "\x04\x4b\x74\x4d\x63"; - case 29: // L - return "\x04\x4b\x74\x4d\x64"; - case 30: // M - return "\x04\x4b\x74\x4d\x65"; - case 31: // N - return "\x04\x4b\x74\x4d\x66"; - case 32: // O - return "\x04\x4b\x74\x4d\x67"; - case 33: // P - return "\x04\x4b\x74\x4d\x68"; - case 34: // Q - return "\x04\x4b\x74\x4d\x69"; - case 35: // R - return "\x04\x4b\x74\x4d\x6a"; - case 36: // S - return "\x04\x4b\x74\x4d\x6b"; - case 37: // T - return "\x04\x4b\x74\x4d\x6c"; - case 38: // U - return "\x04\x4b\x74\x4d\x6d"; - case 39: // V - return "\x04\x4b\x74\x4d\x6e"; - case 40: // W - return "\x04\x4b\x74\x4d\x6f"; - case 41: // X - return "\x04\x4b\x74\x4d\x70"; - case 42: // Y - return "\x04\x4b\x74\x4d\x71"; - case 43: // Z - return "\x04\x4b\x74\x4d\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x74\x4d\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x74\x4d\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x74\x4d\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x74\x4d\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x74\x4d\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x74\x4d\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x74\x4d\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x74\x4d\x42\x72"; + case 9: // PLUS return "\x05\x4b\x74\x4d\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x74\x4d\x43"; + case 11: // MINUS + return "\x04\x4b\x74\x4d\x44"; + case 12: // PERIOD + return "\x04\x4b\x74\x4d\x45"; + case 13: // SLASH + return "\x04\x4b\x74\x4d\x46"; + case 14: // 0 + return "\x04\x4b\x74\x4d\x47"; + case 15: // 1 + return "\x04\x4b\x74\x4d\x48"; + case 16: // 2 + return "\x04\x4b\x74\x4d\x49"; + case 17: // 3 + return "\x04\x4b\x74\x4d\x4a"; + case 18: // 4 + return "\x04\x4b\x74\x4d\x4b"; + case 19: // 5 + return "\x04\x4b\x74\x4d\x4c"; + case 20: // 6 + return "\x04\x4b\x74\x4d\x4d"; + case 21: // 7 + return "\x04\x4b\x74\x4d\x4e"; + case 22: // 8 + return "\x04\x4b\x74\x4d\x4f"; + case 23: // 9 + return "\x04\x4b\x74\x4d\x50"; + case 24: // COLON + return "\x05\x4b\x74\x4d\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x74\x4d\x51"; + case 26: // LESS + return "\x05\x4b\x74\x4d\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x74\x4d\x52"; + case 28: // GREATER + return "\x05\x4b\x74\x4d\x42\x75"; + case 29: // AT + return "\x05\x4b\x74\x4d\x42\x76"; + case 30: // A + return "\x04\x4b\x74\x4d\x53"; + case 31: // B + return "\x04\x4b\x74\x4d\x54"; + case 32: // C + return "\x04\x4b\x74\x4d\x55"; + case 33: // D + return "\x04\x4b\x74\x4d\x56"; + case 34: // E + return "\x04\x4b\x74\x4d\x57"; + case 35: // F + return "\x04\x4b\x74\x4d\x58"; + case 36: // G + return "\x04\x4b\x74\x4d\x59"; + case 37: // H + return "\x04\x4b\x74\x4d\x5a"; + case 38: // I + return "\x04\x4b\x74\x4d\x61"; + case 39: // J + return "\x04\x4b\x74\x4d\x62"; + case 40: // K + return "\x04\x4b\x74\x4d\x63"; + case 41: // L + return "\x04\x4b\x74\x4d\x64"; + case 42: // M + return "\x04\x4b\x74\x4d\x65"; + case 43: // N + return "\x04\x4b\x74\x4d\x66"; + case 44: // O + return "\x04\x4b\x74\x4d\x67"; + case 45: // P + return "\x04\x4b\x74\x4d\x68"; + case 46: // Q + return "\x04\x4b\x74\x4d\x69"; + case 47: // R + return "\x04\x4b\x74\x4d\x6a"; + case 48: // S + return "\x04\x4b\x74\x4d\x6b"; + case 49: // T + return "\x04\x4b\x74\x4d\x6c"; + case 50: // U + return "\x04\x4b\x74\x4d\x6d"; + case 51: // V + return "\x04\x4b\x74\x4d\x6e"; + case 52: // W + return "\x04\x4b\x74\x4d\x6f"; + case 53: // X + return "\x04\x4b\x74\x4d\x70"; + case 54: // Y + return "\x04\x4b\x74\x4d\x71"; + case 55: // Z + return "\x04\x4b\x74\x4d\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x74\x4d\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x74\x4d\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x74\x4d\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x74\x4d\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x74\x4d\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x74\x4d\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x74\x4d\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x74\x4d\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x74\x4d\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x74\x4d\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x74\x4d\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x74\x4d\x42\x30"; + case 68: // AE + return "\x05\x4b\x74\x4d\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x74\x4d\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x74\x4d\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x74\x4d\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x74\x4d\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x74\x4d\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x74\x4d\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x74\x4d\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x74\x4d\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x74\x4d\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x74\x4d\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x74\x4d\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x74\x4d\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x74\x4d\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x74\x4d\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x74\x4d\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x74\x4d\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x74\x4d\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x74\x4d\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x74\x4d\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x74\x4d\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x74\x4d\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x74\x4d\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x74\x4d\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x74\x4d\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x74\x4d\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x74\x4d\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x74\x4d\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x74\x4d\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x74\x4d\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x74\x4d\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x74\x4d\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x74\x4d\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x74\x4d\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x74\x4d\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x74\x4d\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x74\x4d\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x74\x4d\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x74\x4d\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x74\x4d\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x74\x4d\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x74\x4d\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x74\x4d\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x74\x4d\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x74\x4d\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x74\x4d\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x74\x4d\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x74\x4d\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x74\x4d\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x74\x4d\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x74\x4d\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x74\x4d\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x74\x4d\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x74\x4d\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x74\x4d\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x74\x4d\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x74\x4d\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x74\x4d\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x74\x4d\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x74\x4d\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x74\x4d\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x74\x4d\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x74\x4d\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x74\x4d\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x74\x4d\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x74\x4d\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x74\x4d\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x74\x4d\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x74\x4d\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x74\x4d\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x74\x4d\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x74\x4d\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x74\x4d\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x74\x4d\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x74\x4d\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x74\x4d\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x74\x4d\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x74\x4d\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x74\x4d\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x74\x4d\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x74\x4d\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x74\x4d\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x74\x4d\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x74\x4d\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x74\x4d\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x74\x4d\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x74\x4d\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x74\x4d\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x74\x4d\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x74\x4d\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x74\x4d\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x74\x4d\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x74\x4d\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x74\x4d\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x74\x4d\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x74\x4d\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x74\x4d\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x74\x4d\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x74\x4d\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x74\x4d\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x74\x4d\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x74\x4d\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x74\x4d\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x74\x4d\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x74\x4d\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x74\x4d\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x74\x4d\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x74\x4d\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x74\x4d\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x74\x4d\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x74\x4d\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x74\x4d\x42\x68"; } // end switch(key) case 0xb: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x74\x4e\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x74\x4e\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x74\x4e\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x74\x4e\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x74\x4e\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x74\x4e\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x74\x4e\x42"; - case 2: // COMMA - return "\x04\x4b\x74\x4e\x43"; - case 3: // MINUS - return "\x04\x4b\x74\x4e\x44"; - case 4: // PERIOD - return "\x04\x4b\x74\x4e\x45"; - case 5: // SLASH - return "\x04\x4b\x74\x4e\x46"; - case 6: // 0 - return "\x04\x4b\x74\x4e\x47"; - case 7: // 1 - return "\x04\x4b\x74\x4e\x48"; - case 8: // 2 - return "\x04\x4b\x74\x4e\x49"; - case 9: // 3 - return "\x04\x4b\x74\x4e\x4a"; - case 10: // 4 - return "\x04\x4b\x74\x4e\x4b"; - case 11: // 5 - return "\x04\x4b\x74\x4e\x4c"; - case 12: // 6 - return "\x04\x4b\x74\x4e\x4d"; - case 13: // 7 - return "\x04\x4b\x74\x4e\x4e"; - case 14: // 8 - return "\x04\x4b\x74\x4e\x4f"; - case 15: // 9 - return "\x04\x4b\x74\x4e\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x74\x4e\x51"; - case 17: // EQUAL - return "\x04\x4b\x74\x4e\x52"; - case 18: // A - return "\x04\x4b\x74\x4e\x53"; - case 19: // B - return "\x04\x4b\x74\x4e\x54"; - case 20: // C - return "\x04\x4b\x74\x4e\x55"; - case 21: // D - return "\x04\x4b\x74\x4e\x56"; - case 22: // E - return "\x04\x4b\x74\x4e\x57"; - case 23: // F - return "\x04\x4b\x74\x4e\x58"; - case 24: // G - return "\x04\x4b\x74\x4e\x59"; - case 25: // H - return "\x04\x4b\x74\x4e\x5a"; - case 26: // I - return "\x04\x4b\x74\x4e\x61"; - case 27: // J - return "\x04\x4b\x74\x4e\x62"; - case 28: // K - return "\x04\x4b\x74\x4e\x63"; - case 29: // L - return "\x04\x4b\x74\x4e\x64"; - case 30: // M - return "\x04\x4b\x74\x4e\x65"; - case 31: // N - return "\x04\x4b\x74\x4e\x66"; - case 32: // O - return "\x04\x4b\x74\x4e\x67"; - case 33: // P - return "\x04\x4b\x74\x4e\x68"; - case 34: // Q - return "\x04\x4b\x74\x4e\x69"; - case 35: // R - return "\x04\x4b\x74\x4e\x6a"; - case 36: // S - return "\x04\x4b\x74\x4e\x6b"; - case 37: // T - return "\x04\x4b\x74\x4e\x6c"; - case 38: // U - return "\x04\x4b\x74\x4e\x6d"; - case 39: // V - return "\x04\x4b\x74\x4e\x6e"; - case 40: // W - return "\x04\x4b\x74\x4e\x6f"; - case 41: // X - return "\x04\x4b\x74\x4e\x70"; - case 42: // Y - return "\x04\x4b\x74\x4e\x71"; - case 43: // Z - return "\x04\x4b\x74\x4e\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x74\x4e\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x74\x4e\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x74\x4e\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x74\x4e\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x74\x4e\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x74\x4e\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x74\x4e\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x74\x4e\x42\x72"; + case 9: // PLUS return "\x05\x4b\x74\x4e\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x74\x4e\x43"; + case 11: // MINUS + return "\x04\x4b\x74\x4e\x44"; + case 12: // PERIOD + return "\x04\x4b\x74\x4e\x45"; + case 13: // SLASH + return "\x04\x4b\x74\x4e\x46"; + case 14: // 0 + return "\x04\x4b\x74\x4e\x47"; + case 15: // 1 + return "\x04\x4b\x74\x4e\x48"; + case 16: // 2 + return "\x04\x4b\x74\x4e\x49"; + case 17: // 3 + return "\x04\x4b\x74\x4e\x4a"; + case 18: // 4 + return "\x04\x4b\x74\x4e\x4b"; + case 19: // 5 + return "\x04\x4b\x74\x4e\x4c"; + case 20: // 6 + return "\x04\x4b\x74\x4e\x4d"; + case 21: // 7 + return "\x04\x4b\x74\x4e\x4e"; + case 22: // 8 + return "\x04\x4b\x74\x4e\x4f"; + case 23: // 9 + return "\x04\x4b\x74\x4e\x50"; + case 24: // COLON + return "\x05\x4b\x74\x4e\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x74\x4e\x51"; + case 26: // LESS + return "\x05\x4b\x74\x4e\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x74\x4e\x52"; + case 28: // GREATER + return "\x05\x4b\x74\x4e\x42\x75"; + case 29: // AT + return "\x05\x4b\x74\x4e\x42\x76"; + case 30: // A + return "\x04\x4b\x74\x4e\x53"; + case 31: // B + return "\x04\x4b\x74\x4e\x54"; + case 32: // C + return "\x04\x4b\x74\x4e\x55"; + case 33: // D + return "\x04\x4b\x74\x4e\x56"; + case 34: // E + return "\x04\x4b\x74\x4e\x57"; + case 35: // F + return "\x04\x4b\x74\x4e\x58"; + case 36: // G + return "\x04\x4b\x74\x4e\x59"; + case 37: // H + return "\x04\x4b\x74\x4e\x5a"; + case 38: // I + return "\x04\x4b\x74\x4e\x61"; + case 39: // J + return "\x04\x4b\x74\x4e\x62"; + case 40: // K + return "\x04\x4b\x74\x4e\x63"; + case 41: // L + return "\x04\x4b\x74\x4e\x64"; + case 42: // M + return "\x04\x4b\x74\x4e\x65"; + case 43: // N + return "\x04\x4b\x74\x4e\x66"; + case 44: // O + return "\x04\x4b\x74\x4e\x67"; + case 45: // P + return "\x04\x4b\x74\x4e\x68"; + case 46: // Q + return "\x04\x4b\x74\x4e\x69"; + case 47: // R + return "\x04\x4b\x74\x4e\x6a"; + case 48: // S + return "\x04\x4b\x74\x4e\x6b"; + case 49: // T + return "\x04\x4b\x74\x4e\x6c"; + case 50: // U + return "\x04\x4b\x74\x4e\x6d"; + case 51: // V + return "\x04\x4b\x74\x4e\x6e"; + case 52: // W + return "\x04\x4b\x74\x4e\x6f"; + case 53: // X + return "\x04\x4b\x74\x4e\x70"; + case 54: // Y + return "\x04\x4b\x74\x4e\x71"; + case 55: // Z + return "\x04\x4b\x74\x4e\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x74\x4e\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x74\x4e\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x74\x4e\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x74\x4e\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x74\x4e\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x74\x4e\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x74\x4e\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x74\x4e\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x74\x4e\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x74\x4e\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x74\x4e\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x74\x4e\x42\x30"; + case 68: // AE + return "\x05\x4b\x74\x4e\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x74\x4e\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x74\x4e\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x74\x4e\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x74\x4e\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x74\x4e\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x74\x4e\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x74\x4e\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x74\x4e\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x74\x4e\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x74\x4e\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x74\x4e\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x74\x4e\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x74\x4e\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x74\x4e\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x74\x4e\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x74\x4e\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x74\x4e\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x74\x4e\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x74\x4e\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x74\x4e\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x74\x4e\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x74\x4e\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x74\x4e\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x74\x4e\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x74\x4e\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x74\x4e\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x74\x4e\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x74\x4e\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x74\x4e\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x74\x4e\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x74\x4e\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x74\x4e\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x74\x4e\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x74\x4e\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x74\x4e\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x74\x4e\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x74\x4e\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x74\x4e\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x74\x4e\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x74\x4e\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x74\x4e\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x74\x4e\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x74\x4e\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x74\x4e\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x74\x4e\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x74\x4e\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x74\x4e\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x74\x4e\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x74\x4e\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x74\x4e\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x74\x4e\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x74\x4e\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x74\x4e\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x74\x4e\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x74\x4e\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x74\x4e\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x74\x4e\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x74\x4e\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x74\x4e\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x74\x4e\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x74\x4e\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x74\x4e\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x74\x4e\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x74\x4e\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x74\x4e\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x74\x4e\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x74\x4e\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x74\x4e\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x74\x4e\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x74\x4e\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x74\x4e\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x74\x4e\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x74\x4e\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x74\x4e\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x74\x4e\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x74\x4e\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x74\x4e\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x74\x4e\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x74\x4e\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x74\x4e\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x74\x4e\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x74\x4e\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x74\x4e\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x74\x4e\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x74\x4e\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x74\x4e\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x74\x4e\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x74\x4e\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x74\x4e\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x74\x4e\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x74\x4e\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x74\x4e\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x74\x4e\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x74\x4e\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x74\x4e\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x74\x4e\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x74\x4e\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x74\x4e\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x74\x4e\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x74\x4e\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x74\x4e\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x74\x4e\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x74\x4e\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x74\x4e\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x74\x4e\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x74\x4e\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x74\x4e\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x74\x4e\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x74\x4e\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x74\x4e\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x74\x4e\x42\x68"; } // end switch(key) case 0xc: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x74\x4b\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x74\x4b\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x74\x4b\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x74\x4b\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x74\x4b\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x74\x4b\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x74\x4b\x42"; - case 2: // COMMA - return "\x04\x4b\x74\x4b\x43"; - case 3: // MINUS - return "\x04\x4b\x74\x4b\x44"; - case 4: // PERIOD - return "\x04\x4b\x74\x4b\x45"; - case 5: // SLASH - return "\x04\x4b\x74\x4b\x46"; - case 6: // 0 - return "\x04\x4b\x74\x4b\x47"; - case 7: // 1 - return "\x04\x4b\x74\x4b\x48"; - case 8: // 2 - return "\x04\x4b\x74\x4b\x49"; - case 9: // 3 - return "\x04\x4b\x74\x4b\x4a"; - case 10: // 4 - return "\x04\x4b\x74\x4b\x4b"; - case 11: // 5 - return "\x04\x4b\x74\x4b\x4c"; - case 12: // 6 - return "\x04\x4b\x74\x4b\x4d"; - case 13: // 7 - return "\x04\x4b\x74\x4b\x4e"; - case 14: // 8 - return "\x04\x4b\x74\x4b\x4f"; - case 15: // 9 - return "\x04\x4b\x74\x4b\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x74\x4b\x51"; - case 17: // EQUAL - return "\x04\x4b\x74\x4b\x52"; - case 18: // A - return "\x04\x4b\x74\x4b\x53"; - case 19: // B - return "\x04\x4b\x74\x4b\x54"; - case 20: // C - return "\x04\x4b\x74\x4b\x55"; - case 21: // D - return "\x04\x4b\x74\x4b\x56"; - case 22: // E - return "\x04\x4b\x74\x4b\x57"; - case 23: // F - return "\x04\x4b\x74\x4b\x58"; - case 24: // G - return "\x04\x4b\x74\x4b\x59"; - case 25: // H - return "\x04\x4b\x74\x4b\x5a"; - case 26: // I - return "\x04\x4b\x74\x4b\x61"; - case 27: // J - return "\x04\x4b\x74\x4b\x62"; - case 28: // K - return "\x04\x4b\x74\x4b\x63"; - case 29: // L - return "\x04\x4b\x74\x4b\x64"; - case 30: // M - return "\x04\x4b\x74\x4b\x65"; - case 31: // N - return "\x04\x4b\x74\x4b\x66"; - case 32: // O - return "\x04\x4b\x74\x4b\x67"; - case 33: // P - return "\x04\x4b\x74\x4b\x68"; - case 34: // Q - return "\x04\x4b\x74\x4b\x69"; - case 35: // R - return "\x04\x4b\x74\x4b\x6a"; - case 36: // S - return "\x04\x4b\x74\x4b\x6b"; - case 37: // T - return "\x04\x4b\x74\x4b\x6c"; - case 38: // U - return "\x04\x4b\x74\x4b\x6d"; - case 39: // V - return "\x04\x4b\x74\x4b\x6e"; - case 40: // W - return "\x04\x4b\x74\x4b\x6f"; - case 41: // X - return "\x04\x4b\x74\x4b\x70"; - case 42: // Y - return "\x04\x4b\x74\x4b\x71"; - case 43: // Z - return "\x04\x4b\x74\x4b\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x74\x4b\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x74\x4b\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x74\x4b\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x74\x4b\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x74\x4b\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x74\x4b\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x74\x4b\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x74\x4b\x42\x72"; + case 9: // PLUS return "\x05\x4b\x74\x4b\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x74\x4b\x43"; + case 11: // MINUS + return "\x04\x4b\x74\x4b\x44"; + case 12: // PERIOD + return "\x04\x4b\x74\x4b\x45"; + case 13: // SLASH + return "\x04\x4b\x74\x4b\x46"; + case 14: // 0 + return "\x04\x4b\x74\x4b\x47"; + case 15: // 1 + return "\x04\x4b\x74\x4b\x48"; + case 16: // 2 + return "\x04\x4b\x74\x4b\x49"; + case 17: // 3 + return "\x04\x4b\x74\x4b\x4a"; + case 18: // 4 + return "\x04\x4b\x74\x4b\x4b"; + case 19: // 5 + return "\x04\x4b\x74\x4b\x4c"; + case 20: // 6 + return "\x04\x4b\x74\x4b\x4d"; + case 21: // 7 + return "\x04\x4b\x74\x4b\x4e"; + case 22: // 8 + return "\x04\x4b\x74\x4b\x4f"; + case 23: // 9 + return "\x04\x4b\x74\x4b\x50"; + case 24: // COLON + return "\x05\x4b\x74\x4b\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x74\x4b\x51"; + case 26: // LESS + return "\x05\x4b\x74\x4b\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x74\x4b\x52"; + case 28: // GREATER + return "\x05\x4b\x74\x4b\x42\x75"; + case 29: // AT + return "\x05\x4b\x74\x4b\x42\x76"; + case 30: // A + return "\x04\x4b\x74\x4b\x53"; + case 31: // B + return "\x04\x4b\x74\x4b\x54"; + case 32: // C + return "\x04\x4b\x74\x4b\x55"; + case 33: // D + return "\x04\x4b\x74\x4b\x56"; + case 34: // E + return "\x04\x4b\x74\x4b\x57"; + case 35: // F + return "\x04\x4b\x74\x4b\x58"; + case 36: // G + return "\x04\x4b\x74\x4b\x59"; + case 37: // H + return "\x04\x4b\x74\x4b\x5a"; + case 38: // I + return "\x04\x4b\x74\x4b\x61"; + case 39: // J + return "\x04\x4b\x74\x4b\x62"; + case 40: // K + return "\x04\x4b\x74\x4b\x63"; + case 41: // L + return "\x04\x4b\x74\x4b\x64"; + case 42: // M + return "\x04\x4b\x74\x4b\x65"; + case 43: // N + return "\x04\x4b\x74\x4b\x66"; + case 44: // O + return "\x04\x4b\x74\x4b\x67"; + case 45: // P + return "\x04\x4b\x74\x4b\x68"; + case 46: // Q + return "\x04\x4b\x74\x4b\x69"; + case 47: // R + return "\x04\x4b\x74\x4b\x6a"; + case 48: // S + return "\x04\x4b\x74\x4b\x6b"; + case 49: // T + return "\x04\x4b\x74\x4b\x6c"; + case 50: // U + return "\x04\x4b\x74\x4b\x6d"; + case 51: // V + return "\x04\x4b\x74\x4b\x6e"; + case 52: // W + return "\x04\x4b\x74\x4b\x6f"; + case 53: // X + return "\x04\x4b\x74\x4b\x70"; + case 54: // Y + return "\x04\x4b\x74\x4b\x71"; + case 55: // Z + return "\x04\x4b\x74\x4b\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x74\x4b\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x74\x4b\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x74\x4b\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x74\x4b\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x74\x4b\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x74\x4b\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x74\x4b\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x74\x4b\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x74\x4b\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x74\x4b\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x74\x4b\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x74\x4b\x42\x30"; + case 68: // AE + return "\x05\x4b\x74\x4b\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x74\x4b\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x74\x4b\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x74\x4b\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x74\x4b\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x74\x4b\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x74\x4b\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x74\x4b\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x74\x4b\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x74\x4b\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x74\x4b\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x74\x4b\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x74\x4b\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x74\x4b\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x74\x4b\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x74\x4b\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x74\x4b\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x74\x4b\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x74\x4b\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x74\x4b\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x74\x4b\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x74\x4b\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x74\x4b\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x74\x4b\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x74\x4b\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x74\x4b\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x74\x4b\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x74\x4b\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x74\x4b\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x74\x4b\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x74\x4b\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x74\x4b\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x74\x4b\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x74\x4b\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x74\x4b\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x74\x4b\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x74\x4b\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x74\x4b\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x74\x4b\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x74\x4b\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x74\x4b\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x74\x4b\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x74\x4b\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x74\x4b\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x74\x4b\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x74\x4b\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x74\x4b\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x74\x4b\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x74\x4b\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x74\x4b\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x74\x4b\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x74\x4b\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x74\x4b\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x74\x4b\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x74\x4b\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x74\x4b\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x74\x4b\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x74\x4b\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x74\x4b\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x74\x4b\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x74\x4b\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x74\x4b\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x74\x4b\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x74\x4b\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x74\x4b\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x74\x4b\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x74\x4b\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x74\x4b\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x74\x4b\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x74\x4b\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x74\x4b\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x74\x4b\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x74\x4b\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x74\x4b\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x74\x4b\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x74\x4b\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x74\x4b\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x74\x4b\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x74\x4b\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x74\x4b\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x74\x4b\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x74\x4b\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x74\x4b\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x74\x4b\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x74\x4b\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x74\x4b\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x74\x4b\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x74\x4b\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x74\x4b\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x74\x4b\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x74\x4b\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x74\x4b\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x74\x4b\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x74\x4b\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x74\x4b\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x74\x4b\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x74\x4b\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x74\x4b\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x74\x4b\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x74\x4b\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x74\x4b\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x74\x4b\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x74\x4b\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x74\x4b\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x74\x4b\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x74\x4b\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x74\x4b\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x74\x4b\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x74\x4b\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x74\x4b\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x74\x4b\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x74\x4b\x42\x68"; } // end switch(key) case 0xd: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x74\x4c\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x74\x4c\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x74\x4c\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x74\x4c\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x74\x4c\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x74\x4c\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x74\x4c\x42"; - case 2: // COMMA - return "\x04\x4b\x74\x4c\x43"; - case 3: // MINUS - return "\x04\x4b\x74\x4c\x44"; - case 4: // PERIOD - return "\x04\x4b\x74\x4c\x45"; - case 5: // SLASH - return "\x04\x4b\x74\x4c\x46"; - case 6: // 0 - return "\x04\x4b\x74\x4c\x47"; - case 7: // 1 - return "\x04\x4b\x74\x4c\x48"; - case 8: // 2 - return "\x04\x4b\x74\x4c\x49"; - case 9: // 3 - return "\x04\x4b\x74\x4c\x4a"; - case 10: // 4 - return "\x04\x4b\x74\x4c\x4b"; - case 11: // 5 - return "\x04\x4b\x74\x4c\x4c"; - case 12: // 6 - return "\x04\x4b\x74\x4c\x4d"; - case 13: // 7 - return "\x04\x4b\x74\x4c\x4e"; - case 14: // 8 - return "\x04\x4b\x74\x4c\x4f"; - case 15: // 9 - return "\x04\x4b\x74\x4c\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x74\x4c\x51"; - case 17: // EQUAL - return "\x04\x4b\x74\x4c\x52"; - case 18: // A - return "\x04\x4b\x74\x4c\x53"; - case 19: // B - return "\x04\x4b\x74\x4c\x54"; - case 20: // C - return "\x04\x4b\x74\x4c\x55"; - case 21: // D - return "\x04\x4b\x74\x4c\x56"; - case 22: // E - return "\x04\x4b\x74\x4c\x57"; - case 23: // F - return "\x04\x4b\x74\x4c\x58"; - case 24: // G - return "\x04\x4b\x74\x4c\x59"; - case 25: // H - return "\x04\x4b\x74\x4c\x5a"; - case 26: // I - return "\x04\x4b\x74\x4c\x61"; - case 27: // J - return "\x04\x4b\x74\x4c\x62"; - case 28: // K - return "\x04\x4b\x74\x4c\x63"; - case 29: // L - return "\x04\x4b\x74\x4c\x64"; - case 30: // M - return "\x04\x4b\x74\x4c\x65"; - case 31: // N - return "\x04\x4b\x74\x4c\x66"; - case 32: // O - return "\x04\x4b\x74\x4c\x67"; - case 33: // P - return "\x04\x4b\x74\x4c\x68"; - case 34: // Q - return "\x04\x4b\x74\x4c\x69"; - case 35: // R - return "\x04\x4b\x74\x4c\x6a"; - case 36: // S - return "\x04\x4b\x74\x4c\x6b"; - case 37: // T - return "\x04\x4b\x74\x4c\x6c"; - case 38: // U - return "\x04\x4b\x74\x4c\x6d"; - case 39: // V - return "\x04\x4b\x74\x4c\x6e"; - case 40: // W - return "\x04\x4b\x74\x4c\x6f"; - case 41: // X - return "\x04\x4b\x74\x4c\x70"; - case 42: // Y - return "\x04\x4b\x74\x4c\x71"; - case 43: // Z - return "\x04\x4b\x74\x4c\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x74\x4c\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x74\x4c\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x74\x4c\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x74\x4c\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x74\x4c\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x74\x4c\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x74\x4c\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x74\x4c\x42\x72"; + case 9: // PLUS return "\x05\x4b\x74\x4c\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x74\x4c\x43"; + case 11: // MINUS + return "\x04\x4b\x74\x4c\x44"; + case 12: // PERIOD + return "\x04\x4b\x74\x4c\x45"; + case 13: // SLASH + return "\x04\x4b\x74\x4c\x46"; + case 14: // 0 + return "\x04\x4b\x74\x4c\x47"; + case 15: // 1 + return "\x04\x4b\x74\x4c\x48"; + case 16: // 2 + return "\x04\x4b\x74\x4c\x49"; + case 17: // 3 + return "\x04\x4b\x74\x4c\x4a"; + case 18: // 4 + return "\x04\x4b\x74\x4c\x4b"; + case 19: // 5 + return "\x04\x4b\x74\x4c\x4c"; + case 20: // 6 + return "\x04\x4b\x74\x4c\x4d"; + case 21: // 7 + return "\x04\x4b\x74\x4c\x4e"; + case 22: // 8 + return "\x04\x4b\x74\x4c\x4f"; + case 23: // 9 + return "\x04\x4b\x74\x4c\x50"; + case 24: // COLON + return "\x05\x4b\x74\x4c\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x74\x4c\x51"; + case 26: // LESS + return "\x05\x4b\x74\x4c\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x74\x4c\x52"; + case 28: // GREATER + return "\x05\x4b\x74\x4c\x42\x75"; + case 29: // AT + return "\x05\x4b\x74\x4c\x42\x76"; + case 30: // A + return "\x04\x4b\x74\x4c\x53"; + case 31: // B + return "\x04\x4b\x74\x4c\x54"; + case 32: // C + return "\x04\x4b\x74\x4c\x55"; + case 33: // D + return "\x04\x4b\x74\x4c\x56"; + case 34: // E + return "\x04\x4b\x74\x4c\x57"; + case 35: // F + return "\x04\x4b\x74\x4c\x58"; + case 36: // G + return "\x04\x4b\x74\x4c\x59"; + case 37: // H + return "\x04\x4b\x74\x4c\x5a"; + case 38: // I + return "\x04\x4b\x74\x4c\x61"; + case 39: // J + return "\x04\x4b\x74\x4c\x62"; + case 40: // K + return "\x04\x4b\x74\x4c\x63"; + case 41: // L + return "\x04\x4b\x74\x4c\x64"; + case 42: // M + return "\x04\x4b\x74\x4c\x65"; + case 43: // N + return "\x04\x4b\x74\x4c\x66"; + case 44: // O + return "\x04\x4b\x74\x4c\x67"; + case 45: // P + return "\x04\x4b\x74\x4c\x68"; + case 46: // Q + return "\x04\x4b\x74\x4c\x69"; + case 47: // R + return "\x04\x4b\x74\x4c\x6a"; + case 48: // S + return "\x04\x4b\x74\x4c\x6b"; + case 49: // T + return "\x04\x4b\x74\x4c\x6c"; + case 50: // U + return "\x04\x4b\x74\x4c\x6d"; + case 51: // V + return "\x04\x4b\x74\x4c\x6e"; + case 52: // W + return "\x04\x4b\x74\x4c\x6f"; + case 53: // X + return "\x04\x4b\x74\x4c\x70"; + case 54: // Y + return "\x04\x4b\x74\x4c\x71"; + case 55: // Z + return "\x04\x4b\x74\x4c\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x74\x4c\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x74\x4c\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x74\x4c\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x74\x4c\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x74\x4c\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x74\x4c\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x74\x4c\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x74\x4c\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x74\x4c\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x74\x4c\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x74\x4c\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x74\x4c\x42\x30"; + case 68: // AE + return "\x05\x4b\x74\x4c\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x74\x4c\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x74\x4c\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x74\x4c\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x74\x4c\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x74\x4c\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x74\x4c\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x74\x4c\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x74\x4c\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x74\x4c\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x74\x4c\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x74\x4c\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x74\x4c\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x74\x4c\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x74\x4c\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x74\x4c\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x74\x4c\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x74\x4c\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x74\x4c\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x74\x4c\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x74\x4c\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x74\x4c\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x74\x4c\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x74\x4c\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x74\x4c\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x74\x4c\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x74\x4c\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x74\x4c\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x74\x4c\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x74\x4c\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x74\x4c\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x74\x4c\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x74\x4c\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x74\x4c\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x74\x4c\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x74\x4c\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x74\x4c\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x74\x4c\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x74\x4c\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x74\x4c\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x74\x4c\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x74\x4c\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x74\x4c\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x74\x4c\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x74\x4c\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x74\x4c\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x74\x4c\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x74\x4c\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x74\x4c\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x74\x4c\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x74\x4c\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x74\x4c\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x74\x4c\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x74\x4c\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x74\x4c\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x74\x4c\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x74\x4c\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x74\x4c\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x74\x4c\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x74\x4c\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x74\x4c\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x74\x4c\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x74\x4c\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x74\x4c\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x74\x4c\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x74\x4c\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x74\x4c\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x74\x4c\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x74\x4c\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x74\x4c\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x74\x4c\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x74\x4c\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x74\x4c\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x74\x4c\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x74\x4c\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x74\x4c\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x74\x4c\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x74\x4c\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x74\x4c\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x74\x4c\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x74\x4c\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x74\x4c\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x74\x4c\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x74\x4c\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x74\x4c\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x74\x4c\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x74\x4c\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x74\x4c\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x74\x4c\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x74\x4c\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x74\x4c\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x74\x4c\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x74\x4c\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x74\x4c\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x74\x4c\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x74\x4c\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x74\x4c\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x74\x4c\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x74\x4c\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x74\x4c\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x74\x4c\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x74\x4c\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x74\x4c\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x74\x4c\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x74\x4c\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x74\x4c\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x74\x4c\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x74\x4c\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x74\x4c\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x74\x4c\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x74\x4c\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x74\x4c\x42\x68"; } // end switch(key) case 0xe: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x74\x4f\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x74\x4f\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x74\x4f\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x74\x4f\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x74\x4f\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x74\x4f\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x74\x4f\x42"; - case 2: // COMMA - return "\x04\x4b\x74\x4f\x43"; - case 3: // MINUS - return "\x04\x4b\x74\x4f\x44"; - case 4: // PERIOD - return "\x04\x4b\x74\x4f\x45"; - case 5: // SLASH - return "\x04\x4b\x74\x4f\x46"; - case 6: // 0 - return "\x04\x4b\x74\x4f\x47"; - case 7: // 1 - return "\x04\x4b\x74\x4f\x48"; - case 8: // 2 - return "\x04\x4b\x74\x4f\x49"; - case 9: // 3 - return "\x04\x4b\x74\x4f\x4a"; - case 10: // 4 - return "\x04\x4b\x74\x4f\x4b"; - case 11: // 5 - return "\x04\x4b\x74\x4f\x4c"; - case 12: // 6 - return "\x04\x4b\x74\x4f\x4d"; - case 13: // 7 - return "\x04\x4b\x74\x4f\x4e"; - case 14: // 8 - return "\x04\x4b\x74\x4f\x4f"; - case 15: // 9 - return "\x04\x4b\x74\x4f\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x74\x4f\x51"; - case 17: // EQUAL - return "\x04\x4b\x74\x4f\x52"; - case 18: // A - return "\x04\x4b\x74\x4f\x53"; - case 19: // B - return "\x04\x4b\x74\x4f\x54"; - case 20: // C - return "\x04\x4b\x74\x4f\x55"; - case 21: // D - return "\x04\x4b\x74\x4f\x56"; - case 22: // E - return "\x04\x4b\x74\x4f\x57"; - case 23: // F - return "\x04\x4b\x74\x4f\x58"; - case 24: // G - return "\x04\x4b\x74\x4f\x59"; - case 25: // H - return "\x04\x4b\x74\x4f\x5a"; - case 26: // I - return "\x04\x4b\x74\x4f\x61"; - case 27: // J - return "\x04\x4b\x74\x4f\x62"; - case 28: // K - return "\x04\x4b\x74\x4f\x63"; - case 29: // L - return "\x04\x4b\x74\x4f\x64"; - case 30: // M - return "\x04\x4b\x74\x4f\x65"; - case 31: // N - return "\x04\x4b\x74\x4f\x66"; - case 32: // O - return "\x04\x4b\x74\x4f\x67"; - case 33: // P - return "\x04\x4b\x74\x4f\x68"; - case 34: // Q - return "\x04\x4b\x74\x4f\x69"; - case 35: // R - return "\x04\x4b\x74\x4f\x6a"; - case 36: // S - return "\x04\x4b\x74\x4f\x6b"; - case 37: // T - return "\x04\x4b\x74\x4f\x6c"; - case 38: // U - return "\x04\x4b\x74\x4f\x6d"; - case 39: // V - return "\x04\x4b\x74\x4f\x6e"; - case 40: // W - return "\x04\x4b\x74\x4f\x6f"; - case 41: // X - return "\x04\x4b\x74\x4f\x70"; - case 42: // Y - return "\x04\x4b\x74\x4f\x71"; - case 43: // Z - return "\x04\x4b\x74\x4f\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x74\x4f\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x74\x4f\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x74\x4f\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x74\x4f\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x74\x4f\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x74\x4f\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x74\x4f\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x74\x4f\x42\x72"; + case 9: // PLUS return "\x05\x4b\x74\x4f\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x74\x4f\x43"; + case 11: // MINUS + return "\x04\x4b\x74\x4f\x44"; + case 12: // PERIOD + return "\x04\x4b\x74\x4f\x45"; + case 13: // SLASH + return "\x04\x4b\x74\x4f\x46"; + case 14: // 0 + return "\x04\x4b\x74\x4f\x47"; + case 15: // 1 + return "\x04\x4b\x74\x4f\x48"; + case 16: // 2 + return "\x04\x4b\x74\x4f\x49"; + case 17: // 3 + return "\x04\x4b\x74\x4f\x4a"; + case 18: // 4 + return "\x04\x4b\x74\x4f\x4b"; + case 19: // 5 + return "\x04\x4b\x74\x4f\x4c"; + case 20: // 6 + return "\x04\x4b\x74\x4f\x4d"; + case 21: // 7 + return "\x04\x4b\x74\x4f\x4e"; + case 22: // 8 + return "\x04\x4b\x74\x4f\x4f"; + case 23: // 9 + return "\x04\x4b\x74\x4f\x50"; + case 24: // COLON + return "\x05\x4b\x74\x4f\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x74\x4f\x51"; + case 26: // LESS + return "\x05\x4b\x74\x4f\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x74\x4f\x52"; + case 28: // GREATER + return "\x05\x4b\x74\x4f\x42\x75"; + case 29: // AT + return "\x05\x4b\x74\x4f\x42\x76"; + case 30: // A + return "\x04\x4b\x74\x4f\x53"; + case 31: // B + return "\x04\x4b\x74\x4f\x54"; + case 32: // C + return "\x04\x4b\x74\x4f\x55"; + case 33: // D + return "\x04\x4b\x74\x4f\x56"; + case 34: // E + return "\x04\x4b\x74\x4f\x57"; + case 35: // F + return "\x04\x4b\x74\x4f\x58"; + case 36: // G + return "\x04\x4b\x74\x4f\x59"; + case 37: // H + return "\x04\x4b\x74\x4f\x5a"; + case 38: // I + return "\x04\x4b\x74\x4f\x61"; + case 39: // J + return "\x04\x4b\x74\x4f\x62"; + case 40: // K + return "\x04\x4b\x74\x4f\x63"; + case 41: // L + return "\x04\x4b\x74\x4f\x64"; + case 42: // M + return "\x04\x4b\x74\x4f\x65"; + case 43: // N + return "\x04\x4b\x74\x4f\x66"; + case 44: // O + return "\x04\x4b\x74\x4f\x67"; + case 45: // P + return "\x04\x4b\x74\x4f\x68"; + case 46: // Q + return "\x04\x4b\x74\x4f\x69"; + case 47: // R + return "\x04\x4b\x74\x4f\x6a"; + case 48: // S + return "\x04\x4b\x74\x4f\x6b"; + case 49: // T + return "\x04\x4b\x74\x4f\x6c"; + case 50: // U + return "\x04\x4b\x74\x4f\x6d"; + case 51: // V + return "\x04\x4b\x74\x4f\x6e"; + case 52: // W + return "\x04\x4b\x74\x4f\x6f"; + case 53: // X + return "\x04\x4b\x74\x4f\x70"; + case 54: // Y + return "\x04\x4b\x74\x4f\x71"; + case 55: // Z + return "\x04\x4b\x74\x4f\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x74\x4f\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x74\x4f\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x74\x4f\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x74\x4f\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x74\x4f\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x74\x4f\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x74\x4f\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x74\x4f\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x74\x4f\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x74\x4f\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x74\x4f\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x74\x4f\x42\x30"; + case 68: // AE + return "\x05\x4b\x74\x4f\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x74\x4f\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x74\x4f\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x74\x4f\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x74\x4f\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x74\x4f\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x74\x4f\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x74\x4f\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x74\x4f\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x74\x4f\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x74\x4f\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x74\x4f\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x74\x4f\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x74\x4f\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x74\x4f\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x74\x4f\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x74\x4f\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x74\x4f\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x74\x4f\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x74\x4f\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x74\x4f\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x74\x4f\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x74\x4f\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x74\x4f\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x74\x4f\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x74\x4f\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x74\x4f\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x74\x4f\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x74\x4f\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x74\x4f\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x74\x4f\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x74\x4f\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x74\x4f\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x74\x4f\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x74\x4f\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x74\x4f\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x74\x4f\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x74\x4f\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x74\x4f\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x74\x4f\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x74\x4f\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x74\x4f\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x74\x4f\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x74\x4f\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x74\x4f\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x74\x4f\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x74\x4f\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x74\x4f\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x74\x4f\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x74\x4f\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x74\x4f\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x74\x4f\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x74\x4f\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x74\x4f\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x74\x4f\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x74\x4f\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x74\x4f\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x74\x4f\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x74\x4f\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x74\x4f\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x74\x4f\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x74\x4f\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x74\x4f\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x74\x4f\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x74\x4f\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x74\x4f\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x74\x4f\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x74\x4f\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x74\x4f\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x74\x4f\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x74\x4f\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x74\x4f\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x74\x4f\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x74\x4f\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x74\x4f\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x74\x4f\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x74\x4f\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x74\x4f\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x74\x4f\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x74\x4f\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x74\x4f\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x74\x4f\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x74\x4f\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x74\x4f\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x74\x4f\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x74\x4f\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x74\x4f\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x74\x4f\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x74\x4f\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x74\x4f\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x74\x4f\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x74\x4f\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x74\x4f\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x74\x4f\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x74\x4f\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x74\x4f\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x74\x4f\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x74\x4f\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x74\x4f\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x74\x4f\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x74\x4f\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x74\x4f\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x74\x4f\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x74\x4f\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x74\x4f\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x74\x4f\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x74\x4f\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x74\x4f\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x74\x4f\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x74\x4f\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x74\x4f\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x74\x4f\x42\x68"; } // end switch(key) case 0xf: - switch(key & 0x7f) { default: return NULL; + switch(key & 0xff) { default: return NULL; case 0: // SPACE return "\x04\x4b\x74\x50\x41"; - case 1: // APOSTROPHE + case 1: // EXCLAM + return "\x05\x4b\x74\x50\x42\x6c"; + case 2: // DOUBLE_QUOTE + return "\x05\x4b\x74\x50\x42\x6d"; + case 3: // NUMBER_SIGN + return "\x05\x4b\x74\x50\x42\x6e"; + case 4: // DOLLAR + return "\x05\x4b\x74\x50\x42\x6f"; + case 5: // AMPERSAND + return "\x05\x4b\x74\x50\x42\x70"; + case 6: // APOSTROPHE return "\x04\x4b\x74\x50\x42"; - case 2: // COMMA - return "\x04\x4b\x74\x50\x43"; - case 3: // MINUS - return "\x04\x4b\x74\x50\x44"; - case 4: // PERIOD - return "\x04\x4b\x74\x50\x45"; - case 5: // SLASH - return "\x04\x4b\x74\x50\x46"; - case 6: // 0 - return "\x04\x4b\x74\x50\x47"; - case 7: // 1 - return "\x04\x4b\x74\x50\x48"; - case 8: // 2 - return "\x04\x4b\x74\x50\x49"; - case 9: // 3 - return "\x04\x4b\x74\x50\x4a"; - case 10: // 4 - return "\x04\x4b\x74\x50\x4b"; - case 11: // 5 - return "\x04\x4b\x74\x50\x4c"; - case 12: // 6 - return "\x04\x4b\x74\x50\x4d"; - case 13: // 7 - return "\x04\x4b\x74\x50\x4e"; - case 14: // 8 - return "\x04\x4b\x74\x50\x4f"; - case 15: // 9 - return "\x04\x4b\x74\x50\x50"; - case 16: // SEMICOLON - return "\x04\x4b\x74\x50\x51"; - case 17: // EQUAL - return "\x04\x4b\x74\x50\x52"; - case 18: // A - return "\x04\x4b\x74\x50\x53"; - case 19: // B - return "\x04\x4b\x74\x50\x54"; - case 20: // C - return "\x04\x4b\x74\x50\x55"; - case 21: // D - return "\x04\x4b\x74\x50\x56"; - case 22: // E - return "\x04\x4b\x74\x50\x57"; - case 23: // F - return "\x04\x4b\x74\x50\x58"; - case 24: // G - return "\x04\x4b\x74\x50\x59"; - case 25: // H - return "\x04\x4b\x74\x50\x5a"; - case 26: // I - return "\x04\x4b\x74\x50\x61"; - case 27: // J - return "\x04\x4b\x74\x50\x62"; - case 28: // K - return "\x04\x4b\x74\x50\x63"; - case 29: // L - return "\x04\x4b\x74\x50\x64"; - case 30: // M - return "\x04\x4b\x74\x50\x65"; - case 31: // N - return "\x04\x4b\x74\x50\x66"; - case 32: // O - return "\x04\x4b\x74\x50\x67"; - case 33: // P - return "\x04\x4b\x74\x50\x68"; - case 34: // Q - return "\x04\x4b\x74\x50\x69"; - case 35: // R - return "\x04\x4b\x74\x50\x6a"; - case 36: // S - return "\x04\x4b\x74\x50\x6b"; - case 37: // T - return "\x04\x4b\x74\x50\x6c"; - case 38: // U - return "\x04\x4b\x74\x50\x6d"; - case 39: // V - return "\x04\x4b\x74\x50\x6e"; - case 40: // W - return "\x04\x4b\x74\x50\x6f"; - case 41: // X - return "\x04\x4b\x74\x50\x70"; - case 42: // Y - return "\x04\x4b\x74\x50\x71"; - case 43: // Z - return "\x04\x4b\x74\x50\x72"; - case 44: // LEFT_BRACKET - return "\x04\x4b\x74\x50\x73"; - case 45: // BACKSLASH - return "\x04\x4b\x74\x50\x74"; - case 46: // RIGHT_BRACKET - return "\x04\x4b\x74\x50\x75"; - case 47: // GRAVE_ACCENT - return "\x04\x4b\x74\x50\x76"; - case 48: // WORLD_1 - return "\x04\x4b\x74\x50\x77"; - case 49: // WORLD_2 - return "\x04\x4b\x74\x50\x78"; - case 50: // PLUS + case 7: // PARENTHESIS_LEFT + return "\x05\x4b\x74\x50\x42\x71"; + case 8: // PARENTHESIS_RIGHT + return "\x05\x4b\x74\x50\x42\x72"; + case 9: // PLUS return "\x05\x4b\x74\x50\x42\x69"; - case 51: // UNDERSCORE + case 10: // COMMA + return "\x04\x4b\x74\x50\x43"; + case 11: // MINUS + return "\x04\x4b\x74\x50\x44"; + case 12: // PERIOD + return "\x04\x4b\x74\x50\x45"; + case 13: // SLASH + return "\x04\x4b\x74\x50\x46"; + case 14: // 0 + return "\x04\x4b\x74\x50\x47"; + case 15: // 1 + return "\x04\x4b\x74\x50\x48"; + case 16: // 2 + return "\x04\x4b\x74\x50\x49"; + case 17: // 3 + return "\x04\x4b\x74\x50\x4a"; + case 18: // 4 + return "\x04\x4b\x74\x50\x4b"; + case 19: // 5 + return "\x04\x4b\x74\x50\x4c"; + case 20: // 6 + return "\x04\x4b\x74\x50\x4d"; + case 21: // 7 + return "\x04\x4b\x74\x50\x4e"; + case 22: // 8 + return "\x04\x4b\x74\x50\x4f"; + case 23: // 9 + return "\x04\x4b\x74\x50\x50"; + case 24: // COLON + return "\x05\x4b\x74\x50\x42\x73"; + case 25: // SEMICOLON + return "\x04\x4b\x74\x50\x51"; + case 26: // LESS + return "\x05\x4b\x74\x50\x42\x74"; + case 27: // EQUAL + return "\x04\x4b\x74\x50\x52"; + case 28: // GREATER + return "\x05\x4b\x74\x50\x42\x75"; + case 29: // AT + return "\x05\x4b\x74\x50\x42\x76"; + case 30: // A + return "\x04\x4b\x74\x50\x53"; + case 31: // B + return "\x04\x4b\x74\x50\x54"; + case 32: // C + return "\x04\x4b\x74\x50\x55"; + case 33: // D + return "\x04\x4b\x74\x50\x56"; + case 34: // E + return "\x04\x4b\x74\x50\x57"; + case 35: // F + return "\x04\x4b\x74\x50\x58"; + case 36: // G + return "\x04\x4b\x74\x50\x59"; + case 37: // H + return "\x04\x4b\x74\x50\x5a"; + case 38: // I + return "\x04\x4b\x74\x50\x61"; + case 39: // J + return "\x04\x4b\x74\x50\x62"; + case 40: // K + return "\x04\x4b\x74\x50\x63"; + case 41: // L + return "\x04\x4b\x74\x50\x64"; + case 42: // M + return "\x04\x4b\x74\x50\x65"; + case 43: // N + return "\x04\x4b\x74\x50\x66"; + case 44: // O + return "\x04\x4b\x74\x50\x67"; + case 45: // P + return "\x04\x4b\x74\x50\x68"; + case 46: // Q + return "\x04\x4b\x74\x50\x69"; + case 47: // R + return "\x04\x4b\x74\x50\x6a"; + case 48: // S + return "\x04\x4b\x74\x50\x6b"; + case 49: // T + return "\x04\x4b\x74\x50\x6c"; + case 50: // U + return "\x04\x4b\x74\x50\x6d"; + case 51: // V + return "\x04\x4b\x74\x50\x6e"; + case 52: // W + return "\x04\x4b\x74\x50\x6f"; + case 53: // X + return "\x04\x4b\x74\x50\x70"; + case 54: // Y + return "\x04\x4b\x74\x50\x71"; + case 55: // Z + return "\x04\x4b\x74\x50\x72"; + case 56: // LEFT_BRACKET + return "\x04\x4b\x74\x50\x73"; + case 57: // BACKSLASH + return "\x04\x4b\x74\x50\x74"; + case 58: // RIGHT_BRACKET + return "\x04\x4b\x74\x50\x75"; + case 59: // UNDERSCORE return "\x05\x4b\x74\x50\x42\x6a"; - case 52: // ESCAPE + case 60: // GRAVE_ACCENT + return "\x04\x4b\x74\x50\x76"; + case 61: // WORLD_1 + return "\x04\x4b\x74\x50\x77"; + case 62: // WORLD_2 + return "\x04\x4b\x74\x50\x78"; + case 63: // PARAGRAPH + return "\x05\x4b\x74\x50\x42\x77"; + case 64: // MASCULINE + return "\x05\x4b\x74\x50\x42\x78"; + case 65: // A_GRAVE + return "\x05\x4b\x74\x50\x42\x79"; + case 66: // A_DIAERESIS + return "\x05\x4b\x74\x50\x42\x7a"; + case 67: // A_RING + return "\x05\x4b\x74\x50\x42\x30"; + case 68: // AE + return "\x05\x4b\x74\x50\x42\x31"; + case 69: // C_CEDILLA + return "\x05\x4b\x74\x50\x42\x32"; + case 70: // E_GRAVE + return "\x05\x4b\x74\x50\x42\x33"; + case 71: // E_ACUTE + return "\x05\x4b\x74\x50\x42\x34"; + case 72: // I_GRAVE + return "\x05\x4b\x74\x50\x42\x35"; + case 73: // N_TILDE + return "\x05\x4b\x74\x50\x42\x36"; + case 74: // O_GRAVE + return "\x05\x4b\x74\x50\x42\x37"; + case 75: // O_DIAERESIS + return "\x05\x4b\x74\x50\x42\x38"; + case 76: // O_SLASH + return "\x05\x4b\x74\x50\x42\x39"; + case 77: // U_GRAVE + return "\x05\x4b\x74\x50\x42\x2e"; + case 78: // U_DIAERESIS + return "\x05\x4b\x74\x50\x42\x2d"; + case 79: // S_SHARP + return "\x05\x4b\x74\x50\x42\x3a"; + case 80: // CYRILLIC_A + return "\x05\x4b\x74\x50\x42\x2b"; + case 81: // CYRILLIC_BE + return "\x05\x4b\x74\x50\x42\x3d"; + case 82: // CYRILLIC_VE + return "\x05\x4b\x74\x50\x42\x5e"; + case 83: // CYRILLIC_GHE + return "\x05\x4b\x74\x50\x42\x21"; + case 84: // CYRILLIC_DE + return "\x05\x4b\x74\x50\x42\x2f"; + case 85: // CYRILLIC_IE + return "\x05\x4b\x74\x50\x42\x2a"; + case 86: // CYRILLIC_ZHE + return "\x05\x4b\x74\x50\x42\x3f"; + case 87: // CYRILLIC_ZE + return "\x05\x4b\x74\x50\x42\x26"; + case 88: // CYRILLIC_I + return "\x05\x4b\x74\x50\x42\x3c"; + case 89: // CYRILLIC_SHORT_I + return "\x05\x4b\x74\x50\x42\x3e"; + case 90: // CYRILLIC_KA + return "\x05\x4b\x74\x50\x42\x28"; + case 91: // CYRILLIC_EL + return "\x05\x4b\x74\x50\x42\x29"; + case 92: // CYRILLIC_EM + return "\x05\x4b\x74\x50\x42\x5b"; + case 93: // CYRILLIC_EN + return "\x05\x4b\x74\x50\x42\x5d"; + case 94: // CYRILLIC_O + return "\x05\x4b\x74\x50\x42\x7b"; + case 95: // CYRILLIC_PE + return "\x05\x4b\x74\x50\x42\x7d"; + case 96: // CYRILLIC_ER + return "\x05\x4b\x74\x50\x42\x40"; + case 97: // CYRILLIC_ES + return "\x05\x4b\x74\x50\x42\x25"; + case 98: // CYRILLIC_TE + return "\x05\x4b\x74\x50\x42\x24"; + case 99: // CYRILLIC_U + return "\x05\x4b\x74\x50\x42\x23"; + case 100: // CYRILLIC_EF + return "\x05\x4b\x74\x50\x43\x41"; + case 101: // CYRILLIC_HA + return "\x05\x4b\x74\x50\x43\x42"; + case 102: // CYRILLIC_TSE + return "\x05\x4b\x74\x50\x43\x43"; + case 103: // CYRILLIC_CHE + return "\x05\x4b\x74\x50\x43\x44"; + case 104: // CYRILLIC_SHA + return "\x05\x4b\x74\x50\x43\x45"; + case 105: // CYRILLIC_SHCHA + return "\x05\x4b\x74\x50\x43\x46"; + case 106: // CYRILLIC_HARD_SIGN + return "\x05\x4b\x74\x50\x43\x47"; + case 107: // CYRILLIC_YERU + return "\x05\x4b\x74\x50\x43\x48"; + case 108: // CYRILLIC_SOFT_SIGN + return "\x05\x4b\x74\x50\x43\x49"; + case 109: // CYRILLIC_E + return "\x05\x4b\x74\x50\x43\x4a"; + case 110: // CYRILLIC_YU + return "\x05\x4b\x74\x50\x43\x4b"; + case 111: // CYRILLIC_YA + return "\x05\x4b\x74\x50\x43\x4c"; + case 112: // CYRILLIC_IO + return "\x05\x4b\x74\x50\x43\x4d"; + case 113: // ESCAPE return "\x04\x4b\x74\x50\x79"; - case 53: // ENTER + case 114: // ENTER return "\x04\x4b\x74\x50\x7a"; - case 54: // TAB + case 115: // TAB return "\x04\x4b\x74\x50\x30"; - case 55: // BACKSPACE + case 116: // BACKSPACE return "\x04\x4b\x74\x50\x31"; - case 56: // INSERT + case 117: // INSERT return "\x04\x4b\x74\x50\x32"; - case 57: // DELETE + case 118: // DELETE return "\x04\x4b\x74\x50\x33"; - case 58: // RIGHT + case 119: // RIGHT return "\x04\x4b\x74\x50\x34"; - case 59: // LEFT + case 120: // LEFT return "\x04\x4b\x74\x50\x35"; - case 60: // DOWN + case 121: // DOWN return "\x04\x4b\x74\x50\x36"; - case 61: // UP + case 122: // UP return "\x04\x4b\x74\x50\x37"; - case 62: // PAGE_UP + case 123: // PAGE_UP return "\x04\x4b\x74\x50\x38"; - case 63: // PAGE_DOWN + case 124: // PAGE_DOWN return "\x04\x4b\x74\x50\x39"; - case 64: // HOME + case 125: // HOME return "\x04\x4b\x74\x50\x2e"; - case 65: // END + case 126: // END return "\x04\x4b\x74\x50\x2d"; - case 66: // CAPS_LOCK + case 127: // CAPS_LOCK return "\x04\x4b\x74\x50\x3a"; - case 67: // SCROLL_LOCK + case 128: // SCROLL_LOCK return "\x04\x4b\x74\x50\x2b"; - case 68: // NUM_LOCK + case 129: // NUM_LOCK return "\x04\x4b\x74\x50\x3d"; - case 69: // PRINT_SCREEN + case 130: // PRINT_SCREEN return "\x04\x4b\x74\x50\x5e"; - case 70: // PAUSE + case 131: // PAUSE return "\x04\x4b\x74\x50\x21"; - case 71: // F1 + case 132: // F1 return "\x04\x4b\x74\x50\x2f"; - case 72: // F2 + case 133: // F2 return "\x04\x4b\x74\x50\x2a"; - case 73: // F3 + case 134: // F3 return "\x04\x4b\x74\x50\x3f"; - case 74: // F4 + case 135: // F4 return "\x04\x4b\x74\x50\x26"; - case 75: // F5 + case 136: // F5 return "\x04\x4b\x74\x50\x3c"; - case 76: // F6 + case 137: // F6 return "\x04\x4b\x74\x50\x3e"; - case 77: // F7 + case 138: // F7 return "\x04\x4b\x74\x50\x28"; - case 78: // F8 + case 139: // F8 return "\x04\x4b\x74\x50\x29"; - case 79: // F9 + case 140: // F9 return "\x04\x4b\x74\x50\x5b"; - case 80: // F10 + case 141: // F10 return "\x04\x4b\x74\x50\x5d"; - case 81: // F11 + case 142: // F11 return "\x04\x4b\x74\x50\x7b"; - case 82: // F12 + case 143: // F12 return "\x04\x4b\x74\x50\x7d"; - case 83: // F13 + case 144: // F13 return "\x04\x4b\x74\x50\x40"; - case 84: // F14 + case 145: // F14 return "\x04\x4b\x74\x50\x25"; - case 85: // F15 + case 146: // F15 return "\x04\x4b\x74\x50\x24"; - case 86: // F16 + case 147: // F16 return "\x04\x4b\x74\x50\x23"; - case 87: // F17 + case 148: // F17 return "\x05\x4b\x74\x50\x42\x41"; - case 88: // F18 + case 149: // F18 return "\x05\x4b\x74\x50\x42\x42"; - case 89: // F19 + case 150: // F19 return "\x05\x4b\x74\x50\x42\x43"; - case 90: // F20 + case 151: // F20 return "\x05\x4b\x74\x50\x42\x44"; - case 91: // F21 + case 152: // F21 return "\x05\x4b\x74\x50\x42\x45"; - case 92: // F22 + case 153: // F22 return "\x05\x4b\x74\x50\x42\x46"; - case 93: // F23 + case 154: // F23 return "\x05\x4b\x74\x50\x42\x47"; - case 94: // F24 + case 155: // F24 return "\x05\x4b\x74\x50\x42\x48"; - case 95: // F25 + case 156: // F25 return "\x05\x4b\x74\x50\x42\x49"; - case 96: // KP_0 + case 157: // KP_0 return "\x05\x4b\x74\x50\x42\x4a"; - case 97: // KP_1 + case 158: // KP_1 return "\x05\x4b\x74\x50\x42\x4b"; - case 98: // KP_2 + case 159: // KP_2 return "\x05\x4b\x74\x50\x42\x4c"; - case 99: // KP_3 + case 160: // KP_3 return "\x05\x4b\x74\x50\x42\x4d"; - case 100: // KP_4 + case 161: // KP_4 return "\x05\x4b\x74\x50\x42\x4e"; - case 101: // KP_5 + case 162: // KP_5 return "\x05\x4b\x74\x50\x42\x4f"; - case 102: // KP_6 + case 163: // KP_6 return "\x05\x4b\x74\x50\x42\x50"; - case 103: // KP_7 + case 164: // KP_7 return "\x05\x4b\x74\x50\x42\x51"; - case 104: // KP_8 + case 165: // KP_8 return "\x05\x4b\x74\x50\x42\x52"; - case 105: // KP_9 + case 166: // KP_9 return "\x05\x4b\x74\x50\x42\x53"; - case 106: // KP_DECIMAL + case 167: // KP_DECIMAL return "\x05\x4b\x74\x50\x42\x54"; - case 107: // KP_DIVIDE + case 168: // KP_DIVIDE return "\x05\x4b\x74\x50\x42\x55"; - case 108: // KP_MULTIPLY + case 169: // KP_MULTIPLY return "\x05\x4b\x74\x50\x42\x56"; - case 109: // KP_SUBTRACT + case 170: // KP_SUBTRACT return "\x05\x4b\x74\x50\x42\x57"; - case 110: // KP_ADD + case 171: // KP_ADD return "\x05\x4b\x74\x50\x42\x58"; - case 111: // KP_ENTER + case 172: // KP_ENTER return "\x05\x4b\x74\x50\x42\x59"; - case 112: // KP_EQUAL + case 173: // KP_EQUAL return "\x05\x4b\x74\x50\x42\x5a"; - case 114: // LEFT_CONTROL + case 175: // LEFT_CONTROL return "\x05\x4b\x74\x50\x42\x62"; - case 115: // LEFT_ALT + case 176: // LEFT_ALT return "\x05\x4b\x74\x50\x42\x63"; - case 116: // LEFT_SUPER + case 177: // LEFT_SUPER return "\x05\x4b\x74\x50\x42\x64"; - case 118: // RIGHT_CONTROL + case 179: // RIGHT_CONTROL return "\x05\x4b\x74\x50\x42\x66"; - case 119: // RIGHT_ALT + case 180: // RIGHT_ALT return "\x05\x4b\x74\x50\x42\x67"; - case 120: // RIGHT_SUPER + case 181: // RIGHT_SUPER return "\x05\x4b\x74\x50\x42\x68"; } // end switch(key) } // end switch(mods)