kitty/kitty/keys.h

23410 lines
1.1 MiB
Generated

// auto-generated from keys.py, do not edit!
#pragma once
#include <stddef.h>
#include <stdint.h>
#include <stdbool.h>
#include <limits.h>
// map glfw key numbers to 7-bit numbers for compact data storage
static const uint8_t key_map[349] = {
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,
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 */
59, /* CIRCUMFLEX */
60, /* UNDERSCORE */
61, /* GRAVE_ACCENT */
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,
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,
62, /* WORLD_1 */
63, /* WORLD_2 */
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
64, /* PARAGRAPH */
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,
65, /* MASCULINE */
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
66, /* A_GRAVE */
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
67, /* A_DIAERESIS */
68, /* A_RING */
69, /* AE */
70, /* C_CEDILLA */
71, /* E_GRAVE */
72, /* E_ACUTE */
UINT8_MAX,
UINT8_MAX,
73, /* I_GRAVE */
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
74, /* N_TILDE */
75, /* O_GRAVE */
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
76, /* O_DIAERESIS */
UINT8_MAX,
77, /* O_SLASH */
78, /* U_GRAVE */
UINT8_MAX,
UINT8_MAX,
79, /* U_DIAERESIS */
UINT8_MAX,
80, /* S_SHARP */
81, /* CYRILLIC_A */
82, /* CYRILLIC_BE */
83, /* CYRILLIC_VE */
84, /* CYRILLIC_GHE */
85, /* CYRILLIC_DE */
86, /* CYRILLIC_IE */
87, /* CYRILLIC_ZHE */
88, /* CYRILLIC_ZE */
89, /* CYRILLIC_I */
90, /* CYRILLIC_SHORT_I */
91, /* CYRILLIC_KA */
92, /* CYRILLIC_EL */
93, /* CYRILLIC_EM */
94, /* CYRILLIC_EN */
95, /* CYRILLIC_O */
96, /* CYRILLIC_PE */
97, /* CYRILLIC_ER */
98, /* CYRILLIC_ES */
99, /* CYRILLIC_TE */
100, /* CYRILLIC_U */
101, /* CYRILLIC_EF */
102, /* CYRILLIC_HA */
103, /* CYRILLIC_TSE */
104, /* CYRILLIC_CHE */
105, /* CYRILLIC_SHA */
106, /* CYRILLIC_SHCHA */
107, /* CYRILLIC_HARD_SIGN */
108, /* CYRILLIC_YERU */
109, /* CYRILLIC_SOFT_SIGN */
110, /* CYRILLIC_E */
111, /* CYRILLIC_YU */
112, /* CYRILLIC_YA */
113, /* CYRILLIC_IO */
114, /* ESCAPE */
115, /* ENTER */
116, /* TAB */
117, /* BACKSPACE */
118, /* INSERT */
119, /* DELETE */
120, /* RIGHT */
121, /* LEFT */
122, /* DOWN */
123, /* UP */
124, /* PAGE_UP */
125, /* PAGE_DOWN */
126, /* HOME */
127, /* END */
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
128, /* CAPS_LOCK */
129, /* SCROLL_LOCK */
130, /* NUM_LOCK */
131, /* PRINT_SCREEN */
132, /* PAUSE */
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
133, /* F1 */
134, /* F2 */
135, /* F3 */
136, /* F4 */
137, /* F5 */
138, /* F6 */
139, /* F7 */
140, /* F8 */
141, /* F9 */
142, /* F10 */
143, /* F11 */
144, /* F12 */
145, /* F13 */
146, /* F14 */
147, /* F15 */
148, /* F16 */
149, /* F17 */
150, /* F18 */
151, /* F19 */
152, /* F20 */
153, /* F21 */
154, /* F22 */
155, /* F23 */
156, /* F24 */
157, /* F25 */
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
158, /* KP_0 */
159, /* KP_1 */
160, /* KP_2 */
161, /* KP_3 */
162, /* KP_4 */
163, /* KP_5 */
164, /* KP_6 */
165, /* KP_7 */
166, /* KP_8 */
167, /* KP_9 */
168, /* KP_DECIMAL */
169, /* KP_DIVIDE */
170, /* KP_MULTIPLY */
171, /* KP_SUBTRACT */
172, /* KP_ADD */
173, /* KP_ENTER */
174, /* KP_EQUAL */
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
175, /* LEFT_SHIFT */
176, /* LEFT_CONTROL */
177, /* LEFT_ALT */
178, /* LEFT_SUPER */
179, /* RIGHT_SHIFT */
180, /* RIGHT_CONTROL */
181, /* RIGHT_ALT */
182, /* RIGHT_SUPER */
183, /* 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";
case 47: return "SLASH";
case 48: return "0";
case 49: return "1";
case 50: return "2";
case 51: return "3";
case 52: return "4";
case 53: return "5";
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";
case 68: return "D";
case 69: return "E";
case 70: return "F";
case 71: return "G";
case 72: return "H";
case 73: return "I";
case 74: return "J";
case 75: return "K";
case 76: return "L";
case 77: return "M";
case 78: return "N";
case 79: return "O";
case 80: return "P";
case 81: return "Q";
case 82: return "R";
case 83: return "S";
case 84: return "T";
case 85: return "U";
case 86: return "V";
case 87: return "W";
case 88: return "X";
case 89: return "Y";
case 90: return "Z";
case 91: return "LEFT_BRACKET";
case 92: return "BACKSLASH";
case 93: return "RIGHT_BRACKET";
case 94: return "CIRCUMFLEX";
case 95: return "UNDERSCORE";
case 96: return "GRAVE_ACCENT";
case 161: return "WORLD_1";
case 162: return "WORLD_2";
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";
case 259: return "BACKSPACE";
case 260: return "INSERT";
case 261: return "DELETE";
case 262: return "RIGHT";
case 263: return "LEFT";
case 264: return "DOWN";
case 265: return "UP";
case 266: return "PAGE_UP";
case 267: return "PAGE_DOWN";
case 268: return "HOME";
case 269: return "END";
case 280: return "CAPS_LOCK";
case 281: return "SCROLL_LOCK";
case 282: return "NUM_LOCK";
case 283: return "PRINT_SCREEN";
case 284: return "PAUSE";
case 290: return "F1";
case 291: return "F2";
case 292: return "F3";
case 293: return "F4";
case 294: return "F5";
case 295: return "F6";
case 296: return "F7";
case 297: return "F8";
case 298: return "F9";
case 299: return "F10";
case 300: return "F11";
case 301: return "F12";
case 302: return "F13";
case 303: return "F14";
case 304: return "F15";
case 305: return "F16";
case 306: return "F17";
case 307: return "F18";
case 308: return "F19";
case 309: return "F20";
case 310: return "F21";
case 311: return "F22";
case 312: return "F23";
case 313: return "F24";
case 314: return "F25";
case 320: return "KP_0";
case 321: return "KP_1";
case 322: return "KP_2";
case 323: return "KP_3";
case 324: return "KP_4";
case 325: return "KP_5";
case 326: return "KP_6";
case 327: return "KP_7";
case 328: return "KP_8";
case 329: return "KP_9";
case 330: return "KP_DECIMAL";
case 331: return "KP_DIVIDE";
case 332: return "KP_MULTIPLY";
case 333: return "KP_SUBTRACT";
case 334: return "KP_ADD";
case 335: return "KP_ENTER";
case 336: return "KP_EQUAL";
case 340: return "LEFT_SHIFT";
case 341: return "LEFT_CONTROL";
case 342: return "LEFT_ALT";
case 343: return "LEFT_SUPER";
case 344: return "RIGHT_SHIFT";
case 345: return "RIGHT_CONTROL";
case 346: return "RIGHT_ALT";
case 347: return "RIGHT_SUPER";
case 348: return "MENU";
default: return NULL; }}
typedef enum { NORMAL, APPLICATION, EXTENDED } KeyboardMode;
static inline const char*
key_lookup(uint8_t key, KeyboardMode mode, uint8_t mods, uint8_t action) {
switch(mode) {
case NORMAL:
switch(action & 3) { case 3: return NULL;
case 0: // RELEASE
return NULL;
case 1: // PRESS
switch (mods & 0xf) {
case 0x0:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x5b\x43";
case 121: // LEFT
return "\x03\x1b\x5b\x44";
case 122: // DOWN
return "\x03\x1b\x5b\x42";
case 123: // UP
return "\x03\x1b\x5b\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x5b\x48";
case 127: // END
return "\x03\x1b\x5b\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0x1:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x03\x1b\x5b\x5a";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x32\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x32\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x32\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x32\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x32\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x32\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x32\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x32\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x32\x7e";
} // end switch(key)
case 0x2:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x01\x00";
case 6: // APOSTROPHE
return "\x01\x27";
case 10: // COMMA
return "\x01\x2c";
case 11: // MINUS
return "\x01\x2d";
case 12: // PERIOD
return "\x01\x2e";
case 13: // SLASH
return "\x01\x1f";
case 14: // 0
return "\x01\x30";
case 15: // 1
return "\x01\x31";
case 16: // 2
return "\x01\x00";
case 17: // 3
return "\x01\x1b";
case 18: // 4
return "\x01\x1c";
case 19: // 5
return "\x01\x1d";
case 20: // 6
return "\x01\x1e";
case 21: // 7
return "\x01\x1f";
case 22: // 8
return "\x01\x7f";
case 23: // 9
return "\x01\x39";
case 25: // SEMICOLON
return "\x01\x3b";
case 27: // EQUAL
return "\x01\x3d";
case 30: // A
return "\x01\x01";
case 31: // B
return "\x01\x02";
case 32: // C
return "\x01\x03";
case 33: // D
return "\x01\x04";
case 34: // E
return "\x01\x05";
case 35: // F
return "\x01\x06";
case 36: // G
return "\x01\x07";
case 37: // H
return "\x01\x08";
case 38: // I
return "\x01\x09";
case 39: // J
return "\x01\x0a";
case 40: // K
return "\x01\x0b";
case 41: // L
return "\x01\x0c";
case 42: // M
return "\x01\x0d";
case 43: // N
return "\x01\x0e";
case 44: // O
return "\x01\x0f";
case 45: // P
return "\x01\x10";
case 46: // Q
return "\x01\x11";
case 47: // R
return "\x01\x12";
case 48: // S
return "\x01\x13";
case 49: // T
return "\x01\x14";
case 50: // U
return "\x01\x15";
case 51: // V
return "\x01\x16";
case 52: // W
return "\x01\x17";
case 53: // X
return "\x01\x18";
case 54: // Y
return "\x01\x19";
case 55: // Z
return "\x01\x1a";
case 56: // LEFT_BRACKET
return "\x01\x1b";
case 57: // BACKSLASH
return "\x01\x1c";
case 58: // RIGHT_BRACKET
return "\x01\x1d";
case 59: // CIRCUMFLEX
return "\x01\x1e";
case 60: // UNDERSCORE
return "\x01\x00";
case 61: // GRAVE_ACCENT
return "\x01\x00";
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x08";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x35\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x35\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x35\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x35\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x35\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x35\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x35\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x35\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x35\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x35\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x35\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x35\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x35\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x35\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x35\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x35\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x35\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x35\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x35\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x35\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x35\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x35\x7e";
} // end switch(key)
case 0x3:
switch(key & 0xff) { default: return NULL;
case 11: // MINUS
return "\x01\x1f";
case 13: // SLASH
return "\x01\x7f";
case 16: // 2
return "\x01\x00";
case 20: // 6
return "\x01\x1e";
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x36\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x36\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x36\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x36\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x36\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x36\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x36\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x36\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x36\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x36\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x36\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x36\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x36\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x36\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x36\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x36\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x36\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x36\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x36\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x36\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x36\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x36\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x36\x7e";
} // end switch(key)
case 0x4:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x20";
case 6: // APOSTROPHE
return "\x02\x1b\x27";
case 10: // COMMA
return "\x02\x1b\x2c";
case 11: // MINUS
return "\x02\x1b\x2d";
case 12: // PERIOD
return "\x02\x1b\x2e";
case 13: // SLASH
return "\x02\x1b\x2f";
case 14: // 0
return "\x02\x1b\x30";
case 15: // 1
return "\x02\x1b\x31";
case 16: // 2
return "\x02\x1b\x32";
case 17: // 3
return "\x02\x1b\x33";
case 18: // 4
return "\x02\x1b\x34";
case 19: // 5
return "\x02\x1b\x35";
case 20: // 6
return "\x02\x1b\x36";
case 21: // 7
return "\x02\x1b\x37";
case 22: // 8
return "\x02\x1b\x38";
case 23: // 9
return "\x02\x1b\x39";
case 25: // SEMICOLON
return "\x02\x1b\x3b";
case 27: // EQUAL
return "\x02\x1b\x3d";
case 30: // A
return "\x02\x1b\x61";
case 31: // B
return "\x02\x1b\x62";
case 32: // C
return "\x02\x1b\x63";
case 33: // D
return "\x02\x1b\x64";
case 34: // E
return "\x02\x1b\x65";
case 35: // F
return "\x02\x1b\x66";
case 36: // G
return "\x02\x1b\x67";
case 37: // H
return "\x02\x1b\x68";
case 38: // I
return "\x02\x1b\x69";
case 39: // J
return "\x02\x1b\x6a";
case 40: // K
return "\x02\x1b\x6b";
case 41: // L
return "\x02\x1b\x6c";
case 42: // M
return "\x02\x1b\x6d";
case 43: // N
return "\x02\x1b\x6e";
case 44: // O
return "\x02\x1b\x6f";
case 45: // P
return "\x02\x1b\x70";
case 46: // Q
return "\x02\x1b\x71";
case 47: // R
return "\x02\x1b\x72";
case 48: // S
return "\x02\x1b\x73";
case 49: // T
return "\x02\x1b\x74";
case 50: // U
return "\x02\x1b\x75";
case 51: // V
return "\x02\x1b\x76";
case 52: // W
return "\x02\x1b\x77";
case 53: // X
return "\x02\x1b\x78";
case 54: // Y
return "\x02\x1b\x79";
case 55: // Z
return "\x02\x1b\x7a";
case 56: // LEFT_BRACKET
return "\x02\x1b\x5b";
case 57: // BACKSLASH
return "\x02\x1b\x5c";
case 58: // RIGHT_BRACKET
return "\x02\x1b\x5d";
case 60: // UNDERSCORE
return "\x02\x1b\x5f";
case 61: // GRAVE_ACCENT
return "\x02\x1b\x60";
case 114: // ESCAPE
return "\x02\x1b\x1b";
case 115: // ENTER
return "\x02\x1b\x0d";
case 116: // TAB
return "\x02\x1b\x09";
case 117: // BACKSPACE
return "\x02\x1b\x7f";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x33\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x33\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x33\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x33\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x33\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x33\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x33\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x33\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x33\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x33\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x33\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x33\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x33\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x33\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x33\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x33\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x33\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x33\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x33\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x33\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x33\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x33\x7e";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x33\x7e";
} // end switch(key)
case 0x5:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x20";
case 6: // APOSTROPHE
return "\x02\x1b\x22";
case 10: // COMMA
return "\x02\x1b\x3c";
case 11: // MINUS
return "\x02\x1b\x5f";
case 12: // PERIOD
return "\x02\x1b\x3e";
case 13: // SLASH
return "\x02\x1b\x3f";
case 14: // 0
return "\x02\x1b\x29";
case 15: // 1
return "\x02\x1b\x21";
case 16: // 2
return "\x02\x1b\x40";
case 17: // 3
return "\x02\x1b\x23";
case 18: // 4
return "\x02\x1b\x24";
case 19: // 5
return "\x02\x1b\x25";
case 20: // 6
return "\x02\x1b\x5e";
case 21: // 7
return "\x02\x1b\x26";
case 22: // 8
return "\x02\x1b\x2a";
case 23: // 9
return "\x02\x1b\x28";
case 25: // SEMICOLON
return "\x02\x1b\x3a";
case 27: // EQUAL
return "\x02\x1b\x2b";
case 30: // A
return "\x02\x1b\x41";
case 31: // B
return "\x02\x1b\x42";
case 32: // C
return "\x02\x1b\x43";
case 33: // D
return "\x02\x1b\x44";
case 34: // E
return "\x02\x1b\x45";
case 35: // F
return "\x02\x1b\x46";
case 36: // G
return "\x02\x1b\x47";
case 37: // H
return "\x02\x1b\x48";
case 38: // I
return "\x02\x1b\x49";
case 39: // J
return "\x02\x1b\x4a";
case 40: // K
return "\x02\x1b\x4b";
case 41: // L
return "\x02\x1b\x4c";
case 42: // M
return "\x02\x1b\x4d";
case 43: // N
return "\x02\x1b\x4e";
case 44: // O
return "\x02\x1b\x4f";
case 45: // P
return "\x02\x1b\x50";
case 46: // Q
return "\x02\x1b\x51";
case 47: // R
return "\x02\x1b\x52";
case 48: // S
return "\x02\x1b\x53";
case 49: // T
return "\x02\x1b\x54";
case 50: // U
return "\x02\x1b\x55";
case 51: // V
return "\x02\x1b\x56";
case 52: // W
return "\x02\x1b\x57";
case 53: // X
return "\x02\x1b\x58";
case 54: // Y
return "\x02\x1b\x59";
case 55: // Z
return "\x02\x1b\x5a";
case 56: // LEFT_BRACKET
return "\x02\x1b\x7b";
case 57: // BACKSLASH
return "\x02\x1b\x7c";
case 58: // RIGHT_BRACKET
return "\x02\x1b\x7d";
case 60: // UNDERSCORE
return "\x02\x1b\x5f";
case 61: // GRAVE_ACCENT
return "\x02\x1b\x7e";
case 114: // ESCAPE
return "\x02\x1b\x1b";
case 115: // ENTER
return "\x02\x1b\x0d";
case 116: // TAB
return "\x03\x1b\x5b\x5a";
case 117: // BACKSPACE
return "\x02\x1b\x7f";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x34\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x34\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x34\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x34\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x34\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x34\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x34\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x34\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x34\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x34\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x34\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x34\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x34\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x34\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x34\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x34\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x34\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x34\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x34\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x34\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x34\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x34\x7e";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x34\x7e";
} // end switch(key)
case 0x6:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x00";
case 30: // A
return "\x02\x1b\x01";
case 31: // B
return "\x02\x1b\x02";
case 32: // C
return "\x02\x1b\x03";
case 33: // D
return "\x02\x1b\x04";
case 34: // E
return "\x02\x1b\x05";
case 35: // F
return "\x02\x1b\x06";
case 36: // G
return "\x02\x1b\x07";
case 37: // H
return "\x02\x1b\x08";
case 38: // I
return "\x02\x1b\x09";
case 39: // J
return "\x02\x1b\x0a";
case 40: // K
return "\x02\x1b\x0b";
case 41: // L
return "\x02\x1b\x0c";
case 42: // M
return "\x02\x1b\x0d";
case 43: // N
return "\x02\x1b\x0e";
case 44: // O
return "\x02\x1b\x0f";
case 45: // P
return "\x02\x1b\x10";
case 46: // Q
return "\x02\x1b\x11";
case 47: // R
return "\x02\x1b\x12";
case 48: // S
return "\x02\x1b\x13";
case 49: // T
return "\x02\x1b\x14";
case 50: // U
return "\x02\x1b\x15";
case 51: // V
return "\x02\x1b\x16";
case 52: // W
return "\x02\x1b\x17";
case 53: // X
return "\x02\x1b\x18";
case 54: // Y
return "\x02\x1b\x19";
case 55: // Z
return "\x02\x1b\x1a";
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x37\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x37\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x37\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x37\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x37\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x37\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x37\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x37\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x37\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x37\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x37\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x37\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x37\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x37\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x37\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x37\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x37\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x37\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x37\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x37\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x37\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x37\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x37\x7e";
} // end switch(key)
case 0x7:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x38\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x38\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x38\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x38\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x38\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x38\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x38\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x38\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x38\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x38\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x38\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x38\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x38\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x38\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x38\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x38\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x38\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x38\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x38\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x38\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x38\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x38\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x38\x7e";
} // end switch(key)
case 0x8:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x5b\x43";
case 121: // LEFT
return "\x03\x1b\x5b\x44";
case 122: // DOWN
return "\x03\x1b\x5b\x42";
case 123: // UP
return "\x03\x1b\x5b\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x5b\x48";
case 127: // END
return "\x03\x1b\x5b\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0x9:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x5b\x43";
case 121: // LEFT
return "\x03\x1b\x5b\x44";
case 122: // DOWN
return "\x03\x1b\x5b\x42";
case 123: // UP
return "\x03\x1b\x5b\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x5b\x48";
case 127: // END
return "\x03\x1b\x5b\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xa:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x5b\x43";
case 121: // LEFT
return "\x03\x1b\x5b\x44";
case 122: // DOWN
return "\x03\x1b\x5b\x42";
case 123: // UP
return "\x03\x1b\x5b\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x5b\x48";
case 127: // END
return "\x03\x1b\x5b\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xb:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x5b\x43";
case 121: // LEFT
return "\x03\x1b\x5b\x44";
case 122: // DOWN
return "\x03\x1b\x5b\x42";
case 123: // UP
return "\x03\x1b\x5b\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x5b\x48";
case 127: // END
return "\x03\x1b\x5b\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xc:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x5b\x43";
case 121: // LEFT
return "\x03\x1b\x5b\x44";
case 122: // DOWN
return "\x03\x1b\x5b\x42";
case 123: // UP
return "\x03\x1b\x5b\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x5b\x48";
case 127: // END
return "\x03\x1b\x5b\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xd:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x5b\x43";
case 121: // LEFT
return "\x03\x1b\x5b\x44";
case 122: // DOWN
return "\x03\x1b\x5b\x42";
case 123: // UP
return "\x03\x1b\x5b\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x5b\x48";
case 127: // END
return "\x03\x1b\x5b\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xe:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x5b\x43";
case 121: // LEFT
return "\x03\x1b\x5b\x44";
case 122: // DOWN
return "\x03\x1b\x5b\x42";
case 123: // UP
return "\x03\x1b\x5b\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x5b\x48";
case 127: // END
return "\x03\x1b\x5b\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xf:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x5b\x43";
case 121: // LEFT
return "\x03\x1b\x5b\x44";
case 122: // DOWN
return "\x03\x1b\x5b\x42";
case 123: // UP
return "\x03\x1b\x5b\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x5b\x48";
case 127: // END
return "\x03\x1b\x5b\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
} // end switch(mods)
break;
case 2: // REPEAT
switch (mods & 0xf) {
case 0x0:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x5b\x43";
case 121: // LEFT
return "\x03\x1b\x5b\x44";
case 122: // DOWN
return "\x03\x1b\x5b\x42";
case 123: // UP
return "\x03\x1b\x5b\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x5b\x48";
case 127: // END
return "\x03\x1b\x5b\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0x1:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x03\x1b\x5b\x5a";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x32\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x32\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x32\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x32\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x32\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x32\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x32\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x32\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x32\x7e";
} // end switch(key)
case 0x2:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x01\x00";
case 6: // APOSTROPHE
return "\x01\x27";
case 10: // COMMA
return "\x01\x2c";
case 11: // MINUS
return "\x01\x2d";
case 12: // PERIOD
return "\x01\x2e";
case 13: // SLASH
return "\x01\x1f";
case 14: // 0
return "\x01\x30";
case 15: // 1
return "\x01\x31";
case 16: // 2
return "\x01\x00";
case 17: // 3
return "\x01\x1b";
case 18: // 4
return "\x01\x1c";
case 19: // 5
return "\x01\x1d";
case 20: // 6
return "\x01\x1e";
case 21: // 7
return "\x01\x1f";
case 22: // 8
return "\x01\x7f";
case 23: // 9
return "\x01\x39";
case 25: // SEMICOLON
return "\x01\x3b";
case 27: // EQUAL
return "\x01\x3d";
case 30: // A
return "\x01\x01";
case 31: // B
return "\x01\x02";
case 32: // C
return "\x01\x03";
case 33: // D
return "\x01\x04";
case 34: // E
return "\x01\x05";
case 35: // F
return "\x01\x06";
case 36: // G
return "\x01\x07";
case 37: // H
return "\x01\x08";
case 38: // I
return "\x01\x09";
case 39: // J
return "\x01\x0a";
case 40: // K
return "\x01\x0b";
case 41: // L
return "\x01\x0c";
case 42: // M
return "\x01\x0d";
case 43: // N
return "\x01\x0e";
case 44: // O
return "\x01\x0f";
case 45: // P
return "\x01\x10";
case 46: // Q
return "\x01\x11";
case 47: // R
return "\x01\x12";
case 48: // S
return "\x01\x13";
case 49: // T
return "\x01\x14";
case 50: // U
return "\x01\x15";
case 51: // V
return "\x01\x16";
case 52: // W
return "\x01\x17";
case 53: // X
return "\x01\x18";
case 54: // Y
return "\x01\x19";
case 55: // Z
return "\x01\x1a";
case 56: // LEFT_BRACKET
return "\x01\x1b";
case 57: // BACKSLASH
return "\x01\x1c";
case 58: // RIGHT_BRACKET
return "\x01\x1d";
case 59: // CIRCUMFLEX
return "\x01\x1e";
case 60: // UNDERSCORE
return "\x01\x00";
case 61: // GRAVE_ACCENT
return "\x01\x00";
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x08";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x35\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x35\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x35\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x35\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x35\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x35\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x35\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x35\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x35\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x35\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x35\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x35\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x35\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x35\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x35\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x35\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x35\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x35\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x35\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x35\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x35\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x35\x7e";
} // end switch(key)
case 0x3:
switch(key & 0xff) { default: return NULL;
case 11: // MINUS
return "\x01\x1f";
case 13: // SLASH
return "\x01\x7f";
case 16: // 2
return "\x01\x00";
case 20: // 6
return "\x01\x1e";
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x36\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x36\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x36\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x36\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x36\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x36\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x36\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x36\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x36\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x36\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x36\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x36\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x36\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x36\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x36\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x36\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x36\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x36\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x36\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x36\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x36\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x36\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x36\x7e";
} // end switch(key)
case 0x4:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x20";
case 6: // APOSTROPHE
return "\x02\x1b\x27";
case 10: // COMMA
return "\x02\x1b\x2c";
case 11: // MINUS
return "\x02\x1b\x2d";
case 12: // PERIOD
return "\x02\x1b\x2e";
case 13: // SLASH
return "\x02\x1b\x2f";
case 14: // 0
return "\x02\x1b\x30";
case 15: // 1
return "\x02\x1b\x31";
case 16: // 2
return "\x02\x1b\x32";
case 17: // 3
return "\x02\x1b\x33";
case 18: // 4
return "\x02\x1b\x34";
case 19: // 5
return "\x02\x1b\x35";
case 20: // 6
return "\x02\x1b\x36";
case 21: // 7
return "\x02\x1b\x37";
case 22: // 8
return "\x02\x1b\x38";
case 23: // 9
return "\x02\x1b\x39";
case 25: // SEMICOLON
return "\x02\x1b\x3b";
case 27: // EQUAL
return "\x02\x1b\x3d";
case 30: // A
return "\x02\x1b\x61";
case 31: // B
return "\x02\x1b\x62";
case 32: // C
return "\x02\x1b\x63";
case 33: // D
return "\x02\x1b\x64";
case 34: // E
return "\x02\x1b\x65";
case 35: // F
return "\x02\x1b\x66";
case 36: // G
return "\x02\x1b\x67";
case 37: // H
return "\x02\x1b\x68";
case 38: // I
return "\x02\x1b\x69";
case 39: // J
return "\x02\x1b\x6a";
case 40: // K
return "\x02\x1b\x6b";
case 41: // L
return "\x02\x1b\x6c";
case 42: // M
return "\x02\x1b\x6d";
case 43: // N
return "\x02\x1b\x6e";
case 44: // O
return "\x02\x1b\x6f";
case 45: // P
return "\x02\x1b\x70";
case 46: // Q
return "\x02\x1b\x71";
case 47: // R
return "\x02\x1b\x72";
case 48: // S
return "\x02\x1b\x73";
case 49: // T
return "\x02\x1b\x74";
case 50: // U
return "\x02\x1b\x75";
case 51: // V
return "\x02\x1b\x76";
case 52: // W
return "\x02\x1b\x77";
case 53: // X
return "\x02\x1b\x78";
case 54: // Y
return "\x02\x1b\x79";
case 55: // Z
return "\x02\x1b\x7a";
case 56: // LEFT_BRACKET
return "\x02\x1b\x5b";
case 57: // BACKSLASH
return "\x02\x1b\x5c";
case 58: // RIGHT_BRACKET
return "\x02\x1b\x5d";
case 60: // UNDERSCORE
return "\x02\x1b\x5f";
case 61: // GRAVE_ACCENT
return "\x02\x1b\x60";
case 114: // ESCAPE
return "\x02\x1b\x1b";
case 115: // ENTER
return "\x02\x1b\x0d";
case 116: // TAB
return "\x02\x1b\x09";
case 117: // BACKSPACE
return "\x02\x1b\x7f";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x33\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x33\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x33\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x33\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x33\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x33\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x33\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x33\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x33\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x33\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x33\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x33\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x33\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x33\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x33\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x33\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x33\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x33\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x33\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x33\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x33\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x33\x7e";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x33\x7e";
} // end switch(key)
case 0x5:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x20";
case 6: // APOSTROPHE
return "\x02\x1b\x22";
case 10: // COMMA
return "\x02\x1b\x3c";
case 11: // MINUS
return "\x02\x1b\x5f";
case 12: // PERIOD
return "\x02\x1b\x3e";
case 13: // SLASH
return "\x02\x1b\x3f";
case 14: // 0
return "\x02\x1b\x29";
case 15: // 1
return "\x02\x1b\x21";
case 16: // 2
return "\x02\x1b\x40";
case 17: // 3
return "\x02\x1b\x23";
case 18: // 4
return "\x02\x1b\x24";
case 19: // 5
return "\x02\x1b\x25";
case 20: // 6
return "\x02\x1b\x5e";
case 21: // 7
return "\x02\x1b\x26";
case 22: // 8
return "\x02\x1b\x2a";
case 23: // 9
return "\x02\x1b\x28";
case 25: // SEMICOLON
return "\x02\x1b\x3a";
case 27: // EQUAL
return "\x02\x1b\x2b";
case 30: // A
return "\x02\x1b\x41";
case 31: // B
return "\x02\x1b\x42";
case 32: // C
return "\x02\x1b\x43";
case 33: // D
return "\x02\x1b\x44";
case 34: // E
return "\x02\x1b\x45";
case 35: // F
return "\x02\x1b\x46";
case 36: // G
return "\x02\x1b\x47";
case 37: // H
return "\x02\x1b\x48";
case 38: // I
return "\x02\x1b\x49";
case 39: // J
return "\x02\x1b\x4a";
case 40: // K
return "\x02\x1b\x4b";
case 41: // L
return "\x02\x1b\x4c";
case 42: // M
return "\x02\x1b\x4d";
case 43: // N
return "\x02\x1b\x4e";
case 44: // O
return "\x02\x1b\x4f";
case 45: // P
return "\x02\x1b\x50";
case 46: // Q
return "\x02\x1b\x51";
case 47: // R
return "\x02\x1b\x52";
case 48: // S
return "\x02\x1b\x53";
case 49: // T
return "\x02\x1b\x54";
case 50: // U
return "\x02\x1b\x55";
case 51: // V
return "\x02\x1b\x56";
case 52: // W
return "\x02\x1b\x57";
case 53: // X
return "\x02\x1b\x58";
case 54: // Y
return "\x02\x1b\x59";
case 55: // Z
return "\x02\x1b\x5a";
case 56: // LEFT_BRACKET
return "\x02\x1b\x7b";
case 57: // BACKSLASH
return "\x02\x1b\x7c";
case 58: // RIGHT_BRACKET
return "\x02\x1b\x7d";
case 60: // UNDERSCORE
return "\x02\x1b\x5f";
case 61: // GRAVE_ACCENT
return "\x02\x1b\x7e";
case 114: // ESCAPE
return "\x02\x1b\x1b";
case 115: // ENTER
return "\x02\x1b\x0d";
case 116: // TAB
return "\x03\x1b\x5b\x5a";
case 117: // BACKSPACE
return "\x02\x1b\x7f";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x34\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x34\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x34\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x34\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x34\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x34\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x34\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x34\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x34\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x34\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x34\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x34\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x34\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x34\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x34\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x34\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x34\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x34\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x34\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x34\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x34\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x34\x7e";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x34\x7e";
} // end switch(key)
case 0x6:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x00";
case 30: // A
return "\x02\x1b\x01";
case 31: // B
return "\x02\x1b\x02";
case 32: // C
return "\x02\x1b\x03";
case 33: // D
return "\x02\x1b\x04";
case 34: // E
return "\x02\x1b\x05";
case 35: // F
return "\x02\x1b\x06";
case 36: // G
return "\x02\x1b\x07";
case 37: // H
return "\x02\x1b\x08";
case 38: // I
return "\x02\x1b\x09";
case 39: // J
return "\x02\x1b\x0a";
case 40: // K
return "\x02\x1b\x0b";
case 41: // L
return "\x02\x1b\x0c";
case 42: // M
return "\x02\x1b\x0d";
case 43: // N
return "\x02\x1b\x0e";
case 44: // O
return "\x02\x1b\x0f";
case 45: // P
return "\x02\x1b\x10";
case 46: // Q
return "\x02\x1b\x11";
case 47: // R
return "\x02\x1b\x12";
case 48: // S
return "\x02\x1b\x13";
case 49: // T
return "\x02\x1b\x14";
case 50: // U
return "\x02\x1b\x15";
case 51: // V
return "\x02\x1b\x16";
case 52: // W
return "\x02\x1b\x17";
case 53: // X
return "\x02\x1b\x18";
case 54: // Y
return "\x02\x1b\x19";
case 55: // Z
return "\x02\x1b\x1a";
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x37\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x37\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x37\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x37\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x37\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x37\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x37\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x37\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x37\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x37\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x37\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x37\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x37\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x37\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x37\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x37\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x37\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x37\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x37\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x37\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x37\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x37\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x37\x7e";
} // end switch(key)
case 0x7:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x38\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x38\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x38\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x38\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x38\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x38\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x38\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x38\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x38\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x38\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x38\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x38\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x38\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x38\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x38\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x38\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x38\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x38\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x38\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x38\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x38\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x38\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x38\x7e";
} // end switch(key)
case 0x8:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x5b\x43";
case 121: // LEFT
return "\x03\x1b\x5b\x44";
case 122: // DOWN
return "\x03\x1b\x5b\x42";
case 123: // UP
return "\x03\x1b\x5b\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x5b\x48";
case 127: // END
return "\x03\x1b\x5b\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0x9:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x5b\x43";
case 121: // LEFT
return "\x03\x1b\x5b\x44";
case 122: // DOWN
return "\x03\x1b\x5b\x42";
case 123: // UP
return "\x03\x1b\x5b\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x5b\x48";
case 127: // END
return "\x03\x1b\x5b\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xa:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x5b\x43";
case 121: // LEFT
return "\x03\x1b\x5b\x44";
case 122: // DOWN
return "\x03\x1b\x5b\x42";
case 123: // UP
return "\x03\x1b\x5b\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x5b\x48";
case 127: // END
return "\x03\x1b\x5b\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xb:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x5b\x43";
case 121: // LEFT
return "\x03\x1b\x5b\x44";
case 122: // DOWN
return "\x03\x1b\x5b\x42";
case 123: // UP
return "\x03\x1b\x5b\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x5b\x48";
case 127: // END
return "\x03\x1b\x5b\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xc:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x5b\x43";
case 121: // LEFT
return "\x03\x1b\x5b\x44";
case 122: // DOWN
return "\x03\x1b\x5b\x42";
case 123: // UP
return "\x03\x1b\x5b\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x5b\x48";
case 127: // END
return "\x03\x1b\x5b\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xd:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x5b\x43";
case 121: // LEFT
return "\x03\x1b\x5b\x44";
case 122: // DOWN
return "\x03\x1b\x5b\x42";
case 123: // UP
return "\x03\x1b\x5b\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x5b\x48";
case 127: // END
return "\x03\x1b\x5b\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xe:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x5b\x43";
case 121: // LEFT
return "\x03\x1b\x5b\x44";
case 122: // DOWN
return "\x03\x1b\x5b\x42";
case 123: // UP
return "\x03\x1b\x5b\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x5b\x48";
case 127: // END
return "\x03\x1b\x5b\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xf:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x5b\x43";
case 121: // LEFT
return "\x03\x1b\x5b\x44";
case 122: // DOWN
return "\x03\x1b\x5b\x42";
case 123: // UP
return "\x03\x1b\x5b\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x5b\x48";
case 127: // END
return "\x03\x1b\x5b\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
} // end switch(mods)
break;
} // end switch(action) in mode NORMAL
break;
case APPLICATION:
switch(action & 3) { case 3: return NULL;
case 0: // RELEASE
return NULL;
case 1: // PRESS
switch (mods & 0xf) {
case 0x0:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x4f\x43";
case 121: // LEFT
return "\x03\x1b\x4f\x44";
case 122: // DOWN
return "\x03\x1b\x4f\x42";
case 123: // UP
return "\x03\x1b\x4f\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x4f\x48";
case 127: // END
return "\x03\x1b\x4f\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0x1:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x03\x1b\x5b\x5a";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x32\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x32\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x32\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x32\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x32\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x32\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x32\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x32\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x32\x7e";
} // end switch(key)
case 0x2:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x01\x00";
case 6: // APOSTROPHE
return "\x01\x27";
case 10: // COMMA
return "\x01\x2c";
case 11: // MINUS
return "\x01\x2d";
case 12: // PERIOD
return "\x01\x2e";
case 13: // SLASH
return "\x01\x1f";
case 14: // 0
return "\x01\x30";
case 15: // 1
return "\x01\x31";
case 16: // 2
return "\x01\x00";
case 17: // 3
return "\x01\x1b";
case 18: // 4
return "\x01\x1c";
case 19: // 5
return "\x01\x1d";
case 20: // 6
return "\x01\x1e";
case 21: // 7
return "\x01\x1f";
case 22: // 8
return "\x01\x7f";
case 23: // 9
return "\x01\x39";
case 25: // SEMICOLON
return "\x01\x3b";
case 27: // EQUAL
return "\x01\x3d";
case 30: // A
return "\x01\x01";
case 31: // B
return "\x01\x02";
case 32: // C
return "\x01\x03";
case 33: // D
return "\x01\x04";
case 34: // E
return "\x01\x05";
case 35: // F
return "\x01\x06";
case 36: // G
return "\x01\x07";
case 37: // H
return "\x01\x08";
case 38: // I
return "\x01\x09";
case 39: // J
return "\x01\x0a";
case 40: // K
return "\x01\x0b";
case 41: // L
return "\x01\x0c";
case 42: // M
return "\x01\x0d";
case 43: // N
return "\x01\x0e";
case 44: // O
return "\x01\x0f";
case 45: // P
return "\x01\x10";
case 46: // Q
return "\x01\x11";
case 47: // R
return "\x01\x12";
case 48: // S
return "\x01\x13";
case 49: // T
return "\x01\x14";
case 50: // U
return "\x01\x15";
case 51: // V
return "\x01\x16";
case 52: // W
return "\x01\x17";
case 53: // X
return "\x01\x18";
case 54: // Y
return "\x01\x19";
case 55: // Z
return "\x01\x1a";
case 56: // LEFT_BRACKET
return "\x01\x1b";
case 57: // BACKSLASH
return "\x01\x1c";
case 58: // RIGHT_BRACKET
return "\x01\x1d";
case 59: // CIRCUMFLEX
return "\x01\x1e";
case 60: // UNDERSCORE
return "\x01\x00";
case 61: // GRAVE_ACCENT
return "\x01\x00";
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x08";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x35\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x35\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x35\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x35\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x35\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x35\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x35\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x35\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x35\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x35\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x35\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x35\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x35\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x35\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x35\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x35\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x35\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x35\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x35\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x35\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x35\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x35\x7e";
} // end switch(key)
case 0x3:
switch(key & 0xff) { default: return NULL;
case 11: // MINUS
return "\x01\x1f";
case 13: // SLASH
return "\x01\x7f";
case 16: // 2
return "\x01\x00";
case 20: // 6
return "\x01\x1e";
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x36\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x36\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x36\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x36\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x36\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x36\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x36\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x36\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x36\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x36\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x36\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x36\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x36\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x36\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x36\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x36\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x36\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x36\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x36\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x36\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x36\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x36\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x36\x7e";
} // end switch(key)
case 0x4:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x20";
case 6: // APOSTROPHE
return "\x02\x1b\x27";
case 10: // COMMA
return "\x02\x1b\x2c";
case 11: // MINUS
return "\x02\x1b\x2d";
case 12: // PERIOD
return "\x02\x1b\x2e";
case 13: // SLASH
return "\x02\x1b\x2f";
case 14: // 0
return "\x02\x1b\x30";
case 15: // 1
return "\x02\x1b\x31";
case 16: // 2
return "\x02\x1b\x32";
case 17: // 3
return "\x02\x1b\x33";
case 18: // 4
return "\x02\x1b\x34";
case 19: // 5
return "\x02\x1b\x35";
case 20: // 6
return "\x02\x1b\x36";
case 21: // 7
return "\x02\x1b\x37";
case 22: // 8
return "\x02\x1b\x38";
case 23: // 9
return "\x02\x1b\x39";
case 25: // SEMICOLON
return "\x02\x1b\x3b";
case 27: // EQUAL
return "\x02\x1b\x3d";
case 30: // A
return "\x02\x1b\x61";
case 31: // B
return "\x02\x1b\x62";
case 32: // C
return "\x02\x1b\x63";
case 33: // D
return "\x02\x1b\x64";
case 34: // E
return "\x02\x1b\x65";
case 35: // F
return "\x02\x1b\x66";
case 36: // G
return "\x02\x1b\x67";
case 37: // H
return "\x02\x1b\x68";
case 38: // I
return "\x02\x1b\x69";
case 39: // J
return "\x02\x1b\x6a";
case 40: // K
return "\x02\x1b\x6b";
case 41: // L
return "\x02\x1b\x6c";
case 42: // M
return "\x02\x1b\x6d";
case 43: // N
return "\x02\x1b\x6e";
case 44: // O
return "\x02\x1b\x6f";
case 45: // P
return "\x02\x1b\x70";
case 46: // Q
return "\x02\x1b\x71";
case 47: // R
return "\x02\x1b\x72";
case 48: // S
return "\x02\x1b\x73";
case 49: // T
return "\x02\x1b\x74";
case 50: // U
return "\x02\x1b\x75";
case 51: // V
return "\x02\x1b\x76";
case 52: // W
return "\x02\x1b\x77";
case 53: // X
return "\x02\x1b\x78";
case 54: // Y
return "\x02\x1b\x79";
case 55: // Z
return "\x02\x1b\x7a";
case 56: // LEFT_BRACKET
return "\x02\x1b\x5b";
case 57: // BACKSLASH
return "\x02\x1b\x5c";
case 58: // RIGHT_BRACKET
return "\x02\x1b\x5d";
case 60: // UNDERSCORE
return "\x02\x1b\x5f";
case 61: // GRAVE_ACCENT
return "\x02\x1b\x60";
case 114: // ESCAPE
return "\x02\x1b\x1b";
case 115: // ENTER
return "\x02\x1b\x0d";
case 116: // TAB
return "\x02\x1b\x09";
case 117: // BACKSPACE
return "\x02\x1b\x7f";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x33\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x33\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x33\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x33\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x33\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x33\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x33\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x33\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x33\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x33\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x33\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x33\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x33\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x33\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x33\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x33\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x33\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x33\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x33\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x33\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x33\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x33\x7e";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x33\x7e";
} // end switch(key)
case 0x5:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x20";
case 6: // APOSTROPHE
return "\x02\x1b\x22";
case 10: // COMMA
return "\x02\x1b\x3c";
case 11: // MINUS
return "\x02\x1b\x5f";
case 12: // PERIOD
return "\x02\x1b\x3e";
case 13: // SLASH
return "\x02\x1b\x3f";
case 14: // 0
return "\x02\x1b\x29";
case 15: // 1
return "\x02\x1b\x21";
case 16: // 2
return "\x02\x1b\x40";
case 17: // 3
return "\x02\x1b\x23";
case 18: // 4
return "\x02\x1b\x24";
case 19: // 5
return "\x02\x1b\x25";
case 20: // 6
return "\x02\x1b\x5e";
case 21: // 7
return "\x02\x1b\x26";
case 22: // 8
return "\x02\x1b\x2a";
case 23: // 9
return "\x02\x1b\x28";
case 25: // SEMICOLON
return "\x02\x1b\x3a";
case 27: // EQUAL
return "\x02\x1b\x2b";
case 30: // A
return "\x02\x1b\x41";
case 31: // B
return "\x02\x1b\x42";
case 32: // C
return "\x02\x1b\x43";
case 33: // D
return "\x02\x1b\x44";
case 34: // E
return "\x02\x1b\x45";
case 35: // F
return "\x02\x1b\x46";
case 36: // G
return "\x02\x1b\x47";
case 37: // H
return "\x02\x1b\x48";
case 38: // I
return "\x02\x1b\x49";
case 39: // J
return "\x02\x1b\x4a";
case 40: // K
return "\x02\x1b\x4b";
case 41: // L
return "\x02\x1b\x4c";
case 42: // M
return "\x02\x1b\x4d";
case 43: // N
return "\x02\x1b\x4e";
case 44: // O
return "\x02\x1b\x4f";
case 45: // P
return "\x02\x1b\x50";
case 46: // Q
return "\x02\x1b\x51";
case 47: // R
return "\x02\x1b\x52";
case 48: // S
return "\x02\x1b\x53";
case 49: // T
return "\x02\x1b\x54";
case 50: // U
return "\x02\x1b\x55";
case 51: // V
return "\x02\x1b\x56";
case 52: // W
return "\x02\x1b\x57";
case 53: // X
return "\x02\x1b\x58";
case 54: // Y
return "\x02\x1b\x59";
case 55: // Z
return "\x02\x1b\x5a";
case 56: // LEFT_BRACKET
return "\x02\x1b\x7b";
case 57: // BACKSLASH
return "\x02\x1b\x7c";
case 58: // RIGHT_BRACKET
return "\x02\x1b\x7d";
case 60: // UNDERSCORE
return "\x02\x1b\x5f";
case 61: // GRAVE_ACCENT
return "\x02\x1b\x7e";
case 114: // ESCAPE
return "\x02\x1b\x1b";
case 115: // ENTER
return "\x02\x1b\x0d";
case 116: // TAB
return "\x03\x1b\x5b\x5a";
case 117: // BACKSPACE
return "\x02\x1b\x7f";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x34\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x34\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x34\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x34\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x34\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x34\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x34\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x34\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x34\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x34\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x34\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x34\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x34\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x34\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x34\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x34\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x34\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x34\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x34\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x34\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x34\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x34\x7e";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x34\x7e";
} // end switch(key)
case 0x6:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x00";
case 30: // A
return "\x02\x1b\x01";
case 31: // B
return "\x02\x1b\x02";
case 32: // C
return "\x02\x1b\x03";
case 33: // D
return "\x02\x1b\x04";
case 34: // E
return "\x02\x1b\x05";
case 35: // F
return "\x02\x1b\x06";
case 36: // G
return "\x02\x1b\x07";
case 37: // H
return "\x02\x1b\x08";
case 38: // I
return "\x02\x1b\x09";
case 39: // J
return "\x02\x1b\x0a";
case 40: // K
return "\x02\x1b\x0b";
case 41: // L
return "\x02\x1b\x0c";
case 42: // M
return "\x02\x1b\x0d";
case 43: // N
return "\x02\x1b\x0e";
case 44: // O
return "\x02\x1b\x0f";
case 45: // P
return "\x02\x1b\x10";
case 46: // Q
return "\x02\x1b\x11";
case 47: // R
return "\x02\x1b\x12";
case 48: // S
return "\x02\x1b\x13";
case 49: // T
return "\x02\x1b\x14";
case 50: // U
return "\x02\x1b\x15";
case 51: // V
return "\x02\x1b\x16";
case 52: // W
return "\x02\x1b\x17";
case 53: // X
return "\x02\x1b\x18";
case 54: // Y
return "\x02\x1b\x19";
case 55: // Z
return "\x02\x1b\x1a";
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x37\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x37\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x37\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x37\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x37\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x37\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x37\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x37\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x37\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x37\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x37\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x37\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x37\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x37\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x37\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x37\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x37\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x37\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x37\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x37\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x37\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x37\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x37\x7e";
} // end switch(key)
case 0x7:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x38\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x38\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x38\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x38\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x38\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x38\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x38\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x38\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x38\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x38\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x38\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x38\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x38\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x38\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x38\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x38\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x38\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x38\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x38\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x38\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x38\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x38\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x38\x7e";
} // end switch(key)
case 0x8:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x4f\x43";
case 121: // LEFT
return "\x03\x1b\x4f\x44";
case 122: // DOWN
return "\x03\x1b\x4f\x42";
case 123: // UP
return "\x03\x1b\x4f\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x4f\x48";
case 127: // END
return "\x03\x1b\x4f\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0x9:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x4f\x43";
case 121: // LEFT
return "\x03\x1b\x4f\x44";
case 122: // DOWN
return "\x03\x1b\x4f\x42";
case 123: // UP
return "\x03\x1b\x4f\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x4f\x48";
case 127: // END
return "\x03\x1b\x4f\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xa:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x4f\x43";
case 121: // LEFT
return "\x03\x1b\x4f\x44";
case 122: // DOWN
return "\x03\x1b\x4f\x42";
case 123: // UP
return "\x03\x1b\x4f\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x4f\x48";
case 127: // END
return "\x03\x1b\x4f\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xb:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x4f\x43";
case 121: // LEFT
return "\x03\x1b\x4f\x44";
case 122: // DOWN
return "\x03\x1b\x4f\x42";
case 123: // UP
return "\x03\x1b\x4f\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x4f\x48";
case 127: // END
return "\x03\x1b\x4f\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xc:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x4f\x43";
case 121: // LEFT
return "\x03\x1b\x4f\x44";
case 122: // DOWN
return "\x03\x1b\x4f\x42";
case 123: // UP
return "\x03\x1b\x4f\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x4f\x48";
case 127: // END
return "\x03\x1b\x4f\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xd:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x4f\x43";
case 121: // LEFT
return "\x03\x1b\x4f\x44";
case 122: // DOWN
return "\x03\x1b\x4f\x42";
case 123: // UP
return "\x03\x1b\x4f\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x4f\x48";
case 127: // END
return "\x03\x1b\x4f\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xe:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x4f\x43";
case 121: // LEFT
return "\x03\x1b\x4f\x44";
case 122: // DOWN
return "\x03\x1b\x4f\x42";
case 123: // UP
return "\x03\x1b\x4f\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x4f\x48";
case 127: // END
return "\x03\x1b\x4f\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xf:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x4f\x43";
case 121: // LEFT
return "\x03\x1b\x4f\x44";
case 122: // DOWN
return "\x03\x1b\x4f\x42";
case 123: // UP
return "\x03\x1b\x4f\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x4f\x48";
case 127: // END
return "\x03\x1b\x4f\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
} // end switch(mods)
break;
case 2: // REPEAT
switch (mods & 0xf) {
case 0x0:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x4f\x43";
case 121: // LEFT
return "\x03\x1b\x4f\x44";
case 122: // DOWN
return "\x03\x1b\x4f\x42";
case 123: // UP
return "\x03\x1b\x4f\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x4f\x48";
case 127: // END
return "\x03\x1b\x4f\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0x1:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x03\x1b\x5b\x5a";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x32\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x32\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x32\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x32\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x32\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x32\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x32\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x32\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x32\x7e";
} // end switch(key)
case 0x2:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x01\x00";
case 6: // APOSTROPHE
return "\x01\x27";
case 10: // COMMA
return "\x01\x2c";
case 11: // MINUS
return "\x01\x2d";
case 12: // PERIOD
return "\x01\x2e";
case 13: // SLASH
return "\x01\x1f";
case 14: // 0
return "\x01\x30";
case 15: // 1
return "\x01\x31";
case 16: // 2
return "\x01\x00";
case 17: // 3
return "\x01\x1b";
case 18: // 4
return "\x01\x1c";
case 19: // 5
return "\x01\x1d";
case 20: // 6
return "\x01\x1e";
case 21: // 7
return "\x01\x1f";
case 22: // 8
return "\x01\x7f";
case 23: // 9
return "\x01\x39";
case 25: // SEMICOLON
return "\x01\x3b";
case 27: // EQUAL
return "\x01\x3d";
case 30: // A
return "\x01\x01";
case 31: // B
return "\x01\x02";
case 32: // C
return "\x01\x03";
case 33: // D
return "\x01\x04";
case 34: // E
return "\x01\x05";
case 35: // F
return "\x01\x06";
case 36: // G
return "\x01\x07";
case 37: // H
return "\x01\x08";
case 38: // I
return "\x01\x09";
case 39: // J
return "\x01\x0a";
case 40: // K
return "\x01\x0b";
case 41: // L
return "\x01\x0c";
case 42: // M
return "\x01\x0d";
case 43: // N
return "\x01\x0e";
case 44: // O
return "\x01\x0f";
case 45: // P
return "\x01\x10";
case 46: // Q
return "\x01\x11";
case 47: // R
return "\x01\x12";
case 48: // S
return "\x01\x13";
case 49: // T
return "\x01\x14";
case 50: // U
return "\x01\x15";
case 51: // V
return "\x01\x16";
case 52: // W
return "\x01\x17";
case 53: // X
return "\x01\x18";
case 54: // Y
return "\x01\x19";
case 55: // Z
return "\x01\x1a";
case 56: // LEFT_BRACKET
return "\x01\x1b";
case 57: // BACKSLASH
return "\x01\x1c";
case 58: // RIGHT_BRACKET
return "\x01\x1d";
case 59: // CIRCUMFLEX
return "\x01\x1e";
case 60: // UNDERSCORE
return "\x01\x00";
case 61: // GRAVE_ACCENT
return "\x01\x00";
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x08";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x35\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x35\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x35\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x35\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x35\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x35\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x35\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x35\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x35\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x35\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x35\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x35\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x35\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x35\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x35\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x35\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x35\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x35\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x35\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x35\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x35\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x35\x7e";
} // end switch(key)
case 0x3:
switch(key & 0xff) { default: return NULL;
case 11: // MINUS
return "\x01\x1f";
case 13: // SLASH
return "\x01\x7f";
case 16: // 2
return "\x01\x00";
case 20: // 6
return "\x01\x1e";
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x36\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x36\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x36\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x36\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x36\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x36\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x36\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x36\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x36\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x36\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x36\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x36\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x36\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x36\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x36\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x36\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x36\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x36\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x36\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x36\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x36\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x36\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x36\x7e";
} // end switch(key)
case 0x4:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x20";
case 6: // APOSTROPHE
return "\x02\x1b\x27";
case 10: // COMMA
return "\x02\x1b\x2c";
case 11: // MINUS
return "\x02\x1b\x2d";
case 12: // PERIOD
return "\x02\x1b\x2e";
case 13: // SLASH
return "\x02\x1b\x2f";
case 14: // 0
return "\x02\x1b\x30";
case 15: // 1
return "\x02\x1b\x31";
case 16: // 2
return "\x02\x1b\x32";
case 17: // 3
return "\x02\x1b\x33";
case 18: // 4
return "\x02\x1b\x34";
case 19: // 5
return "\x02\x1b\x35";
case 20: // 6
return "\x02\x1b\x36";
case 21: // 7
return "\x02\x1b\x37";
case 22: // 8
return "\x02\x1b\x38";
case 23: // 9
return "\x02\x1b\x39";
case 25: // SEMICOLON
return "\x02\x1b\x3b";
case 27: // EQUAL
return "\x02\x1b\x3d";
case 30: // A
return "\x02\x1b\x61";
case 31: // B
return "\x02\x1b\x62";
case 32: // C
return "\x02\x1b\x63";
case 33: // D
return "\x02\x1b\x64";
case 34: // E
return "\x02\x1b\x65";
case 35: // F
return "\x02\x1b\x66";
case 36: // G
return "\x02\x1b\x67";
case 37: // H
return "\x02\x1b\x68";
case 38: // I
return "\x02\x1b\x69";
case 39: // J
return "\x02\x1b\x6a";
case 40: // K
return "\x02\x1b\x6b";
case 41: // L
return "\x02\x1b\x6c";
case 42: // M
return "\x02\x1b\x6d";
case 43: // N
return "\x02\x1b\x6e";
case 44: // O
return "\x02\x1b\x6f";
case 45: // P
return "\x02\x1b\x70";
case 46: // Q
return "\x02\x1b\x71";
case 47: // R
return "\x02\x1b\x72";
case 48: // S
return "\x02\x1b\x73";
case 49: // T
return "\x02\x1b\x74";
case 50: // U
return "\x02\x1b\x75";
case 51: // V
return "\x02\x1b\x76";
case 52: // W
return "\x02\x1b\x77";
case 53: // X
return "\x02\x1b\x78";
case 54: // Y
return "\x02\x1b\x79";
case 55: // Z
return "\x02\x1b\x7a";
case 56: // LEFT_BRACKET
return "\x02\x1b\x5b";
case 57: // BACKSLASH
return "\x02\x1b\x5c";
case 58: // RIGHT_BRACKET
return "\x02\x1b\x5d";
case 60: // UNDERSCORE
return "\x02\x1b\x5f";
case 61: // GRAVE_ACCENT
return "\x02\x1b\x60";
case 114: // ESCAPE
return "\x02\x1b\x1b";
case 115: // ENTER
return "\x02\x1b\x0d";
case 116: // TAB
return "\x02\x1b\x09";
case 117: // BACKSPACE
return "\x02\x1b\x7f";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x33\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x33\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x33\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x33\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x33\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x33\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x33\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x33\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x33\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x33\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x33\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x33\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x33\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x33\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x33\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x33\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x33\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x33\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x33\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x33\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x33\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x33\x7e";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x33\x7e";
} // end switch(key)
case 0x5:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x20";
case 6: // APOSTROPHE
return "\x02\x1b\x22";
case 10: // COMMA
return "\x02\x1b\x3c";
case 11: // MINUS
return "\x02\x1b\x5f";
case 12: // PERIOD
return "\x02\x1b\x3e";
case 13: // SLASH
return "\x02\x1b\x3f";
case 14: // 0
return "\x02\x1b\x29";
case 15: // 1
return "\x02\x1b\x21";
case 16: // 2
return "\x02\x1b\x40";
case 17: // 3
return "\x02\x1b\x23";
case 18: // 4
return "\x02\x1b\x24";
case 19: // 5
return "\x02\x1b\x25";
case 20: // 6
return "\x02\x1b\x5e";
case 21: // 7
return "\x02\x1b\x26";
case 22: // 8
return "\x02\x1b\x2a";
case 23: // 9
return "\x02\x1b\x28";
case 25: // SEMICOLON
return "\x02\x1b\x3a";
case 27: // EQUAL
return "\x02\x1b\x2b";
case 30: // A
return "\x02\x1b\x41";
case 31: // B
return "\x02\x1b\x42";
case 32: // C
return "\x02\x1b\x43";
case 33: // D
return "\x02\x1b\x44";
case 34: // E
return "\x02\x1b\x45";
case 35: // F
return "\x02\x1b\x46";
case 36: // G
return "\x02\x1b\x47";
case 37: // H
return "\x02\x1b\x48";
case 38: // I
return "\x02\x1b\x49";
case 39: // J
return "\x02\x1b\x4a";
case 40: // K
return "\x02\x1b\x4b";
case 41: // L
return "\x02\x1b\x4c";
case 42: // M
return "\x02\x1b\x4d";
case 43: // N
return "\x02\x1b\x4e";
case 44: // O
return "\x02\x1b\x4f";
case 45: // P
return "\x02\x1b\x50";
case 46: // Q
return "\x02\x1b\x51";
case 47: // R
return "\x02\x1b\x52";
case 48: // S
return "\x02\x1b\x53";
case 49: // T
return "\x02\x1b\x54";
case 50: // U
return "\x02\x1b\x55";
case 51: // V
return "\x02\x1b\x56";
case 52: // W
return "\x02\x1b\x57";
case 53: // X
return "\x02\x1b\x58";
case 54: // Y
return "\x02\x1b\x59";
case 55: // Z
return "\x02\x1b\x5a";
case 56: // LEFT_BRACKET
return "\x02\x1b\x7b";
case 57: // BACKSLASH
return "\x02\x1b\x7c";
case 58: // RIGHT_BRACKET
return "\x02\x1b\x7d";
case 60: // UNDERSCORE
return "\x02\x1b\x5f";
case 61: // GRAVE_ACCENT
return "\x02\x1b\x7e";
case 114: // ESCAPE
return "\x02\x1b\x1b";
case 115: // ENTER
return "\x02\x1b\x0d";
case 116: // TAB
return "\x03\x1b\x5b\x5a";
case 117: // BACKSPACE
return "\x02\x1b\x7f";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x34\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x34\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x34\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x34\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x34\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x34\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x34\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x34\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x34\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x34\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x34\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x34\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x34\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x34\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x34\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x34\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x34\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x34\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x34\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x34\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x34\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x34\x7e";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x34\x7e";
} // end switch(key)
case 0x6:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x00";
case 30: // A
return "\x02\x1b\x01";
case 31: // B
return "\x02\x1b\x02";
case 32: // C
return "\x02\x1b\x03";
case 33: // D
return "\x02\x1b\x04";
case 34: // E
return "\x02\x1b\x05";
case 35: // F
return "\x02\x1b\x06";
case 36: // G
return "\x02\x1b\x07";
case 37: // H
return "\x02\x1b\x08";
case 38: // I
return "\x02\x1b\x09";
case 39: // J
return "\x02\x1b\x0a";
case 40: // K
return "\x02\x1b\x0b";
case 41: // L
return "\x02\x1b\x0c";
case 42: // M
return "\x02\x1b\x0d";
case 43: // N
return "\x02\x1b\x0e";
case 44: // O
return "\x02\x1b\x0f";
case 45: // P
return "\x02\x1b\x10";
case 46: // Q
return "\x02\x1b\x11";
case 47: // R
return "\x02\x1b\x12";
case 48: // S
return "\x02\x1b\x13";
case 49: // T
return "\x02\x1b\x14";
case 50: // U
return "\x02\x1b\x15";
case 51: // V
return "\x02\x1b\x16";
case 52: // W
return "\x02\x1b\x17";
case 53: // X
return "\x02\x1b\x18";
case 54: // Y
return "\x02\x1b\x19";
case 55: // Z
return "\x02\x1b\x1a";
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x37\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x37\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x37\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x37\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x37\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x37\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x37\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x37\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x37\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x37\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x37\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x37\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x37\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x37\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x37\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x37\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x37\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x37\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x37\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x37\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x37\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x37\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x37\x7e";
} // end switch(key)
case 0x7:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x06\x1b\x5b\x32\x3b\x38\x7e";
case 119: // DELETE
return "\x06\x1b\x5b\x33\x3b\x38\x7e";
case 120: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x38\x43";
case 121: // LEFT
return "\x06\x1b\x5b\x31\x3b\x38\x44";
case 122: // DOWN
return "\x06\x1b\x5b\x31\x3b\x38\x42";
case 123: // UP
return "\x06\x1b\x5b\x31\x3b\x38\x41";
case 124: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x38\x7e";
case 125: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x38\x7e";
case 126: // HOME
return "\x06\x1b\x5b\x31\x3b\x38\x48";
case 127: // END
return "\x06\x1b\x5b\x31\x3b\x38\x46";
case 133: // F1
return "\x06\x1b\x5b\x31\x3b\x38\x50";
case 134: // F2
return "\x06\x1b\x5b\x31\x3b\x38\x51";
case 135: // F3
return "\x06\x1b\x5b\x31\x3b\x38\x52";
case 136: // F4
return "\x06\x1b\x5b\x31\x3b\x38\x53";
case 137: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x38\x7e";
case 138: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x38\x7e";
case 139: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x38\x7e";
case 140: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x38\x7e";
case 141: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x38\x7e";
case 142: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x38\x7e";
case 143: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x38\x7e";
case 144: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x38\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x07\x1b\x5b\x32\x39\x3b\x38\x7e";
} // end switch(key)
case 0x8:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x4f\x43";
case 121: // LEFT
return "\x03\x1b\x4f\x44";
case 122: // DOWN
return "\x03\x1b\x4f\x42";
case 123: // UP
return "\x03\x1b\x4f\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x4f\x48";
case 127: // END
return "\x03\x1b\x4f\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0x9:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x4f\x43";
case 121: // LEFT
return "\x03\x1b\x4f\x44";
case 122: // DOWN
return "\x03\x1b\x4f\x42";
case 123: // UP
return "\x03\x1b\x4f\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x4f\x48";
case 127: // END
return "\x03\x1b\x4f\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xa:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x4f\x43";
case 121: // LEFT
return "\x03\x1b\x4f\x44";
case 122: // DOWN
return "\x03\x1b\x4f\x42";
case 123: // UP
return "\x03\x1b\x4f\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x4f\x48";
case 127: // END
return "\x03\x1b\x4f\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xb:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x4f\x43";
case 121: // LEFT
return "\x03\x1b\x4f\x44";
case 122: // DOWN
return "\x03\x1b\x4f\x42";
case 123: // UP
return "\x03\x1b\x4f\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x4f\x48";
case 127: // END
return "\x03\x1b\x4f\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xc:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x4f\x43";
case 121: // LEFT
return "\x03\x1b\x4f\x44";
case 122: // DOWN
return "\x03\x1b\x4f\x42";
case 123: // UP
return "\x03\x1b\x4f\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x4f\x48";
case 127: // END
return "\x03\x1b\x4f\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xd:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x4f\x43";
case 121: // LEFT
return "\x03\x1b\x4f\x44";
case 122: // DOWN
return "\x03\x1b\x4f\x42";
case 123: // UP
return "\x03\x1b\x4f\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x4f\x48";
case 127: // END
return "\x03\x1b\x4f\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xe:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x4f\x43";
case 121: // LEFT
return "\x03\x1b\x4f\x44";
case 122: // DOWN
return "\x03\x1b\x4f\x42";
case 123: // UP
return "\x03\x1b\x4f\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x4f\x48";
case 127: // END
return "\x03\x1b\x4f\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
case 0xf:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x01\x1b";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x01\x09";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 119: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 120: // RIGHT
return "\x03\x1b\x4f\x43";
case 121: // LEFT
return "\x03\x1b\x4f\x44";
case 122: // DOWN
return "\x03\x1b\x4f\x42";
case 123: // UP
return "\x03\x1b\x4f\x41";
case 124: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 125: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 126: // HOME
return "\x03\x1b\x4f\x48";
case 127: // END
return "\x03\x1b\x4f\x46";
case 133: // F1
return "\x03\x1b\x4f\x50";
case 134: // F2
return "\x03\x1b\x4f\x51";
case 135: // F3
return "\x03\x1b\x4f\x52";
case 136: // F4
return "\x03\x1b\x4f\x53";
case 137: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 138: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 139: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 140: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 141: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 142: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 143: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 144: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 145: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 146: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 147: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 148: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 149: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 150: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 151: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 152: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 153: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 154: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 155: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 156: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 157: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 173: // KP_ENTER
return "\x01\x0d";
case 183: // MENU
return "\x05\x1b\x5b\x32\x39\x7e";
} // end switch(key)
} // end switch(mods)
break;
} // end switch(action) in mode APPLICATION
break;
case EXTENDED:
switch(action & 3) { case 3: return NULL;
case 0: // RELEASE
switch (mods & 0xf) {
case 0x0:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x04\x4b\x72\x41\x79";
case 116: // TAB
return "\x04\x4b\x72\x41\x30";
case 118: // INSERT
return "\x04\x4b\x72\x41\x32";
case 119: // DELETE
return "\x04\x4b\x72\x41\x33";
case 120: // RIGHT
return "\x04\x4b\x72\x41\x34";
case 121: // LEFT
return "\x04\x4b\x72\x41\x35";
case 122: // DOWN
return "\x04\x4b\x72\x41\x36";
case 123: // UP
return "\x04\x4b\x72\x41\x37";
case 124: // PAGE_UP
return "\x04\x4b\x72\x41\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x72\x41\x39";
case 126: // HOME
return "\x04\x4b\x72\x41\x2e";
case 127: // END
return "\x04\x4b\x72\x41\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x72\x41\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x72\x41\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x72\x41\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x72\x41\x5e";
case 132: // PAUSE
return "\x04\x4b\x72\x41\x21";
case 133: // F1
return "\x04\x4b\x72\x41\x2f";
case 134: // F2
return "\x04\x4b\x72\x41\x2a";
case 135: // F3
return "\x04\x4b\x72\x41\x3f";
case 136: // F4
return "\x04\x4b\x72\x41\x26";
case 137: // F5
return "\x04\x4b\x72\x41\x3c";
case 138: // F6
return "\x04\x4b\x72\x41\x3e";
case 139: // F7
return "\x04\x4b\x72\x41\x28";
case 140: // F8
return "\x04\x4b\x72\x41\x29";
case 141: // F9
return "\x04\x4b\x72\x41\x5b";
case 142: // F10
return "\x04\x4b\x72\x41\x5d";
case 143: // F11
return "\x04\x4b\x72\x41\x7b";
case 144: // F12
return "\x04\x4b\x72\x41\x7d";
case 145: // F13
return "\x04\x4b\x72\x41\x40";
case 146: // F14
return "\x04\x4b\x72\x41\x25";
case 147: // F15
return "\x04\x4b\x72\x41\x24";
case 148: // F16
return "\x04\x4b\x72\x41\x23";
case 149: // F17
return "\x05\x4b\x72\x41\x42\x41";
case 150: // F18
return "\x05\x4b\x72\x41\x42\x42";
case 151: // F19
return "\x05\x4b\x72\x41\x42\x43";
case 152: // F20
return "\x05\x4b\x72\x41\x42\x44";
case 153: // F21
return "\x05\x4b\x72\x41\x42\x45";
case 154: // F22
return "\x05\x4b\x72\x41\x42\x46";
case 155: // F23
return "\x05\x4b\x72\x41\x42\x47";
case 156: // F24
return "\x05\x4b\x72\x41\x42\x48";
case 157: // F25
return "\x05\x4b\x72\x41\x42\x49";
case 158: // KP_0
return "\x05\x4b\x72\x41\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x72\x41\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x72\x41\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x72\x41\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x72\x41\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x72\x41\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x72\x41\x42\x50";
case 165: // KP_7
return "\x05\x4b\x72\x41\x42\x51";
case 166: // KP_8
return "\x05\x4b\x72\x41\x42\x52";
case 167: // KP_9
return "\x05\x4b\x72\x41\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x72\x41\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x72\x41\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x72\x41\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x72\x41\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x72\x41\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x72\x41\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x72\x41\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x72\x41\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x72\x41\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x72\x41\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x72\x41\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x72\x41\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x72\x41\x42\x68";
} // end switch(key)
case 0x1:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x04\x4b\x72\x42\x79";
case 115: // ENTER
return "\x04\x4b\x72\x42\x7a";
case 116: // TAB
return "\x04\x4b\x72\x42\x30";
case 117: // BACKSPACE
return "\x04\x4b\x72\x42\x31";
case 118: // INSERT
return "\x04\x4b\x72\x42\x32";
case 119: // DELETE
return "\x04\x4b\x72\x42\x33";
case 120: // RIGHT
return "\x04\x4b\x72\x42\x34";
case 121: // LEFT
return "\x04\x4b\x72\x42\x35";
case 122: // DOWN
return "\x04\x4b\x72\x42\x36";
case 123: // UP
return "\x04\x4b\x72\x42\x37";
case 124: // PAGE_UP
return "\x04\x4b\x72\x42\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x72\x42\x39";
case 126: // HOME
return "\x04\x4b\x72\x42\x2e";
case 127: // END
return "\x04\x4b\x72\x42\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x72\x42\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x72\x42\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x72\x42\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x72\x42\x5e";
case 132: // PAUSE
return "\x04\x4b\x72\x42\x21";
case 133: // F1
return "\x04\x4b\x72\x42\x2f";
case 134: // F2
return "\x04\x4b\x72\x42\x2a";
case 135: // F3
return "\x04\x4b\x72\x42\x3f";
case 136: // F4
return "\x04\x4b\x72\x42\x26";
case 137: // F5
return "\x04\x4b\x72\x42\x3c";
case 138: // F6
return "\x04\x4b\x72\x42\x3e";
case 139: // F7
return "\x04\x4b\x72\x42\x28";
case 140: // F8
return "\x04\x4b\x72\x42\x29";
case 141: // F9
return "\x04\x4b\x72\x42\x5b";
case 142: // F10
return "\x04\x4b\x72\x42\x5d";
case 143: // F11
return "\x04\x4b\x72\x42\x7b";
case 144: // F12
return "\x04\x4b\x72\x42\x7d";
case 145: // F13
return "\x04\x4b\x72\x42\x40";
case 146: // F14
return "\x04\x4b\x72\x42\x25";
case 147: // F15
return "\x04\x4b\x72\x42\x24";
case 148: // F16
return "\x04\x4b\x72\x42\x23";
case 149: // F17
return "\x05\x4b\x72\x42\x42\x41";
case 150: // F18
return "\x05\x4b\x72\x42\x42\x42";
case 151: // F19
return "\x05\x4b\x72\x42\x42\x43";
case 152: // F20
return "\x05\x4b\x72\x42\x42\x44";
case 153: // F21
return "\x05\x4b\x72\x42\x42\x45";
case 154: // F22
return "\x05\x4b\x72\x42\x42\x46";
case 155: // F23
return "\x05\x4b\x72\x42\x42\x47";
case 156: // F24
return "\x05\x4b\x72\x42\x42\x48";
case 157: // F25
return "\x05\x4b\x72\x42\x42\x49";
case 158: // KP_0
return "\x05\x4b\x72\x42\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x72\x42\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x72\x42\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x72\x42\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x72\x42\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x72\x42\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x72\x42\x42\x50";
case 165: // KP_7
return "\x05\x4b\x72\x42\x42\x51";
case 166: // KP_8
return "\x05\x4b\x72\x42\x42\x52";
case 167: // KP_9
return "\x05\x4b\x72\x42\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x72\x42\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x72\x42\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x72\x42\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x72\x42\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x72\x42\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x72\x42\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x72\x42\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x72\x42\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x72\x42\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x72\x42\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x72\x42\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x72\x42\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x72\x42\x42\x68";
} // end switch(key)
case 0x2:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x45\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x72\x45\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x72\x45\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x72\x45\x76";
case 62: // WORLD_1
return "\x04\x4b\x72\x45\x77";
case 63: // WORLD_2
return "\x04\x4b\x72\x45\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x72\x45\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x72\x45\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x72\x45\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x72\x45\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x72\x45\x42\x30";
case 69: // AE
return "\x05\x4b\x72\x45\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x72\x45\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x72\x45\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x72\x45\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x72\x45\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x72\x45\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x72\x45\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x72\x45\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x72\x45\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x72\x45\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x72\x45\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x72\x45\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x72\x45\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x72\x45\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x72\x45\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x72\x45\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x72\x45\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x72\x45\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x72\x45\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x72\x45\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x72\x45\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x72\x45\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x72\x45\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x72\x45\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x72\x45\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x72\x45\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x72\x45\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x72\x45\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x72\x45\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x72\x45\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x72\x45\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x72\x45\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x72\x45\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x72\x45\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x72\x45\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x72\x45\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x72\x45\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x72\x45\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x72\x45\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x72\x45\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x72\x45\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x72\x45\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x72\x45\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x72\x45\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x72\x45\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x72\x45\x79";
case 115: // ENTER
return "\x04\x4b\x72\x45\x7a";
case 116: // TAB
return "\x04\x4b\x72\x45\x30";
case 117: // BACKSPACE
return "\x04\x4b\x72\x45\x31";
case 118: // INSERT
return "\x04\x4b\x72\x45\x32";
case 119: // DELETE
return "\x04\x4b\x72\x45\x33";
case 120: // RIGHT
return "\x04\x4b\x72\x45\x34";
case 121: // LEFT
return "\x04\x4b\x72\x45\x35";
case 122: // DOWN
return "\x04\x4b\x72\x45\x36";
case 123: // UP
return "\x04\x4b\x72\x45\x37";
case 124: // PAGE_UP
return "\x04\x4b\x72\x45\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x72\x45\x39";
case 126: // HOME
return "\x04\x4b\x72\x45\x2e";
case 127: // END
return "\x04\x4b\x72\x45\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x72\x45\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x72\x45\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x72\x45\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x72\x45\x5e";
case 132: // PAUSE
return "\x04\x4b\x72\x45\x21";
case 133: // F1
return "\x04\x4b\x72\x45\x2f";
case 134: // F2
return "\x04\x4b\x72\x45\x2a";
case 135: // F3
return "\x04\x4b\x72\x45\x3f";
case 136: // F4
return "\x04\x4b\x72\x45\x26";
case 137: // F5
return "\x04\x4b\x72\x45\x3c";
case 138: // F6
return "\x04\x4b\x72\x45\x3e";
case 139: // F7
return "\x04\x4b\x72\x45\x28";
case 140: // F8
return "\x04\x4b\x72\x45\x29";
case 141: // F9
return "\x04\x4b\x72\x45\x5b";
case 142: // F10
return "\x04\x4b\x72\x45\x5d";
case 143: // F11
return "\x04\x4b\x72\x45\x7b";
case 144: // F12
return "\x04\x4b\x72\x45\x7d";
case 145: // F13
return "\x04\x4b\x72\x45\x40";
case 146: // F14
return "\x04\x4b\x72\x45\x25";
case 147: // F15
return "\x04\x4b\x72\x45\x24";
case 148: // F16
return "\x04\x4b\x72\x45\x23";
case 149: // F17
return "\x05\x4b\x72\x45\x42\x41";
case 150: // F18
return "\x05\x4b\x72\x45\x42\x42";
case 151: // F19
return "\x05\x4b\x72\x45\x42\x43";
case 152: // F20
return "\x05\x4b\x72\x45\x42\x44";
case 153: // F21
return "\x05\x4b\x72\x45\x42\x45";
case 154: // F22
return "\x05\x4b\x72\x45\x42\x46";
case 155: // F23
return "\x05\x4b\x72\x45\x42\x47";
case 156: // F24
return "\x05\x4b\x72\x45\x42\x48";
case 157: // F25
return "\x05\x4b\x72\x45\x42\x49";
case 158: // KP_0
return "\x05\x4b\x72\x45\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x72\x45\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x72\x45\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x72\x45\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x72\x45\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x72\x45\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x72\x45\x42\x50";
case 165: // KP_7
return "\x05\x4b\x72\x45\x42\x51";
case 166: // KP_8
return "\x05\x4b\x72\x45\x42\x52";
case 167: // KP_9
return "\x05\x4b\x72\x45\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x72\x45\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x72\x45\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x72\x45\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x72\x45\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x72\x45\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x72\x45\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x72\x45\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x72\x45\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x72\x45\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x72\x45\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x72\x45\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x72\x45\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x72\x45\x42\x68";
} // end switch(key)
case 0x3:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x46\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x72\x46\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x72\x46\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x72\x46\x76";
case 62: // WORLD_1
return "\x04\x4b\x72\x46\x77";
case 63: // WORLD_2
return "\x04\x4b\x72\x46\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x72\x46\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x72\x46\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x72\x46\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x72\x46\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x72\x46\x42\x30";
case 69: // AE
return "\x05\x4b\x72\x46\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x72\x46\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x72\x46\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x72\x46\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x72\x46\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x72\x46\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x72\x46\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x72\x46\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x72\x46\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x72\x46\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x72\x46\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x72\x46\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x72\x46\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x72\x46\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x72\x46\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x72\x46\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x72\x46\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x72\x46\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x72\x46\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x72\x46\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x72\x46\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x72\x46\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x72\x46\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x72\x46\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x72\x46\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x72\x46\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x72\x46\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x72\x46\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x72\x46\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x72\x46\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x72\x46\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x72\x46\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x72\x46\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x72\x46\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x72\x46\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x72\x46\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x72\x46\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x72\x46\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x72\x46\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x72\x46\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x72\x46\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x72\x46\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x72\x46\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x72\x46\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x72\x46\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x72\x46\x79";
case 115: // ENTER
return "\x04\x4b\x72\x46\x7a";
case 116: // TAB
return "\x04\x4b\x72\x46\x30";
case 117: // BACKSPACE
return "\x04\x4b\x72\x46\x31";
case 118: // INSERT
return "\x04\x4b\x72\x46\x32";
case 119: // DELETE
return "\x04\x4b\x72\x46\x33";
case 120: // RIGHT
return "\x04\x4b\x72\x46\x34";
case 121: // LEFT
return "\x04\x4b\x72\x46\x35";
case 122: // DOWN
return "\x04\x4b\x72\x46\x36";
case 123: // UP
return "\x04\x4b\x72\x46\x37";
case 124: // PAGE_UP
return "\x04\x4b\x72\x46\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x72\x46\x39";
case 126: // HOME
return "\x04\x4b\x72\x46\x2e";
case 127: // END
return "\x04\x4b\x72\x46\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x72\x46\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x72\x46\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x72\x46\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x72\x46\x5e";
case 132: // PAUSE
return "\x04\x4b\x72\x46\x21";
case 133: // F1
return "\x04\x4b\x72\x46\x2f";
case 134: // F2
return "\x04\x4b\x72\x46\x2a";
case 135: // F3
return "\x04\x4b\x72\x46\x3f";
case 136: // F4
return "\x04\x4b\x72\x46\x26";
case 137: // F5
return "\x04\x4b\x72\x46\x3c";
case 138: // F6
return "\x04\x4b\x72\x46\x3e";
case 139: // F7
return "\x04\x4b\x72\x46\x28";
case 140: // F8
return "\x04\x4b\x72\x46\x29";
case 141: // F9
return "\x04\x4b\x72\x46\x5b";
case 142: // F10
return "\x04\x4b\x72\x46\x5d";
case 143: // F11
return "\x04\x4b\x72\x46\x7b";
case 144: // F12
return "\x04\x4b\x72\x46\x7d";
case 145: // F13
return "\x04\x4b\x72\x46\x40";
case 146: // F14
return "\x04\x4b\x72\x46\x25";
case 147: // F15
return "\x04\x4b\x72\x46\x24";
case 148: // F16
return "\x04\x4b\x72\x46\x23";
case 149: // F17
return "\x05\x4b\x72\x46\x42\x41";
case 150: // F18
return "\x05\x4b\x72\x46\x42\x42";
case 151: // F19
return "\x05\x4b\x72\x46\x42\x43";
case 152: // F20
return "\x05\x4b\x72\x46\x42\x44";
case 153: // F21
return "\x05\x4b\x72\x46\x42\x45";
case 154: // F22
return "\x05\x4b\x72\x46\x42\x46";
case 155: // F23
return "\x05\x4b\x72\x46\x42\x47";
case 156: // F24
return "\x05\x4b\x72\x46\x42\x48";
case 157: // F25
return "\x05\x4b\x72\x46\x42\x49";
case 158: // KP_0
return "\x05\x4b\x72\x46\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x72\x46\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x72\x46\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x72\x46\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x72\x46\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x72\x46\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x72\x46\x42\x50";
case 165: // KP_7
return "\x05\x4b\x72\x46\x42\x51";
case 166: // KP_8
return "\x05\x4b\x72\x46\x42\x52";
case 167: // KP_9
return "\x05\x4b\x72\x46\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x72\x46\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x72\x46\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x72\x46\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x72\x46\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x72\x46\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x72\x46\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x72\x46\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x72\x46\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x72\x46\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x72\x46\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x72\x46\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x72\x46\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x72\x46\x42\x68";
} // end switch(key)
case 0x4:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x43\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x72\x43\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x72\x43\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x72\x43\x76";
case 62: // WORLD_1
return "\x04\x4b\x72\x43\x77";
case 63: // WORLD_2
return "\x04\x4b\x72\x43\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x72\x43\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x72\x43\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x72\x43\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x72\x43\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x72\x43\x42\x30";
case 69: // AE
return "\x05\x4b\x72\x43\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x72\x43\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x72\x43\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x72\x43\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x72\x43\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x72\x43\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x72\x43\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x72\x43\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x72\x43\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x72\x43\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x72\x43\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x72\x43\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x72\x43\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x72\x43\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x72\x43\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x72\x43\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x72\x43\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x72\x43\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x72\x43\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x72\x43\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x72\x43\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x72\x43\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x72\x43\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x72\x43\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x72\x43\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x72\x43\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x72\x43\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x72\x43\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x72\x43\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x72\x43\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x72\x43\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x72\x43\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x72\x43\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x72\x43\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x72\x43\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x72\x43\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x72\x43\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x72\x43\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x72\x43\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x72\x43\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x72\x43\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x72\x43\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x72\x43\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x72\x43\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x72\x43\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x72\x43\x79";
case 115: // ENTER
return "\x04\x4b\x72\x43\x7a";
case 116: // TAB
return "\x04\x4b\x72\x43\x30";
case 117: // BACKSPACE
return "\x04\x4b\x72\x43\x31";
case 118: // INSERT
return "\x04\x4b\x72\x43\x32";
case 119: // DELETE
return "\x04\x4b\x72\x43\x33";
case 120: // RIGHT
return "\x04\x4b\x72\x43\x34";
case 121: // LEFT
return "\x04\x4b\x72\x43\x35";
case 122: // DOWN
return "\x04\x4b\x72\x43\x36";
case 123: // UP
return "\x04\x4b\x72\x43\x37";
case 124: // PAGE_UP
return "\x04\x4b\x72\x43\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x72\x43\x39";
case 126: // HOME
return "\x04\x4b\x72\x43\x2e";
case 127: // END
return "\x04\x4b\x72\x43\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x72\x43\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x72\x43\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x72\x43\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x72\x43\x5e";
case 132: // PAUSE
return "\x04\x4b\x72\x43\x21";
case 133: // F1
return "\x04\x4b\x72\x43\x2f";
case 134: // F2
return "\x04\x4b\x72\x43\x2a";
case 135: // F3
return "\x04\x4b\x72\x43\x3f";
case 136: // F4
return "\x04\x4b\x72\x43\x26";
case 137: // F5
return "\x04\x4b\x72\x43\x3c";
case 138: // F6
return "\x04\x4b\x72\x43\x3e";
case 139: // F7
return "\x04\x4b\x72\x43\x28";
case 140: // F8
return "\x04\x4b\x72\x43\x29";
case 141: // F9
return "\x04\x4b\x72\x43\x5b";
case 142: // F10
return "\x04\x4b\x72\x43\x5d";
case 143: // F11
return "\x04\x4b\x72\x43\x7b";
case 144: // F12
return "\x04\x4b\x72\x43\x7d";
case 145: // F13
return "\x04\x4b\x72\x43\x40";
case 146: // F14
return "\x04\x4b\x72\x43\x25";
case 147: // F15
return "\x04\x4b\x72\x43\x24";
case 148: // F16
return "\x04\x4b\x72\x43\x23";
case 149: // F17
return "\x05\x4b\x72\x43\x42\x41";
case 150: // F18
return "\x05\x4b\x72\x43\x42\x42";
case 151: // F19
return "\x05\x4b\x72\x43\x42\x43";
case 152: // F20
return "\x05\x4b\x72\x43\x42\x44";
case 153: // F21
return "\x05\x4b\x72\x43\x42\x45";
case 154: // F22
return "\x05\x4b\x72\x43\x42\x46";
case 155: // F23
return "\x05\x4b\x72\x43\x42\x47";
case 156: // F24
return "\x05\x4b\x72\x43\x42\x48";
case 157: // F25
return "\x05\x4b\x72\x43\x42\x49";
case 158: // KP_0
return "\x05\x4b\x72\x43\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x72\x43\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x72\x43\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x72\x43\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x72\x43\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x72\x43\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x72\x43\x42\x50";
case 165: // KP_7
return "\x05\x4b\x72\x43\x42\x51";
case 166: // KP_8
return "\x05\x4b\x72\x43\x42\x52";
case 167: // KP_9
return "\x05\x4b\x72\x43\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x72\x43\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x72\x43\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x72\x43\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x72\x43\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x72\x43\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x72\x43\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x72\x43\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x72\x43\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x72\x43\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x72\x43\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x72\x43\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x72\x43\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x72\x43\x42\x68";
} // end switch(key)
case 0x5:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x44\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x72\x44\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x72\x44\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x72\x44\x76";
case 62: // WORLD_1
return "\x04\x4b\x72\x44\x77";
case 63: // WORLD_2
return "\x04\x4b\x72\x44\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x72\x44\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x72\x44\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x72\x44\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x72\x44\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x72\x44\x42\x30";
case 69: // AE
return "\x05\x4b\x72\x44\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x72\x44\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x72\x44\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x72\x44\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x72\x44\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x72\x44\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x72\x44\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x72\x44\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x72\x44\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x72\x44\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x72\x44\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x72\x44\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x72\x44\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x72\x44\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x72\x44\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x72\x44\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x72\x44\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x72\x44\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x72\x44\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x72\x44\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x72\x44\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x72\x44\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x72\x44\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x72\x44\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x72\x44\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x72\x44\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x72\x44\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x72\x44\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x72\x44\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x72\x44\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x72\x44\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x72\x44\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x72\x44\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x72\x44\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x72\x44\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x72\x44\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x72\x44\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x72\x44\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x72\x44\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x72\x44\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x72\x44\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x72\x44\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x72\x44\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x72\x44\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x72\x44\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x72\x44\x79";
case 115: // ENTER
return "\x04\x4b\x72\x44\x7a";
case 116: // TAB
return "\x04\x4b\x72\x44\x30";
case 117: // BACKSPACE
return "\x04\x4b\x72\x44\x31";
case 118: // INSERT
return "\x04\x4b\x72\x44\x32";
case 119: // DELETE
return "\x04\x4b\x72\x44\x33";
case 120: // RIGHT
return "\x04\x4b\x72\x44\x34";
case 121: // LEFT
return "\x04\x4b\x72\x44\x35";
case 122: // DOWN
return "\x04\x4b\x72\x44\x36";
case 123: // UP
return "\x04\x4b\x72\x44\x37";
case 124: // PAGE_UP
return "\x04\x4b\x72\x44\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x72\x44\x39";
case 126: // HOME
return "\x04\x4b\x72\x44\x2e";
case 127: // END
return "\x04\x4b\x72\x44\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x72\x44\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x72\x44\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x72\x44\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x72\x44\x5e";
case 132: // PAUSE
return "\x04\x4b\x72\x44\x21";
case 133: // F1
return "\x04\x4b\x72\x44\x2f";
case 134: // F2
return "\x04\x4b\x72\x44\x2a";
case 135: // F3
return "\x04\x4b\x72\x44\x3f";
case 136: // F4
return "\x04\x4b\x72\x44\x26";
case 137: // F5
return "\x04\x4b\x72\x44\x3c";
case 138: // F6
return "\x04\x4b\x72\x44\x3e";
case 139: // F7
return "\x04\x4b\x72\x44\x28";
case 140: // F8
return "\x04\x4b\x72\x44\x29";
case 141: // F9
return "\x04\x4b\x72\x44\x5b";
case 142: // F10
return "\x04\x4b\x72\x44\x5d";
case 143: // F11
return "\x04\x4b\x72\x44\x7b";
case 144: // F12
return "\x04\x4b\x72\x44\x7d";
case 145: // F13
return "\x04\x4b\x72\x44\x40";
case 146: // F14
return "\x04\x4b\x72\x44\x25";
case 147: // F15
return "\x04\x4b\x72\x44\x24";
case 148: // F16
return "\x04\x4b\x72\x44\x23";
case 149: // F17
return "\x05\x4b\x72\x44\x42\x41";
case 150: // F18
return "\x05\x4b\x72\x44\x42\x42";
case 151: // F19
return "\x05\x4b\x72\x44\x42\x43";
case 152: // F20
return "\x05\x4b\x72\x44\x42\x44";
case 153: // F21
return "\x05\x4b\x72\x44\x42\x45";
case 154: // F22
return "\x05\x4b\x72\x44\x42\x46";
case 155: // F23
return "\x05\x4b\x72\x44\x42\x47";
case 156: // F24
return "\x05\x4b\x72\x44\x42\x48";
case 157: // F25
return "\x05\x4b\x72\x44\x42\x49";
case 158: // KP_0
return "\x05\x4b\x72\x44\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x72\x44\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x72\x44\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x72\x44\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x72\x44\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x72\x44\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x72\x44\x42\x50";
case 165: // KP_7
return "\x05\x4b\x72\x44\x42\x51";
case 166: // KP_8
return "\x05\x4b\x72\x44\x42\x52";
case 167: // KP_9
return "\x05\x4b\x72\x44\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x72\x44\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x72\x44\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x72\x44\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x72\x44\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x72\x44\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x72\x44\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x72\x44\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x72\x44\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x72\x44\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x72\x44\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x72\x44\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x72\x44\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x72\x44\x42\x68";
} // end switch(key)
case 0x6:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x47\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x72\x47\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x72\x47\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x72\x47\x76";
case 62: // WORLD_1
return "\x04\x4b\x72\x47\x77";
case 63: // WORLD_2
return "\x04\x4b\x72\x47\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x72\x47\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x72\x47\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x72\x47\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x72\x47\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x72\x47\x42\x30";
case 69: // AE
return "\x05\x4b\x72\x47\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x72\x47\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x72\x47\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x72\x47\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x72\x47\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x72\x47\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x72\x47\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x72\x47\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x72\x47\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x72\x47\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x72\x47\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x72\x47\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x72\x47\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x72\x47\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x72\x47\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x72\x47\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x72\x47\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x72\x47\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x72\x47\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x72\x47\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x72\x47\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x72\x47\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x72\x47\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x72\x47\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x72\x47\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x72\x47\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x72\x47\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x72\x47\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x72\x47\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x72\x47\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x72\x47\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x72\x47\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x72\x47\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x72\x47\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x72\x47\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x72\x47\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x72\x47\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x72\x47\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x72\x47\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x72\x47\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x72\x47\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x72\x47\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x72\x47\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x72\x47\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x72\x47\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x72\x47\x79";
case 115: // ENTER
return "\x04\x4b\x72\x47\x7a";
case 116: // TAB
return "\x04\x4b\x72\x47\x30";
case 117: // BACKSPACE
return "\x04\x4b\x72\x47\x31";
case 118: // INSERT
return "\x04\x4b\x72\x47\x32";
case 119: // DELETE
return "\x04\x4b\x72\x47\x33";
case 120: // RIGHT
return "\x04\x4b\x72\x47\x34";
case 121: // LEFT
return "\x04\x4b\x72\x47\x35";
case 122: // DOWN
return "\x04\x4b\x72\x47\x36";
case 123: // UP
return "\x04\x4b\x72\x47\x37";
case 124: // PAGE_UP
return "\x04\x4b\x72\x47\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x72\x47\x39";
case 126: // HOME
return "\x04\x4b\x72\x47\x2e";
case 127: // END
return "\x04\x4b\x72\x47\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x72\x47\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x72\x47\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x72\x47\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x72\x47\x5e";
case 132: // PAUSE
return "\x04\x4b\x72\x47\x21";
case 133: // F1
return "\x04\x4b\x72\x47\x2f";
case 134: // F2
return "\x04\x4b\x72\x47\x2a";
case 135: // F3
return "\x04\x4b\x72\x47\x3f";
case 136: // F4
return "\x04\x4b\x72\x47\x26";
case 137: // F5
return "\x04\x4b\x72\x47\x3c";
case 138: // F6
return "\x04\x4b\x72\x47\x3e";
case 139: // F7
return "\x04\x4b\x72\x47\x28";
case 140: // F8
return "\x04\x4b\x72\x47\x29";
case 141: // F9
return "\x04\x4b\x72\x47\x5b";
case 142: // F10
return "\x04\x4b\x72\x47\x5d";
case 143: // F11
return "\x04\x4b\x72\x47\x7b";
case 144: // F12
return "\x04\x4b\x72\x47\x7d";
case 145: // F13
return "\x04\x4b\x72\x47\x40";
case 146: // F14
return "\x04\x4b\x72\x47\x25";
case 147: // F15
return "\x04\x4b\x72\x47\x24";
case 148: // F16
return "\x04\x4b\x72\x47\x23";
case 149: // F17
return "\x05\x4b\x72\x47\x42\x41";
case 150: // F18
return "\x05\x4b\x72\x47\x42\x42";
case 151: // F19
return "\x05\x4b\x72\x47\x42\x43";
case 152: // F20
return "\x05\x4b\x72\x47\x42\x44";
case 153: // F21
return "\x05\x4b\x72\x47\x42\x45";
case 154: // F22
return "\x05\x4b\x72\x47\x42\x46";
case 155: // F23
return "\x05\x4b\x72\x47\x42\x47";
case 156: // F24
return "\x05\x4b\x72\x47\x42\x48";
case 157: // F25
return "\x05\x4b\x72\x47\x42\x49";
case 158: // KP_0
return "\x05\x4b\x72\x47\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x72\x47\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x72\x47\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x72\x47\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x72\x47\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x72\x47\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x72\x47\x42\x50";
case 165: // KP_7
return "\x05\x4b\x72\x47\x42\x51";
case 166: // KP_8
return "\x05\x4b\x72\x47\x42\x52";
case 167: // KP_9
return "\x05\x4b\x72\x47\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x72\x47\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x72\x47\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x72\x47\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x72\x47\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x72\x47\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x72\x47\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x72\x47\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x72\x47\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x72\x47\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x72\x47\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x72\x47\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x72\x47\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x72\x47\x42\x68";
} // end switch(key)
case 0x7:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x48\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x72\x48\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x72\x48\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x72\x48\x76";
case 62: // WORLD_1
return "\x04\x4b\x72\x48\x77";
case 63: // WORLD_2
return "\x04\x4b\x72\x48\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x72\x48\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x72\x48\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x72\x48\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x72\x48\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x72\x48\x42\x30";
case 69: // AE
return "\x05\x4b\x72\x48\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x72\x48\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x72\x48\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x72\x48\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x72\x48\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x72\x48\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x72\x48\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x72\x48\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x72\x48\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x72\x48\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x72\x48\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x72\x48\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x72\x48\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x72\x48\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x72\x48\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x72\x48\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x72\x48\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x72\x48\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x72\x48\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x72\x48\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x72\x48\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x72\x48\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x72\x48\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x72\x48\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x72\x48\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x72\x48\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x72\x48\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x72\x48\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x72\x48\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x72\x48\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x72\x48\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x72\x48\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x72\x48\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x72\x48\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x72\x48\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x72\x48\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x72\x48\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x72\x48\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x72\x48\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x72\x48\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x72\x48\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x72\x48\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x72\x48\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x72\x48\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x72\x48\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x72\x48\x79";
case 115: // ENTER
return "\x04\x4b\x72\x48\x7a";
case 116: // TAB
return "\x04\x4b\x72\x48\x30";
case 117: // BACKSPACE
return "\x04\x4b\x72\x48\x31";
case 118: // INSERT
return "\x04\x4b\x72\x48\x32";
case 119: // DELETE
return "\x04\x4b\x72\x48\x33";
case 120: // RIGHT
return "\x04\x4b\x72\x48\x34";
case 121: // LEFT
return "\x04\x4b\x72\x48\x35";
case 122: // DOWN
return "\x04\x4b\x72\x48\x36";
case 123: // UP
return "\x04\x4b\x72\x48\x37";
case 124: // PAGE_UP
return "\x04\x4b\x72\x48\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x72\x48\x39";
case 126: // HOME
return "\x04\x4b\x72\x48\x2e";
case 127: // END
return "\x04\x4b\x72\x48\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x72\x48\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x72\x48\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x72\x48\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x72\x48\x5e";
case 132: // PAUSE
return "\x04\x4b\x72\x48\x21";
case 133: // F1
return "\x04\x4b\x72\x48\x2f";
case 134: // F2
return "\x04\x4b\x72\x48\x2a";
case 135: // F3
return "\x04\x4b\x72\x48\x3f";
case 136: // F4
return "\x04\x4b\x72\x48\x26";
case 137: // F5
return "\x04\x4b\x72\x48\x3c";
case 138: // F6
return "\x04\x4b\x72\x48\x3e";
case 139: // F7
return "\x04\x4b\x72\x48\x28";
case 140: // F8
return "\x04\x4b\x72\x48\x29";
case 141: // F9
return "\x04\x4b\x72\x48\x5b";
case 142: // F10
return "\x04\x4b\x72\x48\x5d";
case 143: // F11
return "\x04\x4b\x72\x48\x7b";
case 144: // F12
return "\x04\x4b\x72\x48\x7d";
case 145: // F13
return "\x04\x4b\x72\x48\x40";
case 146: // F14
return "\x04\x4b\x72\x48\x25";
case 147: // F15
return "\x04\x4b\x72\x48\x24";
case 148: // F16
return "\x04\x4b\x72\x48\x23";
case 149: // F17
return "\x05\x4b\x72\x48\x42\x41";
case 150: // F18
return "\x05\x4b\x72\x48\x42\x42";
case 151: // F19
return "\x05\x4b\x72\x48\x42\x43";
case 152: // F20
return "\x05\x4b\x72\x48\x42\x44";
case 153: // F21
return "\x05\x4b\x72\x48\x42\x45";
case 154: // F22
return "\x05\x4b\x72\x48\x42\x46";
case 155: // F23
return "\x05\x4b\x72\x48\x42\x47";
case 156: // F24
return "\x05\x4b\x72\x48\x42\x48";
case 157: // F25
return "\x05\x4b\x72\x48\x42\x49";
case 158: // KP_0
return "\x05\x4b\x72\x48\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x72\x48\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x72\x48\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x72\x48\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x72\x48\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x72\x48\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x72\x48\x42\x50";
case 165: // KP_7
return "\x05\x4b\x72\x48\x42\x51";
case 166: // KP_8
return "\x05\x4b\x72\x48\x42\x52";
case 167: // KP_9
return "\x05\x4b\x72\x48\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x72\x48\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x72\x48\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x72\x48\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x72\x48\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x72\x48\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x72\x48\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x72\x48\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x72\x48\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x72\x48\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x72\x48\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x72\x48\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x72\x48\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x72\x48\x42\x68";
} // end switch(key)
case 0x8:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x49\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x72\x49\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x72\x49\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x72\x49\x76";
case 62: // WORLD_1
return "\x04\x4b\x72\x49\x77";
case 63: // WORLD_2
return "\x04\x4b\x72\x49\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x72\x49\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x72\x49\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x72\x49\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x72\x49\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x72\x49\x42\x30";
case 69: // AE
return "\x05\x4b\x72\x49\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x72\x49\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x72\x49\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x72\x49\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x72\x49\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x72\x49\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x72\x49\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x72\x49\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x72\x49\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x72\x49\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x72\x49\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x72\x49\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x72\x49\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x72\x49\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x72\x49\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x72\x49\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x72\x49\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x72\x49\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x72\x49\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x72\x49\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x72\x49\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x72\x49\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x72\x49\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x72\x49\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x72\x49\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x72\x49\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x72\x49\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x72\x49\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x72\x49\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x72\x49\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x72\x49\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x72\x49\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x72\x49\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x72\x49\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x72\x49\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x72\x49\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x72\x49\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x72\x49\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x72\x49\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x72\x49\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x72\x49\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x72\x49\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x72\x49\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x72\x49\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x72\x49\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x72\x49\x79";
case 115: // ENTER
return "\x04\x4b\x72\x49\x7a";
case 116: // TAB
return "\x04\x4b\x72\x49\x30";
case 117: // BACKSPACE
return "\x04\x4b\x72\x49\x31";
case 118: // INSERT
return "\x04\x4b\x72\x49\x32";
case 119: // DELETE
return "\x04\x4b\x72\x49\x33";
case 120: // RIGHT
return "\x04\x4b\x72\x49\x34";
case 121: // LEFT
return "\x04\x4b\x72\x49\x35";
case 122: // DOWN
return "\x04\x4b\x72\x49\x36";
case 123: // UP
return "\x04\x4b\x72\x49\x37";
case 124: // PAGE_UP
return "\x04\x4b\x72\x49\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x72\x49\x39";
case 126: // HOME
return "\x04\x4b\x72\x49\x2e";
case 127: // END
return "\x04\x4b\x72\x49\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x72\x49\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x72\x49\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x72\x49\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x72\x49\x5e";
case 132: // PAUSE
return "\x04\x4b\x72\x49\x21";
case 133: // F1
return "\x04\x4b\x72\x49\x2f";
case 134: // F2
return "\x04\x4b\x72\x49\x2a";
case 135: // F3
return "\x04\x4b\x72\x49\x3f";
case 136: // F4
return "\x04\x4b\x72\x49\x26";
case 137: // F5
return "\x04\x4b\x72\x49\x3c";
case 138: // F6
return "\x04\x4b\x72\x49\x3e";
case 139: // F7
return "\x04\x4b\x72\x49\x28";
case 140: // F8
return "\x04\x4b\x72\x49\x29";
case 141: // F9
return "\x04\x4b\x72\x49\x5b";
case 142: // F10
return "\x04\x4b\x72\x49\x5d";
case 143: // F11
return "\x04\x4b\x72\x49\x7b";
case 144: // F12
return "\x04\x4b\x72\x49\x7d";
case 145: // F13
return "\x04\x4b\x72\x49\x40";
case 146: // F14
return "\x04\x4b\x72\x49\x25";
case 147: // F15
return "\x04\x4b\x72\x49\x24";
case 148: // F16
return "\x04\x4b\x72\x49\x23";
case 149: // F17
return "\x05\x4b\x72\x49\x42\x41";
case 150: // F18
return "\x05\x4b\x72\x49\x42\x42";
case 151: // F19
return "\x05\x4b\x72\x49\x42\x43";
case 152: // F20
return "\x05\x4b\x72\x49\x42\x44";
case 153: // F21
return "\x05\x4b\x72\x49\x42\x45";
case 154: // F22
return "\x05\x4b\x72\x49\x42\x46";
case 155: // F23
return "\x05\x4b\x72\x49\x42\x47";
case 156: // F24
return "\x05\x4b\x72\x49\x42\x48";
case 157: // F25
return "\x05\x4b\x72\x49\x42\x49";
case 158: // KP_0
return "\x05\x4b\x72\x49\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x72\x49\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x72\x49\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x72\x49\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x72\x49\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x72\x49\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x72\x49\x42\x50";
case 165: // KP_7
return "\x05\x4b\x72\x49\x42\x51";
case 166: // KP_8
return "\x05\x4b\x72\x49\x42\x52";
case 167: // KP_9
return "\x05\x4b\x72\x49\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x72\x49\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x72\x49\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x72\x49\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x72\x49\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x72\x49\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x72\x49\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x72\x49\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x72\x49\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x72\x49\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x72\x49\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x72\x49\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x72\x49\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x72\x49\x42\x68";
} // end switch(key)
case 0x9:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x4a\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x72\x4a\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x72\x4a\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x72\x4a\x76";
case 62: // WORLD_1
return "\x04\x4b\x72\x4a\x77";
case 63: // WORLD_2
return "\x04\x4b\x72\x4a\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x72\x4a\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x72\x4a\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x72\x4a\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x72\x4a\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x72\x4a\x42\x30";
case 69: // AE
return "\x05\x4b\x72\x4a\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x72\x4a\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x72\x4a\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x72\x4a\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x72\x4a\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x72\x4a\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x72\x4a\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x72\x4a\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x72\x4a\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x72\x4a\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x72\x4a\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x72\x4a\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x72\x4a\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x72\x4a\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x72\x4a\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x72\x4a\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x72\x4a\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x72\x4a\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x72\x4a\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x72\x4a\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x72\x4a\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x72\x4a\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x72\x4a\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x72\x4a\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x72\x4a\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x72\x4a\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x72\x4a\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x72\x4a\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x72\x4a\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x72\x4a\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x72\x4a\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x72\x4a\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x72\x4a\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x72\x4a\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x72\x4a\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x72\x4a\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x72\x4a\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x72\x4a\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x72\x4a\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x72\x4a\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x72\x4a\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x72\x4a\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x72\x4a\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x72\x4a\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x72\x4a\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x72\x4a\x79";
case 115: // ENTER
return "\x04\x4b\x72\x4a\x7a";
case 116: // TAB
return "\x04\x4b\x72\x4a\x30";
case 117: // BACKSPACE
return "\x04\x4b\x72\x4a\x31";
case 118: // INSERT
return "\x04\x4b\x72\x4a\x32";
case 119: // DELETE
return "\x04\x4b\x72\x4a\x33";
case 120: // RIGHT
return "\x04\x4b\x72\x4a\x34";
case 121: // LEFT
return "\x04\x4b\x72\x4a\x35";
case 122: // DOWN
return "\x04\x4b\x72\x4a\x36";
case 123: // UP
return "\x04\x4b\x72\x4a\x37";
case 124: // PAGE_UP
return "\x04\x4b\x72\x4a\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x72\x4a\x39";
case 126: // HOME
return "\x04\x4b\x72\x4a\x2e";
case 127: // END
return "\x04\x4b\x72\x4a\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x72\x4a\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x72\x4a\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x72\x4a\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x72\x4a\x5e";
case 132: // PAUSE
return "\x04\x4b\x72\x4a\x21";
case 133: // F1
return "\x04\x4b\x72\x4a\x2f";
case 134: // F2
return "\x04\x4b\x72\x4a\x2a";
case 135: // F3
return "\x04\x4b\x72\x4a\x3f";
case 136: // F4
return "\x04\x4b\x72\x4a\x26";
case 137: // F5
return "\x04\x4b\x72\x4a\x3c";
case 138: // F6
return "\x04\x4b\x72\x4a\x3e";
case 139: // F7
return "\x04\x4b\x72\x4a\x28";
case 140: // F8
return "\x04\x4b\x72\x4a\x29";
case 141: // F9
return "\x04\x4b\x72\x4a\x5b";
case 142: // F10
return "\x04\x4b\x72\x4a\x5d";
case 143: // F11
return "\x04\x4b\x72\x4a\x7b";
case 144: // F12
return "\x04\x4b\x72\x4a\x7d";
case 145: // F13
return "\x04\x4b\x72\x4a\x40";
case 146: // F14
return "\x04\x4b\x72\x4a\x25";
case 147: // F15
return "\x04\x4b\x72\x4a\x24";
case 148: // F16
return "\x04\x4b\x72\x4a\x23";
case 149: // F17
return "\x05\x4b\x72\x4a\x42\x41";
case 150: // F18
return "\x05\x4b\x72\x4a\x42\x42";
case 151: // F19
return "\x05\x4b\x72\x4a\x42\x43";
case 152: // F20
return "\x05\x4b\x72\x4a\x42\x44";
case 153: // F21
return "\x05\x4b\x72\x4a\x42\x45";
case 154: // F22
return "\x05\x4b\x72\x4a\x42\x46";
case 155: // F23
return "\x05\x4b\x72\x4a\x42\x47";
case 156: // F24
return "\x05\x4b\x72\x4a\x42\x48";
case 157: // F25
return "\x05\x4b\x72\x4a\x42\x49";
case 158: // KP_0
return "\x05\x4b\x72\x4a\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x72\x4a\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x72\x4a\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x72\x4a\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x72\x4a\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x72\x4a\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x72\x4a\x42\x50";
case 165: // KP_7
return "\x05\x4b\x72\x4a\x42\x51";
case 166: // KP_8
return "\x05\x4b\x72\x4a\x42\x52";
case 167: // KP_9
return "\x05\x4b\x72\x4a\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x72\x4a\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x72\x4a\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x72\x4a\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x72\x4a\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x72\x4a\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x72\x4a\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x72\x4a\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x72\x4a\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x72\x4a\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x72\x4a\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x72\x4a\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x72\x4a\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x72\x4a\x42\x68";
} // end switch(key)
case 0xa:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x4d\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x72\x4d\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x72\x4d\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x72\x4d\x76";
case 62: // WORLD_1
return "\x04\x4b\x72\x4d\x77";
case 63: // WORLD_2
return "\x04\x4b\x72\x4d\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x72\x4d\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x72\x4d\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x72\x4d\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x72\x4d\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x72\x4d\x42\x30";
case 69: // AE
return "\x05\x4b\x72\x4d\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x72\x4d\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x72\x4d\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x72\x4d\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x72\x4d\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x72\x4d\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x72\x4d\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x72\x4d\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x72\x4d\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x72\x4d\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x72\x4d\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x72\x4d\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x72\x4d\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x72\x4d\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x72\x4d\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x72\x4d\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x72\x4d\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x72\x4d\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x72\x4d\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x72\x4d\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x72\x4d\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x72\x4d\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x72\x4d\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x72\x4d\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x72\x4d\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x72\x4d\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x72\x4d\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x72\x4d\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x72\x4d\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x72\x4d\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x72\x4d\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x72\x4d\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x72\x4d\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x72\x4d\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x72\x4d\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x72\x4d\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x72\x4d\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x72\x4d\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x72\x4d\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x72\x4d\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x72\x4d\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x72\x4d\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x72\x4d\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x72\x4d\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x72\x4d\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x72\x4d\x79";
case 115: // ENTER
return "\x04\x4b\x72\x4d\x7a";
case 116: // TAB
return "\x04\x4b\x72\x4d\x30";
case 117: // BACKSPACE
return "\x04\x4b\x72\x4d\x31";
case 118: // INSERT
return "\x04\x4b\x72\x4d\x32";
case 119: // DELETE
return "\x04\x4b\x72\x4d\x33";
case 120: // RIGHT
return "\x04\x4b\x72\x4d\x34";
case 121: // LEFT
return "\x04\x4b\x72\x4d\x35";
case 122: // DOWN
return "\x04\x4b\x72\x4d\x36";
case 123: // UP
return "\x04\x4b\x72\x4d\x37";
case 124: // PAGE_UP
return "\x04\x4b\x72\x4d\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x72\x4d\x39";
case 126: // HOME
return "\x04\x4b\x72\x4d\x2e";
case 127: // END
return "\x04\x4b\x72\x4d\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x72\x4d\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x72\x4d\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x72\x4d\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x72\x4d\x5e";
case 132: // PAUSE
return "\x04\x4b\x72\x4d\x21";
case 133: // F1
return "\x04\x4b\x72\x4d\x2f";
case 134: // F2
return "\x04\x4b\x72\x4d\x2a";
case 135: // F3
return "\x04\x4b\x72\x4d\x3f";
case 136: // F4
return "\x04\x4b\x72\x4d\x26";
case 137: // F5
return "\x04\x4b\x72\x4d\x3c";
case 138: // F6
return "\x04\x4b\x72\x4d\x3e";
case 139: // F7
return "\x04\x4b\x72\x4d\x28";
case 140: // F8
return "\x04\x4b\x72\x4d\x29";
case 141: // F9
return "\x04\x4b\x72\x4d\x5b";
case 142: // F10
return "\x04\x4b\x72\x4d\x5d";
case 143: // F11
return "\x04\x4b\x72\x4d\x7b";
case 144: // F12
return "\x04\x4b\x72\x4d\x7d";
case 145: // F13
return "\x04\x4b\x72\x4d\x40";
case 146: // F14
return "\x04\x4b\x72\x4d\x25";
case 147: // F15
return "\x04\x4b\x72\x4d\x24";
case 148: // F16
return "\x04\x4b\x72\x4d\x23";
case 149: // F17
return "\x05\x4b\x72\x4d\x42\x41";
case 150: // F18
return "\x05\x4b\x72\x4d\x42\x42";
case 151: // F19
return "\x05\x4b\x72\x4d\x42\x43";
case 152: // F20
return "\x05\x4b\x72\x4d\x42\x44";
case 153: // F21
return "\x05\x4b\x72\x4d\x42\x45";
case 154: // F22
return "\x05\x4b\x72\x4d\x42\x46";
case 155: // F23
return "\x05\x4b\x72\x4d\x42\x47";
case 156: // F24
return "\x05\x4b\x72\x4d\x42\x48";
case 157: // F25
return "\x05\x4b\x72\x4d\x42\x49";
case 158: // KP_0
return "\x05\x4b\x72\x4d\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x72\x4d\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x72\x4d\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x72\x4d\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x72\x4d\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x72\x4d\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x72\x4d\x42\x50";
case 165: // KP_7
return "\x05\x4b\x72\x4d\x42\x51";
case 166: // KP_8
return "\x05\x4b\x72\x4d\x42\x52";
case 167: // KP_9
return "\x05\x4b\x72\x4d\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x72\x4d\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x72\x4d\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x72\x4d\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x72\x4d\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x72\x4d\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x72\x4d\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x72\x4d\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x72\x4d\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x72\x4d\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x72\x4d\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x72\x4d\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x72\x4d\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x72\x4d\x42\x68";
} // end switch(key)
case 0xb:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x4e\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x72\x4e\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x72\x4e\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x72\x4e\x76";
case 62: // WORLD_1
return "\x04\x4b\x72\x4e\x77";
case 63: // WORLD_2
return "\x04\x4b\x72\x4e\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x72\x4e\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x72\x4e\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x72\x4e\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x72\x4e\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x72\x4e\x42\x30";
case 69: // AE
return "\x05\x4b\x72\x4e\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x72\x4e\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x72\x4e\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x72\x4e\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x72\x4e\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x72\x4e\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x72\x4e\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x72\x4e\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x72\x4e\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x72\x4e\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x72\x4e\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x72\x4e\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x72\x4e\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x72\x4e\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x72\x4e\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x72\x4e\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x72\x4e\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x72\x4e\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x72\x4e\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x72\x4e\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x72\x4e\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x72\x4e\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x72\x4e\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x72\x4e\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x72\x4e\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x72\x4e\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x72\x4e\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x72\x4e\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x72\x4e\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x72\x4e\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x72\x4e\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x72\x4e\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x72\x4e\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x72\x4e\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x72\x4e\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x72\x4e\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x72\x4e\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x72\x4e\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x72\x4e\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x72\x4e\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x72\x4e\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x72\x4e\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x72\x4e\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x72\x4e\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x72\x4e\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x72\x4e\x79";
case 115: // ENTER
return "\x04\x4b\x72\x4e\x7a";
case 116: // TAB
return "\x04\x4b\x72\x4e\x30";
case 117: // BACKSPACE
return "\x04\x4b\x72\x4e\x31";
case 118: // INSERT
return "\x04\x4b\x72\x4e\x32";
case 119: // DELETE
return "\x04\x4b\x72\x4e\x33";
case 120: // RIGHT
return "\x04\x4b\x72\x4e\x34";
case 121: // LEFT
return "\x04\x4b\x72\x4e\x35";
case 122: // DOWN
return "\x04\x4b\x72\x4e\x36";
case 123: // UP
return "\x04\x4b\x72\x4e\x37";
case 124: // PAGE_UP
return "\x04\x4b\x72\x4e\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x72\x4e\x39";
case 126: // HOME
return "\x04\x4b\x72\x4e\x2e";
case 127: // END
return "\x04\x4b\x72\x4e\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x72\x4e\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x72\x4e\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x72\x4e\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x72\x4e\x5e";
case 132: // PAUSE
return "\x04\x4b\x72\x4e\x21";
case 133: // F1
return "\x04\x4b\x72\x4e\x2f";
case 134: // F2
return "\x04\x4b\x72\x4e\x2a";
case 135: // F3
return "\x04\x4b\x72\x4e\x3f";
case 136: // F4
return "\x04\x4b\x72\x4e\x26";
case 137: // F5
return "\x04\x4b\x72\x4e\x3c";
case 138: // F6
return "\x04\x4b\x72\x4e\x3e";
case 139: // F7
return "\x04\x4b\x72\x4e\x28";
case 140: // F8
return "\x04\x4b\x72\x4e\x29";
case 141: // F9
return "\x04\x4b\x72\x4e\x5b";
case 142: // F10
return "\x04\x4b\x72\x4e\x5d";
case 143: // F11
return "\x04\x4b\x72\x4e\x7b";
case 144: // F12
return "\x04\x4b\x72\x4e\x7d";
case 145: // F13
return "\x04\x4b\x72\x4e\x40";
case 146: // F14
return "\x04\x4b\x72\x4e\x25";
case 147: // F15
return "\x04\x4b\x72\x4e\x24";
case 148: // F16
return "\x04\x4b\x72\x4e\x23";
case 149: // F17
return "\x05\x4b\x72\x4e\x42\x41";
case 150: // F18
return "\x05\x4b\x72\x4e\x42\x42";
case 151: // F19
return "\x05\x4b\x72\x4e\x42\x43";
case 152: // F20
return "\x05\x4b\x72\x4e\x42\x44";
case 153: // F21
return "\x05\x4b\x72\x4e\x42\x45";
case 154: // F22
return "\x05\x4b\x72\x4e\x42\x46";
case 155: // F23
return "\x05\x4b\x72\x4e\x42\x47";
case 156: // F24
return "\x05\x4b\x72\x4e\x42\x48";
case 157: // F25
return "\x05\x4b\x72\x4e\x42\x49";
case 158: // KP_0
return "\x05\x4b\x72\x4e\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x72\x4e\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x72\x4e\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x72\x4e\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x72\x4e\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x72\x4e\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x72\x4e\x42\x50";
case 165: // KP_7
return "\x05\x4b\x72\x4e\x42\x51";
case 166: // KP_8
return "\x05\x4b\x72\x4e\x42\x52";
case 167: // KP_9
return "\x05\x4b\x72\x4e\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x72\x4e\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x72\x4e\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x72\x4e\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x72\x4e\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x72\x4e\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x72\x4e\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x72\x4e\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x72\x4e\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x72\x4e\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x72\x4e\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x72\x4e\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x72\x4e\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x72\x4e\x42\x68";
} // end switch(key)
case 0xc:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x4b\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x72\x4b\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x72\x4b\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x72\x4b\x76";
case 62: // WORLD_1
return "\x04\x4b\x72\x4b\x77";
case 63: // WORLD_2
return "\x04\x4b\x72\x4b\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x72\x4b\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x72\x4b\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x72\x4b\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x72\x4b\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x72\x4b\x42\x30";
case 69: // AE
return "\x05\x4b\x72\x4b\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x72\x4b\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x72\x4b\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x72\x4b\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x72\x4b\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x72\x4b\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x72\x4b\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x72\x4b\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x72\x4b\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x72\x4b\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x72\x4b\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x72\x4b\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x72\x4b\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x72\x4b\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x72\x4b\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x72\x4b\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x72\x4b\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x72\x4b\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x72\x4b\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x72\x4b\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x72\x4b\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x72\x4b\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x72\x4b\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x72\x4b\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x72\x4b\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x72\x4b\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x72\x4b\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x72\x4b\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x72\x4b\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x72\x4b\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x72\x4b\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x72\x4b\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x72\x4b\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x72\x4b\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x72\x4b\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x72\x4b\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x72\x4b\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x72\x4b\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x72\x4b\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x72\x4b\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x72\x4b\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x72\x4b\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x72\x4b\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x72\x4b\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x72\x4b\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x72\x4b\x79";
case 115: // ENTER
return "\x04\x4b\x72\x4b\x7a";
case 116: // TAB
return "\x04\x4b\x72\x4b\x30";
case 117: // BACKSPACE
return "\x04\x4b\x72\x4b\x31";
case 118: // INSERT
return "\x04\x4b\x72\x4b\x32";
case 119: // DELETE
return "\x04\x4b\x72\x4b\x33";
case 120: // RIGHT
return "\x04\x4b\x72\x4b\x34";
case 121: // LEFT
return "\x04\x4b\x72\x4b\x35";
case 122: // DOWN
return "\x04\x4b\x72\x4b\x36";
case 123: // UP
return "\x04\x4b\x72\x4b\x37";
case 124: // PAGE_UP
return "\x04\x4b\x72\x4b\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x72\x4b\x39";
case 126: // HOME
return "\x04\x4b\x72\x4b\x2e";
case 127: // END
return "\x04\x4b\x72\x4b\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x72\x4b\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x72\x4b\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x72\x4b\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x72\x4b\x5e";
case 132: // PAUSE
return "\x04\x4b\x72\x4b\x21";
case 133: // F1
return "\x04\x4b\x72\x4b\x2f";
case 134: // F2
return "\x04\x4b\x72\x4b\x2a";
case 135: // F3
return "\x04\x4b\x72\x4b\x3f";
case 136: // F4
return "\x04\x4b\x72\x4b\x26";
case 137: // F5
return "\x04\x4b\x72\x4b\x3c";
case 138: // F6
return "\x04\x4b\x72\x4b\x3e";
case 139: // F7
return "\x04\x4b\x72\x4b\x28";
case 140: // F8
return "\x04\x4b\x72\x4b\x29";
case 141: // F9
return "\x04\x4b\x72\x4b\x5b";
case 142: // F10
return "\x04\x4b\x72\x4b\x5d";
case 143: // F11
return "\x04\x4b\x72\x4b\x7b";
case 144: // F12
return "\x04\x4b\x72\x4b\x7d";
case 145: // F13
return "\x04\x4b\x72\x4b\x40";
case 146: // F14
return "\x04\x4b\x72\x4b\x25";
case 147: // F15
return "\x04\x4b\x72\x4b\x24";
case 148: // F16
return "\x04\x4b\x72\x4b\x23";
case 149: // F17
return "\x05\x4b\x72\x4b\x42\x41";
case 150: // F18
return "\x05\x4b\x72\x4b\x42\x42";
case 151: // F19
return "\x05\x4b\x72\x4b\x42\x43";
case 152: // F20
return "\x05\x4b\x72\x4b\x42\x44";
case 153: // F21
return "\x05\x4b\x72\x4b\x42\x45";
case 154: // F22
return "\x05\x4b\x72\x4b\x42\x46";
case 155: // F23
return "\x05\x4b\x72\x4b\x42\x47";
case 156: // F24
return "\x05\x4b\x72\x4b\x42\x48";
case 157: // F25
return "\x05\x4b\x72\x4b\x42\x49";
case 158: // KP_0
return "\x05\x4b\x72\x4b\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x72\x4b\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x72\x4b\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x72\x4b\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x72\x4b\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x72\x4b\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x72\x4b\x42\x50";
case 165: // KP_7
return "\x05\x4b\x72\x4b\x42\x51";
case 166: // KP_8
return "\x05\x4b\x72\x4b\x42\x52";
case 167: // KP_9
return "\x05\x4b\x72\x4b\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x72\x4b\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x72\x4b\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x72\x4b\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x72\x4b\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x72\x4b\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x72\x4b\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x72\x4b\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x72\x4b\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x72\x4b\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x72\x4b\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x72\x4b\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x72\x4b\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x72\x4b\x42\x68";
} // end switch(key)
case 0xd:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x4c\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x72\x4c\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x72\x4c\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x72\x4c\x76";
case 62: // WORLD_1
return "\x04\x4b\x72\x4c\x77";
case 63: // WORLD_2
return "\x04\x4b\x72\x4c\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x72\x4c\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x72\x4c\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x72\x4c\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x72\x4c\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x72\x4c\x42\x30";
case 69: // AE
return "\x05\x4b\x72\x4c\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x72\x4c\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x72\x4c\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x72\x4c\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x72\x4c\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x72\x4c\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x72\x4c\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x72\x4c\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x72\x4c\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x72\x4c\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x72\x4c\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x72\x4c\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x72\x4c\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x72\x4c\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x72\x4c\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x72\x4c\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x72\x4c\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x72\x4c\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x72\x4c\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x72\x4c\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x72\x4c\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x72\x4c\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x72\x4c\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x72\x4c\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x72\x4c\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x72\x4c\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x72\x4c\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x72\x4c\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x72\x4c\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x72\x4c\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x72\x4c\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x72\x4c\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x72\x4c\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x72\x4c\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x72\x4c\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x72\x4c\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x72\x4c\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x72\x4c\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x72\x4c\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x72\x4c\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x72\x4c\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x72\x4c\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x72\x4c\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x72\x4c\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x72\x4c\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x72\x4c\x79";
case 115: // ENTER
return "\x04\x4b\x72\x4c\x7a";
case 116: // TAB
return "\x04\x4b\x72\x4c\x30";
case 117: // BACKSPACE
return "\x04\x4b\x72\x4c\x31";
case 118: // INSERT
return "\x04\x4b\x72\x4c\x32";
case 119: // DELETE
return "\x04\x4b\x72\x4c\x33";
case 120: // RIGHT
return "\x04\x4b\x72\x4c\x34";
case 121: // LEFT
return "\x04\x4b\x72\x4c\x35";
case 122: // DOWN
return "\x04\x4b\x72\x4c\x36";
case 123: // UP
return "\x04\x4b\x72\x4c\x37";
case 124: // PAGE_UP
return "\x04\x4b\x72\x4c\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x72\x4c\x39";
case 126: // HOME
return "\x04\x4b\x72\x4c\x2e";
case 127: // END
return "\x04\x4b\x72\x4c\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x72\x4c\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x72\x4c\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x72\x4c\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x72\x4c\x5e";
case 132: // PAUSE
return "\x04\x4b\x72\x4c\x21";
case 133: // F1
return "\x04\x4b\x72\x4c\x2f";
case 134: // F2
return "\x04\x4b\x72\x4c\x2a";
case 135: // F3
return "\x04\x4b\x72\x4c\x3f";
case 136: // F4
return "\x04\x4b\x72\x4c\x26";
case 137: // F5
return "\x04\x4b\x72\x4c\x3c";
case 138: // F6
return "\x04\x4b\x72\x4c\x3e";
case 139: // F7
return "\x04\x4b\x72\x4c\x28";
case 140: // F8
return "\x04\x4b\x72\x4c\x29";
case 141: // F9
return "\x04\x4b\x72\x4c\x5b";
case 142: // F10
return "\x04\x4b\x72\x4c\x5d";
case 143: // F11
return "\x04\x4b\x72\x4c\x7b";
case 144: // F12
return "\x04\x4b\x72\x4c\x7d";
case 145: // F13
return "\x04\x4b\x72\x4c\x40";
case 146: // F14
return "\x04\x4b\x72\x4c\x25";
case 147: // F15
return "\x04\x4b\x72\x4c\x24";
case 148: // F16
return "\x04\x4b\x72\x4c\x23";
case 149: // F17
return "\x05\x4b\x72\x4c\x42\x41";
case 150: // F18
return "\x05\x4b\x72\x4c\x42\x42";
case 151: // F19
return "\x05\x4b\x72\x4c\x42\x43";
case 152: // F20
return "\x05\x4b\x72\x4c\x42\x44";
case 153: // F21
return "\x05\x4b\x72\x4c\x42\x45";
case 154: // F22
return "\x05\x4b\x72\x4c\x42\x46";
case 155: // F23
return "\x05\x4b\x72\x4c\x42\x47";
case 156: // F24
return "\x05\x4b\x72\x4c\x42\x48";
case 157: // F25
return "\x05\x4b\x72\x4c\x42\x49";
case 158: // KP_0
return "\x05\x4b\x72\x4c\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x72\x4c\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x72\x4c\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x72\x4c\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x72\x4c\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x72\x4c\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x72\x4c\x42\x50";
case 165: // KP_7
return "\x05\x4b\x72\x4c\x42\x51";
case 166: // KP_8
return "\x05\x4b\x72\x4c\x42\x52";
case 167: // KP_9
return "\x05\x4b\x72\x4c\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x72\x4c\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x72\x4c\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x72\x4c\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x72\x4c\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x72\x4c\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x72\x4c\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x72\x4c\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x72\x4c\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x72\x4c\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x72\x4c\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x72\x4c\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x72\x4c\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x72\x4c\x42\x68";
} // end switch(key)
case 0xe:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x4f\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x72\x4f\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x72\x4f\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x72\x4f\x76";
case 62: // WORLD_1
return "\x04\x4b\x72\x4f\x77";
case 63: // WORLD_2
return "\x04\x4b\x72\x4f\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x72\x4f\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x72\x4f\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x72\x4f\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x72\x4f\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x72\x4f\x42\x30";
case 69: // AE
return "\x05\x4b\x72\x4f\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x72\x4f\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x72\x4f\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x72\x4f\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x72\x4f\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x72\x4f\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x72\x4f\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x72\x4f\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x72\x4f\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x72\x4f\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x72\x4f\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x72\x4f\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x72\x4f\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x72\x4f\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x72\x4f\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x72\x4f\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x72\x4f\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x72\x4f\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x72\x4f\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x72\x4f\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x72\x4f\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x72\x4f\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x72\x4f\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x72\x4f\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x72\x4f\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x72\x4f\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x72\x4f\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x72\x4f\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x72\x4f\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x72\x4f\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x72\x4f\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x72\x4f\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x72\x4f\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x72\x4f\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x72\x4f\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x72\x4f\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x72\x4f\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x72\x4f\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x72\x4f\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x72\x4f\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x72\x4f\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x72\x4f\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x72\x4f\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x72\x4f\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x72\x4f\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x72\x4f\x79";
case 115: // ENTER
return "\x04\x4b\x72\x4f\x7a";
case 116: // TAB
return "\x04\x4b\x72\x4f\x30";
case 117: // BACKSPACE
return "\x04\x4b\x72\x4f\x31";
case 118: // INSERT
return "\x04\x4b\x72\x4f\x32";
case 119: // DELETE
return "\x04\x4b\x72\x4f\x33";
case 120: // RIGHT
return "\x04\x4b\x72\x4f\x34";
case 121: // LEFT
return "\x04\x4b\x72\x4f\x35";
case 122: // DOWN
return "\x04\x4b\x72\x4f\x36";
case 123: // UP
return "\x04\x4b\x72\x4f\x37";
case 124: // PAGE_UP
return "\x04\x4b\x72\x4f\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x72\x4f\x39";
case 126: // HOME
return "\x04\x4b\x72\x4f\x2e";
case 127: // END
return "\x04\x4b\x72\x4f\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x72\x4f\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x72\x4f\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x72\x4f\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x72\x4f\x5e";
case 132: // PAUSE
return "\x04\x4b\x72\x4f\x21";
case 133: // F1
return "\x04\x4b\x72\x4f\x2f";
case 134: // F2
return "\x04\x4b\x72\x4f\x2a";
case 135: // F3
return "\x04\x4b\x72\x4f\x3f";
case 136: // F4
return "\x04\x4b\x72\x4f\x26";
case 137: // F5
return "\x04\x4b\x72\x4f\x3c";
case 138: // F6
return "\x04\x4b\x72\x4f\x3e";
case 139: // F7
return "\x04\x4b\x72\x4f\x28";
case 140: // F8
return "\x04\x4b\x72\x4f\x29";
case 141: // F9
return "\x04\x4b\x72\x4f\x5b";
case 142: // F10
return "\x04\x4b\x72\x4f\x5d";
case 143: // F11
return "\x04\x4b\x72\x4f\x7b";
case 144: // F12
return "\x04\x4b\x72\x4f\x7d";
case 145: // F13
return "\x04\x4b\x72\x4f\x40";
case 146: // F14
return "\x04\x4b\x72\x4f\x25";
case 147: // F15
return "\x04\x4b\x72\x4f\x24";
case 148: // F16
return "\x04\x4b\x72\x4f\x23";
case 149: // F17
return "\x05\x4b\x72\x4f\x42\x41";
case 150: // F18
return "\x05\x4b\x72\x4f\x42\x42";
case 151: // F19
return "\x05\x4b\x72\x4f\x42\x43";
case 152: // F20
return "\x05\x4b\x72\x4f\x42\x44";
case 153: // F21
return "\x05\x4b\x72\x4f\x42\x45";
case 154: // F22
return "\x05\x4b\x72\x4f\x42\x46";
case 155: // F23
return "\x05\x4b\x72\x4f\x42\x47";
case 156: // F24
return "\x05\x4b\x72\x4f\x42\x48";
case 157: // F25
return "\x05\x4b\x72\x4f\x42\x49";
case 158: // KP_0
return "\x05\x4b\x72\x4f\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x72\x4f\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x72\x4f\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x72\x4f\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x72\x4f\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x72\x4f\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x72\x4f\x42\x50";
case 165: // KP_7
return "\x05\x4b\x72\x4f\x42\x51";
case 166: // KP_8
return "\x05\x4b\x72\x4f\x42\x52";
case 167: // KP_9
return "\x05\x4b\x72\x4f\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x72\x4f\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x72\x4f\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x72\x4f\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x72\x4f\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x72\x4f\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x72\x4f\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x72\x4f\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x72\x4f\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x72\x4f\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x72\x4f\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x72\x4f\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x72\x4f\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x72\x4f\x42\x68";
} // end switch(key)
case 0xf:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x50\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x72\x50\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x72\x50\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x72\x50\x76";
case 62: // WORLD_1
return "\x04\x4b\x72\x50\x77";
case 63: // WORLD_2
return "\x04\x4b\x72\x50\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x72\x50\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x72\x50\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x72\x50\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x72\x50\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x72\x50\x42\x30";
case 69: // AE
return "\x05\x4b\x72\x50\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x72\x50\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x72\x50\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x72\x50\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x72\x50\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x72\x50\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x72\x50\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x72\x50\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x72\x50\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x72\x50\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x72\x50\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x72\x50\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x72\x50\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x72\x50\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x72\x50\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x72\x50\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x72\x50\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x72\x50\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x72\x50\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x72\x50\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x72\x50\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x72\x50\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x72\x50\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x72\x50\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x72\x50\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x72\x50\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x72\x50\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x72\x50\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x72\x50\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x72\x50\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x72\x50\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x72\x50\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x72\x50\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x72\x50\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x72\x50\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x72\x50\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x72\x50\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x72\x50\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x72\x50\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x72\x50\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x72\x50\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x72\x50\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x72\x50\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x72\x50\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x72\x50\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x72\x50\x79";
case 115: // ENTER
return "\x04\x4b\x72\x50\x7a";
case 116: // TAB
return "\x04\x4b\x72\x50\x30";
case 117: // BACKSPACE
return "\x04\x4b\x72\x50\x31";
case 118: // INSERT
return "\x04\x4b\x72\x50\x32";
case 119: // DELETE
return "\x04\x4b\x72\x50\x33";
case 120: // RIGHT
return "\x04\x4b\x72\x50\x34";
case 121: // LEFT
return "\x04\x4b\x72\x50\x35";
case 122: // DOWN
return "\x04\x4b\x72\x50\x36";
case 123: // UP
return "\x04\x4b\x72\x50\x37";
case 124: // PAGE_UP
return "\x04\x4b\x72\x50\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x72\x50\x39";
case 126: // HOME
return "\x04\x4b\x72\x50\x2e";
case 127: // END
return "\x04\x4b\x72\x50\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x72\x50\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x72\x50\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x72\x50\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x72\x50\x5e";
case 132: // PAUSE
return "\x04\x4b\x72\x50\x21";
case 133: // F1
return "\x04\x4b\x72\x50\x2f";
case 134: // F2
return "\x04\x4b\x72\x50\x2a";
case 135: // F3
return "\x04\x4b\x72\x50\x3f";
case 136: // F4
return "\x04\x4b\x72\x50\x26";
case 137: // F5
return "\x04\x4b\x72\x50\x3c";
case 138: // F6
return "\x04\x4b\x72\x50\x3e";
case 139: // F7
return "\x04\x4b\x72\x50\x28";
case 140: // F8
return "\x04\x4b\x72\x50\x29";
case 141: // F9
return "\x04\x4b\x72\x50\x5b";
case 142: // F10
return "\x04\x4b\x72\x50\x5d";
case 143: // F11
return "\x04\x4b\x72\x50\x7b";
case 144: // F12
return "\x04\x4b\x72\x50\x7d";
case 145: // F13
return "\x04\x4b\x72\x50\x40";
case 146: // F14
return "\x04\x4b\x72\x50\x25";
case 147: // F15
return "\x04\x4b\x72\x50\x24";
case 148: // F16
return "\x04\x4b\x72\x50\x23";
case 149: // F17
return "\x05\x4b\x72\x50\x42\x41";
case 150: // F18
return "\x05\x4b\x72\x50\x42\x42";
case 151: // F19
return "\x05\x4b\x72\x50\x42\x43";
case 152: // F20
return "\x05\x4b\x72\x50\x42\x44";
case 153: // F21
return "\x05\x4b\x72\x50\x42\x45";
case 154: // F22
return "\x05\x4b\x72\x50\x42\x46";
case 155: // F23
return "\x05\x4b\x72\x50\x42\x47";
case 156: // F24
return "\x05\x4b\x72\x50\x42\x48";
case 157: // F25
return "\x05\x4b\x72\x50\x42\x49";
case 158: // KP_0
return "\x05\x4b\x72\x50\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x72\x50\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x72\x50\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x72\x50\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x72\x50\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x72\x50\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x72\x50\x42\x50";
case 165: // KP_7
return "\x05\x4b\x72\x50\x42\x51";
case 166: // KP_8
return "\x05\x4b\x72\x50\x42\x52";
case 167: // KP_9
return "\x05\x4b\x72\x50\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x72\x50\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x72\x50\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x72\x50\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x72\x50\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x72\x50\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x72\x50\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x72\x50\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x72\x50\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x72\x50\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x72\x50\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x72\x50\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x72\x50\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x72\x50\x42\x68";
} // end switch(key)
} // end switch(mods)
break;
case 1: // PRESS
switch (mods & 0xf) {
case 0x0:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x04\x4b\x70\x41\x79";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x04\x4b\x70\x41\x30";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x4b\x70\x41\x32";
case 119: // DELETE
return "\x04\x4b\x70\x41\x33";
case 120: // RIGHT
return "\x04\x4b\x70\x41\x34";
case 121: // LEFT
return "\x04\x4b\x70\x41\x35";
case 122: // DOWN
return "\x04\x4b\x70\x41\x36";
case 123: // UP
return "\x04\x4b\x70\x41\x37";
case 124: // PAGE_UP
return "\x04\x4b\x70\x41\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x70\x41\x39";
case 126: // HOME
return "\x04\x4b\x70\x41\x2e";
case 127: // END
return "\x04\x4b\x70\x41\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x70\x41\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x70\x41\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x70\x41\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x70\x41\x5e";
case 132: // PAUSE
return "\x04\x4b\x70\x41\x21";
case 133: // F1
return "\x04\x4b\x70\x41\x2f";
case 134: // F2
return "\x04\x4b\x70\x41\x2a";
case 135: // F3
return "\x04\x4b\x70\x41\x3f";
case 136: // F4
return "\x04\x4b\x70\x41\x26";
case 137: // F5
return "\x04\x4b\x70\x41\x3c";
case 138: // F6
return "\x04\x4b\x70\x41\x3e";
case 139: // F7
return "\x04\x4b\x70\x41\x28";
case 140: // F8
return "\x04\x4b\x70\x41\x29";
case 141: // F9
return "\x04\x4b\x70\x41\x5b";
case 142: // F10
return "\x04\x4b\x70\x41\x5d";
case 143: // F11
return "\x04\x4b\x70\x41\x7b";
case 144: // F12
return "\x04\x4b\x70\x41\x7d";
case 145: // F13
return "\x04\x4b\x70\x41\x40";
case 146: // F14
return "\x04\x4b\x70\x41\x25";
case 147: // F15
return "\x04\x4b\x70\x41\x24";
case 148: // F16
return "\x04\x4b\x70\x41\x23";
case 149: // F17
return "\x05\x4b\x70\x41\x42\x41";
case 150: // F18
return "\x05\x4b\x70\x41\x42\x42";
case 151: // F19
return "\x05\x4b\x70\x41\x42\x43";
case 152: // F20
return "\x05\x4b\x70\x41\x42\x44";
case 153: // F21
return "\x05\x4b\x70\x41\x42\x45";
case 154: // F22
return "\x05\x4b\x70\x41\x42\x46";
case 155: // F23
return "\x05\x4b\x70\x41\x42\x47";
case 156: // F24
return "\x05\x4b\x70\x41\x42\x48";
case 157: // F25
return "\x05\x4b\x70\x41\x42\x49";
case 158: // KP_0
return "\x05\x4b\x70\x41\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x70\x41\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x70\x41\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x70\x41\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x70\x41\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x70\x41\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x70\x41\x42\x50";
case 165: // KP_7
return "\x05\x4b\x70\x41\x42\x51";
case 166: // KP_8
return "\x05\x4b\x70\x41\x42\x52";
case 167: // KP_9
return "\x05\x4b\x70\x41\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x70\x41\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x70\x41\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x70\x41\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x70\x41\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x70\x41\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x70\x41\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x70\x41\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x70\x41\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x70\x41\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x70\x41\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x70\x41\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x70\x41\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x70\x41\x42\x68";
} // end switch(key)
case 0x1:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x04\x4b\x70\x42\x79";
case 115: // ENTER
return "\x04\x4b\x70\x42\x7a";
case 116: // TAB
return "\x04\x4b\x70\x42\x30";
case 117: // BACKSPACE
return "\x04\x4b\x70\x42\x31";
case 118: // INSERT
return "\x04\x4b\x70\x42\x32";
case 119: // DELETE
return "\x04\x4b\x70\x42\x33";
case 120: // RIGHT
return "\x04\x4b\x70\x42\x34";
case 121: // LEFT
return "\x04\x4b\x70\x42\x35";
case 122: // DOWN
return "\x04\x4b\x70\x42\x36";
case 123: // UP
return "\x04\x4b\x70\x42\x37";
case 124: // PAGE_UP
return "\x04\x4b\x70\x42\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x70\x42\x39";
case 126: // HOME
return "\x04\x4b\x70\x42\x2e";
case 127: // END
return "\x04\x4b\x70\x42\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x70\x42\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x70\x42\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x70\x42\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x70\x42\x5e";
case 132: // PAUSE
return "\x04\x4b\x70\x42\x21";
case 133: // F1
return "\x04\x4b\x70\x42\x2f";
case 134: // F2
return "\x04\x4b\x70\x42\x2a";
case 135: // F3
return "\x04\x4b\x70\x42\x3f";
case 136: // F4
return "\x04\x4b\x70\x42\x26";
case 137: // F5
return "\x04\x4b\x70\x42\x3c";
case 138: // F6
return "\x04\x4b\x70\x42\x3e";
case 139: // F7
return "\x04\x4b\x70\x42\x28";
case 140: // F8
return "\x04\x4b\x70\x42\x29";
case 141: // F9
return "\x04\x4b\x70\x42\x5b";
case 142: // F10
return "\x04\x4b\x70\x42\x5d";
case 143: // F11
return "\x04\x4b\x70\x42\x7b";
case 144: // F12
return "\x04\x4b\x70\x42\x7d";
case 145: // F13
return "\x04\x4b\x70\x42\x40";
case 146: // F14
return "\x04\x4b\x70\x42\x25";
case 147: // F15
return "\x04\x4b\x70\x42\x24";
case 148: // F16
return "\x04\x4b\x70\x42\x23";
case 149: // F17
return "\x05\x4b\x70\x42\x42\x41";
case 150: // F18
return "\x05\x4b\x70\x42\x42\x42";
case 151: // F19
return "\x05\x4b\x70\x42\x42\x43";
case 152: // F20
return "\x05\x4b\x70\x42\x42\x44";
case 153: // F21
return "\x05\x4b\x70\x42\x42\x45";
case 154: // F22
return "\x05\x4b\x70\x42\x42\x46";
case 155: // F23
return "\x05\x4b\x70\x42\x42\x47";
case 156: // F24
return "\x05\x4b\x70\x42\x42\x48";
case 157: // F25
return "\x05\x4b\x70\x42\x42\x49";
case 158: // KP_0
return "\x05\x4b\x70\x42\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x70\x42\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x70\x42\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x70\x42\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x70\x42\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x70\x42\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x70\x42\x42\x50";
case 165: // KP_7
return "\x05\x4b\x70\x42\x42\x51";
case 166: // KP_8
return "\x05\x4b\x70\x42\x42\x52";
case 167: // KP_9
return "\x05\x4b\x70\x42\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x70\x42\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x70\x42\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x70\x42\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x70\x42\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x70\x42\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x70\x42\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x70\x42\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x70\x42\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x70\x42\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x70\x42\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x70\x42\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x70\x42\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x70\x42\x42\x68";
} // end switch(key)
case 0x2:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x45\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x70\x45\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x70\x45\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x70\x45\x76";
case 62: // WORLD_1
return "\x04\x4b\x70\x45\x77";
case 63: // WORLD_2
return "\x04\x4b\x70\x45\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x70\x45\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x70\x45\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x70\x45\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x70\x45\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x70\x45\x42\x30";
case 69: // AE
return "\x05\x4b\x70\x45\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x70\x45\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x70\x45\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x70\x45\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x70\x45\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x70\x45\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x70\x45\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x70\x45\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x70\x45\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x70\x45\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x70\x45\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x70\x45\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x70\x45\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x70\x45\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x70\x45\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x70\x45\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x70\x45\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x70\x45\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x70\x45\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x70\x45\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x70\x45\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x70\x45\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x70\x45\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x70\x45\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x70\x45\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x70\x45\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x70\x45\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x70\x45\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x70\x45\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x70\x45\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x70\x45\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x70\x45\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x70\x45\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x70\x45\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x70\x45\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x70\x45\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x70\x45\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x70\x45\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x70\x45\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x70\x45\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x70\x45\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x70\x45\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x70\x45\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x70\x45\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x70\x45\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x70\x45\x79";
case 115: // ENTER
return "\x04\x4b\x70\x45\x7a";
case 116: // TAB
return "\x04\x4b\x70\x45\x30";
case 117: // BACKSPACE
return "\x04\x4b\x70\x45\x31";
case 118: // INSERT
return "\x04\x4b\x70\x45\x32";
case 119: // DELETE
return "\x04\x4b\x70\x45\x33";
case 120: // RIGHT
return "\x04\x4b\x70\x45\x34";
case 121: // LEFT
return "\x04\x4b\x70\x45\x35";
case 122: // DOWN
return "\x04\x4b\x70\x45\x36";
case 123: // UP
return "\x04\x4b\x70\x45\x37";
case 124: // PAGE_UP
return "\x04\x4b\x70\x45\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x70\x45\x39";
case 126: // HOME
return "\x04\x4b\x70\x45\x2e";
case 127: // END
return "\x04\x4b\x70\x45\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x70\x45\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x70\x45\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x70\x45\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x70\x45\x5e";
case 132: // PAUSE
return "\x04\x4b\x70\x45\x21";
case 133: // F1
return "\x04\x4b\x70\x45\x2f";
case 134: // F2
return "\x04\x4b\x70\x45\x2a";
case 135: // F3
return "\x04\x4b\x70\x45\x3f";
case 136: // F4
return "\x04\x4b\x70\x45\x26";
case 137: // F5
return "\x04\x4b\x70\x45\x3c";
case 138: // F6
return "\x04\x4b\x70\x45\x3e";
case 139: // F7
return "\x04\x4b\x70\x45\x28";
case 140: // F8
return "\x04\x4b\x70\x45\x29";
case 141: // F9
return "\x04\x4b\x70\x45\x5b";
case 142: // F10
return "\x04\x4b\x70\x45\x5d";
case 143: // F11
return "\x04\x4b\x70\x45\x7b";
case 144: // F12
return "\x04\x4b\x70\x45\x7d";
case 145: // F13
return "\x04\x4b\x70\x45\x40";
case 146: // F14
return "\x04\x4b\x70\x45\x25";
case 147: // F15
return "\x04\x4b\x70\x45\x24";
case 148: // F16
return "\x04\x4b\x70\x45\x23";
case 149: // F17
return "\x05\x4b\x70\x45\x42\x41";
case 150: // F18
return "\x05\x4b\x70\x45\x42\x42";
case 151: // F19
return "\x05\x4b\x70\x45\x42\x43";
case 152: // F20
return "\x05\x4b\x70\x45\x42\x44";
case 153: // F21
return "\x05\x4b\x70\x45\x42\x45";
case 154: // F22
return "\x05\x4b\x70\x45\x42\x46";
case 155: // F23
return "\x05\x4b\x70\x45\x42\x47";
case 156: // F24
return "\x05\x4b\x70\x45\x42\x48";
case 157: // F25
return "\x05\x4b\x70\x45\x42\x49";
case 158: // KP_0
return "\x05\x4b\x70\x45\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x70\x45\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x70\x45\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x70\x45\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x70\x45\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x70\x45\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x70\x45\x42\x50";
case 165: // KP_7
return "\x05\x4b\x70\x45\x42\x51";
case 166: // KP_8
return "\x05\x4b\x70\x45\x42\x52";
case 167: // KP_9
return "\x05\x4b\x70\x45\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x70\x45\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x70\x45\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x70\x45\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x70\x45\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x70\x45\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x70\x45\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x70\x45\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x70\x45\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x70\x45\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x70\x45\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x70\x45\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x70\x45\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x70\x45\x42\x68";
} // end switch(key)
case 0x3:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x46\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x70\x46\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x70\x46\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x70\x46\x76";
case 62: // WORLD_1
return "\x04\x4b\x70\x46\x77";
case 63: // WORLD_2
return "\x04\x4b\x70\x46\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x70\x46\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x70\x46\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x70\x46\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x70\x46\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x70\x46\x42\x30";
case 69: // AE
return "\x05\x4b\x70\x46\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x70\x46\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x70\x46\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x70\x46\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x70\x46\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x70\x46\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x70\x46\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x70\x46\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x70\x46\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x70\x46\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x70\x46\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x70\x46\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x70\x46\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x70\x46\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x70\x46\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x70\x46\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x70\x46\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x70\x46\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x70\x46\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x70\x46\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x70\x46\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x70\x46\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x70\x46\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x70\x46\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x70\x46\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x70\x46\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x70\x46\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x70\x46\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x70\x46\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x70\x46\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x70\x46\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x70\x46\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x70\x46\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x70\x46\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x70\x46\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x70\x46\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x70\x46\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x70\x46\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x70\x46\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x70\x46\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x70\x46\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x70\x46\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x70\x46\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x70\x46\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x70\x46\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x70\x46\x79";
case 115: // ENTER
return "\x04\x4b\x70\x46\x7a";
case 116: // TAB
return "\x04\x4b\x70\x46\x30";
case 117: // BACKSPACE
return "\x04\x4b\x70\x46\x31";
case 118: // INSERT
return "\x04\x4b\x70\x46\x32";
case 119: // DELETE
return "\x04\x4b\x70\x46\x33";
case 120: // RIGHT
return "\x04\x4b\x70\x46\x34";
case 121: // LEFT
return "\x04\x4b\x70\x46\x35";
case 122: // DOWN
return "\x04\x4b\x70\x46\x36";
case 123: // UP
return "\x04\x4b\x70\x46\x37";
case 124: // PAGE_UP
return "\x04\x4b\x70\x46\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x70\x46\x39";
case 126: // HOME
return "\x04\x4b\x70\x46\x2e";
case 127: // END
return "\x04\x4b\x70\x46\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x70\x46\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x70\x46\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x70\x46\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x70\x46\x5e";
case 132: // PAUSE
return "\x04\x4b\x70\x46\x21";
case 133: // F1
return "\x04\x4b\x70\x46\x2f";
case 134: // F2
return "\x04\x4b\x70\x46\x2a";
case 135: // F3
return "\x04\x4b\x70\x46\x3f";
case 136: // F4
return "\x04\x4b\x70\x46\x26";
case 137: // F5
return "\x04\x4b\x70\x46\x3c";
case 138: // F6
return "\x04\x4b\x70\x46\x3e";
case 139: // F7
return "\x04\x4b\x70\x46\x28";
case 140: // F8
return "\x04\x4b\x70\x46\x29";
case 141: // F9
return "\x04\x4b\x70\x46\x5b";
case 142: // F10
return "\x04\x4b\x70\x46\x5d";
case 143: // F11
return "\x04\x4b\x70\x46\x7b";
case 144: // F12
return "\x04\x4b\x70\x46\x7d";
case 145: // F13
return "\x04\x4b\x70\x46\x40";
case 146: // F14
return "\x04\x4b\x70\x46\x25";
case 147: // F15
return "\x04\x4b\x70\x46\x24";
case 148: // F16
return "\x04\x4b\x70\x46\x23";
case 149: // F17
return "\x05\x4b\x70\x46\x42\x41";
case 150: // F18
return "\x05\x4b\x70\x46\x42\x42";
case 151: // F19
return "\x05\x4b\x70\x46\x42\x43";
case 152: // F20
return "\x05\x4b\x70\x46\x42\x44";
case 153: // F21
return "\x05\x4b\x70\x46\x42\x45";
case 154: // F22
return "\x05\x4b\x70\x46\x42\x46";
case 155: // F23
return "\x05\x4b\x70\x46\x42\x47";
case 156: // F24
return "\x05\x4b\x70\x46\x42\x48";
case 157: // F25
return "\x05\x4b\x70\x46\x42\x49";
case 158: // KP_0
return "\x05\x4b\x70\x46\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x70\x46\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x70\x46\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x70\x46\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x70\x46\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x70\x46\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x70\x46\x42\x50";
case 165: // KP_7
return "\x05\x4b\x70\x46\x42\x51";
case 166: // KP_8
return "\x05\x4b\x70\x46\x42\x52";
case 167: // KP_9
return "\x05\x4b\x70\x46\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x70\x46\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x70\x46\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x70\x46\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x70\x46\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x70\x46\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x70\x46\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x70\x46\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x70\x46\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x70\x46\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x70\x46\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x70\x46\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x70\x46\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x70\x46\x42\x68";
} // end switch(key)
case 0x4:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x43\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x70\x43\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x70\x43\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x70\x43\x76";
case 62: // WORLD_1
return "\x04\x4b\x70\x43\x77";
case 63: // WORLD_2
return "\x04\x4b\x70\x43\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x70\x43\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x70\x43\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x70\x43\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x70\x43\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x70\x43\x42\x30";
case 69: // AE
return "\x05\x4b\x70\x43\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x70\x43\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x70\x43\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x70\x43\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x70\x43\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x70\x43\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x70\x43\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x70\x43\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x70\x43\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x70\x43\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x70\x43\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x70\x43\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x70\x43\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x70\x43\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x70\x43\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x70\x43\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x70\x43\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x70\x43\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x70\x43\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x70\x43\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x70\x43\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x70\x43\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x70\x43\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x70\x43\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x70\x43\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x70\x43\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x70\x43\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x70\x43\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x70\x43\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x70\x43\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x70\x43\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x70\x43\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x70\x43\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x70\x43\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x70\x43\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x70\x43\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x70\x43\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x70\x43\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x70\x43\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x70\x43\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x70\x43\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x70\x43\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x70\x43\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x70\x43\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x70\x43\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x70\x43\x79";
case 115: // ENTER
return "\x04\x4b\x70\x43\x7a";
case 116: // TAB
return "\x04\x4b\x70\x43\x30";
case 117: // BACKSPACE
return "\x04\x4b\x70\x43\x31";
case 118: // INSERT
return "\x04\x4b\x70\x43\x32";
case 119: // DELETE
return "\x04\x4b\x70\x43\x33";
case 120: // RIGHT
return "\x04\x4b\x70\x43\x34";
case 121: // LEFT
return "\x04\x4b\x70\x43\x35";
case 122: // DOWN
return "\x04\x4b\x70\x43\x36";
case 123: // UP
return "\x04\x4b\x70\x43\x37";
case 124: // PAGE_UP
return "\x04\x4b\x70\x43\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x70\x43\x39";
case 126: // HOME
return "\x04\x4b\x70\x43\x2e";
case 127: // END
return "\x04\x4b\x70\x43\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x70\x43\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x70\x43\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x70\x43\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x70\x43\x5e";
case 132: // PAUSE
return "\x04\x4b\x70\x43\x21";
case 133: // F1
return "\x04\x4b\x70\x43\x2f";
case 134: // F2
return "\x04\x4b\x70\x43\x2a";
case 135: // F3
return "\x04\x4b\x70\x43\x3f";
case 136: // F4
return "\x04\x4b\x70\x43\x26";
case 137: // F5
return "\x04\x4b\x70\x43\x3c";
case 138: // F6
return "\x04\x4b\x70\x43\x3e";
case 139: // F7
return "\x04\x4b\x70\x43\x28";
case 140: // F8
return "\x04\x4b\x70\x43\x29";
case 141: // F9
return "\x04\x4b\x70\x43\x5b";
case 142: // F10
return "\x04\x4b\x70\x43\x5d";
case 143: // F11
return "\x04\x4b\x70\x43\x7b";
case 144: // F12
return "\x04\x4b\x70\x43\x7d";
case 145: // F13
return "\x04\x4b\x70\x43\x40";
case 146: // F14
return "\x04\x4b\x70\x43\x25";
case 147: // F15
return "\x04\x4b\x70\x43\x24";
case 148: // F16
return "\x04\x4b\x70\x43\x23";
case 149: // F17
return "\x05\x4b\x70\x43\x42\x41";
case 150: // F18
return "\x05\x4b\x70\x43\x42\x42";
case 151: // F19
return "\x05\x4b\x70\x43\x42\x43";
case 152: // F20
return "\x05\x4b\x70\x43\x42\x44";
case 153: // F21
return "\x05\x4b\x70\x43\x42\x45";
case 154: // F22
return "\x05\x4b\x70\x43\x42\x46";
case 155: // F23
return "\x05\x4b\x70\x43\x42\x47";
case 156: // F24
return "\x05\x4b\x70\x43\x42\x48";
case 157: // F25
return "\x05\x4b\x70\x43\x42\x49";
case 158: // KP_0
return "\x05\x4b\x70\x43\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x70\x43\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x70\x43\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x70\x43\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x70\x43\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x70\x43\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x70\x43\x42\x50";
case 165: // KP_7
return "\x05\x4b\x70\x43\x42\x51";
case 166: // KP_8
return "\x05\x4b\x70\x43\x42\x52";
case 167: // KP_9
return "\x05\x4b\x70\x43\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x70\x43\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x70\x43\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x70\x43\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x70\x43\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x70\x43\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x70\x43\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x70\x43\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x70\x43\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x70\x43\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x70\x43\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x70\x43\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x70\x43\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x70\x43\x42\x68";
} // end switch(key)
case 0x5:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x44\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x70\x44\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x70\x44\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x70\x44\x76";
case 62: // WORLD_1
return "\x04\x4b\x70\x44\x77";
case 63: // WORLD_2
return "\x04\x4b\x70\x44\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x70\x44\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x70\x44\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x70\x44\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x70\x44\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x70\x44\x42\x30";
case 69: // AE
return "\x05\x4b\x70\x44\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x70\x44\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x70\x44\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x70\x44\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x70\x44\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x70\x44\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x70\x44\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x70\x44\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x70\x44\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x70\x44\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x70\x44\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x70\x44\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x70\x44\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x70\x44\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x70\x44\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x70\x44\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x70\x44\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x70\x44\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x70\x44\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x70\x44\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x70\x44\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x70\x44\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x70\x44\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x70\x44\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x70\x44\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x70\x44\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x70\x44\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x70\x44\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x70\x44\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x70\x44\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x70\x44\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x70\x44\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x70\x44\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x70\x44\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x70\x44\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x70\x44\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x70\x44\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x70\x44\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x70\x44\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x70\x44\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x70\x44\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x70\x44\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x70\x44\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x70\x44\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x70\x44\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x70\x44\x79";
case 115: // ENTER
return "\x04\x4b\x70\x44\x7a";
case 116: // TAB
return "\x04\x4b\x70\x44\x30";
case 117: // BACKSPACE
return "\x04\x4b\x70\x44\x31";
case 118: // INSERT
return "\x04\x4b\x70\x44\x32";
case 119: // DELETE
return "\x04\x4b\x70\x44\x33";
case 120: // RIGHT
return "\x04\x4b\x70\x44\x34";
case 121: // LEFT
return "\x04\x4b\x70\x44\x35";
case 122: // DOWN
return "\x04\x4b\x70\x44\x36";
case 123: // UP
return "\x04\x4b\x70\x44\x37";
case 124: // PAGE_UP
return "\x04\x4b\x70\x44\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x70\x44\x39";
case 126: // HOME
return "\x04\x4b\x70\x44\x2e";
case 127: // END
return "\x04\x4b\x70\x44\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x70\x44\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x70\x44\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x70\x44\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x70\x44\x5e";
case 132: // PAUSE
return "\x04\x4b\x70\x44\x21";
case 133: // F1
return "\x04\x4b\x70\x44\x2f";
case 134: // F2
return "\x04\x4b\x70\x44\x2a";
case 135: // F3
return "\x04\x4b\x70\x44\x3f";
case 136: // F4
return "\x04\x4b\x70\x44\x26";
case 137: // F5
return "\x04\x4b\x70\x44\x3c";
case 138: // F6
return "\x04\x4b\x70\x44\x3e";
case 139: // F7
return "\x04\x4b\x70\x44\x28";
case 140: // F8
return "\x04\x4b\x70\x44\x29";
case 141: // F9
return "\x04\x4b\x70\x44\x5b";
case 142: // F10
return "\x04\x4b\x70\x44\x5d";
case 143: // F11
return "\x04\x4b\x70\x44\x7b";
case 144: // F12
return "\x04\x4b\x70\x44\x7d";
case 145: // F13
return "\x04\x4b\x70\x44\x40";
case 146: // F14
return "\x04\x4b\x70\x44\x25";
case 147: // F15
return "\x04\x4b\x70\x44\x24";
case 148: // F16
return "\x04\x4b\x70\x44\x23";
case 149: // F17
return "\x05\x4b\x70\x44\x42\x41";
case 150: // F18
return "\x05\x4b\x70\x44\x42\x42";
case 151: // F19
return "\x05\x4b\x70\x44\x42\x43";
case 152: // F20
return "\x05\x4b\x70\x44\x42\x44";
case 153: // F21
return "\x05\x4b\x70\x44\x42\x45";
case 154: // F22
return "\x05\x4b\x70\x44\x42\x46";
case 155: // F23
return "\x05\x4b\x70\x44\x42\x47";
case 156: // F24
return "\x05\x4b\x70\x44\x42\x48";
case 157: // F25
return "\x05\x4b\x70\x44\x42\x49";
case 158: // KP_0
return "\x05\x4b\x70\x44\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x70\x44\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x70\x44\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x70\x44\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x70\x44\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x70\x44\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x70\x44\x42\x50";
case 165: // KP_7
return "\x05\x4b\x70\x44\x42\x51";
case 166: // KP_8
return "\x05\x4b\x70\x44\x42\x52";
case 167: // KP_9
return "\x05\x4b\x70\x44\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x70\x44\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x70\x44\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x70\x44\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x70\x44\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x70\x44\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x70\x44\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x70\x44\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x70\x44\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x70\x44\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x70\x44\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x70\x44\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x70\x44\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x70\x44\x42\x68";
} // end switch(key)
case 0x6:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x47\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x70\x47\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x70\x47\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x70\x47\x76";
case 62: // WORLD_1
return "\x04\x4b\x70\x47\x77";
case 63: // WORLD_2
return "\x04\x4b\x70\x47\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x70\x47\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x70\x47\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x70\x47\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x70\x47\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x70\x47\x42\x30";
case 69: // AE
return "\x05\x4b\x70\x47\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x70\x47\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x70\x47\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x70\x47\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x70\x47\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x70\x47\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x70\x47\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x70\x47\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x70\x47\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x70\x47\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x70\x47\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x70\x47\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x70\x47\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x70\x47\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x70\x47\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x70\x47\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x70\x47\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x70\x47\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x70\x47\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x70\x47\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x70\x47\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x70\x47\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x70\x47\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x70\x47\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x70\x47\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x70\x47\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x70\x47\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x70\x47\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x70\x47\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x70\x47\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x70\x47\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x70\x47\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x70\x47\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x70\x47\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x70\x47\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x70\x47\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x70\x47\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x70\x47\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x70\x47\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x70\x47\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x70\x47\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x70\x47\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x70\x47\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x70\x47\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x70\x47\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x70\x47\x79";
case 115: // ENTER
return "\x04\x4b\x70\x47\x7a";
case 116: // TAB
return "\x04\x4b\x70\x47\x30";
case 117: // BACKSPACE
return "\x04\x4b\x70\x47\x31";
case 118: // INSERT
return "\x04\x4b\x70\x47\x32";
case 119: // DELETE
return "\x04\x4b\x70\x47\x33";
case 120: // RIGHT
return "\x04\x4b\x70\x47\x34";
case 121: // LEFT
return "\x04\x4b\x70\x47\x35";
case 122: // DOWN
return "\x04\x4b\x70\x47\x36";
case 123: // UP
return "\x04\x4b\x70\x47\x37";
case 124: // PAGE_UP
return "\x04\x4b\x70\x47\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x70\x47\x39";
case 126: // HOME
return "\x04\x4b\x70\x47\x2e";
case 127: // END
return "\x04\x4b\x70\x47\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x70\x47\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x70\x47\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x70\x47\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x70\x47\x5e";
case 132: // PAUSE
return "\x04\x4b\x70\x47\x21";
case 133: // F1
return "\x04\x4b\x70\x47\x2f";
case 134: // F2
return "\x04\x4b\x70\x47\x2a";
case 135: // F3
return "\x04\x4b\x70\x47\x3f";
case 136: // F4
return "\x04\x4b\x70\x47\x26";
case 137: // F5
return "\x04\x4b\x70\x47\x3c";
case 138: // F6
return "\x04\x4b\x70\x47\x3e";
case 139: // F7
return "\x04\x4b\x70\x47\x28";
case 140: // F8
return "\x04\x4b\x70\x47\x29";
case 141: // F9
return "\x04\x4b\x70\x47\x5b";
case 142: // F10
return "\x04\x4b\x70\x47\x5d";
case 143: // F11
return "\x04\x4b\x70\x47\x7b";
case 144: // F12
return "\x04\x4b\x70\x47\x7d";
case 145: // F13
return "\x04\x4b\x70\x47\x40";
case 146: // F14
return "\x04\x4b\x70\x47\x25";
case 147: // F15
return "\x04\x4b\x70\x47\x24";
case 148: // F16
return "\x04\x4b\x70\x47\x23";
case 149: // F17
return "\x05\x4b\x70\x47\x42\x41";
case 150: // F18
return "\x05\x4b\x70\x47\x42\x42";
case 151: // F19
return "\x05\x4b\x70\x47\x42\x43";
case 152: // F20
return "\x05\x4b\x70\x47\x42\x44";
case 153: // F21
return "\x05\x4b\x70\x47\x42\x45";
case 154: // F22
return "\x05\x4b\x70\x47\x42\x46";
case 155: // F23
return "\x05\x4b\x70\x47\x42\x47";
case 156: // F24
return "\x05\x4b\x70\x47\x42\x48";
case 157: // F25
return "\x05\x4b\x70\x47\x42\x49";
case 158: // KP_0
return "\x05\x4b\x70\x47\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x70\x47\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x70\x47\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x70\x47\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x70\x47\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x70\x47\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x70\x47\x42\x50";
case 165: // KP_7
return "\x05\x4b\x70\x47\x42\x51";
case 166: // KP_8
return "\x05\x4b\x70\x47\x42\x52";
case 167: // KP_9
return "\x05\x4b\x70\x47\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x70\x47\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x70\x47\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x70\x47\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x70\x47\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x70\x47\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x70\x47\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x70\x47\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x70\x47\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x70\x47\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x70\x47\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x70\x47\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x70\x47\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x70\x47\x42\x68";
} // end switch(key)
case 0x7:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x48\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x70\x48\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x70\x48\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x70\x48\x76";
case 62: // WORLD_1
return "\x04\x4b\x70\x48\x77";
case 63: // WORLD_2
return "\x04\x4b\x70\x48\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x70\x48\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x70\x48\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x70\x48\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x70\x48\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x70\x48\x42\x30";
case 69: // AE
return "\x05\x4b\x70\x48\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x70\x48\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x70\x48\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x70\x48\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x70\x48\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x70\x48\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x70\x48\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x70\x48\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x70\x48\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x70\x48\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x70\x48\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x70\x48\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x70\x48\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x70\x48\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x70\x48\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x70\x48\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x70\x48\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x70\x48\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x70\x48\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x70\x48\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x70\x48\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x70\x48\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x70\x48\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x70\x48\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x70\x48\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x70\x48\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x70\x48\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x70\x48\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x70\x48\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x70\x48\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x70\x48\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x70\x48\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x70\x48\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x70\x48\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x70\x48\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x70\x48\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x70\x48\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x70\x48\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x70\x48\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x70\x48\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x70\x48\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x70\x48\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x70\x48\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x70\x48\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x70\x48\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x70\x48\x79";
case 115: // ENTER
return "\x04\x4b\x70\x48\x7a";
case 116: // TAB
return "\x04\x4b\x70\x48\x30";
case 117: // BACKSPACE
return "\x04\x4b\x70\x48\x31";
case 118: // INSERT
return "\x04\x4b\x70\x48\x32";
case 119: // DELETE
return "\x04\x4b\x70\x48\x33";
case 120: // RIGHT
return "\x04\x4b\x70\x48\x34";
case 121: // LEFT
return "\x04\x4b\x70\x48\x35";
case 122: // DOWN
return "\x04\x4b\x70\x48\x36";
case 123: // UP
return "\x04\x4b\x70\x48\x37";
case 124: // PAGE_UP
return "\x04\x4b\x70\x48\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x70\x48\x39";
case 126: // HOME
return "\x04\x4b\x70\x48\x2e";
case 127: // END
return "\x04\x4b\x70\x48\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x70\x48\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x70\x48\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x70\x48\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x70\x48\x5e";
case 132: // PAUSE
return "\x04\x4b\x70\x48\x21";
case 133: // F1
return "\x04\x4b\x70\x48\x2f";
case 134: // F2
return "\x04\x4b\x70\x48\x2a";
case 135: // F3
return "\x04\x4b\x70\x48\x3f";
case 136: // F4
return "\x04\x4b\x70\x48\x26";
case 137: // F5
return "\x04\x4b\x70\x48\x3c";
case 138: // F6
return "\x04\x4b\x70\x48\x3e";
case 139: // F7
return "\x04\x4b\x70\x48\x28";
case 140: // F8
return "\x04\x4b\x70\x48\x29";
case 141: // F9
return "\x04\x4b\x70\x48\x5b";
case 142: // F10
return "\x04\x4b\x70\x48\x5d";
case 143: // F11
return "\x04\x4b\x70\x48\x7b";
case 144: // F12
return "\x04\x4b\x70\x48\x7d";
case 145: // F13
return "\x04\x4b\x70\x48\x40";
case 146: // F14
return "\x04\x4b\x70\x48\x25";
case 147: // F15
return "\x04\x4b\x70\x48\x24";
case 148: // F16
return "\x04\x4b\x70\x48\x23";
case 149: // F17
return "\x05\x4b\x70\x48\x42\x41";
case 150: // F18
return "\x05\x4b\x70\x48\x42\x42";
case 151: // F19
return "\x05\x4b\x70\x48\x42\x43";
case 152: // F20
return "\x05\x4b\x70\x48\x42\x44";
case 153: // F21
return "\x05\x4b\x70\x48\x42\x45";
case 154: // F22
return "\x05\x4b\x70\x48\x42\x46";
case 155: // F23
return "\x05\x4b\x70\x48\x42\x47";
case 156: // F24
return "\x05\x4b\x70\x48\x42\x48";
case 157: // F25
return "\x05\x4b\x70\x48\x42\x49";
case 158: // KP_0
return "\x05\x4b\x70\x48\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x70\x48\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x70\x48\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x70\x48\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x70\x48\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x70\x48\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x70\x48\x42\x50";
case 165: // KP_7
return "\x05\x4b\x70\x48\x42\x51";
case 166: // KP_8
return "\x05\x4b\x70\x48\x42\x52";
case 167: // KP_9
return "\x05\x4b\x70\x48\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x70\x48\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x70\x48\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x70\x48\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x70\x48\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x70\x48\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x70\x48\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x70\x48\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x70\x48\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x70\x48\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x70\x48\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x70\x48\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x70\x48\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x70\x48\x42\x68";
} // end switch(key)
case 0x8:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x49\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x70\x49\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x70\x49\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x70\x49\x76";
case 62: // WORLD_1
return "\x04\x4b\x70\x49\x77";
case 63: // WORLD_2
return "\x04\x4b\x70\x49\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x70\x49\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x70\x49\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x70\x49\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x70\x49\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x70\x49\x42\x30";
case 69: // AE
return "\x05\x4b\x70\x49\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x70\x49\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x70\x49\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x70\x49\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x70\x49\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x70\x49\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x70\x49\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x70\x49\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x70\x49\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x70\x49\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x70\x49\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x70\x49\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x70\x49\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x70\x49\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x70\x49\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x70\x49\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x70\x49\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x70\x49\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x70\x49\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x70\x49\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x70\x49\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x70\x49\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x70\x49\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x70\x49\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x70\x49\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x70\x49\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x70\x49\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x70\x49\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x70\x49\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x70\x49\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x70\x49\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x70\x49\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x70\x49\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x70\x49\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x70\x49\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x70\x49\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x70\x49\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x70\x49\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x70\x49\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x70\x49\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x70\x49\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x70\x49\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x70\x49\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x70\x49\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x70\x49\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x70\x49\x79";
case 115: // ENTER
return "\x04\x4b\x70\x49\x7a";
case 116: // TAB
return "\x04\x4b\x70\x49\x30";
case 117: // BACKSPACE
return "\x04\x4b\x70\x49\x31";
case 118: // INSERT
return "\x04\x4b\x70\x49\x32";
case 119: // DELETE
return "\x04\x4b\x70\x49\x33";
case 120: // RIGHT
return "\x04\x4b\x70\x49\x34";
case 121: // LEFT
return "\x04\x4b\x70\x49\x35";
case 122: // DOWN
return "\x04\x4b\x70\x49\x36";
case 123: // UP
return "\x04\x4b\x70\x49\x37";
case 124: // PAGE_UP
return "\x04\x4b\x70\x49\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x70\x49\x39";
case 126: // HOME
return "\x04\x4b\x70\x49\x2e";
case 127: // END
return "\x04\x4b\x70\x49\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x70\x49\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x70\x49\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x70\x49\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x70\x49\x5e";
case 132: // PAUSE
return "\x04\x4b\x70\x49\x21";
case 133: // F1
return "\x04\x4b\x70\x49\x2f";
case 134: // F2
return "\x04\x4b\x70\x49\x2a";
case 135: // F3
return "\x04\x4b\x70\x49\x3f";
case 136: // F4
return "\x04\x4b\x70\x49\x26";
case 137: // F5
return "\x04\x4b\x70\x49\x3c";
case 138: // F6
return "\x04\x4b\x70\x49\x3e";
case 139: // F7
return "\x04\x4b\x70\x49\x28";
case 140: // F8
return "\x04\x4b\x70\x49\x29";
case 141: // F9
return "\x04\x4b\x70\x49\x5b";
case 142: // F10
return "\x04\x4b\x70\x49\x5d";
case 143: // F11
return "\x04\x4b\x70\x49\x7b";
case 144: // F12
return "\x04\x4b\x70\x49\x7d";
case 145: // F13
return "\x04\x4b\x70\x49\x40";
case 146: // F14
return "\x04\x4b\x70\x49\x25";
case 147: // F15
return "\x04\x4b\x70\x49\x24";
case 148: // F16
return "\x04\x4b\x70\x49\x23";
case 149: // F17
return "\x05\x4b\x70\x49\x42\x41";
case 150: // F18
return "\x05\x4b\x70\x49\x42\x42";
case 151: // F19
return "\x05\x4b\x70\x49\x42\x43";
case 152: // F20
return "\x05\x4b\x70\x49\x42\x44";
case 153: // F21
return "\x05\x4b\x70\x49\x42\x45";
case 154: // F22
return "\x05\x4b\x70\x49\x42\x46";
case 155: // F23
return "\x05\x4b\x70\x49\x42\x47";
case 156: // F24
return "\x05\x4b\x70\x49\x42\x48";
case 157: // F25
return "\x05\x4b\x70\x49\x42\x49";
case 158: // KP_0
return "\x05\x4b\x70\x49\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x70\x49\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x70\x49\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x70\x49\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x70\x49\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x70\x49\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x70\x49\x42\x50";
case 165: // KP_7
return "\x05\x4b\x70\x49\x42\x51";
case 166: // KP_8
return "\x05\x4b\x70\x49\x42\x52";
case 167: // KP_9
return "\x05\x4b\x70\x49\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x70\x49\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x70\x49\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x70\x49\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x70\x49\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x70\x49\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x70\x49\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x70\x49\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x70\x49\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x70\x49\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x70\x49\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x70\x49\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x70\x49\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x70\x49\x42\x68";
} // end switch(key)
case 0x9:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x4a\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x70\x4a\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x70\x4a\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x70\x4a\x76";
case 62: // WORLD_1
return "\x04\x4b\x70\x4a\x77";
case 63: // WORLD_2
return "\x04\x4b\x70\x4a\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x70\x4a\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x70\x4a\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x70\x4a\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x70\x4a\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x70\x4a\x42\x30";
case 69: // AE
return "\x05\x4b\x70\x4a\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x70\x4a\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x70\x4a\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x70\x4a\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x70\x4a\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x70\x4a\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x70\x4a\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x70\x4a\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x70\x4a\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x70\x4a\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x70\x4a\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x70\x4a\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x70\x4a\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x70\x4a\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x70\x4a\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x70\x4a\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x70\x4a\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x70\x4a\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x70\x4a\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x70\x4a\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x70\x4a\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x70\x4a\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x70\x4a\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x70\x4a\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x70\x4a\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x70\x4a\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x70\x4a\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x70\x4a\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x70\x4a\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x70\x4a\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x70\x4a\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x70\x4a\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x70\x4a\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x70\x4a\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x70\x4a\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x70\x4a\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x70\x4a\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x70\x4a\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x70\x4a\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x70\x4a\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x70\x4a\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x70\x4a\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x70\x4a\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x70\x4a\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x70\x4a\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x70\x4a\x79";
case 115: // ENTER
return "\x04\x4b\x70\x4a\x7a";
case 116: // TAB
return "\x04\x4b\x70\x4a\x30";
case 117: // BACKSPACE
return "\x04\x4b\x70\x4a\x31";
case 118: // INSERT
return "\x04\x4b\x70\x4a\x32";
case 119: // DELETE
return "\x04\x4b\x70\x4a\x33";
case 120: // RIGHT
return "\x04\x4b\x70\x4a\x34";
case 121: // LEFT
return "\x04\x4b\x70\x4a\x35";
case 122: // DOWN
return "\x04\x4b\x70\x4a\x36";
case 123: // UP
return "\x04\x4b\x70\x4a\x37";
case 124: // PAGE_UP
return "\x04\x4b\x70\x4a\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x70\x4a\x39";
case 126: // HOME
return "\x04\x4b\x70\x4a\x2e";
case 127: // END
return "\x04\x4b\x70\x4a\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x70\x4a\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x70\x4a\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x70\x4a\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x70\x4a\x5e";
case 132: // PAUSE
return "\x04\x4b\x70\x4a\x21";
case 133: // F1
return "\x04\x4b\x70\x4a\x2f";
case 134: // F2
return "\x04\x4b\x70\x4a\x2a";
case 135: // F3
return "\x04\x4b\x70\x4a\x3f";
case 136: // F4
return "\x04\x4b\x70\x4a\x26";
case 137: // F5
return "\x04\x4b\x70\x4a\x3c";
case 138: // F6
return "\x04\x4b\x70\x4a\x3e";
case 139: // F7
return "\x04\x4b\x70\x4a\x28";
case 140: // F8
return "\x04\x4b\x70\x4a\x29";
case 141: // F9
return "\x04\x4b\x70\x4a\x5b";
case 142: // F10
return "\x04\x4b\x70\x4a\x5d";
case 143: // F11
return "\x04\x4b\x70\x4a\x7b";
case 144: // F12
return "\x04\x4b\x70\x4a\x7d";
case 145: // F13
return "\x04\x4b\x70\x4a\x40";
case 146: // F14
return "\x04\x4b\x70\x4a\x25";
case 147: // F15
return "\x04\x4b\x70\x4a\x24";
case 148: // F16
return "\x04\x4b\x70\x4a\x23";
case 149: // F17
return "\x05\x4b\x70\x4a\x42\x41";
case 150: // F18
return "\x05\x4b\x70\x4a\x42\x42";
case 151: // F19
return "\x05\x4b\x70\x4a\x42\x43";
case 152: // F20
return "\x05\x4b\x70\x4a\x42\x44";
case 153: // F21
return "\x05\x4b\x70\x4a\x42\x45";
case 154: // F22
return "\x05\x4b\x70\x4a\x42\x46";
case 155: // F23
return "\x05\x4b\x70\x4a\x42\x47";
case 156: // F24
return "\x05\x4b\x70\x4a\x42\x48";
case 157: // F25
return "\x05\x4b\x70\x4a\x42\x49";
case 158: // KP_0
return "\x05\x4b\x70\x4a\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x70\x4a\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x70\x4a\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x70\x4a\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x70\x4a\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x70\x4a\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x70\x4a\x42\x50";
case 165: // KP_7
return "\x05\x4b\x70\x4a\x42\x51";
case 166: // KP_8
return "\x05\x4b\x70\x4a\x42\x52";
case 167: // KP_9
return "\x05\x4b\x70\x4a\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x70\x4a\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x70\x4a\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x70\x4a\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x70\x4a\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x70\x4a\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x70\x4a\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x70\x4a\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x70\x4a\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x70\x4a\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x70\x4a\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x70\x4a\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x70\x4a\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x70\x4a\x42\x68";
} // end switch(key)
case 0xa:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x4d\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x70\x4d\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x70\x4d\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x70\x4d\x76";
case 62: // WORLD_1
return "\x04\x4b\x70\x4d\x77";
case 63: // WORLD_2
return "\x04\x4b\x70\x4d\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x70\x4d\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x70\x4d\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x70\x4d\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x70\x4d\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x70\x4d\x42\x30";
case 69: // AE
return "\x05\x4b\x70\x4d\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x70\x4d\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x70\x4d\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x70\x4d\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x70\x4d\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x70\x4d\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x70\x4d\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x70\x4d\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x70\x4d\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x70\x4d\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x70\x4d\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x70\x4d\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x70\x4d\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x70\x4d\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x70\x4d\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x70\x4d\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x70\x4d\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x70\x4d\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x70\x4d\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x70\x4d\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x70\x4d\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x70\x4d\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x70\x4d\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x70\x4d\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x70\x4d\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x70\x4d\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x70\x4d\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x70\x4d\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x70\x4d\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x70\x4d\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x70\x4d\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x70\x4d\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x70\x4d\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x70\x4d\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x70\x4d\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x70\x4d\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x70\x4d\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x70\x4d\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x70\x4d\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x70\x4d\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x70\x4d\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x70\x4d\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x70\x4d\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x70\x4d\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x70\x4d\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x70\x4d\x79";
case 115: // ENTER
return "\x04\x4b\x70\x4d\x7a";
case 116: // TAB
return "\x04\x4b\x70\x4d\x30";
case 117: // BACKSPACE
return "\x04\x4b\x70\x4d\x31";
case 118: // INSERT
return "\x04\x4b\x70\x4d\x32";
case 119: // DELETE
return "\x04\x4b\x70\x4d\x33";
case 120: // RIGHT
return "\x04\x4b\x70\x4d\x34";
case 121: // LEFT
return "\x04\x4b\x70\x4d\x35";
case 122: // DOWN
return "\x04\x4b\x70\x4d\x36";
case 123: // UP
return "\x04\x4b\x70\x4d\x37";
case 124: // PAGE_UP
return "\x04\x4b\x70\x4d\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x70\x4d\x39";
case 126: // HOME
return "\x04\x4b\x70\x4d\x2e";
case 127: // END
return "\x04\x4b\x70\x4d\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x70\x4d\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x70\x4d\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x70\x4d\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x70\x4d\x5e";
case 132: // PAUSE
return "\x04\x4b\x70\x4d\x21";
case 133: // F1
return "\x04\x4b\x70\x4d\x2f";
case 134: // F2
return "\x04\x4b\x70\x4d\x2a";
case 135: // F3
return "\x04\x4b\x70\x4d\x3f";
case 136: // F4
return "\x04\x4b\x70\x4d\x26";
case 137: // F5
return "\x04\x4b\x70\x4d\x3c";
case 138: // F6
return "\x04\x4b\x70\x4d\x3e";
case 139: // F7
return "\x04\x4b\x70\x4d\x28";
case 140: // F8
return "\x04\x4b\x70\x4d\x29";
case 141: // F9
return "\x04\x4b\x70\x4d\x5b";
case 142: // F10
return "\x04\x4b\x70\x4d\x5d";
case 143: // F11
return "\x04\x4b\x70\x4d\x7b";
case 144: // F12
return "\x04\x4b\x70\x4d\x7d";
case 145: // F13
return "\x04\x4b\x70\x4d\x40";
case 146: // F14
return "\x04\x4b\x70\x4d\x25";
case 147: // F15
return "\x04\x4b\x70\x4d\x24";
case 148: // F16
return "\x04\x4b\x70\x4d\x23";
case 149: // F17
return "\x05\x4b\x70\x4d\x42\x41";
case 150: // F18
return "\x05\x4b\x70\x4d\x42\x42";
case 151: // F19
return "\x05\x4b\x70\x4d\x42\x43";
case 152: // F20
return "\x05\x4b\x70\x4d\x42\x44";
case 153: // F21
return "\x05\x4b\x70\x4d\x42\x45";
case 154: // F22
return "\x05\x4b\x70\x4d\x42\x46";
case 155: // F23
return "\x05\x4b\x70\x4d\x42\x47";
case 156: // F24
return "\x05\x4b\x70\x4d\x42\x48";
case 157: // F25
return "\x05\x4b\x70\x4d\x42\x49";
case 158: // KP_0
return "\x05\x4b\x70\x4d\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x70\x4d\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x70\x4d\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x70\x4d\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x70\x4d\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x70\x4d\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x70\x4d\x42\x50";
case 165: // KP_7
return "\x05\x4b\x70\x4d\x42\x51";
case 166: // KP_8
return "\x05\x4b\x70\x4d\x42\x52";
case 167: // KP_9
return "\x05\x4b\x70\x4d\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x70\x4d\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x70\x4d\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x70\x4d\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x70\x4d\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x70\x4d\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x70\x4d\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x70\x4d\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x70\x4d\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x70\x4d\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x70\x4d\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x70\x4d\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x70\x4d\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x70\x4d\x42\x68";
} // end switch(key)
case 0xb:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x4e\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x70\x4e\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x70\x4e\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x70\x4e\x76";
case 62: // WORLD_1
return "\x04\x4b\x70\x4e\x77";
case 63: // WORLD_2
return "\x04\x4b\x70\x4e\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x70\x4e\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x70\x4e\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x70\x4e\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x70\x4e\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x70\x4e\x42\x30";
case 69: // AE
return "\x05\x4b\x70\x4e\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x70\x4e\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x70\x4e\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x70\x4e\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x70\x4e\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x70\x4e\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x70\x4e\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x70\x4e\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x70\x4e\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x70\x4e\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x70\x4e\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x70\x4e\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x70\x4e\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x70\x4e\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x70\x4e\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x70\x4e\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x70\x4e\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x70\x4e\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x70\x4e\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x70\x4e\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x70\x4e\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x70\x4e\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x70\x4e\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x70\x4e\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x70\x4e\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x70\x4e\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x70\x4e\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x70\x4e\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x70\x4e\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x70\x4e\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x70\x4e\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x70\x4e\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x70\x4e\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x70\x4e\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x70\x4e\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x70\x4e\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x70\x4e\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x70\x4e\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x70\x4e\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x70\x4e\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x70\x4e\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x70\x4e\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x70\x4e\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x70\x4e\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x70\x4e\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x70\x4e\x79";
case 115: // ENTER
return "\x04\x4b\x70\x4e\x7a";
case 116: // TAB
return "\x04\x4b\x70\x4e\x30";
case 117: // BACKSPACE
return "\x04\x4b\x70\x4e\x31";
case 118: // INSERT
return "\x04\x4b\x70\x4e\x32";
case 119: // DELETE
return "\x04\x4b\x70\x4e\x33";
case 120: // RIGHT
return "\x04\x4b\x70\x4e\x34";
case 121: // LEFT
return "\x04\x4b\x70\x4e\x35";
case 122: // DOWN
return "\x04\x4b\x70\x4e\x36";
case 123: // UP
return "\x04\x4b\x70\x4e\x37";
case 124: // PAGE_UP
return "\x04\x4b\x70\x4e\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x70\x4e\x39";
case 126: // HOME
return "\x04\x4b\x70\x4e\x2e";
case 127: // END
return "\x04\x4b\x70\x4e\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x70\x4e\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x70\x4e\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x70\x4e\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x70\x4e\x5e";
case 132: // PAUSE
return "\x04\x4b\x70\x4e\x21";
case 133: // F1
return "\x04\x4b\x70\x4e\x2f";
case 134: // F2
return "\x04\x4b\x70\x4e\x2a";
case 135: // F3
return "\x04\x4b\x70\x4e\x3f";
case 136: // F4
return "\x04\x4b\x70\x4e\x26";
case 137: // F5
return "\x04\x4b\x70\x4e\x3c";
case 138: // F6
return "\x04\x4b\x70\x4e\x3e";
case 139: // F7
return "\x04\x4b\x70\x4e\x28";
case 140: // F8
return "\x04\x4b\x70\x4e\x29";
case 141: // F9
return "\x04\x4b\x70\x4e\x5b";
case 142: // F10
return "\x04\x4b\x70\x4e\x5d";
case 143: // F11
return "\x04\x4b\x70\x4e\x7b";
case 144: // F12
return "\x04\x4b\x70\x4e\x7d";
case 145: // F13
return "\x04\x4b\x70\x4e\x40";
case 146: // F14
return "\x04\x4b\x70\x4e\x25";
case 147: // F15
return "\x04\x4b\x70\x4e\x24";
case 148: // F16
return "\x04\x4b\x70\x4e\x23";
case 149: // F17
return "\x05\x4b\x70\x4e\x42\x41";
case 150: // F18
return "\x05\x4b\x70\x4e\x42\x42";
case 151: // F19
return "\x05\x4b\x70\x4e\x42\x43";
case 152: // F20
return "\x05\x4b\x70\x4e\x42\x44";
case 153: // F21
return "\x05\x4b\x70\x4e\x42\x45";
case 154: // F22
return "\x05\x4b\x70\x4e\x42\x46";
case 155: // F23
return "\x05\x4b\x70\x4e\x42\x47";
case 156: // F24
return "\x05\x4b\x70\x4e\x42\x48";
case 157: // F25
return "\x05\x4b\x70\x4e\x42\x49";
case 158: // KP_0
return "\x05\x4b\x70\x4e\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x70\x4e\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x70\x4e\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x70\x4e\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x70\x4e\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x70\x4e\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x70\x4e\x42\x50";
case 165: // KP_7
return "\x05\x4b\x70\x4e\x42\x51";
case 166: // KP_8
return "\x05\x4b\x70\x4e\x42\x52";
case 167: // KP_9
return "\x05\x4b\x70\x4e\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x70\x4e\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x70\x4e\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x70\x4e\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x70\x4e\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x70\x4e\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x70\x4e\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x70\x4e\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x70\x4e\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x70\x4e\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x70\x4e\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x70\x4e\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x70\x4e\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x70\x4e\x42\x68";
} // end switch(key)
case 0xc:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x4b\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x70\x4b\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x70\x4b\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x70\x4b\x76";
case 62: // WORLD_1
return "\x04\x4b\x70\x4b\x77";
case 63: // WORLD_2
return "\x04\x4b\x70\x4b\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x70\x4b\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x70\x4b\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x70\x4b\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x70\x4b\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x70\x4b\x42\x30";
case 69: // AE
return "\x05\x4b\x70\x4b\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x70\x4b\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x70\x4b\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x70\x4b\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x70\x4b\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x70\x4b\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x70\x4b\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x70\x4b\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x70\x4b\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x70\x4b\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x70\x4b\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x70\x4b\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x70\x4b\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x70\x4b\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x70\x4b\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x70\x4b\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x70\x4b\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x70\x4b\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x70\x4b\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x70\x4b\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x70\x4b\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x70\x4b\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x70\x4b\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x70\x4b\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x70\x4b\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x70\x4b\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x70\x4b\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x70\x4b\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x70\x4b\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x70\x4b\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x70\x4b\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x70\x4b\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x70\x4b\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x70\x4b\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x70\x4b\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x70\x4b\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x70\x4b\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x70\x4b\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x70\x4b\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x70\x4b\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x70\x4b\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x70\x4b\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x70\x4b\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x70\x4b\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x70\x4b\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x70\x4b\x79";
case 115: // ENTER
return "\x04\x4b\x70\x4b\x7a";
case 116: // TAB
return "\x04\x4b\x70\x4b\x30";
case 117: // BACKSPACE
return "\x04\x4b\x70\x4b\x31";
case 118: // INSERT
return "\x04\x4b\x70\x4b\x32";
case 119: // DELETE
return "\x04\x4b\x70\x4b\x33";
case 120: // RIGHT
return "\x04\x4b\x70\x4b\x34";
case 121: // LEFT
return "\x04\x4b\x70\x4b\x35";
case 122: // DOWN
return "\x04\x4b\x70\x4b\x36";
case 123: // UP
return "\x04\x4b\x70\x4b\x37";
case 124: // PAGE_UP
return "\x04\x4b\x70\x4b\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x70\x4b\x39";
case 126: // HOME
return "\x04\x4b\x70\x4b\x2e";
case 127: // END
return "\x04\x4b\x70\x4b\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x70\x4b\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x70\x4b\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x70\x4b\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x70\x4b\x5e";
case 132: // PAUSE
return "\x04\x4b\x70\x4b\x21";
case 133: // F1
return "\x04\x4b\x70\x4b\x2f";
case 134: // F2
return "\x04\x4b\x70\x4b\x2a";
case 135: // F3
return "\x04\x4b\x70\x4b\x3f";
case 136: // F4
return "\x04\x4b\x70\x4b\x26";
case 137: // F5
return "\x04\x4b\x70\x4b\x3c";
case 138: // F6
return "\x04\x4b\x70\x4b\x3e";
case 139: // F7
return "\x04\x4b\x70\x4b\x28";
case 140: // F8
return "\x04\x4b\x70\x4b\x29";
case 141: // F9
return "\x04\x4b\x70\x4b\x5b";
case 142: // F10
return "\x04\x4b\x70\x4b\x5d";
case 143: // F11
return "\x04\x4b\x70\x4b\x7b";
case 144: // F12
return "\x04\x4b\x70\x4b\x7d";
case 145: // F13
return "\x04\x4b\x70\x4b\x40";
case 146: // F14
return "\x04\x4b\x70\x4b\x25";
case 147: // F15
return "\x04\x4b\x70\x4b\x24";
case 148: // F16
return "\x04\x4b\x70\x4b\x23";
case 149: // F17
return "\x05\x4b\x70\x4b\x42\x41";
case 150: // F18
return "\x05\x4b\x70\x4b\x42\x42";
case 151: // F19
return "\x05\x4b\x70\x4b\x42\x43";
case 152: // F20
return "\x05\x4b\x70\x4b\x42\x44";
case 153: // F21
return "\x05\x4b\x70\x4b\x42\x45";
case 154: // F22
return "\x05\x4b\x70\x4b\x42\x46";
case 155: // F23
return "\x05\x4b\x70\x4b\x42\x47";
case 156: // F24
return "\x05\x4b\x70\x4b\x42\x48";
case 157: // F25
return "\x05\x4b\x70\x4b\x42\x49";
case 158: // KP_0
return "\x05\x4b\x70\x4b\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x70\x4b\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x70\x4b\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x70\x4b\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x70\x4b\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x70\x4b\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x70\x4b\x42\x50";
case 165: // KP_7
return "\x05\x4b\x70\x4b\x42\x51";
case 166: // KP_8
return "\x05\x4b\x70\x4b\x42\x52";
case 167: // KP_9
return "\x05\x4b\x70\x4b\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x70\x4b\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x70\x4b\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x70\x4b\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x70\x4b\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x70\x4b\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x70\x4b\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x70\x4b\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x70\x4b\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x70\x4b\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x70\x4b\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x70\x4b\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x70\x4b\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x70\x4b\x42\x68";
} // end switch(key)
case 0xd:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x4c\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x70\x4c\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x70\x4c\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x70\x4c\x76";
case 62: // WORLD_1
return "\x04\x4b\x70\x4c\x77";
case 63: // WORLD_2
return "\x04\x4b\x70\x4c\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x70\x4c\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x70\x4c\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x70\x4c\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x70\x4c\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x70\x4c\x42\x30";
case 69: // AE
return "\x05\x4b\x70\x4c\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x70\x4c\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x70\x4c\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x70\x4c\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x70\x4c\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x70\x4c\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x70\x4c\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x70\x4c\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x70\x4c\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x70\x4c\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x70\x4c\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x70\x4c\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x70\x4c\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x70\x4c\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x70\x4c\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x70\x4c\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x70\x4c\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x70\x4c\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x70\x4c\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x70\x4c\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x70\x4c\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x70\x4c\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x70\x4c\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x70\x4c\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x70\x4c\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x70\x4c\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x70\x4c\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x70\x4c\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x70\x4c\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x70\x4c\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x70\x4c\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x70\x4c\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x70\x4c\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x70\x4c\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x70\x4c\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x70\x4c\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x70\x4c\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x70\x4c\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x70\x4c\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x70\x4c\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x70\x4c\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x70\x4c\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x70\x4c\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x70\x4c\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x70\x4c\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x70\x4c\x79";
case 115: // ENTER
return "\x04\x4b\x70\x4c\x7a";
case 116: // TAB
return "\x04\x4b\x70\x4c\x30";
case 117: // BACKSPACE
return "\x04\x4b\x70\x4c\x31";
case 118: // INSERT
return "\x04\x4b\x70\x4c\x32";
case 119: // DELETE
return "\x04\x4b\x70\x4c\x33";
case 120: // RIGHT
return "\x04\x4b\x70\x4c\x34";
case 121: // LEFT
return "\x04\x4b\x70\x4c\x35";
case 122: // DOWN
return "\x04\x4b\x70\x4c\x36";
case 123: // UP
return "\x04\x4b\x70\x4c\x37";
case 124: // PAGE_UP
return "\x04\x4b\x70\x4c\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x70\x4c\x39";
case 126: // HOME
return "\x04\x4b\x70\x4c\x2e";
case 127: // END
return "\x04\x4b\x70\x4c\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x70\x4c\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x70\x4c\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x70\x4c\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x70\x4c\x5e";
case 132: // PAUSE
return "\x04\x4b\x70\x4c\x21";
case 133: // F1
return "\x04\x4b\x70\x4c\x2f";
case 134: // F2
return "\x04\x4b\x70\x4c\x2a";
case 135: // F3
return "\x04\x4b\x70\x4c\x3f";
case 136: // F4
return "\x04\x4b\x70\x4c\x26";
case 137: // F5
return "\x04\x4b\x70\x4c\x3c";
case 138: // F6
return "\x04\x4b\x70\x4c\x3e";
case 139: // F7
return "\x04\x4b\x70\x4c\x28";
case 140: // F8
return "\x04\x4b\x70\x4c\x29";
case 141: // F9
return "\x04\x4b\x70\x4c\x5b";
case 142: // F10
return "\x04\x4b\x70\x4c\x5d";
case 143: // F11
return "\x04\x4b\x70\x4c\x7b";
case 144: // F12
return "\x04\x4b\x70\x4c\x7d";
case 145: // F13
return "\x04\x4b\x70\x4c\x40";
case 146: // F14
return "\x04\x4b\x70\x4c\x25";
case 147: // F15
return "\x04\x4b\x70\x4c\x24";
case 148: // F16
return "\x04\x4b\x70\x4c\x23";
case 149: // F17
return "\x05\x4b\x70\x4c\x42\x41";
case 150: // F18
return "\x05\x4b\x70\x4c\x42\x42";
case 151: // F19
return "\x05\x4b\x70\x4c\x42\x43";
case 152: // F20
return "\x05\x4b\x70\x4c\x42\x44";
case 153: // F21
return "\x05\x4b\x70\x4c\x42\x45";
case 154: // F22
return "\x05\x4b\x70\x4c\x42\x46";
case 155: // F23
return "\x05\x4b\x70\x4c\x42\x47";
case 156: // F24
return "\x05\x4b\x70\x4c\x42\x48";
case 157: // F25
return "\x05\x4b\x70\x4c\x42\x49";
case 158: // KP_0
return "\x05\x4b\x70\x4c\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x70\x4c\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x70\x4c\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x70\x4c\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x70\x4c\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x70\x4c\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x70\x4c\x42\x50";
case 165: // KP_7
return "\x05\x4b\x70\x4c\x42\x51";
case 166: // KP_8
return "\x05\x4b\x70\x4c\x42\x52";
case 167: // KP_9
return "\x05\x4b\x70\x4c\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x70\x4c\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x70\x4c\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x70\x4c\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x70\x4c\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x70\x4c\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x70\x4c\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x70\x4c\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x70\x4c\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x70\x4c\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x70\x4c\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x70\x4c\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x70\x4c\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x70\x4c\x42\x68";
} // end switch(key)
case 0xe:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x4f\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x70\x4f\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x70\x4f\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x70\x4f\x76";
case 62: // WORLD_1
return "\x04\x4b\x70\x4f\x77";
case 63: // WORLD_2
return "\x04\x4b\x70\x4f\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x70\x4f\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x70\x4f\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x70\x4f\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x70\x4f\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x70\x4f\x42\x30";
case 69: // AE
return "\x05\x4b\x70\x4f\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x70\x4f\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x70\x4f\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x70\x4f\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x70\x4f\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x70\x4f\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x70\x4f\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x70\x4f\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x70\x4f\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x70\x4f\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x70\x4f\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x70\x4f\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x70\x4f\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x70\x4f\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x70\x4f\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x70\x4f\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x70\x4f\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x70\x4f\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x70\x4f\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x70\x4f\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x70\x4f\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x70\x4f\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x70\x4f\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x70\x4f\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x70\x4f\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x70\x4f\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x70\x4f\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x70\x4f\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x70\x4f\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x70\x4f\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x70\x4f\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x70\x4f\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x70\x4f\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x70\x4f\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x70\x4f\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x70\x4f\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x70\x4f\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x70\x4f\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x70\x4f\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x70\x4f\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x70\x4f\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x70\x4f\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x70\x4f\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x70\x4f\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x70\x4f\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x70\x4f\x79";
case 115: // ENTER
return "\x04\x4b\x70\x4f\x7a";
case 116: // TAB
return "\x04\x4b\x70\x4f\x30";
case 117: // BACKSPACE
return "\x04\x4b\x70\x4f\x31";
case 118: // INSERT
return "\x04\x4b\x70\x4f\x32";
case 119: // DELETE
return "\x04\x4b\x70\x4f\x33";
case 120: // RIGHT
return "\x04\x4b\x70\x4f\x34";
case 121: // LEFT
return "\x04\x4b\x70\x4f\x35";
case 122: // DOWN
return "\x04\x4b\x70\x4f\x36";
case 123: // UP
return "\x04\x4b\x70\x4f\x37";
case 124: // PAGE_UP
return "\x04\x4b\x70\x4f\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x70\x4f\x39";
case 126: // HOME
return "\x04\x4b\x70\x4f\x2e";
case 127: // END
return "\x04\x4b\x70\x4f\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x70\x4f\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x70\x4f\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x70\x4f\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x70\x4f\x5e";
case 132: // PAUSE
return "\x04\x4b\x70\x4f\x21";
case 133: // F1
return "\x04\x4b\x70\x4f\x2f";
case 134: // F2
return "\x04\x4b\x70\x4f\x2a";
case 135: // F3
return "\x04\x4b\x70\x4f\x3f";
case 136: // F4
return "\x04\x4b\x70\x4f\x26";
case 137: // F5
return "\x04\x4b\x70\x4f\x3c";
case 138: // F6
return "\x04\x4b\x70\x4f\x3e";
case 139: // F7
return "\x04\x4b\x70\x4f\x28";
case 140: // F8
return "\x04\x4b\x70\x4f\x29";
case 141: // F9
return "\x04\x4b\x70\x4f\x5b";
case 142: // F10
return "\x04\x4b\x70\x4f\x5d";
case 143: // F11
return "\x04\x4b\x70\x4f\x7b";
case 144: // F12
return "\x04\x4b\x70\x4f\x7d";
case 145: // F13
return "\x04\x4b\x70\x4f\x40";
case 146: // F14
return "\x04\x4b\x70\x4f\x25";
case 147: // F15
return "\x04\x4b\x70\x4f\x24";
case 148: // F16
return "\x04\x4b\x70\x4f\x23";
case 149: // F17
return "\x05\x4b\x70\x4f\x42\x41";
case 150: // F18
return "\x05\x4b\x70\x4f\x42\x42";
case 151: // F19
return "\x05\x4b\x70\x4f\x42\x43";
case 152: // F20
return "\x05\x4b\x70\x4f\x42\x44";
case 153: // F21
return "\x05\x4b\x70\x4f\x42\x45";
case 154: // F22
return "\x05\x4b\x70\x4f\x42\x46";
case 155: // F23
return "\x05\x4b\x70\x4f\x42\x47";
case 156: // F24
return "\x05\x4b\x70\x4f\x42\x48";
case 157: // F25
return "\x05\x4b\x70\x4f\x42\x49";
case 158: // KP_0
return "\x05\x4b\x70\x4f\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x70\x4f\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x70\x4f\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x70\x4f\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x70\x4f\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x70\x4f\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x70\x4f\x42\x50";
case 165: // KP_7
return "\x05\x4b\x70\x4f\x42\x51";
case 166: // KP_8
return "\x05\x4b\x70\x4f\x42\x52";
case 167: // KP_9
return "\x05\x4b\x70\x4f\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x70\x4f\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x70\x4f\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x70\x4f\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x70\x4f\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x70\x4f\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x70\x4f\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x70\x4f\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x70\x4f\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x70\x4f\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x70\x4f\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x70\x4f\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x70\x4f\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x70\x4f\x42\x68";
} // end switch(key)
case 0xf:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x50\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x70\x50\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x70\x50\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x70\x50\x76";
case 62: // WORLD_1
return "\x04\x4b\x70\x50\x77";
case 63: // WORLD_2
return "\x04\x4b\x70\x50\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x70\x50\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x70\x50\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x70\x50\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x70\x50\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x70\x50\x42\x30";
case 69: // AE
return "\x05\x4b\x70\x50\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x70\x50\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x70\x50\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x70\x50\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x70\x50\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x70\x50\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x70\x50\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x70\x50\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x70\x50\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x70\x50\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x70\x50\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x70\x50\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x70\x50\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x70\x50\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x70\x50\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x70\x50\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x70\x50\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x70\x50\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x70\x50\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x70\x50\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x70\x50\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x70\x50\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x70\x50\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x70\x50\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x70\x50\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x70\x50\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x70\x50\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x70\x50\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x70\x50\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x70\x50\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x70\x50\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x70\x50\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x70\x50\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x70\x50\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x70\x50\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x70\x50\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x70\x50\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x70\x50\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x70\x50\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x70\x50\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x70\x50\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x70\x50\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x70\x50\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x70\x50\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x70\x50\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x70\x50\x79";
case 115: // ENTER
return "\x04\x4b\x70\x50\x7a";
case 116: // TAB
return "\x04\x4b\x70\x50\x30";
case 117: // BACKSPACE
return "\x04\x4b\x70\x50\x31";
case 118: // INSERT
return "\x04\x4b\x70\x50\x32";
case 119: // DELETE
return "\x04\x4b\x70\x50\x33";
case 120: // RIGHT
return "\x04\x4b\x70\x50\x34";
case 121: // LEFT
return "\x04\x4b\x70\x50\x35";
case 122: // DOWN
return "\x04\x4b\x70\x50\x36";
case 123: // UP
return "\x04\x4b\x70\x50\x37";
case 124: // PAGE_UP
return "\x04\x4b\x70\x50\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x70\x50\x39";
case 126: // HOME
return "\x04\x4b\x70\x50\x2e";
case 127: // END
return "\x04\x4b\x70\x50\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x70\x50\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x70\x50\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x70\x50\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x70\x50\x5e";
case 132: // PAUSE
return "\x04\x4b\x70\x50\x21";
case 133: // F1
return "\x04\x4b\x70\x50\x2f";
case 134: // F2
return "\x04\x4b\x70\x50\x2a";
case 135: // F3
return "\x04\x4b\x70\x50\x3f";
case 136: // F4
return "\x04\x4b\x70\x50\x26";
case 137: // F5
return "\x04\x4b\x70\x50\x3c";
case 138: // F6
return "\x04\x4b\x70\x50\x3e";
case 139: // F7
return "\x04\x4b\x70\x50\x28";
case 140: // F8
return "\x04\x4b\x70\x50\x29";
case 141: // F9
return "\x04\x4b\x70\x50\x5b";
case 142: // F10
return "\x04\x4b\x70\x50\x5d";
case 143: // F11
return "\x04\x4b\x70\x50\x7b";
case 144: // F12
return "\x04\x4b\x70\x50\x7d";
case 145: // F13
return "\x04\x4b\x70\x50\x40";
case 146: // F14
return "\x04\x4b\x70\x50\x25";
case 147: // F15
return "\x04\x4b\x70\x50\x24";
case 148: // F16
return "\x04\x4b\x70\x50\x23";
case 149: // F17
return "\x05\x4b\x70\x50\x42\x41";
case 150: // F18
return "\x05\x4b\x70\x50\x42\x42";
case 151: // F19
return "\x05\x4b\x70\x50\x42\x43";
case 152: // F20
return "\x05\x4b\x70\x50\x42\x44";
case 153: // F21
return "\x05\x4b\x70\x50\x42\x45";
case 154: // F22
return "\x05\x4b\x70\x50\x42\x46";
case 155: // F23
return "\x05\x4b\x70\x50\x42\x47";
case 156: // F24
return "\x05\x4b\x70\x50\x42\x48";
case 157: // F25
return "\x05\x4b\x70\x50\x42\x49";
case 158: // KP_0
return "\x05\x4b\x70\x50\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x70\x50\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x70\x50\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x70\x50\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x70\x50\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x70\x50\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x70\x50\x42\x50";
case 165: // KP_7
return "\x05\x4b\x70\x50\x42\x51";
case 166: // KP_8
return "\x05\x4b\x70\x50\x42\x52";
case 167: // KP_9
return "\x05\x4b\x70\x50\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x70\x50\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x70\x50\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x70\x50\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x70\x50\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x70\x50\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x70\x50\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x70\x50\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x70\x50\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x70\x50\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x70\x50\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x70\x50\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x70\x50\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x70\x50\x42\x68";
} // end switch(key)
} // end switch(mods)
break;
case 2: // REPEAT
switch (mods & 0xf) {
case 0x0:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x04\x4b\x74\x41\x79";
case 115: // ENTER
return "\x01\x0d";
case 116: // TAB
return "\x04\x4b\x74\x41\x30";
case 117: // BACKSPACE
return "\x01\x7f";
case 118: // INSERT
return "\x04\x4b\x74\x41\x32";
case 119: // DELETE
return "\x04\x4b\x74\x41\x33";
case 120: // RIGHT
return "\x04\x4b\x74\x41\x34";
case 121: // LEFT
return "\x04\x4b\x74\x41\x35";
case 122: // DOWN
return "\x04\x4b\x74\x41\x36";
case 123: // UP
return "\x04\x4b\x74\x41\x37";
case 124: // PAGE_UP
return "\x04\x4b\x74\x41\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x74\x41\x39";
case 126: // HOME
return "\x04\x4b\x74\x41\x2e";
case 127: // END
return "\x04\x4b\x74\x41\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x74\x41\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x74\x41\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x74\x41\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x74\x41\x5e";
case 132: // PAUSE
return "\x04\x4b\x74\x41\x21";
case 133: // F1
return "\x04\x4b\x74\x41\x2f";
case 134: // F2
return "\x04\x4b\x74\x41\x2a";
case 135: // F3
return "\x04\x4b\x74\x41\x3f";
case 136: // F4
return "\x04\x4b\x74\x41\x26";
case 137: // F5
return "\x04\x4b\x74\x41\x3c";
case 138: // F6
return "\x04\x4b\x74\x41\x3e";
case 139: // F7
return "\x04\x4b\x74\x41\x28";
case 140: // F8
return "\x04\x4b\x74\x41\x29";
case 141: // F9
return "\x04\x4b\x74\x41\x5b";
case 142: // F10
return "\x04\x4b\x74\x41\x5d";
case 143: // F11
return "\x04\x4b\x74\x41\x7b";
case 144: // F12
return "\x04\x4b\x74\x41\x7d";
case 145: // F13
return "\x04\x4b\x74\x41\x40";
case 146: // F14
return "\x04\x4b\x74\x41\x25";
case 147: // F15
return "\x04\x4b\x74\x41\x24";
case 148: // F16
return "\x04\x4b\x74\x41\x23";
case 149: // F17
return "\x05\x4b\x74\x41\x42\x41";
case 150: // F18
return "\x05\x4b\x74\x41\x42\x42";
case 151: // F19
return "\x05\x4b\x74\x41\x42\x43";
case 152: // F20
return "\x05\x4b\x74\x41\x42\x44";
case 153: // F21
return "\x05\x4b\x74\x41\x42\x45";
case 154: // F22
return "\x05\x4b\x74\x41\x42\x46";
case 155: // F23
return "\x05\x4b\x74\x41\x42\x47";
case 156: // F24
return "\x05\x4b\x74\x41\x42\x48";
case 157: // F25
return "\x05\x4b\x74\x41\x42\x49";
case 158: // KP_0
return "\x05\x4b\x74\x41\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x74\x41\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x74\x41\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x74\x41\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x74\x41\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x74\x41\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x74\x41\x42\x50";
case 165: // KP_7
return "\x05\x4b\x74\x41\x42\x51";
case 166: // KP_8
return "\x05\x4b\x74\x41\x42\x52";
case 167: // KP_9
return "\x05\x4b\x74\x41\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x74\x41\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x74\x41\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x74\x41\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x74\x41\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x74\x41\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x74\x41\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x74\x41\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x74\x41\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x74\x41\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x74\x41\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x74\x41\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x74\x41\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x74\x41\x42\x68";
} // end switch(key)
case 0x1:
switch(key & 0xff) { default: return NULL;
case 114: // ESCAPE
return "\x04\x4b\x74\x42\x79";
case 115: // ENTER
return "\x04\x4b\x74\x42\x7a";
case 116: // TAB
return "\x04\x4b\x74\x42\x30";
case 117: // BACKSPACE
return "\x04\x4b\x74\x42\x31";
case 118: // INSERT
return "\x04\x4b\x74\x42\x32";
case 119: // DELETE
return "\x04\x4b\x74\x42\x33";
case 120: // RIGHT
return "\x04\x4b\x74\x42\x34";
case 121: // LEFT
return "\x04\x4b\x74\x42\x35";
case 122: // DOWN
return "\x04\x4b\x74\x42\x36";
case 123: // UP
return "\x04\x4b\x74\x42\x37";
case 124: // PAGE_UP
return "\x04\x4b\x74\x42\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x74\x42\x39";
case 126: // HOME
return "\x04\x4b\x74\x42\x2e";
case 127: // END
return "\x04\x4b\x74\x42\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x74\x42\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x74\x42\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x74\x42\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x74\x42\x5e";
case 132: // PAUSE
return "\x04\x4b\x74\x42\x21";
case 133: // F1
return "\x04\x4b\x74\x42\x2f";
case 134: // F2
return "\x04\x4b\x74\x42\x2a";
case 135: // F3
return "\x04\x4b\x74\x42\x3f";
case 136: // F4
return "\x04\x4b\x74\x42\x26";
case 137: // F5
return "\x04\x4b\x74\x42\x3c";
case 138: // F6
return "\x04\x4b\x74\x42\x3e";
case 139: // F7
return "\x04\x4b\x74\x42\x28";
case 140: // F8
return "\x04\x4b\x74\x42\x29";
case 141: // F9
return "\x04\x4b\x74\x42\x5b";
case 142: // F10
return "\x04\x4b\x74\x42\x5d";
case 143: // F11
return "\x04\x4b\x74\x42\x7b";
case 144: // F12
return "\x04\x4b\x74\x42\x7d";
case 145: // F13
return "\x04\x4b\x74\x42\x40";
case 146: // F14
return "\x04\x4b\x74\x42\x25";
case 147: // F15
return "\x04\x4b\x74\x42\x24";
case 148: // F16
return "\x04\x4b\x74\x42\x23";
case 149: // F17
return "\x05\x4b\x74\x42\x42\x41";
case 150: // F18
return "\x05\x4b\x74\x42\x42\x42";
case 151: // F19
return "\x05\x4b\x74\x42\x42\x43";
case 152: // F20
return "\x05\x4b\x74\x42\x42\x44";
case 153: // F21
return "\x05\x4b\x74\x42\x42\x45";
case 154: // F22
return "\x05\x4b\x74\x42\x42\x46";
case 155: // F23
return "\x05\x4b\x74\x42\x42\x47";
case 156: // F24
return "\x05\x4b\x74\x42\x42\x48";
case 157: // F25
return "\x05\x4b\x74\x42\x42\x49";
case 158: // KP_0
return "\x05\x4b\x74\x42\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x74\x42\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x74\x42\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x74\x42\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x74\x42\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x74\x42\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x74\x42\x42\x50";
case 165: // KP_7
return "\x05\x4b\x74\x42\x42\x51";
case 166: // KP_8
return "\x05\x4b\x74\x42\x42\x52";
case 167: // KP_9
return "\x05\x4b\x74\x42\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x74\x42\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x74\x42\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x74\x42\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x74\x42\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x74\x42\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x74\x42\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x74\x42\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x74\x42\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x74\x42\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x74\x42\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x74\x42\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x74\x42\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x74\x42\x42\x68";
} // end switch(key)
case 0x2:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x45\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x74\x45\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x74\x45\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x74\x45\x76";
case 62: // WORLD_1
return "\x04\x4b\x74\x45\x77";
case 63: // WORLD_2
return "\x04\x4b\x74\x45\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x74\x45\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x74\x45\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x74\x45\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x74\x45\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x74\x45\x42\x30";
case 69: // AE
return "\x05\x4b\x74\x45\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x74\x45\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x74\x45\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x74\x45\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x74\x45\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x74\x45\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x74\x45\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x74\x45\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x74\x45\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x74\x45\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x74\x45\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x74\x45\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x74\x45\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x74\x45\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x74\x45\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x74\x45\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x74\x45\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x74\x45\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x74\x45\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x74\x45\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x74\x45\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x74\x45\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x74\x45\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x74\x45\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x74\x45\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x74\x45\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x74\x45\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x74\x45\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x74\x45\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x74\x45\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x74\x45\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x74\x45\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x74\x45\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x74\x45\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x74\x45\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x74\x45\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x74\x45\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x74\x45\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x74\x45\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x74\x45\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x74\x45\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x74\x45\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x74\x45\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x74\x45\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x74\x45\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x74\x45\x79";
case 115: // ENTER
return "\x04\x4b\x74\x45\x7a";
case 116: // TAB
return "\x04\x4b\x74\x45\x30";
case 117: // BACKSPACE
return "\x04\x4b\x74\x45\x31";
case 118: // INSERT
return "\x04\x4b\x74\x45\x32";
case 119: // DELETE
return "\x04\x4b\x74\x45\x33";
case 120: // RIGHT
return "\x04\x4b\x74\x45\x34";
case 121: // LEFT
return "\x04\x4b\x74\x45\x35";
case 122: // DOWN
return "\x04\x4b\x74\x45\x36";
case 123: // UP
return "\x04\x4b\x74\x45\x37";
case 124: // PAGE_UP
return "\x04\x4b\x74\x45\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x74\x45\x39";
case 126: // HOME
return "\x04\x4b\x74\x45\x2e";
case 127: // END
return "\x04\x4b\x74\x45\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x74\x45\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x74\x45\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x74\x45\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x74\x45\x5e";
case 132: // PAUSE
return "\x04\x4b\x74\x45\x21";
case 133: // F1
return "\x04\x4b\x74\x45\x2f";
case 134: // F2
return "\x04\x4b\x74\x45\x2a";
case 135: // F3
return "\x04\x4b\x74\x45\x3f";
case 136: // F4
return "\x04\x4b\x74\x45\x26";
case 137: // F5
return "\x04\x4b\x74\x45\x3c";
case 138: // F6
return "\x04\x4b\x74\x45\x3e";
case 139: // F7
return "\x04\x4b\x74\x45\x28";
case 140: // F8
return "\x04\x4b\x74\x45\x29";
case 141: // F9
return "\x04\x4b\x74\x45\x5b";
case 142: // F10
return "\x04\x4b\x74\x45\x5d";
case 143: // F11
return "\x04\x4b\x74\x45\x7b";
case 144: // F12
return "\x04\x4b\x74\x45\x7d";
case 145: // F13
return "\x04\x4b\x74\x45\x40";
case 146: // F14
return "\x04\x4b\x74\x45\x25";
case 147: // F15
return "\x04\x4b\x74\x45\x24";
case 148: // F16
return "\x04\x4b\x74\x45\x23";
case 149: // F17
return "\x05\x4b\x74\x45\x42\x41";
case 150: // F18
return "\x05\x4b\x74\x45\x42\x42";
case 151: // F19
return "\x05\x4b\x74\x45\x42\x43";
case 152: // F20
return "\x05\x4b\x74\x45\x42\x44";
case 153: // F21
return "\x05\x4b\x74\x45\x42\x45";
case 154: // F22
return "\x05\x4b\x74\x45\x42\x46";
case 155: // F23
return "\x05\x4b\x74\x45\x42\x47";
case 156: // F24
return "\x05\x4b\x74\x45\x42\x48";
case 157: // F25
return "\x05\x4b\x74\x45\x42\x49";
case 158: // KP_0
return "\x05\x4b\x74\x45\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x74\x45\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x74\x45\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x74\x45\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x74\x45\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x74\x45\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x74\x45\x42\x50";
case 165: // KP_7
return "\x05\x4b\x74\x45\x42\x51";
case 166: // KP_8
return "\x05\x4b\x74\x45\x42\x52";
case 167: // KP_9
return "\x05\x4b\x74\x45\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x74\x45\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x74\x45\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x74\x45\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x74\x45\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x74\x45\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x74\x45\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x74\x45\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x74\x45\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x74\x45\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x74\x45\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x74\x45\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x74\x45\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x74\x45\x42\x68";
} // end switch(key)
case 0x3:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x46\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x74\x46\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x74\x46\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x74\x46\x76";
case 62: // WORLD_1
return "\x04\x4b\x74\x46\x77";
case 63: // WORLD_2
return "\x04\x4b\x74\x46\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x74\x46\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x74\x46\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x74\x46\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x74\x46\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x74\x46\x42\x30";
case 69: // AE
return "\x05\x4b\x74\x46\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x74\x46\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x74\x46\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x74\x46\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x74\x46\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x74\x46\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x74\x46\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x74\x46\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x74\x46\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x74\x46\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x74\x46\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x74\x46\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x74\x46\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x74\x46\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x74\x46\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x74\x46\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x74\x46\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x74\x46\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x74\x46\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x74\x46\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x74\x46\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x74\x46\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x74\x46\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x74\x46\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x74\x46\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x74\x46\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x74\x46\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x74\x46\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x74\x46\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x74\x46\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x74\x46\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x74\x46\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x74\x46\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x74\x46\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x74\x46\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x74\x46\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x74\x46\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x74\x46\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x74\x46\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x74\x46\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x74\x46\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x74\x46\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x74\x46\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x74\x46\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x74\x46\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x74\x46\x79";
case 115: // ENTER
return "\x04\x4b\x74\x46\x7a";
case 116: // TAB
return "\x04\x4b\x74\x46\x30";
case 117: // BACKSPACE
return "\x04\x4b\x74\x46\x31";
case 118: // INSERT
return "\x04\x4b\x74\x46\x32";
case 119: // DELETE
return "\x04\x4b\x74\x46\x33";
case 120: // RIGHT
return "\x04\x4b\x74\x46\x34";
case 121: // LEFT
return "\x04\x4b\x74\x46\x35";
case 122: // DOWN
return "\x04\x4b\x74\x46\x36";
case 123: // UP
return "\x04\x4b\x74\x46\x37";
case 124: // PAGE_UP
return "\x04\x4b\x74\x46\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x74\x46\x39";
case 126: // HOME
return "\x04\x4b\x74\x46\x2e";
case 127: // END
return "\x04\x4b\x74\x46\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x74\x46\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x74\x46\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x74\x46\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x74\x46\x5e";
case 132: // PAUSE
return "\x04\x4b\x74\x46\x21";
case 133: // F1
return "\x04\x4b\x74\x46\x2f";
case 134: // F2
return "\x04\x4b\x74\x46\x2a";
case 135: // F3
return "\x04\x4b\x74\x46\x3f";
case 136: // F4
return "\x04\x4b\x74\x46\x26";
case 137: // F5
return "\x04\x4b\x74\x46\x3c";
case 138: // F6
return "\x04\x4b\x74\x46\x3e";
case 139: // F7
return "\x04\x4b\x74\x46\x28";
case 140: // F8
return "\x04\x4b\x74\x46\x29";
case 141: // F9
return "\x04\x4b\x74\x46\x5b";
case 142: // F10
return "\x04\x4b\x74\x46\x5d";
case 143: // F11
return "\x04\x4b\x74\x46\x7b";
case 144: // F12
return "\x04\x4b\x74\x46\x7d";
case 145: // F13
return "\x04\x4b\x74\x46\x40";
case 146: // F14
return "\x04\x4b\x74\x46\x25";
case 147: // F15
return "\x04\x4b\x74\x46\x24";
case 148: // F16
return "\x04\x4b\x74\x46\x23";
case 149: // F17
return "\x05\x4b\x74\x46\x42\x41";
case 150: // F18
return "\x05\x4b\x74\x46\x42\x42";
case 151: // F19
return "\x05\x4b\x74\x46\x42\x43";
case 152: // F20
return "\x05\x4b\x74\x46\x42\x44";
case 153: // F21
return "\x05\x4b\x74\x46\x42\x45";
case 154: // F22
return "\x05\x4b\x74\x46\x42\x46";
case 155: // F23
return "\x05\x4b\x74\x46\x42\x47";
case 156: // F24
return "\x05\x4b\x74\x46\x42\x48";
case 157: // F25
return "\x05\x4b\x74\x46\x42\x49";
case 158: // KP_0
return "\x05\x4b\x74\x46\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x74\x46\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x74\x46\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x74\x46\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x74\x46\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x74\x46\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x74\x46\x42\x50";
case 165: // KP_7
return "\x05\x4b\x74\x46\x42\x51";
case 166: // KP_8
return "\x05\x4b\x74\x46\x42\x52";
case 167: // KP_9
return "\x05\x4b\x74\x46\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x74\x46\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x74\x46\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x74\x46\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x74\x46\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x74\x46\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x74\x46\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x74\x46\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x74\x46\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x74\x46\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x74\x46\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x74\x46\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x74\x46\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x74\x46\x42\x68";
} // end switch(key)
case 0x4:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x43\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x74\x43\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x74\x43\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x74\x43\x76";
case 62: // WORLD_1
return "\x04\x4b\x74\x43\x77";
case 63: // WORLD_2
return "\x04\x4b\x74\x43\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x74\x43\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x74\x43\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x74\x43\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x74\x43\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x74\x43\x42\x30";
case 69: // AE
return "\x05\x4b\x74\x43\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x74\x43\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x74\x43\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x74\x43\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x74\x43\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x74\x43\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x74\x43\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x74\x43\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x74\x43\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x74\x43\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x74\x43\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x74\x43\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x74\x43\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x74\x43\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x74\x43\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x74\x43\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x74\x43\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x74\x43\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x74\x43\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x74\x43\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x74\x43\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x74\x43\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x74\x43\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x74\x43\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x74\x43\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x74\x43\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x74\x43\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x74\x43\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x74\x43\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x74\x43\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x74\x43\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x74\x43\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x74\x43\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x74\x43\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x74\x43\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x74\x43\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x74\x43\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x74\x43\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x74\x43\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x74\x43\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x74\x43\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x74\x43\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x74\x43\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x74\x43\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x74\x43\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x74\x43\x79";
case 115: // ENTER
return "\x04\x4b\x74\x43\x7a";
case 116: // TAB
return "\x04\x4b\x74\x43\x30";
case 117: // BACKSPACE
return "\x04\x4b\x74\x43\x31";
case 118: // INSERT
return "\x04\x4b\x74\x43\x32";
case 119: // DELETE
return "\x04\x4b\x74\x43\x33";
case 120: // RIGHT
return "\x04\x4b\x74\x43\x34";
case 121: // LEFT
return "\x04\x4b\x74\x43\x35";
case 122: // DOWN
return "\x04\x4b\x74\x43\x36";
case 123: // UP
return "\x04\x4b\x74\x43\x37";
case 124: // PAGE_UP
return "\x04\x4b\x74\x43\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x74\x43\x39";
case 126: // HOME
return "\x04\x4b\x74\x43\x2e";
case 127: // END
return "\x04\x4b\x74\x43\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x74\x43\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x74\x43\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x74\x43\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x74\x43\x5e";
case 132: // PAUSE
return "\x04\x4b\x74\x43\x21";
case 133: // F1
return "\x04\x4b\x74\x43\x2f";
case 134: // F2
return "\x04\x4b\x74\x43\x2a";
case 135: // F3
return "\x04\x4b\x74\x43\x3f";
case 136: // F4
return "\x04\x4b\x74\x43\x26";
case 137: // F5
return "\x04\x4b\x74\x43\x3c";
case 138: // F6
return "\x04\x4b\x74\x43\x3e";
case 139: // F7
return "\x04\x4b\x74\x43\x28";
case 140: // F8
return "\x04\x4b\x74\x43\x29";
case 141: // F9
return "\x04\x4b\x74\x43\x5b";
case 142: // F10
return "\x04\x4b\x74\x43\x5d";
case 143: // F11
return "\x04\x4b\x74\x43\x7b";
case 144: // F12
return "\x04\x4b\x74\x43\x7d";
case 145: // F13
return "\x04\x4b\x74\x43\x40";
case 146: // F14
return "\x04\x4b\x74\x43\x25";
case 147: // F15
return "\x04\x4b\x74\x43\x24";
case 148: // F16
return "\x04\x4b\x74\x43\x23";
case 149: // F17
return "\x05\x4b\x74\x43\x42\x41";
case 150: // F18
return "\x05\x4b\x74\x43\x42\x42";
case 151: // F19
return "\x05\x4b\x74\x43\x42\x43";
case 152: // F20
return "\x05\x4b\x74\x43\x42\x44";
case 153: // F21
return "\x05\x4b\x74\x43\x42\x45";
case 154: // F22
return "\x05\x4b\x74\x43\x42\x46";
case 155: // F23
return "\x05\x4b\x74\x43\x42\x47";
case 156: // F24
return "\x05\x4b\x74\x43\x42\x48";
case 157: // F25
return "\x05\x4b\x74\x43\x42\x49";
case 158: // KP_0
return "\x05\x4b\x74\x43\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x74\x43\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x74\x43\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x74\x43\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x74\x43\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x74\x43\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x74\x43\x42\x50";
case 165: // KP_7
return "\x05\x4b\x74\x43\x42\x51";
case 166: // KP_8
return "\x05\x4b\x74\x43\x42\x52";
case 167: // KP_9
return "\x05\x4b\x74\x43\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x74\x43\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x74\x43\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x74\x43\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x74\x43\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x74\x43\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x74\x43\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x74\x43\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x74\x43\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x74\x43\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x74\x43\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x74\x43\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x74\x43\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x74\x43\x42\x68";
} // end switch(key)
case 0x5:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x44\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x74\x44\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x74\x44\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x74\x44\x76";
case 62: // WORLD_1
return "\x04\x4b\x74\x44\x77";
case 63: // WORLD_2
return "\x04\x4b\x74\x44\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x74\x44\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x74\x44\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x74\x44\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x74\x44\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x74\x44\x42\x30";
case 69: // AE
return "\x05\x4b\x74\x44\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x74\x44\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x74\x44\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x74\x44\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x74\x44\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x74\x44\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x74\x44\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x74\x44\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x74\x44\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x74\x44\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x74\x44\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x74\x44\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x74\x44\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x74\x44\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x74\x44\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x74\x44\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x74\x44\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x74\x44\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x74\x44\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x74\x44\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x74\x44\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x74\x44\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x74\x44\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x74\x44\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x74\x44\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x74\x44\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x74\x44\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x74\x44\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x74\x44\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x74\x44\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x74\x44\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x74\x44\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x74\x44\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x74\x44\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x74\x44\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x74\x44\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x74\x44\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x74\x44\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x74\x44\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x74\x44\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x74\x44\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x74\x44\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x74\x44\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x74\x44\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x74\x44\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x74\x44\x79";
case 115: // ENTER
return "\x04\x4b\x74\x44\x7a";
case 116: // TAB
return "\x04\x4b\x74\x44\x30";
case 117: // BACKSPACE
return "\x04\x4b\x74\x44\x31";
case 118: // INSERT
return "\x04\x4b\x74\x44\x32";
case 119: // DELETE
return "\x04\x4b\x74\x44\x33";
case 120: // RIGHT
return "\x04\x4b\x74\x44\x34";
case 121: // LEFT
return "\x04\x4b\x74\x44\x35";
case 122: // DOWN
return "\x04\x4b\x74\x44\x36";
case 123: // UP
return "\x04\x4b\x74\x44\x37";
case 124: // PAGE_UP
return "\x04\x4b\x74\x44\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x74\x44\x39";
case 126: // HOME
return "\x04\x4b\x74\x44\x2e";
case 127: // END
return "\x04\x4b\x74\x44\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x74\x44\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x74\x44\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x74\x44\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x74\x44\x5e";
case 132: // PAUSE
return "\x04\x4b\x74\x44\x21";
case 133: // F1
return "\x04\x4b\x74\x44\x2f";
case 134: // F2
return "\x04\x4b\x74\x44\x2a";
case 135: // F3
return "\x04\x4b\x74\x44\x3f";
case 136: // F4
return "\x04\x4b\x74\x44\x26";
case 137: // F5
return "\x04\x4b\x74\x44\x3c";
case 138: // F6
return "\x04\x4b\x74\x44\x3e";
case 139: // F7
return "\x04\x4b\x74\x44\x28";
case 140: // F8
return "\x04\x4b\x74\x44\x29";
case 141: // F9
return "\x04\x4b\x74\x44\x5b";
case 142: // F10
return "\x04\x4b\x74\x44\x5d";
case 143: // F11
return "\x04\x4b\x74\x44\x7b";
case 144: // F12
return "\x04\x4b\x74\x44\x7d";
case 145: // F13
return "\x04\x4b\x74\x44\x40";
case 146: // F14
return "\x04\x4b\x74\x44\x25";
case 147: // F15
return "\x04\x4b\x74\x44\x24";
case 148: // F16
return "\x04\x4b\x74\x44\x23";
case 149: // F17
return "\x05\x4b\x74\x44\x42\x41";
case 150: // F18
return "\x05\x4b\x74\x44\x42\x42";
case 151: // F19
return "\x05\x4b\x74\x44\x42\x43";
case 152: // F20
return "\x05\x4b\x74\x44\x42\x44";
case 153: // F21
return "\x05\x4b\x74\x44\x42\x45";
case 154: // F22
return "\x05\x4b\x74\x44\x42\x46";
case 155: // F23
return "\x05\x4b\x74\x44\x42\x47";
case 156: // F24
return "\x05\x4b\x74\x44\x42\x48";
case 157: // F25
return "\x05\x4b\x74\x44\x42\x49";
case 158: // KP_0
return "\x05\x4b\x74\x44\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x74\x44\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x74\x44\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x74\x44\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x74\x44\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x74\x44\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x74\x44\x42\x50";
case 165: // KP_7
return "\x05\x4b\x74\x44\x42\x51";
case 166: // KP_8
return "\x05\x4b\x74\x44\x42\x52";
case 167: // KP_9
return "\x05\x4b\x74\x44\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x74\x44\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x74\x44\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x74\x44\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x74\x44\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x74\x44\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x74\x44\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x74\x44\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x74\x44\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x74\x44\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x74\x44\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x74\x44\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x74\x44\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x74\x44\x42\x68";
} // end switch(key)
case 0x6:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x47\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x74\x47\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x74\x47\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x74\x47\x76";
case 62: // WORLD_1
return "\x04\x4b\x74\x47\x77";
case 63: // WORLD_2
return "\x04\x4b\x74\x47\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x74\x47\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x74\x47\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x74\x47\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x74\x47\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x74\x47\x42\x30";
case 69: // AE
return "\x05\x4b\x74\x47\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x74\x47\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x74\x47\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x74\x47\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x74\x47\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x74\x47\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x74\x47\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x74\x47\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x74\x47\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x74\x47\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x74\x47\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x74\x47\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x74\x47\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x74\x47\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x74\x47\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x74\x47\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x74\x47\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x74\x47\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x74\x47\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x74\x47\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x74\x47\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x74\x47\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x74\x47\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x74\x47\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x74\x47\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x74\x47\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x74\x47\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x74\x47\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x74\x47\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x74\x47\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x74\x47\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x74\x47\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x74\x47\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x74\x47\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x74\x47\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x74\x47\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x74\x47\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x74\x47\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x74\x47\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x74\x47\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x74\x47\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x74\x47\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x74\x47\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x74\x47\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x74\x47\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x74\x47\x79";
case 115: // ENTER
return "\x04\x4b\x74\x47\x7a";
case 116: // TAB
return "\x04\x4b\x74\x47\x30";
case 117: // BACKSPACE
return "\x04\x4b\x74\x47\x31";
case 118: // INSERT
return "\x04\x4b\x74\x47\x32";
case 119: // DELETE
return "\x04\x4b\x74\x47\x33";
case 120: // RIGHT
return "\x04\x4b\x74\x47\x34";
case 121: // LEFT
return "\x04\x4b\x74\x47\x35";
case 122: // DOWN
return "\x04\x4b\x74\x47\x36";
case 123: // UP
return "\x04\x4b\x74\x47\x37";
case 124: // PAGE_UP
return "\x04\x4b\x74\x47\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x74\x47\x39";
case 126: // HOME
return "\x04\x4b\x74\x47\x2e";
case 127: // END
return "\x04\x4b\x74\x47\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x74\x47\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x74\x47\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x74\x47\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x74\x47\x5e";
case 132: // PAUSE
return "\x04\x4b\x74\x47\x21";
case 133: // F1
return "\x04\x4b\x74\x47\x2f";
case 134: // F2
return "\x04\x4b\x74\x47\x2a";
case 135: // F3
return "\x04\x4b\x74\x47\x3f";
case 136: // F4
return "\x04\x4b\x74\x47\x26";
case 137: // F5
return "\x04\x4b\x74\x47\x3c";
case 138: // F6
return "\x04\x4b\x74\x47\x3e";
case 139: // F7
return "\x04\x4b\x74\x47\x28";
case 140: // F8
return "\x04\x4b\x74\x47\x29";
case 141: // F9
return "\x04\x4b\x74\x47\x5b";
case 142: // F10
return "\x04\x4b\x74\x47\x5d";
case 143: // F11
return "\x04\x4b\x74\x47\x7b";
case 144: // F12
return "\x04\x4b\x74\x47\x7d";
case 145: // F13
return "\x04\x4b\x74\x47\x40";
case 146: // F14
return "\x04\x4b\x74\x47\x25";
case 147: // F15
return "\x04\x4b\x74\x47\x24";
case 148: // F16
return "\x04\x4b\x74\x47\x23";
case 149: // F17
return "\x05\x4b\x74\x47\x42\x41";
case 150: // F18
return "\x05\x4b\x74\x47\x42\x42";
case 151: // F19
return "\x05\x4b\x74\x47\x42\x43";
case 152: // F20
return "\x05\x4b\x74\x47\x42\x44";
case 153: // F21
return "\x05\x4b\x74\x47\x42\x45";
case 154: // F22
return "\x05\x4b\x74\x47\x42\x46";
case 155: // F23
return "\x05\x4b\x74\x47\x42\x47";
case 156: // F24
return "\x05\x4b\x74\x47\x42\x48";
case 157: // F25
return "\x05\x4b\x74\x47\x42\x49";
case 158: // KP_0
return "\x05\x4b\x74\x47\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x74\x47\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x74\x47\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x74\x47\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x74\x47\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x74\x47\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x74\x47\x42\x50";
case 165: // KP_7
return "\x05\x4b\x74\x47\x42\x51";
case 166: // KP_8
return "\x05\x4b\x74\x47\x42\x52";
case 167: // KP_9
return "\x05\x4b\x74\x47\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x74\x47\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x74\x47\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x74\x47\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x74\x47\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x74\x47\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x74\x47\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x74\x47\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x74\x47\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x74\x47\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x74\x47\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x74\x47\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x74\x47\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x74\x47\x42\x68";
} // end switch(key)
case 0x7:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x48\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x74\x48\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x74\x48\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x74\x48\x76";
case 62: // WORLD_1
return "\x04\x4b\x74\x48\x77";
case 63: // WORLD_2
return "\x04\x4b\x74\x48\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x74\x48\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x74\x48\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x74\x48\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x74\x48\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x74\x48\x42\x30";
case 69: // AE
return "\x05\x4b\x74\x48\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x74\x48\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x74\x48\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x74\x48\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x74\x48\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x74\x48\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x74\x48\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x74\x48\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x74\x48\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x74\x48\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x74\x48\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x74\x48\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x74\x48\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x74\x48\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x74\x48\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x74\x48\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x74\x48\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x74\x48\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x74\x48\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x74\x48\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x74\x48\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x74\x48\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x74\x48\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x74\x48\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x74\x48\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x74\x48\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x74\x48\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x74\x48\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x74\x48\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x74\x48\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x74\x48\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x74\x48\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x74\x48\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x74\x48\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x74\x48\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x74\x48\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x74\x48\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x74\x48\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x74\x48\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x74\x48\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x74\x48\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x74\x48\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x74\x48\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x74\x48\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x74\x48\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x74\x48\x79";
case 115: // ENTER
return "\x04\x4b\x74\x48\x7a";
case 116: // TAB
return "\x04\x4b\x74\x48\x30";
case 117: // BACKSPACE
return "\x04\x4b\x74\x48\x31";
case 118: // INSERT
return "\x04\x4b\x74\x48\x32";
case 119: // DELETE
return "\x04\x4b\x74\x48\x33";
case 120: // RIGHT
return "\x04\x4b\x74\x48\x34";
case 121: // LEFT
return "\x04\x4b\x74\x48\x35";
case 122: // DOWN
return "\x04\x4b\x74\x48\x36";
case 123: // UP
return "\x04\x4b\x74\x48\x37";
case 124: // PAGE_UP
return "\x04\x4b\x74\x48\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x74\x48\x39";
case 126: // HOME
return "\x04\x4b\x74\x48\x2e";
case 127: // END
return "\x04\x4b\x74\x48\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x74\x48\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x74\x48\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x74\x48\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x74\x48\x5e";
case 132: // PAUSE
return "\x04\x4b\x74\x48\x21";
case 133: // F1
return "\x04\x4b\x74\x48\x2f";
case 134: // F2
return "\x04\x4b\x74\x48\x2a";
case 135: // F3
return "\x04\x4b\x74\x48\x3f";
case 136: // F4
return "\x04\x4b\x74\x48\x26";
case 137: // F5
return "\x04\x4b\x74\x48\x3c";
case 138: // F6
return "\x04\x4b\x74\x48\x3e";
case 139: // F7
return "\x04\x4b\x74\x48\x28";
case 140: // F8
return "\x04\x4b\x74\x48\x29";
case 141: // F9
return "\x04\x4b\x74\x48\x5b";
case 142: // F10
return "\x04\x4b\x74\x48\x5d";
case 143: // F11
return "\x04\x4b\x74\x48\x7b";
case 144: // F12
return "\x04\x4b\x74\x48\x7d";
case 145: // F13
return "\x04\x4b\x74\x48\x40";
case 146: // F14
return "\x04\x4b\x74\x48\x25";
case 147: // F15
return "\x04\x4b\x74\x48\x24";
case 148: // F16
return "\x04\x4b\x74\x48\x23";
case 149: // F17
return "\x05\x4b\x74\x48\x42\x41";
case 150: // F18
return "\x05\x4b\x74\x48\x42\x42";
case 151: // F19
return "\x05\x4b\x74\x48\x42\x43";
case 152: // F20
return "\x05\x4b\x74\x48\x42\x44";
case 153: // F21
return "\x05\x4b\x74\x48\x42\x45";
case 154: // F22
return "\x05\x4b\x74\x48\x42\x46";
case 155: // F23
return "\x05\x4b\x74\x48\x42\x47";
case 156: // F24
return "\x05\x4b\x74\x48\x42\x48";
case 157: // F25
return "\x05\x4b\x74\x48\x42\x49";
case 158: // KP_0
return "\x05\x4b\x74\x48\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x74\x48\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x74\x48\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x74\x48\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x74\x48\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x74\x48\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x74\x48\x42\x50";
case 165: // KP_7
return "\x05\x4b\x74\x48\x42\x51";
case 166: // KP_8
return "\x05\x4b\x74\x48\x42\x52";
case 167: // KP_9
return "\x05\x4b\x74\x48\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x74\x48\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x74\x48\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x74\x48\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x74\x48\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x74\x48\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x74\x48\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x74\x48\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x74\x48\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x74\x48\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x74\x48\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x74\x48\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x74\x48\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x74\x48\x42\x68";
} // end switch(key)
case 0x8:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x49\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x74\x49\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x74\x49\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x74\x49\x76";
case 62: // WORLD_1
return "\x04\x4b\x74\x49\x77";
case 63: // WORLD_2
return "\x04\x4b\x74\x49\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x74\x49\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x74\x49\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x74\x49\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x74\x49\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x74\x49\x42\x30";
case 69: // AE
return "\x05\x4b\x74\x49\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x74\x49\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x74\x49\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x74\x49\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x74\x49\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x74\x49\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x74\x49\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x74\x49\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x74\x49\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x74\x49\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x74\x49\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x74\x49\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x74\x49\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x74\x49\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x74\x49\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x74\x49\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x74\x49\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x74\x49\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x74\x49\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x74\x49\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x74\x49\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x74\x49\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x74\x49\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x74\x49\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x74\x49\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x74\x49\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x74\x49\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x74\x49\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x74\x49\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x74\x49\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x74\x49\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x74\x49\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x74\x49\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x74\x49\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x74\x49\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x74\x49\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x74\x49\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x74\x49\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x74\x49\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x74\x49\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x74\x49\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x74\x49\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x74\x49\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x74\x49\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x74\x49\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x74\x49\x79";
case 115: // ENTER
return "\x04\x4b\x74\x49\x7a";
case 116: // TAB
return "\x04\x4b\x74\x49\x30";
case 117: // BACKSPACE
return "\x04\x4b\x74\x49\x31";
case 118: // INSERT
return "\x04\x4b\x74\x49\x32";
case 119: // DELETE
return "\x04\x4b\x74\x49\x33";
case 120: // RIGHT
return "\x04\x4b\x74\x49\x34";
case 121: // LEFT
return "\x04\x4b\x74\x49\x35";
case 122: // DOWN
return "\x04\x4b\x74\x49\x36";
case 123: // UP
return "\x04\x4b\x74\x49\x37";
case 124: // PAGE_UP
return "\x04\x4b\x74\x49\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x74\x49\x39";
case 126: // HOME
return "\x04\x4b\x74\x49\x2e";
case 127: // END
return "\x04\x4b\x74\x49\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x74\x49\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x74\x49\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x74\x49\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x74\x49\x5e";
case 132: // PAUSE
return "\x04\x4b\x74\x49\x21";
case 133: // F1
return "\x04\x4b\x74\x49\x2f";
case 134: // F2
return "\x04\x4b\x74\x49\x2a";
case 135: // F3
return "\x04\x4b\x74\x49\x3f";
case 136: // F4
return "\x04\x4b\x74\x49\x26";
case 137: // F5
return "\x04\x4b\x74\x49\x3c";
case 138: // F6
return "\x04\x4b\x74\x49\x3e";
case 139: // F7
return "\x04\x4b\x74\x49\x28";
case 140: // F8
return "\x04\x4b\x74\x49\x29";
case 141: // F9
return "\x04\x4b\x74\x49\x5b";
case 142: // F10
return "\x04\x4b\x74\x49\x5d";
case 143: // F11
return "\x04\x4b\x74\x49\x7b";
case 144: // F12
return "\x04\x4b\x74\x49\x7d";
case 145: // F13
return "\x04\x4b\x74\x49\x40";
case 146: // F14
return "\x04\x4b\x74\x49\x25";
case 147: // F15
return "\x04\x4b\x74\x49\x24";
case 148: // F16
return "\x04\x4b\x74\x49\x23";
case 149: // F17
return "\x05\x4b\x74\x49\x42\x41";
case 150: // F18
return "\x05\x4b\x74\x49\x42\x42";
case 151: // F19
return "\x05\x4b\x74\x49\x42\x43";
case 152: // F20
return "\x05\x4b\x74\x49\x42\x44";
case 153: // F21
return "\x05\x4b\x74\x49\x42\x45";
case 154: // F22
return "\x05\x4b\x74\x49\x42\x46";
case 155: // F23
return "\x05\x4b\x74\x49\x42\x47";
case 156: // F24
return "\x05\x4b\x74\x49\x42\x48";
case 157: // F25
return "\x05\x4b\x74\x49\x42\x49";
case 158: // KP_0
return "\x05\x4b\x74\x49\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x74\x49\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x74\x49\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x74\x49\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x74\x49\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x74\x49\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x74\x49\x42\x50";
case 165: // KP_7
return "\x05\x4b\x74\x49\x42\x51";
case 166: // KP_8
return "\x05\x4b\x74\x49\x42\x52";
case 167: // KP_9
return "\x05\x4b\x74\x49\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x74\x49\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x74\x49\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x74\x49\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x74\x49\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x74\x49\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x74\x49\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x74\x49\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x74\x49\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x74\x49\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x74\x49\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x74\x49\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x74\x49\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x74\x49\x42\x68";
} // end switch(key)
case 0x9:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x4a\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x74\x4a\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x74\x4a\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x74\x4a\x76";
case 62: // WORLD_1
return "\x04\x4b\x74\x4a\x77";
case 63: // WORLD_2
return "\x04\x4b\x74\x4a\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x74\x4a\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x74\x4a\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x74\x4a\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x74\x4a\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x74\x4a\x42\x30";
case 69: // AE
return "\x05\x4b\x74\x4a\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x74\x4a\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x74\x4a\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x74\x4a\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x74\x4a\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x74\x4a\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x74\x4a\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x74\x4a\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x74\x4a\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x74\x4a\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x74\x4a\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x74\x4a\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x74\x4a\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x74\x4a\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x74\x4a\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x74\x4a\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x74\x4a\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x74\x4a\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x74\x4a\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x74\x4a\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x74\x4a\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x74\x4a\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x74\x4a\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x74\x4a\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x74\x4a\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x74\x4a\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x74\x4a\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x74\x4a\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x74\x4a\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x74\x4a\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x74\x4a\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x74\x4a\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x74\x4a\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x74\x4a\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x74\x4a\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x74\x4a\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x74\x4a\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x74\x4a\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x74\x4a\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x74\x4a\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x74\x4a\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x74\x4a\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x74\x4a\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x74\x4a\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x74\x4a\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x74\x4a\x79";
case 115: // ENTER
return "\x04\x4b\x74\x4a\x7a";
case 116: // TAB
return "\x04\x4b\x74\x4a\x30";
case 117: // BACKSPACE
return "\x04\x4b\x74\x4a\x31";
case 118: // INSERT
return "\x04\x4b\x74\x4a\x32";
case 119: // DELETE
return "\x04\x4b\x74\x4a\x33";
case 120: // RIGHT
return "\x04\x4b\x74\x4a\x34";
case 121: // LEFT
return "\x04\x4b\x74\x4a\x35";
case 122: // DOWN
return "\x04\x4b\x74\x4a\x36";
case 123: // UP
return "\x04\x4b\x74\x4a\x37";
case 124: // PAGE_UP
return "\x04\x4b\x74\x4a\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x74\x4a\x39";
case 126: // HOME
return "\x04\x4b\x74\x4a\x2e";
case 127: // END
return "\x04\x4b\x74\x4a\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x74\x4a\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x74\x4a\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x74\x4a\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x74\x4a\x5e";
case 132: // PAUSE
return "\x04\x4b\x74\x4a\x21";
case 133: // F1
return "\x04\x4b\x74\x4a\x2f";
case 134: // F2
return "\x04\x4b\x74\x4a\x2a";
case 135: // F3
return "\x04\x4b\x74\x4a\x3f";
case 136: // F4
return "\x04\x4b\x74\x4a\x26";
case 137: // F5
return "\x04\x4b\x74\x4a\x3c";
case 138: // F6
return "\x04\x4b\x74\x4a\x3e";
case 139: // F7
return "\x04\x4b\x74\x4a\x28";
case 140: // F8
return "\x04\x4b\x74\x4a\x29";
case 141: // F9
return "\x04\x4b\x74\x4a\x5b";
case 142: // F10
return "\x04\x4b\x74\x4a\x5d";
case 143: // F11
return "\x04\x4b\x74\x4a\x7b";
case 144: // F12
return "\x04\x4b\x74\x4a\x7d";
case 145: // F13
return "\x04\x4b\x74\x4a\x40";
case 146: // F14
return "\x04\x4b\x74\x4a\x25";
case 147: // F15
return "\x04\x4b\x74\x4a\x24";
case 148: // F16
return "\x04\x4b\x74\x4a\x23";
case 149: // F17
return "\x05\x4b\x74\x4a\x42\x41";
case 150: // F18
return "\x05\x4b\x74\x4a\x42\x42";
case 151: // F19
return "\x05\x4b\x74\x4a\x42\x43";
case 152: // F20
return "\x05\x4b\x74\x4a\x42\x44";
case 153: // F21
return "\x05\x4b\x74\x4a\x42\x45";
case 154: // F22
return "\x05\x4b\x74\x4a\x42\x46";
case 155: // F23
return "\x05\x4b\x74\x4a\x42\x47";
case 156: // F24
return "\x05\x4b\x74\x4a\x42\x48";
case 157: // F25
return "\x05\x4b\x74\x4a\x42\x49";
case 158: // KP_0
return "\x05\x4b\x74\x4a\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x74\x4a\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x74\x4a\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x74\x4a\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x74\x4a\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x74\x4a\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x74\x4a\x42\x50";
case 165: // KP_7
return "\x05\x4b\x74\x4a\x42\x51";
case 166: // KP_8
return "\x05\x4b\x74\x4a\x42\x52";
case 167: // KP_9
return "\x05\x4b\x74\x4a\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x74\x4a\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x74\x4a\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x74\x4a\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x74\x4a\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x74\x4a\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x74\x4a\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x74\x4a\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x74\x4a\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x74\x4a\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x74\x4a\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x74\x4a\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x74\x4a\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x74\x4a\x42\x68";
} // end switch(key)
case 0xa:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x4d\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x74\x4d\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x74\x4d\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x74\x4d\x76";
case 62: // WORLD_1
return "\x04\x4b\x74\x4d\x77";
case 63: // WORLD_2
return "\x04\x4b\x74\x4d\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x74\x4d\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x74\x4d\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x74\x4d\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x74\x4d\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x74\x4d\x42\x30";
case 69: // AE
return "\x05\x4b\x74\x4d\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x74\x4d\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x74\x4d\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x74\x4d\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x74\x4d\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x74\x4d\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x74\x4d\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x74\x4d\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x74\x4d\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x74\x4d\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x74\x4d\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x74\x4d\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x74\x4d\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x74\x4d\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x74\x4d\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x74\x4d\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x74\x4d\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x74\x4d\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x74\x4d\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x74\x4d\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x74\x4d\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x74\x4d\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x74\x4d\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x74\x4d\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x74\x4d\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x74\x4d\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x74\x4d\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x74\x4d\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x74\x4d\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x74\x4d\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x74\x4d\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x74\x4d\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x74\x4d\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x74\x4d\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x74\x4d\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x74\x4d\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x74\x4d\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x74\x4d\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x74\x4d\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x74\x4d\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x74\x4d\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x74\x4d\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x74\x4d\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x74\x4d\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x74\x4d\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x74\x4d\x79";
case 115: // ENTER
return "\x04\x4b\x74\x4d\x7a";
case 116: // TAB
return "\x04\x4b\x74\x4d\x30";
case 117: // BACKSPACE
return "\x04\x4b\x74\x4d\x31";
case 118: // INSERT
return "\x04\x4b\x74\x4d\x32";
case 119: // DELETE
return "\x04\x4b\x74\x4d\x33";
case 120: // RIGHT
return "\x04\x4b\x74\x4d\x34";
case 121: // LEFT
return "\x04\x4b\x74\x4d\x35";
case 122: // DOWN
return "\x04\x4b\x74\x4d\x36";
case 123: // UP
return "\x04\x4b\x74\x4d\x37";
case 124: // PAGE_UP
return "\x04\x4b\x74\x4d\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x74\x4d\x39";
case 126: // HOME
return "\x04\x4b\x74\x4d\x2e";
case 127: // END
return "\x04\x4b\x74\x4d\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x74\x4d\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x74\x4d\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x74\x4d\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x74\x4d\x5e";
case 132: // PAUSE
return "\x04\x4b\x74\x4d\x21";
case 133: // F1
return "\x04\x4b\x74\x4d\x2f";
case 134: // F2
return "\x04\x4b\x74\x4d\x2a";
case 135: // F3
return "\x04\x4b\x74\x4d\x3f";
case 136: // F4
return "\x04\x4b\x74\x4d\x26";
case 137: // F5
return "\x04\x4b\x74\x4d\x3c";
case 138: // F6
return "\x04\x4b\x74\x4d\x3e";
case 139: // F7
return "\x04\x4b\x74\x4d\x28";
case 140: // F8
return "\x04\x4b\x74\x4d\x29";
case 141: // F9
return "\x04\x4b\x74\x4d\x5b";
case 142: // F10
return "\x04\x4b\x74\x4d\x5d";
case 143: // F11
return "\x04\x4b\x74\x4d\x7b";
case 144: // F12
return "\x04\x4b\x74\x4d\x7d";
case 145: // F13
return "\x04\x4b\x74\x4d\x40";
case 146: // F14
return "\x04\x4b\x74\x4d\x25";
case 147: // F15
return "\x04\x4b\x74\x4d\x24";
case 148: // F16
return "\x04\x4b\x74\x4d\x23";
case 149: // F17
return "\x05\x4b\x74\x4d\x42\x41";
case 150: // F18
return "\x05\x4b\x74\x4d\x42\x42";
case 151: // F19
return "\x05\x4b\x74\x4d\x42\x43";
case 152: // F20
return "\x05\x4b\x74\x4d\x42\x44";
case 153: // F21
return "\x05\x4b\x74\x4d\x42\x45";
case 154: // F22
return "\x05\x4b\x74\x4d\x42\x46";
case 155: // F23
return "\x05\x4b\x74\x4d\x42\x47";
case 156: // F24
return "\x05\x4b\x74\x4d\x42\x48";
case 157: // F25
return "\x05\x4b\x74\x4d\x42\x49";
case 158: // KP_0
return "\x05\x4b\x74\x4d\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x74\x4d\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x74\x4d\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x74\x4d\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x74\x4d\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x74\x4d\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x74\x4d\x42\x50";
case 165: // KP_7
return "\x05\x4b\x74\x4d\x42\x51";
case 166: // KP_8
return "\x05\x4b\x74\x4d\x42\x52";
case 167: // KP_9
return "\x05\x4b\x74\x4d\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x74\x4d\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x74\x4d\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x74\x4d\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x74\x4d\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x74\x4d\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x74\x4d\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x74\x4d\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x74\x4d\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x74\x4d\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x74\x4d\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x74\x4d\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x74\x4d\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x74\x4d\x42\x68";
} // end switch(key)
case 0xb:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x4e\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x74\x4e\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x74\x4e\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x74\x4e\x76";
case 62: // WORLD_1
return "\x04\x4b\x74\x4e\x77";
case 63: // WORLD_2
return "\x04\x4b\x74\x4e\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x74\x4e\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x74\x4e\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x74\x4e\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x74\x4e\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x74\x4e\x42\x30";
case 69: // AE
return "\x05\x4b\x74\x4e\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x74\x4e\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x74\x4e\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x74\x4e\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x74\x4e\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x74\x4e\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x74\x4e\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x74\x4e\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x74\x4e\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x74\x4e\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x74\x4e\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x74\x4e\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x74\x4e\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x74\x4e\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x74\x4e\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x74\x4e\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x74\x4e\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x74\x4e\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x74\x4e\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x74\x4e\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x74\x4e\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x74\x4e\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x74\x4e\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x74\x4e\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x74\x4e\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x74\x4e\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x74\x4e\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x74\x4e\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x74\x4e\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x74\x4e\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x74\x4e\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x74\x4e\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x74\x4e\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x74\x4e\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x74\x4e\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x74\x4e\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x74\x4e\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x74\x4e\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x74\x4e\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x74\x4e\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x74\x4e\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x74\x4e\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x74\x4e\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x74\x4e\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x74\x4e\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x74\x4e\x79";
case 115: // ENTER
return "\x04\x4b\x74\x4e\x7a";
case 116: // TAB
return "\x04\x4b\x74\x4e\x30";
case 117: // BACKSPACE
return "\x04\x4b\x74\x4e\x31";
case 118: // INSERT
return "\x04\x4b\x74\x4e\x32";
case 119: // DELETE
return "\x04\x4b\x74\x4e\x33";
case 120: // RIGHT
return "\x04\x4b\x74\x4e\x34";
case 121: // LEFT
return "\x04\x4b\x74\x4e\x35";
case 122: // DOWN
return "\x04\x4b\x74\x4e\x36";
case 123: // UP
return "\x04\x4b\x74\x4e\x37";
case 124: // PAGE_UP
return "\x04\x4b\x74\x4e\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x74\x4e\x39";
case 126: // HOME
return "\x04\x4b\x74\x4e\x2e";
case 127: // END
return "\x04\x4b\x74\x4e\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x74\x4e\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x74\x4e\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x74\x4e\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x74\x4e\x5e";
case 132: // PAUSE
return "\x04\x4b\x74\x4e\x21";
case 133: // F1
return "\x04\x4b\x74\x4e\x2f";
case 134: // F2
return "\x04\x4b\x74\x4e\x2a";
case 135: // F3
return "\x04\x4b\x74\x4e\x3f";
case 136: // F4
return "\x04\x4b\x74\x4e\x26";
case 137: // F5
return "\x04\x4b\x74\x4e\x3c";
case 138: // F6
return "\x04\x4b\x74\x4e\x3e";
case 139: // F7
return "\x04\x4b\x74\x4e\x28";
case 140: // F8
return "\x04\x4b\x74\x4e\x29";
case 141: // F9
return "\x04\x4b\x74\x4e\x5b";
case 142: // F10
return "\x04\x4b\x74\x4e\x5d";
case 143: // F11
return "\x04\x4b\x74\x4e\x7b";
case 144: // F12
return "\x04\x4b\x74\x4e\x7d";
case 145: // F13
return "\x04\x4b\x74\x4e\x40";
case 146: // F14
return "\x04\x4b\x74\x4e\x25";
case 147: // F15
return "\x04\x4b\x74\x4e\x24";
case 148: // F16
return "\x04\x4b\x74\x4e\x23";
case 149: // F17
return "\x05\x4b\x74\x4e\x42\x41";
case 150: // F18
return "\x05\x4b\x74\x4e\x42\x42";
case 151: // F19
return "\x05\x4b\x74\x4e\x42\x43";
case 152: // F20
return "\x05\x4b\x74\x4e\x42\x44";
case 153: // F21
return "\x05\x4b\x74\x4e\x42\x45";
case 154: // F22
return "\x05\x4b\x74\x4e\x42\x46";
case 155: // F23
return "\x05\x4b\x74\x4e\x42\x47";
case 156: // F24
return "\x05\x4b\x74\x4e\x42\x48";
case 157: // F25
return "\x05\x4b\x74\x4e\x42\x49";
case 158: // KP_0
return "\x05\x4b\x74\x4e\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x74\x4e\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x74\x4e\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x74\x4e\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x74\x4e\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x74\x4e\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x74\x4e\x42\x50";
case 165: // KP_7
return "\x05\x4b\x74\x4e\x42\x51";
case 166: // KP_8
return "\x05\x4b\x74\x4e\x42\x52";
case 167: // KP_9
return "\x05\x4b\x74\x4e\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x74\x4e\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x74\x4e\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x74\x4e\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x74\x4e\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x74\x4e\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x74\x4e\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x74\x4e\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x74\x4e\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x74\x4e\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x74\x4e\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x74\x4e\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x74\x4e\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x74\x4e\x42\x68";
} // end switch(key)
case 0xc:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x4b\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x74\x4b\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x74\x4b\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x74\x4b\x76";
case 62: // WORLD_1
return "\x04\x4b\x74\x4b\x77";
case 63: // WORLD_2
return "\x04\x4b\x74\x4b\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x74\x4b\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x74\x4b\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x74\x4b\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x74\x4b\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x74\x4b\x42\x30";
case 69: // AE
return "\x05\x4b\x74\x4b\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x74\x4b\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x74\x4b\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x74\x4b\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x74\x4b\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x74\x4b\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x74\x4b\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x74\x4b\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x74\x4b\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x74\x4b\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x74\x4b\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x74\x4b\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x74\x4b\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x74\x4b\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x74\x4b\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x74\x4b\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x74\x4b\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x74\x4b\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x74\x4b\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x74\x4b\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x74\x4b\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x74\x4b\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x74\x4b\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x74\x4b\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x74\x4b\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x74\x4b\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x74\x4b\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x74\x4b\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x74\x4b\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x74\x4b\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x74\x4b\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x74\x4b\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x74\x4b\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x74\x4b\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x74\x4b\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x74\x4b\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x74\x4b\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x74\x4b\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x74\x4b\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x74\x4b\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x74\x4b\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x74\x4b\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x74\x4b\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x74\x4b\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x74\x4b\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x74\x4b\x79";
case 115: // ENTER
return "\x04\x4b\x74\x4b\x7a";
case 116: // TAB
return "\x04\x4b\x74\x4b\x30";
case 117: // BACKSPACE
return "\x04\x4b\x74\x4b\x31";
case 118: // INSERT
return "\x04\x4b\x74\x4b\x32";
case 119: // DELETE
return "\x04\x4b\x74\x4b\x33";
case 120: // RIGHT
return "\x04\x4b\x74\x4b\x34";
case 121: // LEFT
return "\x04\x4b\x74\x4b\x35";
case 122: // DOWN
return "\x04\x4b\x74\x4b\x36";
case 123: // UP
return "\x04\x4b\x74\x4b\x37";
case 124: // PAGE_UP
return "\x04\x4b\x74\x4b\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x74\x4b\x39";
case 126: // HOME
return "\x04\x4b\x74\x4b\x2e";
case 127: // END
return "\x04\x4b\x74\x4b\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x74\x4b\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x74\x4b\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x74\x4b\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x74\x4b\x5e";
case 132: // PAUSE
return "\x04\x4b\x74\x4b\x21";
case 133: // F1
return "\x04\x4b\x74\x4b\x2f";
case 134: // F2
return "\x04\x4b\x74\x4b\x2a";
case 135: // F3
return "\x04\x4b\x74\x4b\x3f";
case 136: // F4
return "\x04\x4b\x74\x4b\x26";
case 137: // F5
return "\x04\x4b\x74\x4b\x3c";
case 138: // F6
return "\x04\x4b\x74\x4b\x3e";
case 139: // F7
return "\x04\x4b\x74\x4b\x28";
case 140: // F8
return "\x04\x4b\x74\x4b\x29";
case 141: // F9
return "\x04\x4b\x74\x4b\x5b";
case 142: // F10
return "\x04\x4b\x74\x4b\x5d";
case 143: // F11
return "\x04\x4b\x74\x4b\x7b";
case 144: // F12
return "\x04\x4b\x74\x4b\x7d";
case 145: // F13
return "\x04\x4b\x74\x4b\x40";
case 146: // F14
return "\x04\x4b\x74\x4b\x25";
case 147: // F15
return "\x04\x4b\x74\x4b\x24";
case 148: // F16
return "\x04\x4b\x74\x4b\x23";
case 149: // F17
return "\x05\x4b\x74\x4b\x42\x41";
case 150: // F18
return "\x05\x4b\x74\x4b\x42\x42";
case 151: // F19
return "\x05\x4b\x74\x4b\x42\x43";
case 152: // F20
return "\x05\x4b\x74\x4b\x42\x44";
case 153: // F21
return "\x05\x4b\x74\x4b\x42\x45";
case 154: // F22
return "\x05\x4b\x74\x4b\x42\x46";
case 155: // F23
return "\x05\x4b\x74\x4b\x42\x47";
case 156: // F24
return "\x05\x4b\x74\x4b\x42\x48";
case 157: // F25
return "\x05\x4b\x74\x4b\x42\x49";
case 158: // KP_0
return "\x05\x4b\x74\x4b\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x74\x4b\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x74\x4b\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x74\x4b\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x74\x4b\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x74\x4b\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x74\x4b\x42\x50";
case 165: // KP_7
return "\x05\x4b\x74\x4b\x42\x51";
case 166: // KP_8
return "\x05\x4b\x74\x4b\x42\x52";
case 167: // KP_9
return "\x05\x4b\x74\x4b\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x74\x4b\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x74\x4b\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x74\x4b\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x74\x4b\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x74\x4b\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x74\x4b\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x74\x4b\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x74\x4b\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x74\x4b\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x74\x4b\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x74\x4b\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x74\x4b\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x74\x4b\x42\x68";
} // end switch(key)
case 0xd:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x4c\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x74\x4c\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x74\x4c\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x74\x4c\x76";
case 62: // WORLD_1
return "\x04\x4b\x74\x4c\x77";
case 63: // WORLD_2
return "\x04\x4b\x74\x4c\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x74\x4c\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x74\x4c\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x74\x4c\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x74\x4c\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x74\x4c\x42\x30";
case 69: // AE
return "\x05\x4b\x74\x4c\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x74\x4c\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x74\x4c\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x74\x4c\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x74\x4c\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x74\x4c\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x74\x4c\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x74\x4c\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x74\x4c\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x74\x4c\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x74\x4c\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x74\x4c\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x74\x4c\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x74\x4c\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x74\x4c\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x74\x4c\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x74\x4c\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x74\x4c\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x74\x4c\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x74\x4c\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x74\x4c\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x74\x4c\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x74\x4c\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x74\x4c\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x74\x4c\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x74\x4c\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x74\x4c\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x74\x4c\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x74\x4c\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x74\x4c\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x74\x4c\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x74\x4c\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x74\x4c\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x74\x4c\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x74\x4c\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x74\x4c\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x74\x4c\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x74\x4c\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x74\x4c\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x74\x4c\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x74\x4c\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x74\x4c\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x74\x4c\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x74\x4c\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x74\x4c\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x74\x4c\x79";
case 115: // ENTER
return "\x04\x4b\x74\x4c\x7a";
case 116: // TAB
return "\x04\x4b\x74\x4c\x30";
case 117: // BACKSPACE
return "\x04\x4b\x74\x4c\x31";
case 118: // INSERT
return "\x04\x4b\x74\x4c\x32";
case 119: // DELETE
return "\x04\x4b\x74\x4c\x33";
case 120: // RIGHT
return "\x04\x4b\x74\x4c\x34";
case 121: // LEFT
return "\x04\x4b\x74\x4c\x35";
case 122: // DOWN
return "\x04\x4b\x74\x4c\x36";
case 123: // UP
return "\x04\x4b\x74\x4c\x37";
case 124: // PAGE_UP
return "\x04\x4b\x74\x4c\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x74\x4c\x39";
case 126: // HOME
return "\x04\x4b\x74\x4c\x2e";
case 127: // END
return "\x04\x4b\x74\x4c\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x74\x4c\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x74\x4c\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x74\x4c\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x74\x4c\x5e";
case 132: // PAUSE
return "\x04\x4b\x74\x4c\x21";
case 133: // F1
return "\x04\x4b\x74\x4c\x2f";
case 134: // F2
return "\x04\x4b\x74\x4c\x2a";
case 135: // F3
return "\x04\x4b\x74\x4c\x3f";
case 136: // F4
return "\x04\x4b\x74\x4c\x26";
case 137: // F5
return "\x04\x4b\x74\x4c\x3c";
case 138: // F6
return "\x04\x4b\x74\x4c\x3e";
case 139: // F7
return "\x04\x4b\x74\x4c\x28";
case 140: // F8
return "\x04\x4b\x74\x4c\x29";
case 141: // F9
return "\x04\x4b\x74\x4c\x5b";
case 142: // F10
return "\x04\x4b\x74\x4c\x5d";
case 143: // F11
return "\x04\x4b\x74\x4c\x7b";
case 144: // F12
return "\x04\x4b\x74\x4c\x7d";
case 145: // F13
return "\x04\x4b\x74\x4c\x40";
case 146: // F14
return "\x04\x4b\x74\x4c\x25";
case 147: // F15
return "\x04\x4b\x74\x4c\x24";
case 148: // F16
return "\x04\x4b\x74\x4c\x23";
case 149: // F17
return "\x05\x4b\x74\x4c\x42\x41";
case 150: // F18
return "\x05\x4b\x74\x4c\x42\x42";
case 151: // F19
return "\x05\x4b\x74\x4c\x42\x43";
case 152: // F20
return "\x05\x4b\x74\x4c\x42\x44";
case 153: // F21
return "\x05\x4b\x74\x4c\x42\x45";
case 154: // F22
return "\x05\x4b\x74\x4c\x42\x46";
case 155: // F23
return "\x05\x4b\x74\x4c\x42\x47";
case 156: // F24
return "\x05\x4b\x74\x4c\x42\x48";
case 157: // F25
return "\x05\x4b\x74\x4c\x42\x49";
case 158: // KP_0
return "\x05\x4b\x74\x4c\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x74\x4c\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x74\x4c\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x74\x4c\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x74\x4c\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x74\x4c\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x74\x4c\x42\x50";
case 165: // KP_7
return "\x05\x4b\x74\x4c\x42\x51";
case 166: // KP_8
return "\x05\x4b\x74\x4c\x42\x52";
case 167: // KP_9
return "\x05\x4b\x74\x4c\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x74\x4c\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x74\x4c\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x74\x4c\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x74\x4c\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x74\x4c\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x74\x4c\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x74\x4c\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x74\x4c\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x74\x4c\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x74\x4c\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x74\x4c\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x74\x4c\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x74\x4c\x42\x68";
} // end switch(key)
case 0xe:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x4f\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x74\x4f\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x74\x4f\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x74\x4f\x76";
case 62: // WORLD_1
return "\x04\x4b\x74\x4f\x77";
case 63: // WORLD_2
return "\x04\x4b\x74\x4f\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x74\x4f\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x74\x4f\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x74\x4f\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x74\x4f\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x74\x4f\x42\x30";
case 69: // AE
return "\x05\x4b\x74\x4f\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x74\x4f\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x74\x4f\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x74\x4f\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x74\x4f\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x74\x4f\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x74\x4f\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x74\x4f\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x74\x4f\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x74\x4f\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x74\x4f\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x74\x4f\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x74\x4f\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x74\x4f\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x74\x4f\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x74\x4f\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x74\x4f\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x74\x4f\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x74\x4f\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x74\x4f\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x74\x4f\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x74\x4f\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x74\x4f\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x74\x4f\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x74\x4f\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x74\x4f\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x74\x4f\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x74\x4f\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x74\x4f\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x74\x4f\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x74\x4f\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x74\x4f\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x74\x4f\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x74\x4f\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x74\x4f\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x74\x4f\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x74\x4f\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x74\x4f\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x74\x4f\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x74\x4f\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x74\x4f\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x74\x4f\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x74\x4f\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x74\x4f\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x74\x4f\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x74\x4f\x79";
case 115: // ENTER
return "\x04\x4b\x74\x4f\x7a";
case 116: // TAB
return "\x04\x4b\x74\x4f\x30";
case 117: // BACKSPACE
return "\x04\x4b\x74\x4f\x31";
case 118: // INSERT
return "\x04\x4b\x74\x4f\x32";
case 119: // DELETE
return "\x04\x4b\x74\x4f\x33";
case 120: // RIGHT
return "\x04\x4b\x74\x4f\x34";
case 121: // LEFT
return "\x04\x4b\x74\x4f\x35";
case 122: // DOWN
return "\x04\x4b\x74\x4f\x36";
case 123: // UP
return "\x04\x4b\x74\x4f\x37";
case 124: // PAGE_UP
return "\x04\x4b\x74\x4f\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x74\x4f\x39";
case 126: // HOME
return "\x04\x4b\x74\x4f\x2e";
case 127: // END
return "\x04\x4b\x74\x4f\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x74\x4f\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x74\x4f\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x74\x4f\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x74\x4f\x5e";
case 132: // PAUSE
return "\x04\x4b\x74\x4f\x21";
case 133: // F1
return "\x04\x4b\x74\x4f\x2f";
case 134: // F2
return "\x04\x4b\x74\x4f\x2a";
case 135: // F3
return "\x04\x4b\x74\x4f\x3f";
case 136: // F4
return "\x04\x4b\x74\x4f\x26";
case 137: // F5
return "\x04\x4b\x74\x4f\x3c";
case 138: // F6
return "\x04\x4b\x74\x4f\x3e";
case 139: // F7
return "\x04\x4b\x74\x4f\x28";
case 140: // F8
return "\x04\x4b\x74\x4f\x29";
case 141: // F9
return "\x04\x4b\x74\x4f\x5b";
case 142: // F10
return "\x04\x4b\x74\x4f\x5d";
case 143: // F11
return "\x04\x4b\x74\x4f\x7b";
case 144: // F12
return "\x04\x4b\x74\x4f\x7d";
case 145: // F13
return "\x04\x4b\x74\x4f\x40";
case 146: // F14
return "\x04\x4b\x74\x4f\x25";
case 147: // F15
return "\x04\x4b\x74\x4f\x24";
case 148: // F16
return "\x04\x4b\x74\x4f\x23";
case 149: // F17
return "\x05\x4b\x74\x4f\x42\x41";
case 150: // F18
return "\x05\x4b\x74\x4f\x42\x42";
case 151: // F19
return "\x05\x4b\x74\x4f\x42\x43";
case 152: // F20
return "\x05\x4b\x74\x4f\x42\x44";
case 153: // F21
return "\x05\x4b\x74\x4f\x42\x45";
case 154: // F22
return "\x05\x4b\x74\x4f\x42\x46";
case 155: // F23
return "\x05\x4b\x74\x4f\x42\x47";
case 156: // F24
return "\x05\x4b\x74\x4f\x42\x48";
case 157: // F25
return "\x05\x4b\x74\x4f\x42\x49";
case 158: // KP_0
return "\x05\x4b\x74\x4f\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x74\x4f\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x74\x4f\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x74\x4f\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x74\x4f\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x74\x4f\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x74\x4f\x42\x50";
case 165: // KP_7
return "\x05\x4b\x74\x4f\x42\x51";
case 166: // KP_8
return "\x05\x4b\x74\x4f\x42\x52";
case 167: // KP_9
return "\x05\x4b\x74\x4f\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x74\x4f\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x74\x4f\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x74\x4f\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x74\x4f\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x74\x4f\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x74\x4f\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x74\x4f\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x74\x4f\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x74\x4f\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x74\x4f\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x74\x4f\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x74\x4f\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x74\x4f\x42\x68";
} // end switch(key)
case 0xf:
switch(key & 0xff) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x50\x41";
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 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 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: // CIRCUMFLEX
return "\x05\x4b\x74\x50\x43\x4e";
case 60: // UNDERSCORE
return "\x05\x4b\x74\x50\x42\x6a";
case 61: // GRAVE_ACCENT
return "\x04\x4b\x74\x50\x76";
case 62: // WORLD_1
return "\x04\x4b\x74\x50\x77";
case 63: // WORLD_2
return "\x04\x4b\x74\x50\x78";
case 64: // PARAGRAPH
return "\x05\x4b\x74\x50\x42\x77";
case 65: // MASCULINE
return "\x05\x4b\x74\x50\x42\x78";
case 66: // A_GRAVE
return "\x05\x4b\x74\x50\x42\x79";
case 67: // A_DIAERESIS
return "\x05\x4b\x74\x50\x42\x7a";
case 68: // A_RING
return "\x05\x4b\x74\x50\x42\x30";
case 69: // AE
return "\x05\x4b\x74\x50\x42\x31";
case 70: // C_CEDILLA
return "\x05\x4b\x74\x50\x42\x32";
case 71: // E_GRAVE
return "\x05\x4b\x74\x50\x42\x33";
case 72: // E_ACUTE
return "\x05\x4b\x74\x50\x42\x34";
case 73: // I_GRAVE
return "\x05\x4b\x74\x50\x42\x35";
case 74: // N_TILDE
return "\x05\x4b\x74\x50\x42\x36";
case 75: // O_GRAVE
return "\x05\x4b\x74\x50\x42\x37";
case 76: // O_DIAERESIS
return "\x05\x4b\x74\x50\x42\x38";
case 77: // O_SLASH
return "\x05\x4b\x74\x50\x42\x39";
case 78: // U_GRAVE
return "\x05\x4b\x74\x50\x42\x2e";
case 79: // U_DIAERESIS
return "\x05\x4b\x74\x50\x42\x2d";
case 80: // S_SHARP
return "\x05\x4b\x74\x50\x42\x3a";
case 81: // CYRILLIC_A
return "\x05\x4b\x74\x50\x42\x2b";
case 82: // CYRILLIC_BE
return "\x05\x4b\x74\x50\x42\x3d";
case 83: // CYRILLIC_VE
return "\x05\x4b\x74\x50\x42\x5e";
case 84: // CYRILLIC_GHE
return "\x05\x4b\x74\x50\x42\x21";
case 85: // CYRILLIC_DE
return "\x05\x4b\x74\x50\x42\x2f";
case 86: // CYRILLIC_IE
return "\x05\x4b\x74\x50\x42\x2a";
case 87: // CYRILLIC_ZHE
return "\x05\x4b\x74\x50\x42\x3f";
case 88: // CYRILLIC_ZE
return "\x05\x4b\x74\x50\x42\x26";
case 89: // CYRILLIC_I
return "\x05\x4b\x74\x50\x42\x3c";
case 90: // CYRILLIC_SHORT_I
return "\x05\x4b\x74\x50\x42\x3e";
case 91: // CYRILLIC_KA
return "\x05\x4b\x74\x50\x42\x28";
case 92: // CYRILLIC_EL
return "\x05\x4b\x74\x50\x42\x29";
case 93: // CYRILLIC_EM
return "\x05\x4b\x74\x50\x42\x5b";
case 94: // CYRILLIC_EN
return "\x05\x4b\x74\x50\x42\x5d";
case 95: // CYRILLIC_O
return "\x05\x4b\x74\x50\x42\x7b";
case 96: // CYRILLIC_PE
return "\x05\x4b\x74\x50\x42\x7d";
case 97: // CYRILLIC_ER
return "\x05\x4b\x74\x50\x42\x40";
case 98: // CYRILLIC_ES
return "\x05\x4b\x74\x50\x42\x25";
case 99: // CYRILLIC_TE
return "\x05\x4b\x74\x50\x42\x24";
case 100: // CYRILLIC_U
return "\x05\x4b\x74\x50\x42\x23";
case 101: // CYRILLIC_EF
return "\x05\x4b\x74\x50\x43\x41";
case 102: // CYRILLIC_HA
return "\x05\x4b\x74\x50\x43\x42";
case 103: // CYRILLIC_TSE
return "\x05\x4b\x74\x50\x43\x43";
case 104: // CYRILLIC_CHE
return "\x05\x4b\x74\x50\x43\x44";
case 105: // CYRILLIC_SHA
return "\x05\x4b\x74\x50\x43\x45";
case 106: // CYRILLIC_SHCHA
return "\x05\x4b\x74\x50\x43\x46";
case 107: // CYRILLIC_HARD_SIGN
return "\x05\x4b\x74\x50\x43\x47";
case 108: // CYRILLIC_YERU
return "\x05\x4b\x74\x50\x43\x48";
case 109: // CYRILLIC_SOFT_SIGN
return "\x05\x4b\x74\x50\x43\x49";
case 110: // CYRILLIC_E
return "\x05\x4b\x74\x50\x43\x4a";
case 111: // CYRILLIC_YU
return "\x05\x4b\x74\x50\x43\x4b";
case 112: // CYRILLIC_YA
return "\x05\x4b\x74\x50\x43\x4c";
case 113: // CYRILLIC_IO
return "\x05\x4b\x74\x50\x43\x4d";
case 114: // ESCAPE
return "\x04\x4b\x74\x50\x79";
case 115: // ENTER
return "\x04\x4b\x74\x50\x7a";
case 116: // TAB
return "\x04\x4b\x74\x50\x30";
case 117: // BACKSPACE
return "\x04\x4b\x74\x50\x31";
case 118: // INSERT
return "\x04\x4b\x74\x50\x32";
case 119: // DELETE
return "\x04\x4b\x74\x50\x33";
case 120: // RIGHT
return "\x04\x4b\x74\x50\x34";
case 121: // LEFT
return "\x04\x4b\x74\x50\x35";
case 122: // DOWN
return "\x04\x4b\x74\x50\x36";
case 123: // UP
return "\x04\x4b\x74\x50\x37";
case 124: // PAGE_UP
return "\x04\x4b\x74\x50\x38";
case 125: // PAGE_DOWN
return "\x04\x4b\x74\x50\x39";
case 126: // HOME
return "\x04\x4b\x74\x50\x2e";
case 127: // END
return "\x04\x4b\x74\x50\x2d";
case 128: // CAPS_LOCK
return "\x04\x4b\x74\x50\x3a";
case 129: // SCROLL_LOCK
return "\x04\x4b\x74\x50\x2b";
case 130: // NUM_LOCK
return "\x04\x4b\x74\x50\x3d";
case 131: // PRINT_SCREEN
return "\x04\x4b\x74\x50\x5e";
case 132: // PAUSE
return "\x04\x4b\x74\x50\x21";
case 133: // F1
return "\x04\x4b\x74\x50\x2f";
case 134: // F2
return "\x04\x4b\x74\x50\x2a";
case 135: // F3
return "\x04\x4b\x74\x50\x3f";
case 136: // F4
return "\x04\x4b\x74\x50\x26";
case 137: // F5
return "\x04\x4b\x74\x50\x3c";
case 138: // F6
return "\x04\x4b\x74\x50\x3e";
case 139: // F7
return "\x04\x4b\x74\x50\x28";
case 140: // F8
return "\x04\x4b\x74\x50\x29";
case 141: // F9
return "\x04\x4b\x74\x50\x5b";
case 142: // F10
return "\x04\x4b\x74\x50\x5d";
case 143: // F11
return "\x04\x4b\x74\x50\x7b";
case 144: // F12
return "\x04\x4b\x74\x50\x7d";
case 145: // F13
return "\x04\x4b\x74\x50\x40";
case 146: // F14
return "\x04\x4b\x74\x50\x25";
case 147: // F15
return "\x04\x4b\x74\x50\x24";
case 148: // F16
return "\x04\x4b\x74\x50\x23";
case 149: // F17
return "\x05\x4b\x74\x50\x42\x41";
case 150: // F18
return "\x05\x4b\x74\x50\x42\x42";
case 151: // F19
return "\x05\x4b\x74\x50\x42\x43";
case 152: // F20
return "\x05\x4b\x74\x50\x42\x44";
case 153: // F21
return "\x05\x4b\x74\x50\x42\x45";
case 154: // F22
return "\x05\x4b\x74\x50\x42\x46";
case 155: // F23
return "\x05\x4b\x74\x50\x42\x47";
case 156: // F24
return "\x05\x4b\x74\x50\x42\x48";
case 157: // F25
return "\x05\x4b\x74\x50\x42\x49";
case 158: // KP_0
return "\x05\x4b\x74\x50\x42\x4a";
case 159: // KP_1
return "\x05\x4b\x74\x50\x42\x4b";
case 160: // KP_2
return "\x05\x4b\x74\x50\x42\x4c";
case 161: // KP_3
return "\x05\x4b\x74\x50\x42\x4d";
case 162: // KP_4
return "\x05\x4b\x74\x50\x42\x4e";
case 163: // KP_5
return "\x05\x4b\x74\x50\x42\x4f";
case 164: // KP_6
return "\x05\x4b\x74\x50\x42\x50";
case 165: // KP_7
return "\x05\x4b\x74\x50\x42\x51";
case 166: // KP_8
return "\x05\x4b\x74\x50\x42\x52";
case 167: // KP_9
return "\x05\x4b\x74\x50\x42\x53";
case 168: // KP_DECIMAL
return "\x05\x4b\x74\x50\x42\x54";
case 169: // KP_DIVIDE
return "\x05\x4b\x74\x50\x42\x55";
case 170: // KP_MULTIPLY
return "\x05\x4b\x74\x50\x42\x56";
case 171: // KP_SUBTRACT
return "\x05\x4b\x74\x50\x42\x57";
case 172: // KP_ADD
return "\x05\x4b\x74\x50\x42\x58";
case 173: // KP_ENTER
return "\x05\x4b\x74\x50\x42\x59";
case 174: // KP_EQUAL
return "\x05\x4b\x74\x50\x42\x5a";
case 176: // LEFT_CONTROL
return "\x05\x4b\x74\x50\x42\x62";
case 177: // LEFT_ALT
return "\x05\x4b\x74\x50\x42\x63";
case 178: // LEFT_SUPER
return "\x05\x4b\x74\x50\x42\x64";
case 180: // RIGHT_CONTROL
return "\x05\x4b\x74\x50\x42\x66";
case 181: // RIGHT_ALT
return "\x05\x4b\x74\x50\x42\x67";
case 182: // RIGHT_SUPER
return "\x05\x4b\x74\x50\x42\x68";
} // end switch(key)
} // end switch(mods)
break;
} // end switch(action) in mode EXTENDED
break;
}
return NULL;
}