kitty/kitty/keys.h

17826 lines
789 KiB
C
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 */
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
1, /* APOSTROPHE */
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
2, /* COMMA */
3, /* MINUS */
4, /* PERIOD */
5, /* SLASH */
6, /* 0 */
7, /* 1 */
8, /* 2 */
9, /* 3 */
10, /* 4 */
11, /* 5 */
12, /* 6 */
13, /* 7 */
14, /* 8 */
15, /* 9 */
UINT8_MAX,
16, /* SEMICOLON */
UINT8_MAX,
17, /* EQUAL */
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
18, /* A */
19, /* B */
20, /* C */
21, /* D */
22, /* E */
23, /* F */
24, /* G */
25, /* H */
26, /* I */
27, /* J */
28, /* K */
29, /* L */
30, /* M */
31, /* N */
32, /* O */
33, /* P */
34, /* Q */
35, /* R */
36, /* S */
37, /* T */
38, /* U */
39, /* V */
40, /* W */
41, /* X */
42, /* Y */
43, /* Z */
44, /* LEFT_BRACKET */
45, /* BACKSLASH */
46, /* RIGHT_BRACKET */
UINT8_MAX,
UINT8_MAX,
47, /* GRAVE_ACCENT */
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
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,
48, /* WORLD_1 */
49, /* WORLD_2 */
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,
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,
50, /* ESCAPE */
51, /* ENTER */
52, /* TAB */
53, /* BACKSPACE */
54, /* INSERT */
55, /* DELETE */
56, /* RIGHT */
57, /* LEFT */
58, /* DOWN */
59, /* UP */
60, /* PAGE_UP */
61, /* PAGE_DOWN */
62, /* HOME */
63, /* END */
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
64, /* CAPS_LOCK */
65, /* SCROLL_LOCK */
66, /* NUM_LOCK */
67, /* PRINT_SCREEN */
68, /* PAUSE */
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
69, /* F1 */
70, /* F2 */
71, /* F3 */
72, /* F4 */
73, /* F5 */
74, /* F6 */
75, /* F7 */
76, /* F8 */
77, /* F9 */
78, /* F10 */
79, /* F11 */
80, /* F12 */
81, /* F13 */
82, /* F14 */
83, /* F15 */
84, /* F16 */
85, /* F17 */
86, /* F18 */
87, /* F19 */
88, /* F20 */
89, /* F21 */
90, /* F22 */
91, /* F23 */
92, /* F24 */
93, /* F25 */
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
94, /* KP_0 */
95, /* KP_1 */
96, /* KP_2 */
97, /* KP_3 */
98, /* KP_4 */
99, /* KP_5 */
100, /* KP_6 */
101, /* KP_7 */
102, /* KP_8 */
103, /* KP_9 */
104, /* KP_DECIMAL */
105, /* KP_DIVIDE */
106, /* KP_MULTIPLY */
107, /* KP_SUBTRACT */
108, /* KP_ADD */
109, /* KP_ENTER */
110, /* KP_EQUAL */
UINT8_MAX,
UINT8_MAX,
UINT8_MAX,
111, /* LEFT_SHIFT */
112, /* LEFT_CONTROL */
113, /* LEFT_ALT */
114, /* LEFT_SUPER */
115, /* RIGHT_SHIFT */
116, /* RIGHT_CONTROL */
117, /* RIGHT_ALT */
118, /* RIGHT_SUPER */
119, /* MENU */
};
static inline const char* key_name(int key) { switch(key) {
case 32: return "SPACE";
case 39: return "APOSTROPHE";
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 59: return "SEMICOLON";
case 61: return "EQUAL";
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 96: return "GRAVE_ACCENT";
case 161: return "WORLD_1";
case 162: return "WORLD_2";
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 & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x5b\x43";
case 57: // LEFT
return "\x03\x1b\x5b\x44";
case 58: // DOWN
return "\x03\x1b\x5b\x42";
case 59: // UP
return "\x03\x1b\x5b\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x5b\x48";
case 63: // END
return "\x03\x1b\x5b\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x1:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x03\x1b\x5b\x5a";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x32\x43";
case 57: // LEFT
return "\x06\x1b\x5b\x31\x3b\x32\x44";
case 58: // DOWN
return "\x06\x1b\x5b\x31\x3b\x32\x42";
case 59: // UP
return "\x06\x1b\x5b\x31\x3b\x32\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x06\x1b\x5b\x31\x3b\x32\x48";
case 63: // END
return "\x06\x1b\x5b\x31\x3b\x32\x46";
case 69: // F1
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 70: // F2
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 71: // F3
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 72: // F4
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 73: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 74: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 75: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 76: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 77: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 78: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 79: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 80: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x2:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x01\x00";
case 1: // APOSTROPHE
return "\x01\x27";
case 2: // COMMA
return "\x01\x2c";
case 3: // MINUS
return "\x01\x2d";
case 4: // PERIOD
return "\x01\x2e";
case 5: // SLASH
return "\x01\x1f";
case 6: // 0
return "\x01\x30";
case 7: // 1
return "\x01\x31";
case 8: // 2
return "\x01\x32";
case 9: // 3
return "\x01\x33";
case 10: // 4
return "\x01\x34";
case 11: // 5
return "\x01\x35";
case 12: // 6
return "\x01\x1e";
case 13: // 7
return "\x01\x37";
case 14: // 8
return "\x01\x38";
case 15: // 9
return "\x01\x39";
case 16: // SEMICOLON
return "\x01\x3b";
case 17: // EQUAL
return "\x01\x3d";
case 18: // A
return "\x01\x01";
case 19: // B
return "\x01\x02";
case 20: // C
return "\x01\x03";
case 21: // D
return "\x01\x04";
case 22: // E
return "\x01\x05";
case 23: // F
return "\x01\x06";
case 24: // G
return "\x01\x07";
case 25: // H
return "\x01\x08";
case 26: // I
return "\x01\x09";
case 27: // J
return "\x01\x0a";
case 28: // K
return "\x01\x0b";
case 29: // L
return "\x01\x0c";
case 30: // M
return "\x01\x0d";
case 31: // N
return "\x01\x0e";
case 32: // O
return "\x01\x0f";
case 33: // P
return "\x01\x10";
case 34: // Q
return "\x01\x11";
case 35: // R
return "\x01\x12";
case 36: // S
return "\x01\x13";
case 37: // T
return "\x01\x14";
case 38: // U
return "\x01\x15";
case 39: // V
return "\x01\x16";
case 40: // W
return "\x01\x17";
case 41: // X
return "\x01\x18";
case 42: // Y
return "\x01\x19";
case 43: // Z
return "\x01\x1a";
case 44: // LEFT_BRACKET
return "\x01\x1b";
case 45: // BACKSLASH
return "\x01\x1c";
case 46: // RIGHT_BRACKET
return "\x01\x1d";
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x08";
case 54: // INSERT
return "\x06\x1b\x5b\x32\x3b\x35\x7e";
case 55: // DELETE
return "\x06\x1b\x5b\x33\x3b\x35\x7e";
case 56: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x35\x43";
case 57: // LEFT
return "\x06\x1b\x5b\x31\x3b\x35\x44";
case 58: // DOWN
return "\x06\x1b\x5b\x31\x3b\x35\x42";
case 59: // UP
return "\x06\x1b\x5b\x31\x3b\x35\x41";
case 60: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x35\x7e";
case 61: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x35\x7e";
case 62: // HOME
return "\x06\x1b\x5b\x31\x3b\x35\x48";
case 63: // END
return "\x06\x1b\x5b\x31\x3b\x35\x46";
case 69: // F1
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 70: // F2
return "\x06\x1b\x5b\x31\x3b\x35\x51";
case 71: // F3
return "\x06\x1b\x5b\x31\x3b\x35\x52";
case 72: // F4
return "\x06\x1b\x5b\x31\x3b\x35\x53";
case 73: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x35\x7e";
case 74: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x35\x7e";
case 75: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x35\x7e";
case 76: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x35\x7e";
case 77: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x35\x7e";
case 78: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x35\x7e";
case 79: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x35\x7e";
case 80: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x35\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x3:
switch(key & 0x7f) { default: return NULL;
case 3: // MINUS
return "\x01\x1f";
case 5: // SLASH
return "\x01\x7f";
case 8: // 2
return "\x01\x00";
case 12: // 6
return "\x01\x1e";
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x5b\x43";
case 57: // LEFT
return "\x03\x1b\x5b\x44";
case 58: // DOWN
return "\x03\x1b\x5b\x42";
case 59: // UP
return "\x03\x1b\x5b\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x5b\x48";
case 63: // END
return "\x03\x1b\x5b\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x4:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x20";
case 1: // APOSTROPHE
return "\x02\x1b\x27";
case 2: // COMMA
return "\x02\x1b\x2c";
case 3: // MINUS
return "\x02\x1b\x2d";
case 4: // PERIOD
return "\x02\x1b\x2e";
case 5: // SLASH
return "\x02\x1b\x2f";
case 6: // 0
return "\x02\x1b\x30";
case 7: // 1
return "\x02\x1b\x31";
case 8: // 2
return "\x02\x1b\x32";
case 9: // 3
return "\x02\x1b\x33";
case 10: // 4
return "\x02\x1b\x34";
case 11: // 5
return "\x02\x1b\x35";
case 12: // 6
return "\x02\x1b\x36";
case 13: // 7
return "\x02\x1b\x37";
case 14: // 8
return "\x02\x1b\x38";
case 15: // 9
return "\x02\x1b\x39";
case 16: // SEMICOLON
return "\x02\x1b\x3b";
case 17: // EQUAL
return "\x02\x1b\x3d";
case 18: // A
return "\x02\x1b\x61";
case 19: // B
return "\x02\x1b\x62";
case 20: // C
return "\x02\x1b\x63";
case 21: // D
return "\x02\x1b\x64";
case 22: // E
return "\x02\x1b\x65";
case 23: // F
return "\x02\x1b\x66";
case 24: // G
return "\x02\x1b\x67";
case 25: // H
return "\x02\x1b\x68";
case 26: // I
return "\x02\x1b\x69";
case 27: // J
return "\x02\x1b\x6a";
case 28: // K
return "\x02\x1b\x6b";
case 29: // L
return "\x02\x1b\x6c";
case 30: // M
return "\x02\x1b\x6d";
case 31: // N
return "\x02\x1b\x6e";
case 32: // O
return "\x02\x1b\x6f";
case 33: // P
return "\x02\x1b\x70";
case 34: // Q
return "\x02\x1b\x71";
case 35: // R
return "\x02\x1b\x72";
case 36: // S
return "\x02\x1b\x73";
case 37: // T
return "\x02\x1b\x74";
case 38: // U
return "\x02\x1b\x75";
case 39: // V
return "\x02\x1b\x76";
case 40: // W
return "\x02\x1b\x77";
case 41: // X
return "\x02\x1b\x78";
case 42: // Y
return "\x02\x1b\x79";
case 43: // Z
return "\x02\x1b\x7a";
case 44: // LEFT_BRACKET
return "\x02\x1b\x5b";
case 45: // BACKSLASH
return "\x02\x1b\x5c";
case 46: // RIGHT_BRACKET
return "\x02\x1b\x5d";
case 47: // GRAVE_ACCENT
return "\x02\x1b\x60";
case 50: // ESCAPE
return "\x02\x1b\x1b";
case 51: // ENTER
return "\x02\x1b\x0d";
case 52: // TAB
return "\x02\x1b\x09";
case 53: // BACKSPACE
return "\x02\x1b\x7f";
case 54: // INSERT
return "\x06\x1b\x5b\x32\x3b\x33\x7e";
case 55: // DELETE
return "\x06\x1b\x5b\x33\x3b\x33\x7e";
case 56: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x33\x43";
case 57: // LEFT
return "\x06\x1b\x5b\x31\x3b\x33\x44";
case 58: // DOWN
return "\x06\x1b\x5b\x31\x3b\x33\x42";
case 59: // UP
return "\x06\x1b\x5b\x31\x3b\x33\x41";
case 60: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x33\x7e";
case 61: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x33\x7e";
case 62: // HOME
return "\x06\x1b\x5b\x31\x3b\x33\x48";
case 63: // END
return "\x06\x1b\x5b\x31\x3b\x33\x46";
case 69: // F1
return "\x06\x1b\x5b\x31\x3b\x33\x50";
case 70: // F2
return "\x06\x1b\x5b\x31\x3b\x33\x51";
case 71: // F3
return "\x06\x1b\x5b\x31\x3b\x33\x52";
case 72: // F4
return "\x06\x1b\x5b\x31\x3b\x33\x53";
case 73: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x33\x7e";
case 74: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x33\x7e";
case 75: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x33\x7e";
case 76: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x33\x7e";
case 77: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x33\x7e";
case 78: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x33\x7e";
case 79: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x33\x7e";
case 80: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x33\x7e";
} // end switch(key)
case 0x5:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x20";
case 1: // APOSTROPHE
return "\x02\x1b\x22";
case 2: // COMMA
return "\x02\x1b\x3c";
case 3: // MINUS
return "\x02\x1b\x5f";
case 4: // PERIOD
return "\x02\x1b\x3e";
case 5: // SLASH
return "\x02\x1b\x3f";
case 6: // 0
return "\x02\x1b\x29";
case 7: // 1
return "\x02\x1b\x21";
case 8: // 2
return "\x02\x1b\x40";
case 9: // 3
return "\x02\x1b\x23";
case 10: // 4
return "\x02\x1b\x24";
case 11: // 5
return "\x02\x1b\x25";
case 12: // 6
return "\x02\x1b\x5e";
case 13: // 7
return "\x02\x1b\x26";
case 14: // 8
return "\x02\x1b\x2a";
case 15: // 9
return "\x02\x1b\x28";
case 16: // SEMICOLON
return "\x02\x1b\x3a";
case 17: // EQUAL
return "\x02\x1b\x2b";
case 18: // A
return "\x02\x1b\x41";
case 19: // B
return "\x02\x1b\x42";
case 20: // C
return "\x02\x1b\x43";
case 21: // D
return "\x02\x1b\x44";
case 22: // E
return "\x02\x1b\x45";
case 23: // F
return "\x02\x1b\x46";
case 24: // G
return "\x02\x1b\x47";
case 25: // H
return "\x02\x1b\x48";
case 26: // I
return "\x02\x1b\x49";
case 27: // J
return "\x02\x1b\x4a";
case 28: // K
return "\x02\x1b\x4b";
case 29: // L
return "\x02\x1b\x4c";
case 30: // M
return "\x02\x1b\x4d";
case 31: // N
return "\x02\x1b\x4e";
case 32: // O
return "\x02\x1b\x4f";
case 33: // P
return "\x02\x1b\x50";
case 34: // Q
return "\x02\x1b\x51";
case 35: // R
return "\x02\x1b\x52";
case 36: // S
return "\x02\x1b\x53";
case 37: // T
return "\x02\x1b\x54";
case 38: // U
return "\x02\x1b\x55";
case 39: // V
return "\x02\x1b\x56";
case 40: // W
return "\x02\x1b\x57";
case 41: // X
return "\x02\x1b\x58";
case 42: // Y
return "\x02\x1b\x59";
case 43: // Z
return "\x02\x1b\x5a";
case 44: // LEFT_BRACKET
return "\x02\x1b\x7b";
case 45: // BACKSLASH
return "\x02\x1b\x7c";
case 46: // RIGHT_BRACKET
return "\x02\x1b\x7d";
case 47: // GRAVE_ACCENT
return "\x02\x1b\x7e";
case 50: // ESCAPE
return "\x02\x1b\x1b";
case 51: // ENTER
return "\x02\x1b\x0d";
case 52: // TAB
return "\x03\x1b\x5b\x5a";
case 53: // BACKSPACE
return "\x02\x1b\x7f";
case 54: // INSERT
return "\x06\x1b\x5b\x32\x3b\x34\x7e";
case 55: // DELETE
return "\x06\x1b\x5b\x33\x3b\x34\x7e";
case 56: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x34\x43";
case 57: // LEFT
return "\x06\x1b\x5b\x31\x3b\x34\x44";
case 58: // DOWN
return "\x06\x1b\x5b\x31\x3b\x34\x42";
case 59: // UP
return "\x06\x1b\x5b\x31\x3b\x34\x41";
case 60: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x34\x7e";
case 61: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x34\x7e";
case 62: // HOME
return "\x06\x1b\x5b\x31\x3b\x34\x48";
case 63: // END
return "\x06\x1b\x5b\x31\x3b\x34\x46";
case 69: // F1
return "\x06\x1b\x5b\x31\x3b\x34\x50";
case 70: // F2
return "\x06\x1b\x5b\x31\x3b\x34\x51";
case 71: // F3
return "\x06\x1b\x5b\x31\x3b\x34\x52";
case 72: // F4
return "\x06\x1b\x5b\x31\x3b\x34\x53";
case 73: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x34\x7e";
case 74: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x34\x7e";
case 75: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x34\x7e";
case 76: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x34\x7e";
case 77: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x34\x7e";
case 78: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x34\x7e";
case 79: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x34\x7e";
case 80: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x34\x7e";
} // end switch(key)
case 0x6:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x00";
case 18: // A
return "\x02\x1b\x01";
case 19: // B
return "\x02\x1b\x02";
case 20: // C
return "\x02\x1b\x03";
case 21: // D
return "\x02\x1b\x04";
case 22: // E
return "\x02\x1b\x05";
case 23: // F
return "\x02\x1b\x06";
case 24: // G
return "\x02\x1b\x07";
case 25: // H
return "\x02\x1b\x08";
case 26: // I
return "\x02\x1b\x09";
case 27: // J
return "\x02\x1b\x0a";
case 28: // K
return "\x02\x1b\x0b";
case 29: // L
return "\x02\x1b\x0c";
case 30: // M
return "\x02\x1b\x0d";
case 31: // N
return "\x02\x1b\x0e";
case 32: // O
return "\x02\x1b\x0f";
case 33: // P
return "\x02\x1b\x10";
case 34: // Q
return "\x02\x1b\x11";
case 35: // R
return "\x02\x1b\x12";
case 36: // S
return "\x02\x1b\x13";
case 37: // T
return "\x02\x1b\x14";
case 38: // U
return "\x02\x1b\x15";
case 39: // V
return "\x02\x1b\x16";
case 40: // W
return "\x02\x1b\x17";
case 41: // X
return "\x02\x1b\x18";
case 42: // Y
return "\x02\x1b\x19";
case 43: // Z
return "\x02\x1b\x1a";
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x06\x1b\x5b\x32\x3b\x37\x7e";
case 55: // DELETE
return "\x06\x1b\x5b\x33\x3b\x37\x7e";
case 56: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x37\x43";
case 57: // LEFT
return "\x06\x1b\x5b\x31\x3b\x37\x44";
case 58: // DOWN
return "\x06\x1b\x5b\x31\x3b\x37\x42";
case 59: // UP
return "\x06\x1b\x5b\x31\x3b\x37\x41";
case 60: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x37\x7e";
case 61: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x37\x7e";
case 62: // HOME
return "\x06\x1b\x5b\x31\x3b\x37\x48";
case 63: // END
return "\x06\x1b\x5b\x31\x3b\x37\x46";
case 69: // F1
return "\x06\x1b\x5b\x31\x3b\x37\x50";
case 70: // F2
return "\x06\x1b\x5b\x31\x3b\x37\x51";
case 71: // F3
return "\x06\x1b\x5b\x31\x3b\x37\x52";
case 72: // F4
return "\x06\x1b\x5b\x31\x3b\x37\x53";
case 73: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x37\x7e";
case 74: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x37\x7e";
case 75: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x37\x7e";
case 76: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x37\x7e";
case 77: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x37\x7e";
case 78: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x37\x7e";
case 79: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x37\x7e";
case 80: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x37\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x7:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x5b\x43";
case 57: // LEFT
return "\x03\x1b\x5b\x44";
case 58: // DOWN
return "\x03\x1b\x5b\x42";
case 59: // UP
return "\x03\x1b\x5b\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x5b\x48";
case 63: // END
return "\x03\x1b\x5b\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x8:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x5b\x43";
case 57: // LEFT
return "\x03\x1b\x5b\x44";
case 58: // DOWN
return "\x03\x1b\x5b\x42";
case 59: // UP
return "\x03\x1b\x5b\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x5b\x48";
case 63: // END
return "\x03\x1b\x5b\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x9:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x5b\x43";
case 57: // LEFT
return "\x03\x1b\x5b\x44";
case 58: // DOWN
return "\x03\x1b\x5b\x42";
case 59: // UP
return "\x03\x1b\x5b\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x5b\x48";
case 63: // END
return "\x03\x1b\x5b\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xa:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x5b\x43";
case 57: // LEFT
return "\x03\x1b\x5b\x44";
case 58: // DOWN
return "\x03\x1b\x5b\x42";
case 59: // UP
return "\x03\x1b\x5b\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x5b\x48";
case 63: // END
return "\x03\x1b\x5b\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xb:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x5b\x43";
case 57: // LEFT
return "\x03\x1b\x5b\x44";
case 58: // DOWN
return "\x03\x1b\x5b\x42";
case 59: // UP
return "\x03\x1b\x5b\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x5b\x48";
case 63: // END
return "\x03\x1b\x5b\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xc:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x5b\x43";
case 57: // LEFT
return "\x03\x1b\x5b\x44";
case 58: // DOWN
return "\x03\x1b\x5b\x42";
case 59: // UP
return "\x03\x1b\x5b\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x5b\x48";
case 63: // END
return "\x03\x1b\x5b\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xd:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x5b\x43";
case 57: // LEFT
return "\x03\x1b\x5b\x44";
case 58: // DOWN
return "\x03\x1b\x5b\x42";
case 59: // UP
return "\x03\x1b\x5b\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x5b\x48";
case 63: // END
return "\x03\x1b\x5b\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xe:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x5b\x43";
case 57: // LEFT
return "\x03\x1b\x5b\x44";
case 58: // DOWN
return "\x03\x1b\x5b\x42";
case 59: // UP
return "\x03\x1b\x5b\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x5b\x48";
case 63: // END
return "\x03\x1b\x5b\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xf:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x5b\x43";
case 57: // LEFT
return "\x03\x1b\x5b\x44";
case 58: // DOWN
return "\x03\x1b\x5b\x42";
case 59: // UP
return "\x03\x1b\x5b\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x5b\x48";
case 63: // END
return "\x03\x1b\x5b\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
} // end switch(mods)
break;
case 2: // REPEAT
switch (mods & 0xf) {
case 0x0:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x5b\x43";
case 57: // LEFT
return "\x03\x1b\x5b\x44";
case 58: // DOWN
return "\x03\x1b\x5b\x42";
case 59: // UP
return "\x03\x1b\x5b\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x5b\x48";
case 63: // END
return "\x03\x1b\x5b\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x1:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x03\x1b\x5b\x5a";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x32\x43";
case 57: // LEFT
return "\x06\x1b\x5b\x31\x3b\x32\x44";
case 58: // DOWN
return "\x06\x1b\x5b\x31\x3b\x32\x42";
case 59: // UP
return "\x06\x1b\x5b\x31\x3b\x32\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x06\x1b\x5b\x31\x3b\x32\x48";
case 63: // END
return "\x06\x1b\x5b\x31\x3b\x32\x46";
case 69: // F1
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 70: // F2
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 71: // F3
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 72: // F4
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 73: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 74: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 75: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 76: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 77: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 78: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 79: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 80: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x2:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x01\x00";
case 1: // APOSTROPHE
return "\x01\x27";
case 2: // COMMA
return "\x01\x2c";
case 3: // MINUS
return "\x01\x2d";
case 4: // PERIOD
return "\x01\x2e";
case 5: // SLASH
return "\x01\x1f";
case 6: // 0
return "\x01\x30";
case 7: // 1
return "\x01\x31";
case 8: // 2
return "\x01\x32";
case 9: // 3
return "\x01\x33";
case 10: // 4
return "\x01\x34";
case 11: // 5
return "\x01\x35";
case 12: // 6
return "\x01\x1e";
case 13: // 7
return "\x01\x37";
case 14: // 8
return "\x01\x38";
case 15: // 9
return "\x01\x39";
case 16: // SEMICOLON
return "\x01\x3b";
case 17: // EQUAL
return "\x01\x3d";
case 18: // A
return "\x01\x01";
case 19: // B
return "\x01\x02";
case 20: // C
return "\x01\x03";
case 21: // D
return "\x01\x04";
case 22: // E
return "\x01\x05";
case 23: // F
return "\x01\x06";
case 24: // G
return "\x01\x07";
case 25: // H
return "\x01\x08";
case 26: // I
return "\x01\x09";
case 27: // J
return "\x01\x0a";
case 28: // K
return "\x01\x0b";
case 29: // L
return "\x01\x0c";
case 30: // M
return "\x01\x0d";
case 31: // N
return "\x01\x0e";
case 32: // O
return "\x01\x0f";
case 33: // P
return "\x01\x10";
case 34: // Q
return "\x01\x11";
case 35: // R
return "\x01\x12";
case 36: // S
return "\x01\x13";
case 37: // T
return "\x01\x14";
case 38: // U
return "\x01\x15";
case 39: // V
return "\x01\x16";
case 40: // W
return "\x01\x17";
case 41: // X
return "\x01\x18";
case 42: // Y
return "\x01\x19";
case 43: // Z
return "\x01\x1a";
case 44: // LEFT_BRACKET
return "\x01\x1b";
case 45: // BACKSLASH
return "\x01\x1c";
case 46: // RIGHT_BRACKET
return "\x01\x1d";
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x08";
case 54: // INSERT
return "\x06\x1b\x5b\x32\x3b\x35\x7e";
case 55: // DELETE
return "\x06\x1b\x5b\x33\x3b\x35\x7e";
case 56: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x35\x43";
case 57: // LEFT
return "\x06\x1b\x5b\x31\x3b\x35\x44";
case 58: // DOWN
return "\x06\x1b\x5b\x31\x3b\x35\x42";
case 59: // UP
return "\x06\x1b\x5b\x31\x3b\x35\x41";
case 60: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x35\x7e";
case 61: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x35\x7e";
case 62: // HOME
return "\x06\x1b\x5b\x31\x3b\x35\x48";
case 63: // END
return "\x06\x1b\x5b\x31\x3b\x35\x46";
case 69: // F1
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 70: // F2
return "\x06\x1b\x5b\x31\x3b\x35\x51";
case 71: // F3
return "\x06\x1b\x5b\x31\x3b\x35\x52";
case 72: // F4
return "\x06\x1b\x5b\x31\x3b\x35\x53";
case 73: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x35\x7e";
case 74: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x35\x7e";
case 75: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x35\x7e";
case 76: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x35\x7e";
case 77: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x35\x7e";
case 78: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x35\x7e";
case 79: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x35\x7e";
case 80: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x35\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x3:
switch(key & 0x7f) { default: return NULL;
case 3: // MINUS
return "\x01\x1f";
case 5: // SLASH
return "\x01\x7f";
case 8: // 2
return "\x01\x00";
case 12: // 6
return "\x01\x1e";
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x5b\x43";
case 57: // LEFT
return "\x03\x1b\x5b\x44";
case 58: // DOWN
return "\x03\x1b\x5b\x42";
case 59: // UP
return "\x03\x1b\x5b\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x5b\x48";
case 63: // END
return "\x03\x1b\x5b\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x4:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x20";
case 1: // APOSTROPHE
return "\x02\x1b\x27";
case 2: // COMMA
return "\x02\x1b\x2c";
case 3: // MINUS
return "\x02\x1b\x2d";
case 4: // PERIOD
return "\x02\x1b\x2e";
case 5: // SLASH
return "\x02\x1b\x2f";
case 6: // 0
return "\x02\x1b\x30";
case 7: // 1
return "\x02\x1b\x31";
case 8: // 2
return "\x02\x1b\x32";
case 9: // 3
return "\x02\x1b\x33";
case 10: // 4
return "\x02\x1b\x34";
case 11: // 5
return "\x02\x1b\x35";
case 12: // 6
return "\x02\x1b\x36";
case 13: // 7
return "\x02\x1b\x37";
case 14: // 8
return "\x02\x1b\x38";
case 15: // 9
return "\x02\x1b\x39";
case 16: // SEMICOLON
return "\x02\x1b\x3b";
case 17: // EQUAL
return "\x02\x1b\x3d";
case 18: // A
return "\x02\x1b\x61";
case 19: // B
return "\x02\x1b\x62";
case 20: // C
return "\x02\x1b\x63";
case 21: // D
return "\x02\x1b\x64";
case 22: // E
return "\x02\x1b\x65";
case 23: // F
return "\x02\x1b\x66";
case 24: // G
return "\x02\x1b\x67";
case 25: // H
return "\x02\x1b\x68";
case 26: // I
return "\x02\x1b\x69";
case 27: // J
return "\x02\x1b\x6a";
case 28: // K
return "\x02\x1b\x6b";
case 29: // L
return "\x02\x1b\x6c";
case 30: // M
return "\x02\x1b\x6d";
case 31: // N
return "\x02\x1b\x6e";
case 32: // O
return "\x02\x1b\x6f";
case 33: // P
return "\x02\x1b\x70";
case 34: // Q
return "\x02\x1b\x71";
case 35: // R
return "\x02\x1b\x72";
case 36: // S
return "\x02\x1b\x73";
case 37: // T
return "\x02\x1b\x74";
case 38: // U
return "\x02\x1b\x75";
case 39: // V
return "\x02\x1b\x76";
case 40: // W
return "\x02\x1b\x77";
case 41: // X
return "\x02\x1b\x78";
case 42: // Y
return "\x02\x1b\x79";
case 43: // Z
return "\x02\x1b\x7a";
case 44: // LEFT_BRACKET
return "\x02\x1b\x5b";
case 45: // BACKSLASH
return "\x02\x1b\x5c";
case 46: // RIGHT_BRACKET
return "\x02\x1b\x5d";
case 47: // GRAVE_ACCENT
return "\x02\x1b\x60";
case 50: // ESCAPE
return "\x02\x1b\x1b";
case 51: // ENTER
return "\x02\x1b\x0d";
case 52: // TAB
return "\x02\x1b\x09";
case 53: // BACKSPACE
return "\x02\x1b\x7f";
case 54: // INSERT
return "\x06\x1b\x5b\x32\x3b\x33\x7e";
case 55: // DELETE
return "\x06\x1b\x5b\x33\x3b\x33\x7e";
case 56: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x33\x43";
case 57: // LEFT
return "\x06\x1b\x5b\x31\x3b\x33\x44";
case 58: // DOWN
return "\x06\x1b\x5b\x31\x3b\x33\x42";
case 59: // UP
return "\x06\x1b\x5b\x31\x3b\x33\x41";
case 60: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x33\x7e";
case 61: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x33\x7e";
case 62: // HOME
return "\x06\x1b\x5b\x31\x3b\x33\x48";
case 63: // END
return "\x06\x1b\x5b\x31\x3b\x33\x46";
case 69: // F1
return "\x06\x1b\x5b\x31\x3b\x33\x50";
case 70: // F2
return "\x06\x1b\x5b\x31\x3b\x33\x51";
case 71: // F3
return "\x06\x1b\x5b\x31\x3b\x33\x52";
case 72: // F4
return "\x06\x1b\x5b\x31\x3b\x33\x53";
case 73: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x33\x7e";
case 74: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x33\x7e";
case 75: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x33\x7e";
case 76: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x33\x7e";
case 77: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x33\x7e";
case 78: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x33\x7e";
case 79: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x33\x7e";
case 80: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x33\x7e";
} // end switch(key)
case 0x5:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x20";
case 1: // APOSTROPHE
return "\x02\x1b\x22";
case 2: // COMMA
return "\x02\x1b\x3c";
case 3: // MINUS
return "\x02\x1b\x5f";
case 4: // PERIOD
return "\x02\x1b\x3e";
case 5: // SLASH
return "\x02\x1b\x3f";
case 6: // 0
return "\x02\x1b\x29";
case 7: // 1
return "\x02\x1b\x21";
case 8: // 2
return "\x02\x1b\x40";
case 9: // 3
return "\x02\x1b\x23";
case 10: // 4
return "\x02\x1b\x24";
case 11: // 5
return "\x02\x1b\x25";
case 12: // 6
return "\x02\x1b\x5e";
case 13: // 7
return "\x02\x1b\x26";
case 14: // 8
return "\x02\x1b\x2a";
case 15: // 9
return "\x02\x1b\x28";
case 16: // SEMICOLON
return "\x02\x1b\x3a";
case 17: // EQUAL
return "\x02\x1b\x2b";
case 18: // A
return "\x02\x1b\x41";
case 19: // B
return "\x02\x1b\x42";
case 20: // C
return "\x02\x1b\x43";
case 21: // D
return "\x02\x1b\x44";
case 22: // E
return "\x02\x1b\x45";
case 23: // F
return "\x02\x1b\x46";
case 24: // G
return "\x02\x1b\x47";
case 25: // H
return "\x02\x1b\x48";
case 26: // I
return "\x02\x1b\x49";
case 27: // J
return "\x02\x1b\x4a";
case 28: // K
return "\x02\x1b\x4b";
case 29: // L
return "\x02\x1b\x4c";
case 30: // M
return "\x02\x1b\x4d";
case 31: // N
return "\x02\x1b\x4e";
case 32: // O
return "\x02\x1b\x4f";
case 33: // P
return "\x02\x1b\x50";
case 34: // Q
return "\x02\x1b\x51";
case 35: // R
return "\x02\x1b\x52";
case 36: // S
return "\x02\x1b\x53";
case 37: // T
return "\x02\x1b\x54";
case 38: // U
return "\x02\x1b\x55";
case 39: // V
return "\x02\x1b\x56";
case 40: // W
return "\x02\x1b\x57";
case 41: // X
return "\x02\x1b\x58";
case 42: // Y
return "\x02\x1b\x59";
case 43: // Z
return "\x02\x1b\x5a";
case 44: // LEFT_BRACKET
return "\x02\x1b\x7b";
case 45: // BACKSLASH
return "\x02\x1b\x7c";
case 46: // RIGHT_BRACKET
return "\x02\x1b\x7d";
case 47: // GRAVE_ACCENT
return "\x02\x1b\x7e";
case 50: // ESCAPE
return "\x02\x1b\x1b";
case 51: // ENTER
return "\x02\x1b\x0d";
case 52: // TAB
return "\x03\x1b\x5b\x5a";
case 53: // BACKSPACE
return "\x02\x1b\x7f";
case 54: // INSERT
return "\x06\x1b\x5b\x32\x3b\x34\x7e";
case 55: // DELETE
return "\x06\x1b\x5b\x33\x3b\x34\x7e";
case 56: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x34\x43";
case 57: // LEFT
return "\x06\x1b\x5b\x31\x3b\x34\x44";
case 58: // DOWN
return "\x06\x1b\x5b\x31\x3b\x34\x42";
case 59: // UP
return "\x06\x1b\x5b\x31\x3b\x34\x41";
case 60: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x34\x7e";
case 61: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x34\x7e";
case 62: // HOME
return "\x06\x1b\x5b\x31\x3b\x34\x48";
case 63: // END
return "\x06\x1b\x5b\x31\x3b\x34\x46";
case 69: // F1
return "\x06\x1b\x5b\x31\x3b\x34\x50";
case 70: // F2
return "\x06\x1b\x5b\x31\x3b\x34\x51";
case 71: // F3
return "\x06\x1b\x5b\x31\x3b\x34\x52";
case 72: // F4
return "\x06\x1b\x5b\x31\x3b\x34\x53";
case 73: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x34\x7e";
case 74: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x34\x7e";
case 75: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x34\x7e";
case 76: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x34\x7e";
case 77: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x34\x7e";
case 78: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x34\x7e";
case 79: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x34\x7e";
case 80: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x34\x7e";
} // end switch(key)
case 0x6:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x00";
case 18: // A
return "\x02\x1b\x01";
case 19: // B
return "\x02\x1b\x02";
case 20: // C
return "\x02\x1b\x03";
case 21: // D
return "\x02\x1b\x04";
case 22: // E
return "\x02\x1b\x05";
case 23: // F
return "\x02\x1b\x06";
case 24: // G
return "\x02\x1b\x07";
case 25: // H
return "\x02\x1b\x08";
case 26: // I
return "\x02\x1b\x09";
case 27: // J
return "\x02\x1b\x0a";
case 28: // K
return "\x02\x1b\x0b";
case 29: // L
return "\x02\x1b\x0c";
case 30: // M
return "\x02\x1b\x0d";
case 31: // N
return "\x02\x1b\x0e";
case 32: // O
return "\x02\x1b\x0f";
case 33: // P
return "\x02\x1b\x10";
case 34: // Q
return "\x02\x1b\x11";
case 35: // R
return "\x02\x1b\x12";
case 36: // S
return "\x02\x1b\x13";
case 37: // T
return "\x02\x1b\x14";
case 38: // U
return "\x02\x1b\x15";
case 39: // V
return "\x02\x1b\x16";
case 40: // W
return "\x02\x1b\x17";
case 41: // X
return "\x02\x1b\x18";
case 42: // Y
return "\x02\x1b\x19";
case 43: // Z
return "\x02\x1b\x1a";
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x06\x1b\x5b\x32\x3b\x37\x7e";
case 55: // DELETE
return "\x06\x1b\x5b\x33\x3b\x37\x7e";
case 56: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x37\x43";
case 57: // LEFT
return "\x06\x1b\x5b\x31\x3b\x37\x44";
case 58: // DOWN
return "\x06\x1b\x5b\x31\x3b\x37\x42";
case 59: // UP
return "\x06\x1b\x5b\x31\x3b\x37\x41";
case 60: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x37\x7e";
case 61: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x37\x7e";
case 62: // HOME
return "\x06\x1b\x5b\x31\x3b\x37\x48";
case 63: // END
return "\x06\x1b\x5b\x31\x3b\x37\x46";
case 69: // F1
return "\x06\x1b\x5b\x31\x3b\x37\x50";
case 70: // F2
return "\x06\x1b\x5b\x31\x3b\x37\x51";
case 71: // F3
return "\x06\x1b\x5b\x31\x3b\x37\x52";
case 72: // F4
return "\x06\x1b\x5b\x31\x3b\x37\x53";
case 73: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x37\x7e";
case 74: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x37\x7e";
case 75: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x37\x7e";
case 76: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x37\x7e";
case 77: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x37\x7e";
case 78: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x37\x7e";
case 79: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x37\x7e";
case 80: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x37\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x7:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x5b\x43";
case 57: // LEFT
return "\x03\x1b\x5b\x44";
case 58: // DOWN
return "\x03\x1b\x5b\x42";
case 59: // UP
return "\x03\x1b\x5b\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x5b\x48";
case 63: // END
return "\x03\x1b\x5b\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x8:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x5b\x43";
case 57: // LEFT
return "\x03\x1b\x5b\x44";
case 58: // DOWN
return "\x03\x1b\x5b\x42";
case 59: // UP
return "\x03\x1b\x5b\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x5b\x48";
case 63: // END
return "\x03\x1b\x5b\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x9:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x5b\x43";
case 57: // LEFT
return "\x03\x1b\x5b\x44";
case 58: // DOWN
return "\x03\x1b\x5b\x42";
case 59: // UP
return "\x03\x1b\x5b\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x5b\x48";
case 63: // END
return "\x03\x1b\x5b\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xa:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x5b\x43";
case 57: // LEFT
return "\x03\x1b\x5b\x44";
case 58: // DOWN
return "\x03\x1b\x5b\x42";
case 59: // UP
return "\x03\x1b\x5b\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x5b\x48";
case 63: // END
return "\x03\x1b\x5b\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xb:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x5b\x43";
case 57: // LEFT
return "\x03\x1b\x5b\x44";
case 58: // DOWN
return "\x03\x1b\x5b\x42";
case 59: // UP
return "\x03\x1b\x5b\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x5b\x48";
case 63: // END
return "\x03\x1b\x5b\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xc:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x5b\x43";
case 57: // LEFT
return "\x03\x1b\x5b\x44";
case 58: // DOWN
return "\x03\x1b\x5b\x42";
case 59: // UP
return "\x03\x1b\x5b\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x5b\x48";
case 63: // END
return "\x03\x1b\x5b\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xd:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x5b\x43";
case 57: // LEFT
return "\x03\x1b\x5b\x44";
case 58: // DOWN
return "\x03\x1b\x5b\x42";
case 59: // UP
return "\x03\x1b\x5b\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x5b\x48";
case 63: // END
return "\x03\x1b\x5b\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xe:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x5b\x43";
case 57: // LEFT
return "\x03\x1b\x5b\x44";
case 58: // DOWN
return "\x03\x1b\x5b\x42";
case 59: // UP
return "\x03\x1b\x5b\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x5b\x48";
case 63: // END
return "\x03\x1b\x5b\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xf:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x5b\x43";
case 57: // LEFT
return "\x03\x1b\x5b\x44";
case 58: // DOWN
return "\x03\x1b\x5b\x42";
case 59: // UP
return "\x03\x1b\x5b\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x5b\x48";
case 63: // END
return "\x03\x1b\x5b\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // 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 & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x4f\x43";
case 57: // LEFT
return "\x03\x1b\x4f\x44";
case 58: // DOWN
return "\x03\x1b\x4f\x42";
case 59: // UP
return "\x03\x1b\x4f\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x4f\x48";
case 63: // END
return "\x03\x1b\x4f\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x1:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x03\x1b\x5b\x5a";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x32\x43";
case 57: // LEFT
return "\x06\x1b\x5b\x31\x3b\x32\x44";
case 58: // DOWN
return "\x06\x1b\x5b\x31\x3b\x32\x42";
case 59: // UP
return "\x06\x1b\x5b\x31\x3b\x32\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x06\x1b\x5b\x31\x3b\x32\x48";
case 63: // END
return "\x06\x1b\x5b\x31\x3b\x32\x46";
case 69: // F1
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 70: // F2
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 71: // F3
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 72: // F4
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 73: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 74: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 75: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 76: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 77: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 78: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 79: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 80: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x2:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x01\x00";
case 1: // APOSTROPHE
return "\x01\x27";
case 2: // COMMA
return "\x01\x2c";
case 3: // MINUS
return "\x01\x2d";
case 4: // PERIOD
return "\x01\x2e";
case 5: // SLASH
return "\x01\x1f";
case 6: // 0
return "\x01\x30";
case 7: // 1
return "\x01\x31";
case 8: // 2
return "\x01\x32";
case 9: // 3
return "\x01\x33";
case 10: // 4
return "\x01\x34";
case 11: // 5
return "\x01\x35";
case 12: // 6
return "\x01\x1e";
case 13: // 7
return "\x01\x37";
case 14: // 8
return "\x01\x38";
case 15: // 9
return "\x01\x39";
case 16: // SEMICOLON
return "\x01\x3b";
case 17: // EQUAL
return "\x01\x3d";
case 18: // A
return "\x01\x01";
case 19: // B
return "\x01\x02";
case 20: // C
return "\x01\x03";
case 21: // D
return "\x01\x04";
case 22: // E
return "\x01\x05";
case 23: // F
return "\x01\x06";
case 24: // G
return "\x01\x07";
case 25: // H
return "\x01\x08";
case 26: // I
return "\x01\x09";
case 27: // J
return "\x01\x0a";
case 28: // K
return "\x01\x0b";
case 29: // L
return "\x01\x0c";
case 30: // M
return "\x01\x0d";
case 31: // N
return "\x01\x0e";
case 32: // O
return "\x01\x0f";
case 33: // P
return "\x01\x10";
case 34: // Q
return "\x01\x11";
case 35: // R
return "\x01\x12";
case 36: // S
return "\x01\x13";
case 37: // T
return "\x01\x14";
case 38: // U
return "\x01\x15";
case 39: // V
return "\x01\x16";
case 40: // W
return "\x01\x17";
case 41: // X
return "\x01\x18";
case 42: // Y
return "\x01\x19";
case 43: // Z
return "\x01\x1a";
case 44: // LEFT_BRACKET
return "\x01\x1b";
case 45: // BACKSLASH
return "\x01\x1c";
case 46: // RIGHT_BRACKET
return "\x01\x1d";
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x08";
case 54: // INSERT
return "\x06\x1b\x5b\x32\x3b\x35\x7e";
case 55: // DELETE
return "\x06\x1b\x5b\x33\x3b\x35\x7e";
case 56: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x35\x43";
case 57: // LEFT
return "\x06\x1b\x5b\x31\x3b\x35\x44";
case 58: // DOWN
return "\x06\x1b\x5b\x31\x3b\x35\x42";
case 59: // UP
return "\x06\x1b\x5b\x31\x3b\x35\x41";
case 60: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x35\x7e";
case 61: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x35\x7e";
case 62: // HOME
return "\x06\x1b\x5b\x31\x3b\x35\x48";
case 63: // END
return "\x06\x1b\x5b\x31\x3b\x35\x46";
case 69: // F1
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 70: // F2
return "\x06\x1b\x5b\x31\x3b\x35\x51";
case 71: // F3
return "\x06\x1b\x5b\x31\x3b\x35\x52";
case 72: // F4
return "\x06\x1b\x5b\x31\x3b\x35\x53";
case 73: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x35\x7e";
case 74: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x35\x7e";
case 75: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x35\x7e";
case 76: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x35\x7e";
case 77: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x35\x7e";
case 78: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x35\x7e";
case 79: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x35\x7e";
case 80: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x35\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x3:
switch(key & 0x7f) { default: return NULL;
case 3: // MINUS
return "\x01\x1f";
case 5: // SLASH
return "\x01\x7f";
case 8: // 2
return "\x01\x00";
case 12: // 6
return "\x01\x1e";
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x4f\x43";
case 57: // LEFT
return "\x03\x1b\x4f\x44";
case 58: // DOWN
return "\x03\x1b\x4f\x42";
case 59: // UP
return "\x03\x1b\x4f\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x4f\x48";
case 63: // END
return "\x03\x1b\x4f\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x4:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x20";
case 1: // APOSTROPHE
return "\x02\x1b\x27";
case 2: // COMMA
return "\x02\x1b\x2c";
case 3: // MINUS
return "\x02\x1b\x2d";
case 4: // PERIOD
return "\x02\x1b\x2e";
case 5: // SLASH
return "\x02\x1b\x2f";
case 6: // 0
return "\x02\x1b\x30";
case 7: // 1
return "\x02\x1b\x31";
case 8: // 2
return "\x02\x1b\x32";
case 9: // 3
return "\x02\x1b\x33";
case 10: // 4
return "\x02\x1b\x34";
case 11: // 5
return "\x02\x1b\x35";
case 12: // 6
return "\x02\x1b\x36";
case 13: // 7
return "\x02\x1b\x37";
case 14: // 8
return "\x02\x1b\x38";
case 15: // 9
return "\x02\x1b\x39";
case 16: // SEMICOLON
return "\x02\x1b\x3b";
case 17: // EQUAL
return "\x02\x1b\x3d";
case 18: // A
return "\x02\x1b\x61";
case 19: // B
return "\x02\x1b\x62";
case 20: // C
return "\x02\x1b\x63";
case 21: // D
return "\x02\x1b\x64";
case 22: // E
return "\x02\x1b\x65";
case 23: // F
return "\x02\x1b\x66";
case 24: // G
return "\x02\x1b\x67";
case 25: // H
return "\x02\x1b\x68";
case 26: // I
return "\x02\x1b\x69";
case 27: // J
return "\x02\x1b\x6a";
case 28: // K
return "\x02\x1b\x6b";
case 29: // L
return "\x02\x1b\x6c";
case 30: // M
return "\x02\x1b\x6d";
case 31: // N
return "\x02\x1b\x6e";
case 32: // O
return "\x02\x1b\x6f";
case 33: // P
return "\x02\x1b\x70";
case 34: // Q
return "\x02\x1b\x71";
case 35: // R
return "\x02\x1b\x72";
case 36: // S
return "\x02\x1b\x73";
case 37: // T
return "\x02\x1b\x74";
case 38: // U
return "\x02\x1b\x75";
case 39: // V
return "\x02\x1b\x76";
case 40: // W
return "\x02\x1b\x77";
case 41: // X
return "\x02\x1b\x78";
case 42: // Y
return "\x02\x1b\x79";
case 43: // Z
return "\x02\x1b\x7a";
case 44: // LEFT_BRACKET
return "\x02\x1b\x5b";
case 45: // BACKSLASH
return "\x02\x1b\x5c";
case 46: // RIGHT_BRACKET
return "\x02\x1b\x5d";
case 47: // GRAVE_ACCENT
return "\x02\x1b\x60";
case 50: // ESCAPE
return "\x02\x1b\x1b";
case 51: // ENTER
return "\x02\x1b\x0d";
case 52: // TAB
return "\x02\x1b\x09";
case 53: // BACKSPACE
return "\x02\x1b\x7f";
case 54: // INSERT
return "\x06\x1b\x5b\x32\x3b\x33\x7e";
case 55: // DELETE
return "\x06\x1b\x5b\x33\x3b\x33\x7e";
case 56: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x33\x43";
case 57: // LEFT
return "\x06\x1b\x5b\x31\x3b\x33\x44";
case 58: // DOWN
return "\x06\x1b\x5b\x31\x3b\x33\x42";
case 59: // UP
return "\x06\x1b\x5b\x31\x3b\x33\x41";
case 60: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x33\x7e";
case 61: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x33\x7e";
case 62: // HOME
return "\x06\x1b\x5b\x31\x3b\x33\x48";
case 63: // END
return "\x06\x1b\x5b\x31\x3b\x33\x46";
case 69: // F1
return "\x06\x1b\x5b\x31\x3b\x33\x50";
case 70: // F2
return "\x06\x1b\x5b\x31\x3b\x33\x51";
case 71: // F3
return "\x06\x1b\x5b\x31\x3b\x33\x52";
case 72: // F4
return "\x06\x1b\x5b\x31\x3b\x33\x53";
case 73: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x33\x7e";
case 74: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x33\x7e";
case 75: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x33\x7e";
case 76: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x33\x7e";
case 77: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x33\x7e";
case 78: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x33\x7e";
case 79: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x33\x7e";
case 80: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x33\x7e";
} // end switch(key)
case 0x5:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x20";
case 1: // APOSTROPHE
return "\x02\x1b\x22";
case 2: // COMMA
return "\x02\x1b\x3c";
case 3: // MINUS
return "\x02\x1b\x5f";
case 4: // PERIOD
return "\x02\x1b\x3e";
case 5: // SLASH
return "\x02\x1b\x3f";
case 6: // 0
return "\x02\x1b\x29";
case 7: // 1
return "\x02\x1b\x21";
case 8: // 2
return "\x02\x1b\x40";
case 9: // 3
return "\x02\x1b\x23";
case 10: // 4
return "\x02\x1b\x24";
case 11: // 5
return "\x02\x1b\x25";
case 12: // 6
return "\x02\x1b\x5e";
case 13: // 7
return "\x02\x1b\x26";
case 14: // 8
return "\x02\x1b\x2a";
case 15: // 9
return "\x02\x1b\x28";
case 16: // SEMICOLON
return "\x02\x1b\x3a";
case 17: // EQUAL
return "\x02\x1b\x2b";
case 18: // A
return "\x02\x1b\x41";
case 19: // B
return "\x02\x1b\x42";
case 20: // C
return "\x02\x1b\x43";
case 21: // D
return "\x02\x1b\x44";
case 22: // E
return "\x02\x1b\x45";
case 23: // F
return "\x02\x1b\x46";
case 24: // G
return "\x02\x1b\x47";
case 25: // H
return "\x02\x1b\x48";
case 26: // I
return "\x02\x1b\x49";
case 27: // J
return "\x02\x1b\x4a";
case 28: // K
return "\x02\x1b\x4b";
case 29: // L
return "\x02\x1b\x4c";
case 30: // M
return "\x02\x1b\x4d";
case 31: // N
return "\x02\x1b\x4e";
case 32: // O
return "\x02\x1b\x4f";
case 33: // P
return "\x02\x1b\x50";
case 34: // Q
return "\x02\x1b\x51";
case 35: // R
return "\x02\x1b\x52";
case 36: // S
return "\x02\x1b\x53";
case 37: // T
return "\x02\x1b\x54";
case 38: // U
return "\x02\x1b\x55";
case 39: // V
return "\x02\x1b\x56";
case 40: // W
return "\x02\x1b\x57";
case 41: // X
return "\x02\x1b\x58";
case 42: // Y
return "\x02\x1b\x59";
case 43: // Z
return "\x02\x1b\x5a";
case 44: // LEFT_BRACKET
return "\x02\x1b\x7b";
case 45: // BACKSLASH
return "\x02\x1b\x7c";
case 46: // RIGHT_BRACKET
return "\x02\x1b\x7d";
case 47: // GRAVE_ACCENT
return "\x02\x1b\x7e";
case 50: // ESCAPE
return "\x02\x1b\x1b";
case 51: // ENTER
return "\x02\x1b\x0d";
case 52: // TAB
return "\x03\x1b\x5b\x5a";
case 53: // BACKSPACE
return "\x02\x1b\x7f";
case 54: // INSERT
return "\x06\x1b\x5b\x32\x3b\x34\x7e";
case 55: // DELETE
return "\x06\x1b\x5b\x33\x3b\x34\x7e";
case 56: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x34\x43";
case 57: // LEFT
return "\x06\x1b\x5b\x31\x3b\x34\x44";
case 58: // DOWN
return "\x06\x1b\x5b\x31\x3b\x34\x42";
case 59: // UP
return "\x06\x1b\x5b\x31\x3b\x34\x41";
case 60: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x34\x7e";
case 61: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x34\x7e";
case 62: // HOME
return "\x06\x1b\x5b\x31\x3b\x34\x48";
case 63: // END
return "\x06\x1b\x5b\x31\x3b\x34\x46";
case 69: // F1
return "\x06\x1b\x5b\x31\x3b\x34\x50";
case 70: // F2
return "\x06\x1b\x5b\x31\x3b\x34\x51";
case 71: // F3
return "\x06\x1b\x5b\x31\x3b\x34\x52";
case 72: // F4
return "\x06\x1b\x5b\x31\x3b\x34\x53";
case 73: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x34\x7e";
case 74: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x34\x7e";
case 75: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x34\x7e";
case 76: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x34\x7e";
case 77: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x34\x7e";
case 78: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x34\x7e";
case 79: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x34\x7e";
case 80: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x34\x7e";
} // end switch(key)
case 0x6:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x00";
case 18: // A
return "\x02\x1b\x01";
case 19: // B
return "\x02\x1b\x02";
case 20: // C
return "\x02\x1b\x03";
case 21: // D
return "\x02\x1b\x04";
case 22: // E
return "\x02\x1b\x05";
case 23: // F
return "\x02\x1b\x06";
case 24: // G
return "\x02\x1b\x07";
case 25: // H
return "\x02\x1b\x08";
case 26: // I
return "\x02\x1b\x09";
case 27: // J
return "\x02\x1b\x0a";
case 28: // K
return "\x02\x1b\x0b";
case 29: // L
return "\x02\x1b\x0c";
case 30: // M
return "\x02\x1b\x0d";
case 31: // N
return "\x02\x1b\x0e";
case 32: // O
return "\x02\x1b\x0f";
case 33: // P
return "\x02\x1b\x10";
case 34: // Q
return "\x02\x1b\x11";
case 35: // R
return "\x02\x1b\x12";
case 36: // S
return "\x02\x1b\x13";
case 37: // T
return "\x02\x1b\x14";
case 38: // U
return "\x02\x1b\x15";
case 39: // V
return "\x02\x1b\x16";
case 40: // W
return "\x02\x1b\x17";
case 41: // X
return "\x02\x1b\x18";
case 42: // Y
return "\x02\x1b\x19";
case 43: // Z
return "\x02\x1b\x1a";
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x06\x1b\x5b\x32\x3b\x37\x7e";
case 55: // DELETE
return "\x06\x1b\x5b\x33\x3b\x37\x7e";
case 56: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x37\x43";
case 57: // LEFT
return "\x06\x1b\x5b\x31\x3b\x37\x44";
case 58: // DOWN
return "\x06\x1b\x5b\x31\x3b\x37\x42";
case 59: // UP
return "\x06\x1b\x5b\x31\x3b\x37\x41";
case 60: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x37\x7e";
case 61: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x37\x7e";
case 62: // HOME
return "\x06\x1b\x5b\x31\x3b\x37\x48";
case 63: // END
return "\x06\x1b\x5b\x31\x3b\x37\x46";
case 69: // F1
return "\x06\x1b\x5b\x31\x3b\x37\x50";
case 70: // F2
return "\x06\x1b\x5b\x31\x3b\x37\x51";
case 71: // F3
return "\x06\x1b\x5b\x31\x3b\x37\x52";
case 72: // F4
return "\x06\x1b\x5b\x31\x3b\x37\x53";
case 73: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x37\x7e";
case 74: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x37\x7e";
case 75: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x37\x7e";
case 76: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x37\x7e";
case 77: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x37\x7e";
case 78: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x37\x7e";
case 79: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x37\x7e";
case 80: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x37\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x7:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x4f\x43";
case 57: // LEFT
return "\x03\x1b\x4f\x44";
case 58: // DOWN
return "\x03\x1b\x4f\x42";
case 59: // UP
return "\x03\x1b\x4f\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x4f\x48";
case 63: // END
return "\x03\x1b\x4f\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x8:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x4f\x43";
case 57: // LEFT
return "\x03\x1b\x4f\x44";
case 58: // DOWN
return "\x03\x1b\x4f\x42";
case 59: // UP
return "\x03\x1b\x4f\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x4f\x48";
case 63: // END
return "\x03\x1b\x4f\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x9:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x4f\x43";
case 57: // LEFT
return "\x03\x1b\x4f\x44";
case 58: // DOWN
return "\x03\x1b\x4f\x42";
case 59: // UP
return "\x03\x1b\x4f\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x4f\x48";
case 63: // END
return "\x03\x1b\x4f\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xa:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x4f\x43";
case 57: // LEFT
return "\x03\x1b\x4f\x44";
case 58: // DOWN
return "\x03\x1b\x4f\x42";
case 59: // UP
return "\x03\x1b\x4f\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x4f\x48";
case 63: // END
return "\x03\x1b\x4f\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xb:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x4f\x43";
case 57: // LEFT
return "\x03\x1b\x4f\x44";
case 58: // DOWN
return "\x03\x1b\x4f\x42";
case 59: // UP
return "\x03\x1b\x4f\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x4f\x48";
case 63: // END
return "\x03\x1b\x4f\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xc:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x4f\x43";
case 57: // LEFT
return "\x03\x1b\x4f\x44";
case 58: // DOWN
return "\x03\x1b\x4f\x42";
case 59: // UP
return "\x03\x1b\x4f\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x4f\x48";
case 63: // END
return "\x03\x1b\x4f\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xd:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x4f\x43";
case 57: // LEFT
return "\x03\x1b\x4f\x44";
case 58: // DOWN
return "\x03\x1b\x4f\x42";
case 59: // UP
return "\x03\x1b\x4f\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x4f\x48";
case 63: // END
return "\x03\x1b\x4f\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xe:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x4f\x43";
case 57: // LEFT
return "\x03\x1b\x4f\x44";
case 58: // DOWN
return "\x03\x1b\x4f\x42";
case 59: // UP
return "\x03\x1b\x4f\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x4f\x48";
case 63: // END
return "\x03\x1b\x4f\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xf:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x4f\x43";
case 57: // LEFT
return "\x03\x1b\x4f\x44";
case 58: // DOWN
return "\x03\x1b\x4f\x42";
case 59: // UP
return "\x03\x1b\x4f\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x4f\x48";
case 63: // END
return "\x03\x1b\x4f\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
} // end switch(mods)
break;
case 2: // REPEAT
switch (mods & 0xf) {
case 0x0:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x4f\x43";
case 57: // LEFT
return "\x03\x1b\x4f\x44";
case 58: // DOWN
return "\x03\x1b\x4f\x42";
case 59: // UP
return "\x03\x1b\x4f\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x4f\x48";
case 63: // END
return "\x03\x1b\x4f\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x1:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x03\x1b\x5b\x5a";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x32\x43";
case 57: // LEFT
return "\x06\x1b\x5b\x31\x3b\x32\x44";
case 58: // DOWN
return "\x06\x1b\x5b\x31\x3b\x32\x42";
case 59: // UP
return "\x06\x1b\x5b\x31\x3b\x32\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x06\x1b\x5b\x31\x3b\x32\x48";
case 63: // END
return "\x06\x1b\x5b\x31\x3b\x32\x46";
case 69: // F1
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 70: // F2
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 71: // F3
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 72: // F4
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 73: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 74: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 75: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 76: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 77: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 78: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 79: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 80: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x2:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x01\x00";
case 1: // APOSTROPHE
return "\x01\x27";
case 2: // COMMA
return "\x01\x2c";
case 3: // MINUS
return "\x01\x2d";
case 4: // PERIOD
return "\x01\x2e";
case 5: // SLASH
return "\x01\x1f";
case 6: // 0
return "\x01\x30";
case 7: // 1
return "\x01\x31";
case 8: // 2
return "\x01\x32";
case 9: // 3
return "\x01\x33";
case 10: // 4
return "\x01\x34";
case 11: // 5
return "\x01\x35";
case 12: // 6
return "\x01\x1e";
case 13: // 7
return "\x01\x37";
case 14: // 8
return "\x01\x38";
case 15: // 9
return "\x01\x39";
case 16: // SEMICOLON
return "\x01\x3b";
case 17: // EQUAL
return "\x01\x3d";
case 18: // A
return "\x01\x01";
case 19: // B
return "\x01\x02";
case 20: // C
return "\x01\x03";
case 21: // D
return "\x01\x04";
case 22: // E
return "\x01\x05";
case 23: // F
return "\x01\x06";
case 24: // G
return "\x01\x07";
case 25: // H
return "\x01\x08";
case 26: // I
return "\x01\x09";
case 27: // J
return "\x01\x0a";
case 28: // K
return "\x01\x0b";
case 29: // L
return "\x01\x0c";
case 30: // M
return "\x01\x0d";
case 31: // N
return "\x01\x0e";
case 32: // O
return "\x01\x0f";
case 33: // P
return "\x01\x10";
case 34: // Q
return "\x01\x11";
case 35: // R
return "\x01\x12";
case 36: // S
return "\x01\x13";
case 37: // T
return "\x01\x14";
case 38: // U
return "\x01\x15";
case 39: // V
return "\x01\x16";
case 40: // W
return "\x01\x17";
case 41: // X
return "\x01\x18";
case 42: // Y
return "\x01\x19";
case 43: // Z
return "\x01\x1a";
case 44: // LEFT_BRACKET
return "\x01\x1b";
case 45: // BACKSLASH
return "\x01\x1c";
case 46: // RIGHT_BRACKET
return "\x01\x1d";
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x08";
case 54: // INSERT
return "\x06\x1b\x5b\x32\x3b\x35\x7e";
case 55: // DELETE
return "\x06\x1b\x5b\x33\x3b\x35\x7e";
case 56: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x35\x43";
case 57: // LEFT
return "\x06\x1b\x5b\x31\x3b\x35\x44";
case 58: // DOWN
return "\x06\x1b\x5b\x31\x3b\x35\x42";
case 59: // UP
return "\x06\x1b\x5b\x31\x3b\x35\x41";
case 60: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x35\x7e";
case 61: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x35\x7e";
case 62: // HOME
return "\x06\x1b\x5b\x31\x3b\x35\x48";
case 63: // END
return "\x06\x1b\x5b\x31\x3b\x35\x46";
case 69: // F1
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 70: // F2
return "\x06\x1b\x5b\x31\x3b\x35\x51";
case 71: // F3
return "\x06\x1b\x5b\x31\x3b\x35\x52";
case 72: // F4
return "\x06\x1b\x5b\x31\x3b\x35\x53";
case 73: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x35\x7e";
case 74: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x35\x7e";
case 75: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x35\x7e";
case 76: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x35\x7e";
case 77: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x35\x7e";
case 78: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x35\x7e";
case 79: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x35\x7e";
case 80: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x35\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x3:
switch(key & 0x7f) { default: return NULL;
case 3: // MINUS
return "\x01\x1f";
case 5: // SLASH
return "\x01\x7f";
case 8: // 2
return "\x01\x00";
case 12: // 6
return "\x01\x1e";
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x4f\x43";
case 57: // LEFT
return "\x03\x1b\x4f\x44";
case 58: // DOWN
return "\x03\x1b\x4f\x42";
case 59: // UP
return "\x03\x1b\x4f\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x4f\x48";
case 63: // END
return "\x03\x1b\x4f\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x4:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x20";
case 1: // APOSTROPHE
return "\x02\x1b\x27";
case 2: // COMMA
return "\x02\x1b\x2c";
case 3: // MINUS
return "\x02\x1b\x2d";
case 4: // PERIOD
return "\x02\x1b\x2e";
case 5: // SLASH
return "\x02\x1b\x2f";
case 6: // 0
return "\x02\x1b\x30";
case 7: // 1
return "\x02\x1b\x31";
case 8: // 2
return "\x02\x1b\x32";
case 9: // 3
return "\x02\x1b\x33";
case 10: // 4
return "\x02\x1b\x34";
case 11: // 5
return "\x02\x1b\x35";
case 12: // 6
return "\x02\x1b\x36";
case 13: // 7
return "\x02\x1b\x37";
case 14: // 8
return "\x02\x1b\x38";
case 15: // 9
return "\x02\x1b\x39";
case 16: // SEMICOLON
return "\x02\x1b\x3b";
case 17: // EQUAL
return "\x02\x1b\x3d";
case 18: // A
return "\x02\x1b\x61";
case 19: // B
return "\x02\x1b\x62";
case 20: // C
return "\x02\x1b\x63";
case 21: // D
return "\x02\x1b\x64";
case 22: // E
return "\x02\x1b\x65";
case 23: // F
return "\x02\x1b\x66";
case 24: // G
return "\x02\x1b\x67";
case 25: // H
return "\x02\x1b\x68";
case 26: // I
return "\x02\x1b\x69";
case 27: // J
return "\x02\x1b\x6a";
case 28: // K
return "\x02\x1b\x6b";
case 29: // L
return "\x02\x1b\x6c";
case 30: // M
return "\x02\x1b\x6d";
case 31: // N
return "\x02\x1b\x6e";
case 32: // O
return "\x02\x1b\x6f";
case 33: // P
return "\x02\x1b\x70";
case 34: // Q
return "\x02\x1b\x71";
case 35: // R
return "\x02\x1b\x72";
case 36: // S
return "\x02\x1b\x73";
case 37: // T
return "\x02\x1b\x74";
case 38: // U
return "\x02\x1b\x75";
case 39: // V
return "\x02\x1b\x76";
case 40: // W
return "\x02\x1b\x77";
case 41: // X
return "\x02\x1b\x78";
case 42: // Y
return "\x02\x1b\x79";
case 43: // Z
return "\x02\x1b\x7a";
case 44: // LEFT_BRACKET
return "\x02\x1b\x5b";
case 45: // BACKSLASH
return "\x02\x1b\x5c";
case 46: // RIGHT_BRACKET
return "\x02\x1b\x5d";
case 47: // GRAVE_ACCENT
return "\x02\x1b\x60";
case 50: // ESCAPE
return "\x02\x1b\x1b";
case 51: // ENTER
return "\x02\x1b\x0d";
case 52: // TAB
return "\x02\x1b\x09";
case 53: // BACKSPACE
return "\x02\x1b\x7f";
case 54: // INSERT
return "\x06\x1b\x5b\x32\x3b\x33\x7e";
case 55: // DELETE
return "\x06\x1b\x5b\x33\x3b\x33\x7e";
case 56: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x33\x43";
case 57: // LEFT
return "\x06\x1b\x5b\x31\x3b\x33\x44";
case 58: // DOWN
return "\x06\x1b\x5b\x31\x3b\x33\x42";
case 59: // UP
return "\x06\x1b\x5b\x31\x3b\x33\x41";
case 60: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x33\x7e";
case 61: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x33\x7e";
case 62: // HOME
return "\x06\x1b\x5b\x31\x3b\x33\x48";
case 63: // END
return "\x06\x1b\x5b\x31\x3b\x33\x46";
case 69: // F1
return "\x06\x1b\x5b\x31\x3b\x33\x50";
case 70: // F2
return "\x06\x1b\x5b\x31\x3b\x33\x51";
case 71: // F3
return "\x06\x1b\x5b\x31\x3b\x33\x52";
case 72: // F4
return "\x06\x1b\x5b\x31\x3b\x33\x53";
case 73: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x33\x7e";
case 74: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x33\x7e";
case 75: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x33\x7e";
case 76: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x33\x7e";
case 77: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x33\x7e";
case 78: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x33\x7e";
case 79: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x33\x7e";
case 80: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x33\x7e";
} // end switch(key)
case 0x5:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x20";
case 1: // APOSTROPHE
return "\x02\x1b\x22";
case 2: // COMMA
return "\x02\x1b\x3c";
case 3: // MINUS
return "\x02\x1b\x5f";
case 4: // PERIOD
return "\x02\x1b\x3e";
case 5: // SLASH
return "\x02\x1b\x3f";
case 6: // 0
return "\x02\x1b\x29";
case 7: // 1
return "\x02\x1b\x21";
case 8: // 2
return "\x02\x1b\x40";
case 9: // 3
return "\x02\x1b\x23";
case 10: // 4
return "\x02\x1b\x24";
case 11: // 5
return "\x02\x1b\x25";
case 12: // 6
return "\x02\x1b\x5e";
case 13: // 7
return "\x02\x1b\x26";
case 14: // 8
return "\x02\x1b\x2a";
case 15: // 9
return "\x02\x1b\x28";
case 16: // SEMICOLON
return "\x02\x1b\x3a";
case 17: // EQUAL
return "\x02\x1b\x2b";
case 18: // A
return "\x02\x1b\x41";
case 19: // B
return "\x02\x1b\x42";
case 20: // C
return "\x02\x1b\x43";
case 21: // D
return "\x02\x1b\x44";
case 22: // E
return "\x02\x1b\x45";
case 23: // F
return "\x02\x1b\x46";
case 24: // G
return "\x02\x1b\x47";
case 25: // H
return "\x02\x1b\x48";
case 26: // I
return "\x02\x1b\x49";
case 27: // J
return "\x02\x1b\x4a";
case 28: // K
return "\x02\x1b\x4b";
case 29: // L
return "\x02\x1b\x4c";
case 30: // M
return "\x02\x1b\x4d";
case 31: // N
return "\x02\x1b\x4e";
case 32: // O
return "\x02\x1b\x4f";
case 33: // P
return "\x02\x1b\x50";
case 34: // Q
return "\x02\x1b\x51";
case 35: // R
return "\x02\x1b\x52";
case 36: // S
return "\x02\x1b\x53";
case 37: // T
return "\x02\x1b\x54";
case 38: // U
return "\x02\x1b\x55";
case 39: // V
return "\x02\x1b\x56";
case 40: // W
return "\x02\x1b\x57";
case 41: // X
return "\x02\x1b\x58";
case 42: // Y
return "\x02\x1b\x59";
case 43: // Z
return "\x02\x1b\x5a";
case 44: // LEFT_BRACKET
return "\x02\x1b\x7b";
case 45: // BACKSLASH
return "\x02\x1b\x7c";
case 46: // RIGHT_BRACKET
return "\x02\x1b\x7d";
case 47: // GRAVE_ACCENT
return "\x02\x1b\x7e";
case 50: // ESCAPE
return "\x02\x1b\x1b";
case 51: // ENTER
return "\x02\x1b\x0d";
case 52: // TAB
return "\x03\x1b\x5b\x5a";
case 53: // BACKSPACE
return "\x02\x1b\x7f";
case 54: // INSERT
return "\x06\x1b\x5b\x32\x3b\x34\x7e";
case 55: // DELETE
return "\x06\x1b\x5b\x33\x3b\x34\x7e";
case 56: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x34\x43";
case 57: // LEFT
return "\x06\x1b\x5b\x31\x3b\x34\x44";
case 58: // DOWN
return "\x06\x1b\x5b\x31\x3b\x34\x42";
case 59: // UP
return "\x06\x1b\x5b\x31\x3b\x34\x41";
case 60: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x34\x7e";
case 61: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x34\x7e";
case 62: // HOME
return "\x06\x1b\x5b\x31\x3b\x34\x48";
case 63: // END
return "\x06\x1b\x5b\x31\x3b\x34\x46";
case 69: // F1
return "\x06\x1b\x5b\x31\x3b\x34\x50";
case 70: // F2
return "\x06\x1b\x5b\x31\x3b\x34\x51";
case 71: // F3
return "\x06\x1b\x5b\x31\x3b\x34\x52";
case 72: // F4
return "\x06\x1b\x5b\x31\x3b\x34\x53";
case 73: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x34\x7e";
case 74: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x34\x7e";
case 75: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x34\x7e";
case 76: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x34\x7e";
case 77: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x34\x7e";
case 78: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x34\x7e";
case 79: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x34\x7e";
case 80: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x34\x7e";
} // end switch(key)
case 0x6:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x02\x1b\x00";
case 18: // A
return "\x02\x1b\x01";
case 19: // B
return "\x02\x1b\x02";
case 20: // C
return "\x02\x1b\x03";
case 21: // D
return "\x02\x1b\x04";
case 22: // E
return "\x02\x1b\x05";
case 23: // F
return "\x02\x1b\x06";
case 24: // G
return "\x02\x1b\x07";
case 25: // H
return "\x02\x1b\x08";
case 26: // I
return "\x02\x1b\x09";
case 27: // J
return "\x02\x1b\x0a";
case 28: // K
return "\x02\x1b\x0b";
case 29: // L
return "\x02\x1b\x0c";
case 30: // M
return "\x02\x1b\x0d";
case 31: // N
return "\x02\x1b\x0e";
case 32: // O
return "\x02\x1b\x0f";
case 33: // P
return "\x02\x1b\x10";
case 34: // Q
return "\x02\x1b\x11";
case 35: // R
return "\x02\x1b\x12";
case 36: // S
return "\x02\x1b\x13";
case 37: // T
return "\x02\x1b\x14";
case 38: // U
return "\x02\x1b\x15";
case 39: // V
return "\x02\x1b\x16";
case 40: // W
return "\x02\x1b\x17";
case 41: // X
return "\x02\x1b\x18";
case 42: // Y
return "\x02\x1b\x19";
case 43: // Z
return "\x02\x1b\x1a";
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x06\x1b\x5b\x32\x3b\x37\x7e";
case 55: // DELETE
return "\x06\x1b\x5b\x33\x3b\x37\x7e";
case 56: // RIGHT
return "\x06\x1b\x5b\x31\x3b\x37\x43";
case 57: // LEFT
return "\x06\x1b\x5b\x31\x3b\x37\x44";
case 58: // DOWN
return "\x06\x1b\x5b\x31\x3b\x37\x42";
case 59: // UP
return "\x06\x1b\x5b\x31\x3b\x37\x41";
case 60: // PAGE_UP
return "\x06\x1b\x5b\x35\x3b\x37\x7e";
case 61: // PAGE_DOWN
return "\x06\x1b\x5b\x36\x3b\x37\x7e";
case 62: // HOME
return "\x06\x1b\x5b\x31\x3b\x37\x48";
case 63: // END
return "\x06\x1b\x5b\x31\x3b\x37\x46";
case 69: // F1
return "\x06\x1b\x5b\x31\x3b\x37\x50";
case 70: // F2
return "\x06\x1b\x5b\x31\x3b\x37\x51";
case 71: // F3
return "\x06\x1b\x5b\x31\x3b\x37\x52";
case 72: // F4
return "\x06\x1b\x5b\x31\x3b\x37\x53";
case 73: // F5
return "\x07\x1b\x5b\x31\x35\x3b\x37\x7e";
case 74: // F6
return "\x07\x1b\x5b\x31\x37\x3b\x37\x7e";
case 75: // F7
return "\x07\x1b\x5b\x31\x38\x3b\x37\x7e";
case 76: // F8
return "\x07\x1b\x5b\x31\x39\x3b\x37\x7e";
case 77: // F9
return "\x07\x1b\x5b\x32\x30\x3b\x37\x7e";
case 78: // F10
return "\x07\x1b\x5b\x32\x31\x3b\x37\x7e";
case 79: // F11
return "\x07\x1b\x5b\x32\x33\x3b\x37\x7e";
case 80: // F12
return "\x07\x1b\x5b\x32\x34\x3b\x37\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x7:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x4f\x43";
case 57: // LEFT
return "\x03\x1b\x4f\x44";
case 58: // DOWN
return "\x03\x1b\x4f\x42";
case 59: // UP
return "\x03\x1b\x4f\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x4f\x48";
case 63: // END
return "\x03\x1b\x4f\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x8:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x4f\x43";
case 57: // LEFT
return "\x03\x1b\x4f\x44";
case 58: // DOWN
return "\x03\x1b\x4f\x42";
case 59: // UP
return "\x03\x1b\x4f\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x4f\x48";
case 63: // END
return "\x03\x1b\x4f\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0x9:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x4f\x43";
case 57: // LEFT
return "\x03\x1b\x4f\x44";
case 58: // DOWN
return "\x03\x1b\x4f\x42";
case 59: // UP
return "\x03\x1b\x4f\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x4f\x48";
case 63: // END
return "\x03\x1b\x4f\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xa:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x4f\x43";
case 57: // LEFT
return "\x03\x1b\x4f\x44";
case 58: // DOWN
return "\x03\x1b\x4f\x42";
case 59: // UP
return "\x03\x1b\x4f\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x4f\x48";
case 63: // END
return "\x03\x1b\x4f\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xb:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x4f\x43";
case 57: // LEFT
return "\x03\x1b\x4f\x44";
case 58: // DOWN
return "\x03\x1b\x4f\x42";
case 59: // UP
return "\x03\x1b\x4f\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x4f\x48";
case 63: // END
return "\x03\x1b\x4f\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xc:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x4f\x43";
case 57: // LEFT
return "\x03\x1b\x4f\x44";
case 58: // DOWN
return "\x03\x1b\x4f\x42";
case 59: // UP
return "\x03\x1b\x4f\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x4f\x48";
case 63: // END
return "\x03\x1b\x4f\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xd:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x4f\x43";
case 57: // LEFT
return "\x03\x1b\x4f\x44";
case 58: // DOWN
return "\x03\x1b\x4f\x42";
case 59: // UP
return "\x03\x1b\x4f\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x4f\x48";
case 63: // END
return "\x03\x1b\x4f\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xe:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x4f\x43";
case 57: // LEFT
return "\x03\x1b\x4f\x44";
case 58: // DOWN
return "\x03\x1b\x4f\x42";
case 59: // UP
return "\x03\x1b\x4f\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x4f\x48";
case 63: // END
return "\x03\x1b\x4f\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // end switch(key)
case 0xf:
switch(key & 0x7f) { default: return NULL;
case 50: // ESCAPE
return "\x01\x1b";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x01\x09";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x1b\x5b\x32\x7e";
case 55: // DELETE
return "\x04\x1b\x5b\x33\x7e";
case 56: // RIGHT
return "\x03\x1b\x4f\x43";
case 57: // LEFT
return "\x03\x1b\x4f\x44";
case 58: // DOWN
return "\x03\x1b\x4f\x42";
case 59: // UP
return "\x03\x1b\x4f\x41";
case 60: // PAGE_UP
return "\x04\x1b\x5b\x35\x7e";
case 61: // PAGE_DOWN
return "\x04\x1b\x5b\x36\x7e";
case 62: // HOME
return "\x03\x1b\x4f\x48";
case 63: // END
return "\x03\x1b\x4f\x46";
case 69: // F1
return "\x03\x1b\x4f\x50";
case 70: // F2
return "\x03\x1b\x4f\x51";
case 71: // F3
return "\x03\x1b\x4f\x52";
case 72: // F4
return "\x03\x1b\x4f\x53";
case 73: // F5
return "\x05\x1b\x5b\x31\x35\x7e";
case 74: // F6
return "\x05\x1b\x5b\x31\x37\x7e";
case 75: // F7
return "\x05\x1b\x5b\x31\x38\x7e";
case 76: // F8
return "\x05\x1b\x5b\x31\x39\x7e";
case 77: // F9
return "\x05\x1b\x5b\x32\x30\x7e";
case 78: // F10
return "\x05\x1b\x5b\x32\x31\x7e";
case 79: // F11
return "\x05\x1b\x5b\x32\x33\x7e";
case 80: // F12
return "\x05\x1b\x5b\x32\x34\x7e";
case 81: // F13
return "\x06\x1b\x5b\x31\x3b\x32\x50";
case 82: // F14
return "\x06\x1b\x5b\x31\x3b\x32\x51";
case 83: // F15
return "\x06\x1b\x5b\x31\x3b\x32\x52";
case 84: // F16
return "\x06\x1b\x5b\x31\x3b\x32\x53";
case 85: // F17
return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e";
case 86: // F18
return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e";
case 87: // F19
return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e";
case 88: // F20
return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e";
case 89: // F21
return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e";
case 90: // F22
return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e";
case 91: // F23
return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e";
case 92: // F24
return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e";
case 93: // F25
return "\x06\x1b\x5b\x31\x3b\x35\x50";
case 109: // KP_ENTER
return "\x01\x0d";
} // 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 & 0x7f) { default: return NULL;
case 48: // WORLD_1
return "\x04\x4b\x72\x41\x77";
case 49: // WORLD_2
return "\x04\x4b\x72\x41\x78";
case 50: // ESCAPE
return "\x04\x4b\x72\x41\x79";
case 52: // TAB
return "\x04\x4b\x72\x41\x30";
case 54: // INSERT
return "\x04\x4b\x72\x41\x32";
case 55: // DELETE
return "\x04\x4b\x72\x41\x33";
case 56: // RIGHT
return "\x04\x4b\x72\x41\x34";
case 57: // LEFT
return "\x04\x4b\x72\x41\x35";
case 58: // DOWN
return "\x04\x4b\x72\x41\x36";
case 59: // UP
return "\x04\x4b\x72\x41\x37";
case 60: // PAGE_UP
return "\x04\x4b\x72\x41\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x72\x41\x39";
case 62: // HOME
return "\x04\x4b\x72\x41\x2e";
case 63: // END
return "\x04\x4b\x72\x41\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x72\x41\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x72\x41\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x72\x41\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x72\x41\x5e";
case 68: // PAUSE
return "\x04\x4b\x72\x41\x21";
case 69: // F1
return "\x04\x4b\x72\x41\x2f";
case 70: // F2
return "\x04\x4b\x72\x41\x2a";
case 71: // F3
return "\x04\x4b\x72\x41\x3f";
case 72: // F4
return "\x04\x4b\x72\x41\x26";
case 73: // F5
return "\x04\x4b\x72\x41\x3c";
case 74: // F6
return "\x04\x4b\x72\x41\x3e";
case 75: // F7
return "\x04\x4b\x72\x41\x28";
case 76: // F8
return "\x04\x4b\x72\x41\x29";
case 77: // F9
return "\x04\x4b\x72\x41\x5b";
case 78: // F10
return "\x04\x4b\x72\x41\x5d";
case 79: // F11
return "\x04\x4b\x72\x41\x7b";
case 80: // F12
return "\x04\x4b\x72\x41\x7d";
case 81: // F13
return "\x04\x4b\x72\x41\x40";
case 82: // F14
return "\x04\x4b\x72\x41\x25";
case 83: // F15
return "\x04\x4b\x72\x41\x24";
case 84: // F16
return "\x04\x4b\x72\x41\x23";
case 85: // F17
return "\x05\x4b\x72\x41\x42\x41";
case 86: // F18
return "\x05\x4b\x72\x41\x42\x42";
case 87: // F19
return "\x05\x4b\x72\x41\x42\x43";
case 88: // F20
return "\x05\x4b\x72\x41\x42\x44";
case 89: // F21
return "\x05\x4b\x72\x41\x42\x45";
case 90: // F22
return "\x05\x4b\x72\x41\x42\x46";
case 91: // F23
return "\x05\x4b\x72\x41\x42\x47";
case 92: // F24
return "\x05\x4b\x72\x41\x42\x48";
case 93: // F25
return "\x05\x4b\x72\x41\x42\x49";
case 94: // KP_0
return "\x05\x4b\x72\x41\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x72\x41\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x72\x41\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x72\x41\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x72\x41\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x72\x41\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x72\x41\x42\x50";
case 101: // KP_7
return "\x05\x4b\x72\x41\x42\x51";
case 102: // KP_8
return "\x05\x4b\x72\x41\x42\x52";
case 103: // KP_9
return "\x05\x4b\x72\x41\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x72\x41\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x72\x41\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x72\x41\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x72\x41\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x72\x41\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x72\x41\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x72\x41\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x72\x41\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x72\x41\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x72\x41\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x72\x41\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x72\x41\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x72\x41\x42\x68";
} // end switch(key)
case 0x1:
switch(key & 0x7f) { default: return NULL;
case 48: // WORLD_1
return "\x04\x4b\x72\x42\x77";
case 49: // WORLD_2
return "\x04\x4b\x72\x42\x78";
case 50: // ESCAPE
return "\x04\x4b\x72\x42\x79";
case 51: // ENTER
return "\x04\x4b\x72\x42\x7a";
case 52: // TAB
return "\x04\x4b\x72\x42\x30";
case 53: // BACKSPACE
return "\x04\x4b\x72\x42\x31";
case 54: // INSERT
return "\x04\x4b\x72\x42\x32";
case 55: // DELETE
return "\x04\x4b\x72\x42\x33";
case 56: // RIGHT
return "\x04\x4b\x72\x42\x34";
case 57: // LEFT
return "\x04\x4b\x72\x42\x35";
case 58: // DOWN
return "\x04\x4b\x72\x42\x36";
case 59: // UP
return "\x04\x4b\x72\x42\x37";
case 60: // PAGE_UP
return "\x04\x4b\x72\x42\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x72\x42\x39";
case 62: // HOME
return "\x04\x4b\x72\x42\x2e";
case 63: // END
return "\x04\x4b\x72\x42\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x72\x42\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x72\x42\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x72\x42\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x72\x42\x5e";
case 68: // PAUSE
return "\x04\x4b\x72\x42\x21";
case 69: // F1
return "\x04\x4b\x72\x42\x2f";
case 70: // F2
return "\x04\x4b\x72\x42\x2a";
case 71: // F3
return "\x04\x4b\x72\x42\x3f";
case 72: // F4
return "\x04\x4b\x72\x42\x26";
case 73: // F5
return "\x04\x4b\x72\x42\x3c";
case 74: // F6
return "\x04\x4b\x72\x42\x3e";
case 75: // F7
return "\x04\x4b\x72\x42\x28";
case 76: // F8
return "\x04\x4b\x72\x42\x29";
case 77: // F9
return "\x04\x4b\x72\x42\x5b";
case 78: // F10
return "\x04\x4b\x72\x42\x5d";
case 79: // F11
return "\x04\x4b\x72\x42\x7b";
case 80: // F12
return "\x04\x4b\x72\x42\x7d";
case 81: // F13
return "\x04\x4b\x72\x42\x40";
case 82: // F14
return "\x04\x4b\x72\x42\x25";
case 83: // F15
return "\x04\x4b\x72\x42\x24";
case 84: // F16
return "\x04\x4b\x72\x42\x23";
case 85: // F17
return "\x05\x4b\x72\x42\x42\x41";
case 86: // F18
return "\x05\x4b\x72\x42\x42\x42";
case 87: // F19
return "\x05\x4b\x72\x42\x42\x43";
case 88: // F20
return "\x05\x4b\x72\x42\x42\x44";
case 89: // F21
return "\x05\x4b\x72\x42\x42\x45";
case 90: // F22
return "\x05\x4b\x72\x42\x42\x46";
case 91: // F23
return "\x05\x4b\x72\x42\x42\x47";
case 92: // F24
return "\x05\x4b\x72\x42\x42\x48";
case 93: // F25
return "\x05\x4b\x72\x42\x42\x49";
case 94: // KP_0
return "\x05\x4b\x72\x42\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x72\x42\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x72\x42\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x72\x42\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x72\x42\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x72\x42\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x72\x42\x42\x50";
case 101: // KP_7
return "\x05\x4b\x72\x42\x42\x51";
case 102: // KP_8
return "\x05\x4b\x72\x42\x42\x52";
case 103: // KP_9
return "\x05\x4b\x72\x42\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x72\x42\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x72\x42\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x72\x42\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x72\x42\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x72\x42\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x72\x42\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x72\x42\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x72\x42\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x72\x42\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x72\x42\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x72\x42\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x72\x42\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x72\x42\x42\x68";
} // end switch(key)
case 0x2:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x45\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x72\x45\x42";
case 2: // COMMA
return "\x04\x4b\x72\x45\x43";
case 3: // MINUS
return "\x04\x4b\x72\x45\x44";
case 4: // PERIOD
return "\x04\x4b\x72\x45\x45";
case 5: // SLASH
return "\x04\x4b\x72\x45\x46";
case 6: // 0
return "\x04\x4b\x72\x45\x47";
case 7: // 1
return "\x04\x4b\x72\x45\x48";
case 8: // 2
return "\x04\x4b\x72\x45\x49";
case 9: // 3
return "\x04\x4b\x72\x45\x4a";
case 10: // 4
return "\x04\x4b\x72\x45\x4b";
case 11: // 5
return "\x04\x4b\x72\x45\x4c";
case 12: // 6
return "\x04\x4b\x72\x45\x4d";
case 13: // 7
return "\x04\x4b\x72\x45\x4e";
case 14: // 8
return "\x04\x4b\x72\x45\x4f";
case 15: // 9
return "\x04\x4b\x72\x45\x50";
case 16: // SEMICOLON
return "\x04\x4b\x72\x45\x51";
case 17: // EQUAL
return "\x04\x4b\x72\x45\x52";
case 18: // A
return "\x04\x4b\x72\x45\x53";
case 19: // B
return "\x04\x4b\x72\x45\x54";
case 20: // C
return "\x04\x4b\x72\x45\x55";
case 21: // D
return "\x04\x4b\x72\x45\x56";
case 22: // E
return "\x04\x4b\x72\x45\x57";
case 23: // F
return "\x04\x4b\x72\x45\x58";
case 24: // G
return "\x04\x4b\x72\x45\x59";
case 25: // H
return "\x04\x4b\x72\x45\x5a";
case 26: // I
return "\x04\x4b\x72\x45\x61";
case 27: // J
return "\x04\x4b\x72\x45\x62";
case 28: // K
return "\x04\x4b\x72\x45\x63";
case 29: // L
return "\x04\x4b\x72\x45\x64";
case 30: // M
return "\x04\x4b\x72\x45\x65";
case 31: // N
return "\x04\x4b\x72\x45\x66";
case 32: // O
return "\x04\x4b\x72\x45\x67";
case 33: // P
return "\x04\x4b\x72\x45\x68";
case 34: // Q
return "\x04\x4b\x72\x45\x69";
case 35: // R
return "\x04\x4b\x72\x45\x6a";
case 36: // S
return "\x04\x4b\x72\x45\x6b";
case 37: // T
return "\x04\x4b\x72\x45\x6c";
case 38: // U
return "\x04\x4b\x72\x45\x6d";
case 39: // V
return "\x04\x4b\x72\x45\x6e";
case 40: // W
return "\x04\x4b\x72\x45\x6f";
case 41: // X
return "\x04\x4b\x72\x45\x70";
case 42: // Y
return "\x04\x4b\x72\x45\x71";
case 43: // Z
return "\x04\x4b\x72\x45\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x72\x45\x73";
case 45: // BACKSLASH
return "\x04\x4b\x72\x45\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x72\x45\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x72\x45\x76";
case 48: // WORLD_1
return "\x04\x4b\x72\x45\x77";
case 49: // WORLD_2
return "\x04\x4b\x72\x45\x78";
case 50: // ESCAPE
return "\x04\x4b\x72\x45\x79";
case 51: // ENTER
return "\x04\x4b\x72\x45\x7a";
case 52: // TAB
return "\x04\x4b\x72\x45\x30";
case 53: // BACKSPACE
return "\x04\x4b\x72\x45\x31";
case 54: // INSERT
return "\x04\x4b\x72\x45\x32";
case 55: // DELETE
return "\x04\x4b\x72\x45\x33";
case 56: // RIGHT
return "\x04\x4b\x72\x45\x34";
case 57: // LEFT
return "\x04\x4b\x72\x45\x35";
case 58: // DOWN
return "\x04\x4b\x72\x45\x36";
case 59: // UP
return "\x04\x4b\x72\x45\x37";
case 60: // PAGE_UP
return "\x04\x4b\x72\x45\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x72\x45\x39";
case 62: // HOME
return "\x04\x4b\x72\x45\x2e";
case 63: // END
return "\x04\x4b\x72\x45\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x72\x45\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x72\x45\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x72\x45\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x72\x45\x5e";
case 68: // PAUSE
return "\x04\x4b\x72\x45\x21";
case 69: // F1
return "\x04\x4b\x72\x45\x2f";
case 70: // F2
return "\x04\x4b\x72\x45\x2a";
case 71: // F3
return "\x04\x4b\x72\x45\x3f";
case 72: // F4
return "\x04\x4b\x72\x45\x26";
case 73: // F5
return "\x04\x4b\x72\x45\x3c";
case 74: // F6
return "\x04\x4b\x72\x45\x3e";
case 75: // F7
return "\x04\x4b\x72\x45\x28";
case 76: // F8
return "\x04\x4b\x72\x45\x29";
case 77: // F9
return "\x04\x4b\x72\x45\x5b";
case 78: // F10
return "\x04\x4b\x72\x45\x5d";
case 79: // F11
return "\x04\x4b\x72\x45\x7b";
case 80: // F12
return "\x04\x4b\x72\x45\x7d";
case 81: // F13
return "\x04\x4b\x72\x45\x40";
case 82: // F14
return "\x04\x4b\x72\x45\x25";
case 83: // F15
return "\x04\x4b\x72\x45\x24";
case 84: // F16
return "\x04\x4b\x72\x45\x23";
case 85: // F17
return "\x05\x4b\x72\x45\x42\x41";
case 86: // F18
return "\x05\x4b\x72\x45\x42\x42";
case 87: // F19
return "\x05\x4b\x72\x45\x42\x43";
case 88: // F20
return "\x05\x4b\x72\x45\x42\x44";
case 89: // F21
return "\x05\x4b\x72\x45\x42\x45";
case 90: // F22
return "\x05\x4b\x72\x45\x42\x46";
case 91: // F23
return "\x05\x4b\x72\x45\x42\x47";
case 92: // F24
return "\x05\x4b\x72\x45\x42\x48";
case 93: // F25
return "\x05\x4b\x72\x45\x42\x49";
case 94: // KP_0
return "\x05\x4b\x72\x45\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x72\x45\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x72\x45\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x72\x45\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x72\x45\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x72\x45\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x72\x45\x42\x50";
case 101: // KP_7
return "\x05\x4b\x72\x45\x42\x51";
case 102: // KP_8
return "\x05\x4b\x72\x45\x42\x52";
case 103: // KP_9
return "\x05\x4b\x72\x45\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x72\x45\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x72\x45\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x72\x45\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x72\x45\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x72\x45\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x72\x45\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x72\x45\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x72\x45\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x72\x45\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x72\x45\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x72\x45\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x72\x45\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x72\x45\x42\x68";
} // end switch(key)
case 0x3:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x46\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x72\x46\x42";
case 2: // COMMA
return "\x04\x4b\x72\x46\x43";
case 3: // MINUS
return "\x04\x4b\x72\x46\x44";
case 4: // PERIOD
return "\x04\x4b\x72\x46\x45";
case 5: // SLASH
return "\x04\x4b\x72\x46\x46";
case 6: // 0
return "\x04\x4b\x72\x46\x47";
case 7: // 1
return "\x04\x4b\x72\x46\x48";
case 8: // 2
return "\x04\x4b\x72\x46\x49";
case 9: // 3
return "\x04\x4b\x72\x46\x4a";
case 10: // 4
return "\x04\x4b\x72\x46\x4b";
case 11: // 5
return "\x04\x4b\x72\x46\x4c";
case 12: // 6
return "\x04\x4b\x72\x46\x4d";
case 13: // 7
return "\x04\x4b\x72\x46\x4e";
case 14: // 8
return "\x04\x4b\x72\x46\x4f";
case 15: // 9
return "\x04\x4b\x72\x46\x50";
case 16: // SEMICOLON
return "\x04\x4b\x72\x46\x51";
case 17: // EQUAL
return "\x04\x4b\x72\x46\x52";
case 18: // A
return "\x04\x4b\x72\x46\x53";
case 19: // B
return "\x04\x4b\x72\x46\x54";
case 20: // C
return "\x04\x4b\x72\x46\x55";
case 21: // D
return "\x04\x4b\x72\x46\x56";
case 22: // E
return "\x04\x4b\x72\x46\x57";
case 23: // F
return "\x04\x4b\x72\x46\x58";
case 24: // G
return "\x04\x4b\x72\x46\x59";
case 25: // H
return "\x04\x4b\x72\x46\x5a";
case 26: // I
return "\x04\x4b\x72\x46\x61";
case 27: // J
return "\x04\x4b\x72\x46\x62";
case 28: // K
return "\x04\x4b\x72\x46\x63";
case 29: // L
return "\x04\x4b\x72\x46\x64";
case 30: // M
return "\x04\x4b\x72\x46\x65";
case 31: // N
return "\x04\x4b\x72\x46\x66";
case 32: // O
return "\x04\x4b\x72\x46\x67";
case 33: // P
return "\x04\x4b\x72\x46\x68";
case 34: // Q
return "\x04\x4b\x72\x46\x69";
case 35: // R
return "\x04\x4b\x72\x46\x6a";
case 36: // S
return "\x04\x4b\x72\x46\x6b";
case 37: // T
return "\x04\x4b\x72\x46\x6c";
case 38: // U
return "\x04\x4b\x72\x46\x6d";
case 39: // V
return "\x04\x4b\x72\x46\x6e";
case 40: // W
return "\x04\x4b\x72\x46\x6f";
case 41: // X
return "\x04\x4b\x72\x46\x70";
case 42: // Y
return "\x04\x4b\x72\x46\x71";
case 43: // Z
return "\x04\x4b\x72\x46\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x72\x46\x73";
case 45: // BACKSLASH
return "\x04\x4b\x72\x46\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x72\x46\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x72\x46\x76";
case 48: // WORLD_1
return "\x04\x4b\x72\x46\x77";
case 49: // WORLD_2
return "\x04\x4b\x72\x46\x78";
case 50: // ESCAPE
return "\x04\x4b\x72\x46\x79";
case 51: // ENTER
return "\x04\x4b\x72\x46\x7a";
case 52: // TAB
return "\x04\x4b\x72\x46\x30";
case 53: // BACKSPACE
return "\x04\x4b\x72\x46\x31";
case 54: // INSERT
return "\x04\x4b\x72\x46\x32";
case 55: // DELETE
return "\x04\x4b\x72\x46\x33";
case 56: // RIGHT
return "\x04\x4b\x72\x46\x34";
case 57: // LEFT
return "\x04\x4b\x72\x46\x35";
case 58: // DOWN
return "\x04\x4b\x72\x46\x36";
case 59: // UP
return "\x04\x4b\x72\x46\x37";
case 60: // PAGE_UP
return "\x04\x4b\x72\x46\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x72\x46\x39";
case 62: // HOME
return "\x04\x4b\x72\x46\x2e";
case 63: // END
return "\x04\x4b\x72\x46\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x72\x46\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x72\x46\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x72\x46\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x72\x46\x5e";
case 68: // PAUSE
return "\x04\x4b\x72\x46\x21";
case 69: // F1
return "\x04\x4b\x72\x46\x2f";
case 70: // F2
return "\x04\x4b\x72\x46\x2a";
case 71: // F3
return "\x04\x4b\x72\x46\x3f";
case 72: // F4
return "\x04\x4b\x72\x46\x26";
case 73: // F5
return "\x04\x4b\x72\x46\x3c";
case 74: // F6
return "\x04\x4b\x72\x46\x3e";
case 75: // F7
return "\x04\x4b\x72\x46\x28";
case 76: // F8
return "\x04\x4b\x72\x46\x29";
case 77: // F9
return "\x04\x4b\x72\x46\x5b";
case 78: // F10
return "\x04\x4b\x72\x46\x5d";
case 79: // F11
return "\x04\x4b\x72\x46\x7b";
case 80: // F12
return "\x04\x4b\x72\x46\x7d";
case 81: // F13
return "\x04\x4b\x72\x46\x40";
case 82: // F14
return "\x04\x4b\x72\x46\x25";
case 83: // F15
return "\x04\x4b\x72\x46\x24";
case 84: // F16
return "\x04\x4b\x72\x46\x23";
case 85: // F17
return "\x05\x4b\x72\x46\x42\x41";
case 86: // F18
return "\x05\x4b\x72\x46\x42\x42";
case 87: // F19
return "\x05\x4b\x72\x46\x42\x43";
case 88: // F20
return "\x05\x4b\x72\x46\x42\x44";
case 89: // F21
return "\x05\x4b\x72\x46\x42\x45";
case 90: // F22
return "\x05\x4b\x72\x46\x42\x46";
case 91: // F23
return "\x05\x4b\x72\x46\x42\x47";
case 92: // F24
return "\x05\x4b\x72\x46\x42\x48";
case 93: // F25
return "\x05\x4b\x72\x46\x42\x49";
case 94: // KP_0
return "\x05\x4b\x72\x46\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x72\x46\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x72\x46\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x72\x46\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x72\x46\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x72\x46\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x72\x46\x42\x50";
case 101: // KP_7
return "\x05\x4b\x72\x46\x42\x51";
case 102: // KP_8
return "\x05\x4b\x72\x46\x42\x52";
case 103: // KP_9
return "\x05\x4b\x72\x46\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x72\x46\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x72\x46\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x72\x46\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x72\x46\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x72\x46\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x72\x46\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x72\x46\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x72\x46\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x72\x46\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x72\x46\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x72\x46\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x72\x46\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x72\x46\x42\x68";
} // end switch(key)
case 0x4:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x43\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x72\x43\x42";
case 2: // COMMA
return "\x04\x4b\x72\x43\x43";
case 3: // MINUS
return "\x04\x4b\x72\x43\x44";
case 4: // PERIOD
return "\x04\x4b\x72\x43\x45";
case 5: // SLASH
return "\x04\x4b\x72\x43\x46";
case 6: // 0
return "\x04\x4b\x72\x43\x47";
case 7: // 1
return "\x04\x4b\x72\x43\x48";
case 8: // 2
return "\x04\x4b\x72\x43\x49";
case 9: // 3
return "\x04\x4b\x72\x43\x4a";
case 10: // 4
return "\x04\x4b\x72\x43\x4b";
case 11: // 5
return "\x04\x4b\x72\x43\x4c";
case 12: // 6
return "\x04\x4b\x72\x43\x4d";
case 13: // 7
return "\x04\x4b\x72\x43\x4e";
case 14: // 8
return "\x04\x4b\x72\x43\x4f";
case 15: // 9
return "\x04\x4b\x72\x43\x50";
case 16: // SEMICOLON
return "\x04\x4b\x72\x43\x51";
case 17: // EQUAL
return "\x04\x4b\x72\x43\x52";
case 18: // A
return "\x04\x4b\x72\x43\x53";
case 19: // B
return "\x04\x4b\x72\x43\x54";
case 20: // C
return "\x04\x4b\x72\x43\x55";
case 21: // D
return "\x04\x4b\x72\x43\x56";
case 22: // E
return "\x04\x4b\x72\x43\x57";
case 23: // F
return "\x04\x4b\x72\x43\x58";
case 24: // G
return "\x04\x4b\x72\x43\x59";
case 25: // H
return "\x04\x4b\x72\x43\x5a";
case 26: // I
return "\x04\x4b\x72\x43\x61";
case 27: // J
return "\x04\x4b\x72\x43\x62";
case 28: // K
return "\x04\x4b\x72\x43\x63";
case 29: // L
return "\x04\x4b\x72\x43\x64";
case 30: // M
return "\x04\x4b\x72\x43\x65";
case 31: // N
return "\x04\x4b\x72\x43\x66";
case 32: // O
return "\x04\x4b\x72\x43\x67";
case 33: // P
return "\x04\x4b\x72\x43\x68";
case 34: // Q
return "\x04\x4b\x72\x43\x69";
case 35: // R
return "\x04\x4b\x72\x43\x6a";
case 36: // S
return "\x04\x4b\x72\x43\x6b";
case 37: // T
return "\x04\x4b\x72\x43\x6c";
case 38: // U
return "\x04\x4b\x72\x43\x6d";
case 39: // V
return "\x04\x4b\x72\x43\x6e";
case 40: // W
return "\x04\x4b\x72\x43\x6f";
case 41: // X
return "\x04\x4b\x72\x43\x70";
case 42: // Y
return "\x04\x4b\x72\x43\x71";
case 43: // Z
return "\x04\x4b\x72\x43\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x72\x43\x73";
case 45: // BACKSLASH
return "\x04\x4b\x72\x43\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x72\x43\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x72\x43\x76";
case 48: // WORLD_1
return "\x04\x4b\x72\x43\x77";
case 49: // WORLD_2
return "\x04\x4b\x72\x43\x78";
case 50: // ESCAPE
return "\x04\x4b\x72\x43\x79";
case 51: // ENTER
return "\x04\x4b\x72\x43\x7a";
case 52: // TAB
return "\x04\x4b\x72\x43\x30";
case 53: // BACKSPACE
return "\x04\x4b\x72\x43\x31";
case 54: // INSERT
return "\x04\x4b\x72\x43\x32";
case 55: // DELETE
return "\x04\x4b\x72\x43\x33";
case 56: // RIGHT
return "\x04\x4b\x72\x43\x34";
case 57: // LEFT
return "\x04\x4b\x72\x43\x35";
case 58: // DOWN
return "\x04\x4b\x72\x43\x36";
case 59: // UP
return "\x04\x4b\x72\x43\x37";
case 60: // PAGE_UP
return "\x04\x4b\x72\x43\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x72\x43\x39";
case 62: // HOME
return "\x04\x4b\x72\x43\x2e";
case 63: // END
return "\x04\x4b\x72\x43\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x72\x43\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x72\x43\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x72\x43\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x72\x43\x5e";
case 68: // PAUSE
return "\x04\x4b\x72\x43\x21";
case 69: // F1
return "\x04\x4b\x72\x43\x2f";
case 70: // F2
return "\x04\x4b\x72\x43\x2a";
case 71: // F3
return "\x04\x4b\x72\x43\x3f";
case 72: // F4
return "\x04\x4b\x72\x43\x26";
case 73: // F5
return "\x04\x4b\x72\x43\x3c";
case 74: // F6
return "\x04\x4b\x72\x43\x3e";
case 75: // F7
return "\x04\x4b\x72\x43\x28";
case 76: // F8
return "\x04\x4b\x72\x43\x29";
case 77: // F9
return "\x04\x4b\x72\x43\x5b";
case 78: // F10
return "\x04\x4b\x72\x43\x5d";
case 79: // F11
return "\x04\x4b\x72\x43\x7b";
case 80: // F12
return "\x04\x4b\x72\x43\x7d";
case 81: // F13
return "\x04\x4b\x72\x43\x40";
case 82: // F14
return "\x04\x4b\x72\x43\x25";
case 83: // F15
return "\x04\x4b\x72\x43\x24";
case 84: // F16
return "\x04\x4b\x72\x43\x23";
case 85: // F17
return "\x05\x4b\x72\x43\x42\x41";
case 86: // F18
return "\x05\x4b\x72\x43\x42\x42";
case 87: // F19
return "\x05\x4b\x72\x43\x42\x43";
case 88: // F20
return "\x05\x4b\x72\x43\x42\x44";
case 89: // F21
return "\x05\x4b\x72\x43\x42\x45";
case 90: // F22
return "\x05\x4b\x72\x43\x42\x46";
case 91: // F23
return "\x05\x4b\x72\x43\x42\x47";
case 92: // F24
return "\x05\x4b\x72\x43\x42\x48";
case 93: // F25
return "\x05\x4b\x72\x43\x42\x49";
case 94: // KP_0
return "\x05\x4b\x72\x43\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x72\x43\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x72\x43\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x72\x43\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x72\x43\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x72\x43\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x72\x43\x42\x50";
case 101: // KP_7
return "\x05\x4b\x72\x43\x42\x51";
case 102: // KP_8
return "\x05\x4b\x72\x43\x42\x52";
case 103: // KP_9
return "\x05\x4b\x72\x43\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x72\x43\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x72\x43\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x72\x43\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x72\x43\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x72\x43\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x72\x43\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x72\x43\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x72\x43\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x72\x43\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x72\x43\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x72\x43\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x72\x43\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x72\x43\x42\x68";
} // end switch(key)
case 0x5:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x44\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x72\x44\x42";
case 2: // COMMA
return "\x04\x4b\x72\x44\x43";
case 3: // MINUS
return "\x04\x4b\x72\x44\x44";
case 4: // PERIOD
return "\x04\x4b\x72\x44\x45";
case 5: // SLASH
return "\x04\x4b\x72\x44\x46";
case 6: // 0
return "\x04\x4b\x72\x44\x47";
case 7: // 1
return "\x04\x4b\x72\x44\x48";
case 8: // 2
return "\x04\x4b\x72\x44\x49";
case 9: // 3
return "\x04\x4b\x72\x44\x4a";
case 10: // 4
return "\x04\x4b\x72\x44\x4b";
case 11: // 5
return "\x04\x4b\x72\x44\x4c";
case 12: // 6
return "\x04\x4b\x72\x44\x4d";
case 13: // 7
return "\x04\x4b\x72\x44\x4e";
case 14: // 8
return "\x04\x4b\x72\x44\x4f";
case 15: // 9
return "\x04\x4b\x72\x44\x50";
case 16: // SEMICOLON
return "\x04\x4b\x72\x44\x51";
case 17: // EQUAL
return "\x04\x4b\x72\x44\x52";
case 18: // A
return "\x04\x4b\x72\x44\x53";
case 19: // B
return "\x04\x4b\x72\x44\x54";
case 20: // C
return "\x04\x4b\x72\x44\x55";
case 21: // D
return "\x04\x4b\x72\x44\x56";
case 22: // E
return "\x04\x4b\x72\x44\x57";
case 23: // F
return "\x04\x4b\x72\x44\x58";
case 24: // G
return "\x04\x4b\x72\x44\x59";
case 25: // H
return "\x04\x4b\x72\x44\x5a";
case 26: // I
return "\x04\x4b\x72\x44\x61";
case 27: // J
return "\x04\x4b\x72\x44\x62";
case 28: // K
return "\x04\x4b\x72\x44\x63";
case 29: // L
return "\x04\x4b\x72\x44\x64";
case 30: // M
return "\x04\x4b\x72\x44\x65";
case 31: // N
return "\x04\x4b\x72\x44\x66";
case 32: // O
return "\x04\x4b\x72\x44\x67";
case 33: // P
return "\x04\x4b\x72\x44\x68";
case 34: // Q
return "\x04\x4b\x72\x44\x69";
case 35: // R
return "\x04\x4b\x72\x44\x6a";
case 36: // S
return "\x04\x4b\x72\x44\x6b";
case 37: // T
return "\x04\x4b\x72\x44\x6c";
case 38: // U
return "\x04\x4b\x72\x44\x6d";
case 39: // V
return "\x04\x4b\x72\x44\x6e";
case 40: // W
return "\x04\x4b\x72\x44\x6f";
case 41: // X
return "\x04\x4b\x72\x44\x70";
case 42: // Y
return "\x04\x4b\x72\x44\x71";
case 43: // Z
return "\x04\x4b\x72\x44\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x72\x44\x73";
case 45: // BACKSLASH
return "\x04\x4b\x72\x44\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x72\x44\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x72\x44\x76";
case 48: // WORLD_1
return "\x04\x4b\x72\x44\x77";
case 49: // WORLD_2
return "\x04\x4b\x72\x44\x78";
case 50: // ESCAPE
return "\x04\x4b\x72\x44\x79";
case 51: // ENTER
return "\x04\x4b\x72\x44\x7a";
case 52: // TAB
return "\x04\x4b\x72\x44\x30";
case 53: // BACKSPACE
return "\x04\x4b\x72\x44\x31";
case 54: // INSERT
return "\x04\x4b\x72\x44\x32";
case 55: // DELETE
return "\x04\x4b\x72\x44\x33";
case 56: // RIGHT
return "\x04\x4b\x72\x44\x34";
case 57: // LEFT
return "\x04\x4b\x72\x44\x35";
case 58: // DOWN
return "\x04\x4b\x72\x44\x36";
case 59: // UP
return "\x04\x4b\x72\x44\x37";
case 60: // PAGE_UP
return "\x04\x4b\x72\x44\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x72\x44\x39";
case 62: // HOME
return "\x04\x4b\x72\x44\x2e";
case 63: // END
return "\x04\x4b\x72\x44\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x72\x44\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x72\x44\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x72\x44\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x72\x44\x5e";
case 68: // PAUSE
return "\x04\x4b\x72\x44\x21";
case 69: // F1
return "\x04\x4b\x72\x44\x2f";
case 70: // F2
return "\x04\x4b\x72\x44\x2a";
case 71: // F3
return "\x04\x4b\x72\x44\x3f";
case 72: // F4
return "\x04\x4b\x72\x44\x26";
case 73: // F5
return "\x04\x4b\x72\x44\x3c";
case 74: // F6
return "\x04\x4b\x72\x44\x3e";
case 75: // F7
return "\x04\x4b\x72\x44\x28";
case 76: // F8
return "\x04\x4b\x72\x44\x29";
case 77: // F9
return "\x04\x4b\x72\x44\x5b";
case 78: // F10
return "\x04\x4b\x72\x44\x5d";
case 79: // F11
return "\x04\x4b\x72\x44\x7b";
case 80: // F12
return "\x04\x4b\x72\x44\x7d";
case 81: // F13
return "\x04\x4b\x72\x44\x40";
case 82: // F14
return "\x04\x4b\x72\x44\x25";
case 83: // F15
return "\x04\x4b\x72\x44\x24";
case 84: // F16
return "\x04\x4b\x72\x44\x23";
case 85: // F17
return "\x05\x4b\x72\x44\x42\x41";
case 86: // F18
return "\x05\x4b\x72\x44\x42\x42";
case 87: // F19
return "\x05\x4b\x72\x44\x42\x43";
case 88: // F20
return "\x05\x4b\x72\x44\x42\x44";
case 89: // F21
return "\x05\x4b\x72\x44\x42\x45";
case 90: // F22
return "\x05\x4b\x72\x44\x42\x46";
case 91: // F23
return "\x05\x4b\x72\x44\x42\x47";
case 92: // F24
return "\x05\x4b\x72\x44\x42\x48";
case 93: // F25
return "\x05\x4b\x72\x44\x42\x49";
case 94: // KP_0
return "\x05\x4b\x72\x44\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x72\x44\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x72\x44\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x72\x44\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x72\x44\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x72\x44\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x72\x44\x42\x50";
case 101: // KP_7
return "\x05\x4b\x72\x44\x42\x51";
case 102: // KP_8
return "\x05\x4b\x72\x44\x42\x52";
case 103: // KP_9
return "\x05\x4b\x72\x44\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x72\x44\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x72\x44\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x72\x44\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x72\x44\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x72\x44\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x72\x44\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x72\x44\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x72\x44\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x72\x44\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x72\x44\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x72\x44\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x72\x44\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x72\x44\x42\x68";
} // end switch(key)
case 0x6:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x47\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x72\x47\x42";
case 2: // COMMA
return "\x04\x4b\x72\x47\x43";
case 3: // MINUS
return "\x04\x4b\x72\x47\x44";
case 4: // PERIOD
return "\x04\x4b\x72\x47\x45";
case 5: // SLASH
return "\x04\x4b\x72\x47\x46";
case 6: // 0
return "\x04\x4b\x72\x47\x47";
case 7: // 1
return "\x04\x4b\x72\x47\x48";
case 8: // 2
return "\x04\x4b\x72\x47\x49";
case 9: // 3
return "\x04\x4b\x72\x47\x4a";
case 10: // 4
return "\x04\x4b\x72\x47\x4b";
case 11: // 5
return "\x04\x4b\x72\x47\x4c";
case 12: // 6
return "\x04\x4b\x72\x47\x4d";
case 13: // 7
return "\x04\x4b\x72\x47\x4e";
case 14: // 8
return "\x04\x4b\x72\x47\x4f";
case 15: // 9
return "\x04\x4b\x72\x47\x50";
case 16: // SEMICOLON
return "\x04\x4b\x72\x47\x51";
case 17: // EQUAL
return "\x04\x4b\x72\x47\x52";
case 18: // A
return "\x04\x4b\x72\x47\x53";
case 19: // B
return "\x04\x4b\x72\x47\x54";
case 20: // C
return "\x04\x4b\x72\x47\x55";
case 21: // D
return "\x04\x4b\x72\x47\x56";
case 22: // E
return "\x04\x4b\x72\x47\x57";
case 23: // F
return "\x04\x4b\x72\x47\x58";
case 24: // G
return "\x04\x4b\x72\x47\x59";
case 25: // H
return "\x04\x4b\x72\x47\x5a";
case 26: // I
return "\x04\x4b\x72\x47\x61";
case 27: // J
return "\x04\x4b\x72\x47\x62";
case 28: // K
return "\x04\x4b\x72\x47\x63";
case 29: // L
return "\x04\x4b\x72\x47\x64";
case 30: // M
return "\x04\x4b\x72\x47\x65";
case 31: // N
return "\x04\x4b\x72\x47\x66";
case 32: // O
return "\x04\x4b\x72\x47\x67";
case 33: // P
return "\x04\x4b\x72\x47\x68";
case 34: // Q
return "\x04\x4b\x72\x47\x69";
case 35: // R
return "\x04\x4b\x72\x47\x6a";
case 36: // S
return "\x04\x4b\x72\x47\x6b";
case 37: // T
return "\x04\x4b\x72\x47\x6c";
case 38: // U
return "\x04\x4b\x72\x47\x6d";
case 39: // V
return "\x04\x4b\x72\x47\x6e";
case 40: // W
return "\x04\x4b\x72\x47\x6f";
case 41: // X
return "\x04\x4b\x72\x47\x70";
case 42: // Y
return "\x04\x4b\x72\x47\x71";
case 43: // Z
return "\x04\x4b\x72\x47\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x72\x47\x73";
case 45: // BACKSLASH
return "\x04\x4b\x72\x47\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x72\x47\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x72\x47\x76";
case 48: // WORLD_1
return "\x04\x4b\x72\x47\x77";
case 49: // WORLD_2
return "\x04\x4b\x72\x47\x78";
case 50: // ESCAPE
return "\x04\x4b\x72\x47\x79";
case 51: // ENTER
return "\x04\x4b\x72\x47\x7a";
case 52: // TAB
return "\x04\x4b\x72\x47\x30";
case 53: // BACKSPACE
return "\x04\x4b\x72\x47\x31";
case 54: // INSERT
return "\x04\x4b\x72\x47\x32";
case 55: // DELETE
return "\x04\x4b\x72\x47\x33";
case 56: // RIGHT
return "\x04\x4b\x72\x47\x34";
case 57: // LEFT
return "\x04\x4b\x72\x47\x35";
case 58: // DOWN
return "\x04\x4b\x72\x47\x36";
case 59: // UP
return "\x04\x4b\x72\x47\x37";
case 60: // PAGE_UP
return "\x04\x4b\x72\x47\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x72\x47\x39";
case 62: // HOME
return "\x04\x4b\x72\x47\x2e";
case 63: // END
return "\x04\x4b\x72\x47\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x72\x47\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x72\x47\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x72\x47\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x72\x47\x5e";
case 68: // PAUSE
return "\x04\x4b\x72\x47\x21";
case 69: // F1
return "\x04\x4b\x72\x47\x2f";
case 70: // F2
return "\x04\x4b\x72\x47\x2a";
case 71: // F3
return "\x04\x4b\x72\x47\x3f";
case 72: // F4
return "\x04\x4b\x72\x47\x26";
case 73: // F5
return "\x04\x4b\x72\x47\x3c";
case 74: // F6
return "\x04\x4b\x72\x47\x3e";
case 75: // F7
return "\x04\x4b\x72\x47\x28";
case 76: // F8
return "\x04\x4b\x72\x47\x29";
case 77: // F9
return "\x04\x4b\x72\x47\x5b";
case 78: // F10
return "\x04\x4b\x72\x47\x5d";
case 79: // F11
return "\x04\x4b\x72\x47\x7b";
case 80: // F12
return "\x04\x4b\x72\x47\x7d";
case 81: // F13
return "\x04\x4b\x72\x47\x40";
case 82: // F14
return "\x04\x4b\x72\x47\x25";
case 83: // F15
return "\x04\x4b\x72\x47\x24";
case 84: // F16
return "\x04\x4b\x72\x47\x23";
case 85: // F17
return "\x05\x4b\x72\x47\x42\x41";
case 86: // F18
return "\x05\x4b\x72\x47\x42\x42";
case 87: // F19
return "\x05\x4b\x72\x47\x42\x43";
case 88: // F20
return "\x05\x4b\x72\x47\x42\x44";
case 89: // F21
return "\x05\x4b\x72\x47\x42\x45";
case 90: // F22
return "\x05\x4b\x72\x47\x42\x46";
case 91: // F23
return "\x05\x4b\x72\x47\x42\x47";
case 92: // F24
return "\x05\x4b\x72\x47\x42\x48";
case 93: // F25
return "\x05\x4b\x72\x47\x42\x49";
case 94: // KP_0
return "\x05\x4b\x72\x47\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x72\x47\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x72\x47\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x72\x47\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x72\x47\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x72\x47\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x72\x47\x42\x50";
case 101: // KP_7
return "\x05\x4b\x72\x47\x42\x51";
case 102: // KP_8
return "\x05\x4b\x72\x47\x42\x52";
case 103: // KP_9
return "\x05\x4b\x72\x47\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x72\x47\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x72\x47\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x72\x47\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x72\x47\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x72\x47\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x72\x47\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x72\x47\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x72\x47\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x72\x47\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x72\x47\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x72\x47\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x72\x47\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x72\x47\x42\x68";
} // end switch(key)
case 0x7:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x48\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x72\x48\x42";
case 2: // COMMA
return "\x04\x4b\x72\x48\x43";
case 3: // MINUS
return "\x04\x4b\x72\x48\x44";
case 4: // PERIOD
return "\x04\x4b\x72\x48\x45";
case 5: // SLASH
return "\x04\x4b\x72\x48\x46";
case 6: // 0
return "\x04\x4b\x72\x48\x47";
case 7: // 1
return "\x04\x4b\x72\x48\x48";
case 8: // 2
return "\x04\x4b\x72\x48\x49";
case 9: // 3
return "\x04\x4b\x72\x48\x4a";
case 10: // 4
return "\x04\x4b\x72\x48\x4b";
case 11: // 5
return "\x04\x4b\x72\x48\x4c";
case 12: // 6
return "\x04\x4b\x72\x48\x4d";
case 13: // 7
return "\x04\x4b\x72\x48\x4e";
case 14: // 8
return "\x04\x4b\x72\x48\x4f";
case 15: // 9
return "\x04\x4b\x72\x48\x50";
case 16: // SEMICOLON
return "\x04\x4b\x72\x48\x51";
case 17: // EQUAL
return "\x04\x4b\x72\x48\x52";
case 18: // A
return "\x04\x4b\x72\x48\x53";
case 19: // B
return "\x04\x4b\x72\x48\x54";
case 20: // C
return "\x04\x4b\x72\x48\x55";
case 21: // D
return "\x04\x4b\x72\x48\x56";
case 22: // E
return "\x04\x4b\x72\x48\x57";
case 23: // F
return "\x04\x4b\x72\x48\x58";
case 24: // G
return "\x04\x4b\x72\x48\x59";
case 25: // H
return "\x04\x4b\x72\x48\x5a";
case 26: // I
return "\x04\x4b\x72\x48\x61";
case 27: // J
return "\x04\x4b\x72\x48\x62";
case 28: // K
return "\x04\x4b\x72\x48\x63";
case 29: // L
return "\x04\x4b\x72\x48\x64";
case 30: // M
return "\x04\x4b\x72\x48\x65";
case 31: // N
return "\x04\x4b\x72\x48\x66";
case 32: // O
return "\x04\x4b\x72\x48\x67";
case 33: // P
return "\x04\x4b\x72\x48\x68";
case 34: // Q
return "\x04\x4b\x72\x48\x69";
case 35: // R
return "\x04\x4b\x72\x48\x6a";
case 36: // S
return "\x04\x4b\x72\x48\x6b";
case 37: // T
return "\x04\x4b\x72\x48\x6c";
case 38: // U
return "\x04\x4b\x72\x48\x6d";
case 39: // V
return "\x04\x4b\x72\x48\x6e";
case 40: // W
return "\x04\x4b\x72\x48\x6f";
case 41: // X
return "\x04\x4b\x72\x48\x70";
case 42: // Y
return "\x04\x4b\x72\x48\x71";
case 43: // Z
return "\x04\x4b\x72\x48\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x72\x48\x73";
case 45: // BACKSLASH
return "\x04\x4b\x72\x48\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x72\x48\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x72\x48\x76";
case 48: // WORLD_1
return "\x04\x4b\x72\x48\x77";
case 49: // WORLD_2
return "\x04\x4b\x72\x48\x78";
case 50: // ESCAPE
return "\x04\x4b\x72\x48\x79";
case 51: // ENTER
return "\x04\x4b\x72\x48\x7a";
case 52: // TAB
return "\x04\x4b\x72\x48\x30";
case 53: // BACKSPACE
return "\x04\x4b\x72\x48\x31";
case 54: // INSERT
return "\x04\x4b\x72\x48\x32";
case 55: // DELETE
return "\x04\x4b\x72\x48\x33";
case 56: // RIGHT
return "\x04\x4b\x72\x48\x34";
case 57: // LEFT
return "\x04\x4b\x72\x48\x35";
case 58: // DOWN
return "\x04\x4b\x72\x48\x36";
case 59: // UP
return "\x04\x4b\x72\x48\x37";
case 60: // PAGE_UP
return "\x04\x4b\x72\x48\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x72\x48\x39";
case 62: // HOME
return "\x04\x4b\x72\x48\x2e";
case 63: // END
return "\x04\x4b\x72\x48\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x72\x48\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x72\x48\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x72\x48\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x72\x48\x5e";
case 68: // PAUSE
return "\x04\x4b\x72\x48\x21";
case 69: // F1
return "\x04\x4b\x72\x48\x2f";
case 70: // F2
return "\x04\x4b\x72\x48\x2a";
case 71: // F3
return "\x04\x4b\x72\x48\x3f";
case 72: // F4
return "\x04\x4b\x72\x48\x26";
case 73: // F5
return "\x04\x4b\x72\x48\x3c";
case 74: // F6
return "\x04\x4b\x72\x48\x3e";
case 75: // F7
return "\x04\x4b\x72\x48\x28";
case 76: // F8
return "\x04\x4b\x72\x48\x29";
case 77: // F9
return "\x04\x4b\x72\x48\x5b";
case 78: // F10
return "\x04\x4b\x72\x48\x5d";
case 79: // F11
return "\x04\x4b\x72\x48\x7b";
case 80: // F12
return "\x04\x4b\x72\x48\x7d";
case 81: // F13
return "\x04\x4b\x72\x48\x40";
case 82: // F14
return "\x04\x4b\x72\x48\x25";
case 83: // F15
return "\x04\x4b\x72\x48\x24";
case 84: // F16
return "\x04\x4b\x72\x48\x23";
case 85: // F17
return "\x05\x4b\x72\x48\x42\x41";
case 86: // F18
return "\x05\x4b\x72\x48\x42\x42";
case 87: // F19
return "\x05\x4b\x72\x48\x42\x43";
case 88: // F20
return "\x05\x4b\x72\x48\x42\x44";
case 89: // F21
return "\x05\x4b\x72\x48\x42\x45";
case 90: // F22
return "\x05\x4b\x72\x48\x42\x46";
case 91: // F23
return "\x05\x4b\x72\x48\x42\x47";
case 92: // F24
return "\x05\x4b\x72\x48\x42\x48";
case 93: // F25
return "\x05\x4b\x72\x48\x42\x49";
case 94: // KP_0
return "\x05\x4b\x72\x48\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x72\x48\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x72\x48\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x72\x48\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x72\x48\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x72\x48\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x72\x48\x42\x50";
case 101: // KP_7
return "\x05\x4b\x72\x48\x42\x51";
case 102: // KP_8
return "\x05\x4b\x72\x48\x42\x52";
case 103: // KP_9
return "\x05\x4b\x72\x48\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x72\x48\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x72\x48\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x72\x48\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x72\x48\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x72\x48\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x72\x48\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x72\x48\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x72\x48\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x72\x48\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x72\x48\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x72\x48\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x72\x48\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x72\x48\x42\x68";
} // end switch(key)
case 0x8:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x49\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x72\x49\x42";
case 2: // COMMA
return "\x04\x4b\x72\x49\x43";
case 3: // MINUS
return "\x04\x4b\x72\x49\x44";
case 4: // PERIOD
return "\x04\x4b\x72\x49\x45";
case 5: // SLASH
return "\x04\x4b\x72\x49\x46";
case 6: // 0
return "\x04\x4b\x72\x49\x47";
case 7: // 1
return "\x04\x4b\x72\x49\x48";
case 8: // 2
return "\x04\x4b\x72\x49\x49";
case 9: // 3
return "\x04\x4b\x72\x49\x4a";
case 10: // 4
return "\x04\x4b\x72\x49\x4b";
case 11: // 5
return "\x04\x4b\x72\x49\x4c";
case 12: // 6
return "\x04\x4b\x72\x49\x4d";
case 13: // 7
return "\x04\x4b\x72\x49\x4e";
case 14: // 8
return "\x04\x4b\x72\x49\x4f";
case 15: // 9
return "\x04\x4b\x72\x49\x50";
case 16: // SEMICOLON
return "\x04\x4b\x72\x49\x51";
case 17: // EQUAL
return "\x04\x4b\x72\x49\x52";
case 18: // A
return "\x04\x4b\x72\x49\x53";
case 19: // B
return "\x04\x4b\x72\x49\x54";
case 20: // C
return "\x04\x4b\x72\x49\x55";
case 21: // D
return "\x04\x4b\x72\x49\x56";
case 22: // E
return "\x04\x4b\x72\x49\x57";
case 23: // F
return "\x04\x4b\x72\x49\x58";
case 24: // G
return "\x04\x4b\x72\x49\x59";
case 25: // H
return "\x04\x4b\x72\x49\x5a";
case 26: // I
return "\x04\x4b\x72\x49\x61";
case 27: // J
return "\x04\x4b\x72\x49\x62";
case 28: // K
return "\x04\x4b\x72\x49\x63";
case 29: // L
return "\x04\x4b\x72\x49\x64";
case 30: // M
return "\x04\x4b\x72\x49\x65";
case 31: // N
return "\x04\x4b\x72\x49\x66";
case 32: // O
return "\x04\x4b\x72\x49\x67";
case 33: // P
return "\x04\x4b\x72\x49\x68";
case 34: // Q
return "\x04\x4b\x72\x49\x69";
case 35: // R
return "\x04\x4b\x72\x49\x6a";
case 36: // S
return "\x04\x4b\x72\x49\x6b";
case 37: // T
return "\x04\x4b\x72\x49\x6c";
case 38: // U
return "\x04\x4b\x72\x49\x6d";
case 39: // V
return "\x04\x4b\x72\x49\x6e";
case 40: // W
return "\x04\x4b\x72\x49\x6f";
case 41: // X
return "\x04\x4b\x72\x49\x70";
case 42: // Y
return "\x04\x4b\x72\x49\x71";
case 43: // Z
return "\x04\x4b\x72\x49\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x72\x49\x73";
case 45: // BACKSLASH
return "\x04\x4b\x72\x49\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x72\x49\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x72\x49\x76";
case 48: // WORLD_1
return "\x04\x4b\x72\x49\x77";
case 49: // WORLD_2
return "\x04\x4b\x72\x49\x78";
case 50: // ESCAPE
return "\x04\x4b\x72\x49\x79";
case 51: // ENTER
return "\x04\x4b\x72\x49\x7a";
case 52: // TAB
return "\x04\x4b\x72\x49\x30";
case 53: // BACKSPACE
return "\x04\x4b\x72\x49\x31";
case 54: // INSERT
return "\x04\x4b\x72\x49\x32";
case 55: // DELETE
return "\x04\x4b\x72\x49\x33";
case 56: // RIGHT
return "\x04\x4b\x72\x49\x34";
case 57: // LEFT
return "\x04\x4b\x72\x49\x35";
case 58: // DOWN
return "\x04\x4b\x72\x49\x36";
case 59: // UP
return "\x04\x4b\x72\x49\x37";
case 60: // PAGE_UP
return "\x04\x4b\x72\x49\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x72\x49\x39";
case 62: // HOME
return "\x04\x4b\x72\x49\x2e";
case 63: // END
return "\x04\x4b\x72\x49\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x72\x49\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x72\x49\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x72\x49\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x72\x49\x5e";
case 68: // PAUSE
return "\x04\x4b\x72\x49\x21";
case 69: // F1
return "\x04\x4b\x72\x49\x2f";
case 70: // F2
return "\x04\x4b\x72\x49\x2a";
case 71: // F3
return "\x04\x4b\x72\x49\x3f";
case 72: // F4
return "\x04\x4b\x72\x49\x26";
case 73: // F5
return "\x04\x4b\x72\x49\x3c";
case 74: // F6
return "\x04\x4b\x72\x49\x3e";
case 75: // F7
return "\x04\x4b\x72\x49\x28";
case 76: // F8
return "\x04\x4b\x72\x49\x29";
case 77: // F9
return "\x04\x4b\x72\x49\x5b";
case 78: // F10
return "\x04\x4b\x72\x49\x5d";
case 79: // F11
return "\x04\x4b\x72\x49\x7b";
case 80: // F12
return "\x04\x4b\x72\x49\x7d";
case 81: // F13
return "\x04\x4b\x72\x49\x40";
case 82: // F14
return "\x04\x4b\x72\x49\x25";
case 83: // F15
return "\x04\x4b\x72\x49\x24";
case 84: // F16
return "\x04\x4b\x72\x49\x23";
case 85: // F17
return "\x05\x4b\x72\x49\x42\x41";
case 86: // F18
return "\x05\x4b\x72\x49\x42\x42";
case 87: // F19
return "\x05\x4b\x72\x49\x42\x43";
case 88: // F20
return "\x05\x4b\x72\x49\x42\x44";
case 89: // F21
return "\x05\x4b\x72\x49\x42\x45";
case 90: // F22
return "\x05\x4b\x72\x49\x42\x46";
case 91: // F23
return "\x05\x4b\x72\x49\x42\x47";
case 92: // F24
return "\x05\x4b\x72\x49\x42\x48";
case 93: // F25
return "\x05\x4b\x72\x49\x42\x49";
case 94: // KP_0
return "\x05\x4b\x72\x49\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x72\x49\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x72\x49\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x72\x49\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x72\x49\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x72\x49\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x72\x49\x42\x50";
case 101: // KP_7
return "\x05\x4b\x72\x49\x42\x51";
case 102: // KP_8
return "\x05\x4b\x72\x49\x42\x52";
case 103: // KP_9
return "\x05\x4b\x72\x49\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x72\x49\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x72\x49\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x72\x49\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x72\x49\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x72\x49\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x72\x49\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x72\x49\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x72\x49\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x72\x49\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x72\x49\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x72\x49\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x72\x49\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x72\x49\x42\x68";
} // end switch(key)
case 0x9:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x4a\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x72\x4a\x42";
case 2: // COMMA
return "\x04\x4b\x72\x4a\x43";
case 3: // MINUS
return "\x04\x4b\x72\x4a\x44";
case 4: // PERIOD
return "\x04\x4b\x72\x4a\x45";
case 5: // SLASH
return "\x04\x4b\x72\x4a\x46";
case 6: // 0
return "\x04\x4b\x72\x4a\x47";
case 7: // 1
return "\x04\x4b\x72\x4a\x48";
case 8: // 2
return "\x04\x4b\x72\x4a\x49";
case 9: // 3
return "\x04\x4b\x72\x4a\x4a";
case 10: // 4
return "\x04\x4b\x72\x4a\x4b";
case 11: // 5
return "\x04\x4b\x72\x4a\x4c";
case 12: // 6
return "\x04\x4b\x72\x4a\x4d";
case 13: // 7
return "\x04\x4b\x72\x4a\x4e";
case 14: // 8
return "\x04\x4b\x72\x4a\x4f";
case 15: // 9
return "\x04\x4b\x72\x4a\x50";
case 16: // SEMICOLON
return "\x04\x4b\x72\x4a\x51";
case 17: // EQUAL
return "\x04\x4b\x72\x4a\x52";
case 18: // A
return "\x04\x4b\x72\x4a\x53";
case 19: // B
return "\x04\x4b\x72\x4a\x54";
case 20: // C
return "\x04\x4b\x72\x4a\x55";
case 21: // D
return "\x04\x4b\x72\x4a\x56";
case 22: // E
return "\x04\x4b\x72\x4a\x57";
case 23: // F
return "\x04\x4b\x72\x4a\x58";
case 24: // G
return "\x04\x4b\x72\x4a\x59";
case 25: // H
return "\x04\x4b\x72\x4a\x5a";
case 26: // I
return "\x04\x4b\x72\x4a\x61";
case 27: // J
return "\x04\x4b\x72\x4a\x62";
case 28: // K
return "\x04\x4b\x72\x4a\x63";
case 29: // L
return "\x04\x4b\x72\x4a\x64";
case 30: // M
return "\x04\x4b\x72\x4a\x65";
case 31: // N
return "\x04\x4b\x72\x4a\x66";
case 32: // O
return "\x04\x4b\x72\x4a\x67";
case 33: // P
return "\x04\x4b\x72\x4a\x68";
case 34: // Q
return "\x04\x4b\x72\x4a\x69";
case 35: // R
return "\x04\x4b\x72\x4a\x6a";
case 36: // S
return "\x04\x4b\x72\x4a\x6b";
case 37: // T
return "\x04\x4b\x72\x4a\x6c";
case 38: // U
return "\x04\x4b\x72\x4a\x6d";
case 39: // V
return "\x04\x4b\x72\x4a\x6e";
case 40: // W
return "\x04\x4b\x72\x4a\x6f";
case 41: // X
return "\x04\x4b\x72\x4a\x70";
case 42: // Y
return "\x04\x4b\x72\x4a\x71";
case 43: // Z
return "\x04\x4b\x72\x4a\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x72\x4a\x73";
case 45: // BACKSLASH
return "\x04\x4b\x72\x4a\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x72\x4a\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x72\x4a\x76";
case 48: // WORLD_1
return "\x04\x4b\x72\x4a\x77";
case 49: // WORLD_2
return "\x04\x4b\x72\x4a\x78";
case 50: // ESCAPE
return "\x04\x4b\x72\x4a\x79";
case 51: // ENTER
return "\x04\x4b\x72\x4a\x7a";
case 52: // TAB
return "\x04\x4b\x72\x4a\x30";
case 53: // BACKSPACE
return "\x04\x4b\x72\x4a\x31";
case 54: // INSERT
return "\x04\x4b\x72\x4a\x32";
case 55: // DELETE
return "\x04\x4b\x72\x4a\x33";
case 56: // RIGHT
return "\x04\x4b\x72\x4a\x34";
case 57: // LEFT
return "\x04\x4b\x72\x4a\x35";
case 58: // DOWN
return "\x04\x4b\x72\x4a\x36";
case 59: // UP
return "\x04\x4b\x72\x4a\x37";
case 60: // PAGE_UP
return "\x04\x4b\x72\x4a\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x72\x4a\x39";
case 62: // HOME
return "\x04\x4b\x72\x4a\x2e";
case 63: // END
return "\x04\x4b\x72\x4a\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x72\x4a\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x72\x4a\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x72\x4a\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x72\x4a\x5e";
case 68: // PAUSE
return "\x04\x4b\x72\x4a\x21";
case 69: // F1
return "\x04\x4b\x72\x4a\x2f";
case 70: // F2
return "\x04\x4b\x72\x4a\x2a";
case 71: // F3
return "\x04\x4b\x72\x4a\x3f";
case 72: // F4
return "\x04\x4b\x72\x4a\x26";
case 73: // F5
return "\x04\x4b\x72\x4a\x3c";
case 74: // F6
return "\x04\x4b\x72\x4a\x3e";
case 75: // F7
return "\x04\x4b\x72\x4a\x28";
case 76: // F8
return "\x04\x4b\x72\x4a\x29";
case 77: // F9
return "\x04\x4b\x72\x4a\x5b";
case 78: // F10
return "\x04\x4b\x72\x4a\x5d";
case 79: // F11
return "\x04\x4b\x72\x4a\x7b";
case 80: // F12
return "\x04\x4b\x72\x4a\x7d";
case 81: // F13
return "\x04\x4b\x72\x4a\x40";
case 82: // F14
return "\x04\x4b\x72\x4a\x25";
case 83: // F15
return "\x04\x4b\x72\x4a\x24";
case 84: // F16
return "\x04\x4b\x72\x4a\x23";
case 85: // F17
return "\x05\x4b\x72\x4a\x42\x41";
case 86: // F18
return "\x05\x4b\x72\x4a\x42\x42";
case 87: // F19
return "\x05\x4b\x72\x4a\x42\x43";
case 88: // F20
return "\x05\x4b\x72\x4a\x42\x44";
case 89: // F21
return "\x05\x4b\x72\x4a\x42\x45";
case 90: // F22
return "\x05\x4b\x72\x4a\x42\x46";
case 91: // F23
return "\x05\x4b\x72\x4a\x42\x47";
case 92: // F24
return "\x05\x4b\x72\x4a\x42\x48";
case 93: // F25
return "\x05\x4b\x72\x4a\x42\x49";
case 94: // KP_0
return "\x05\x4b\x72\x4a\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x72\x4a\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x72\x4a\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x72\x4a\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x72\x4a\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x72\x4a\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x72\x4a\x42\x50";
case 101: // KP_7
return "\x05\x4b\x72\x4a\x42\x51";
case 102: // KP_8
return "\x05\x4b\x72\x4a\x42\x52";
case 103: // KP_9
return "\x05\x4b\x72\x4a\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x72\x4a\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x72\x4a\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x72\x4a\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x72\x4a\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x72\x4a\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x72\x4a\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x72\x4a\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x72\x4a\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x72\x4a\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x72\x4a\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x72\x4a\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x72\x4a\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x72\x4a\x42\x68";
} // end switch(key)
case 0xa:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x4d\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x72\x4d\x42";
case 2: // COMMA
return "\x04\x4b\x72\x4d\x43";
case 3: // MINUS
return "\x04\x4b\x72\x4d\x44";
case 4: // PERIOD
return "\x04\x4b\x72\x4d\x45";
case 5: // SLASH
return "\x04\x4b\x72\x4d\x46";
case 6: // 0
return "\x04\x4b\x72\x4d\x47";
case 7: // 1
return "\x04\x4b\x72\x4d\x48";
case 8: // 2
return "\x04\x4b\x72\x4d\x49";
case 9: // 3
return "\x04\x4b\x72\x4d\x4a";
case 10: // 4
return "\x04\x4b\x72\x4d\x4b";
case 11: // 5
return "\x04\x4b\x72\x4d\x4c";
case 12: // 6
return "\x04\x4b\x72\x4d\x4d";
case 13: // 7
return "\x04\x4b\x72\x4d\x4e";
case 14: // 8
return "\x04\x4b\x72\x4d\x4f";
case 15: // 9
return "\x04\x4b\x72\x4d\x50";
case 16: // SEMICOLON
return "\x04\x4b\x72\x4d\x51";
case 17: // EQUAL
return "\x04\x4b\x72\x4d\x52";
case 18: // A
return "\x04\x4b\x72\x4d\x53";
case 19: // B
return "\x04\x4b\x72\x4d\x54";
case 20: // C
return "\x04\x4b\x72\x4d\x55";
case 21: // D
return "\x04\x4b\x72\x4d\x56";
case 22: // E
return "\x04\x4b\x72\x4d\x57";
case 23: // F
return "\x04\x4b\x72\x4d\x58";
case 24: // G
return "\x04\x4b\x72\x4d\x59";
case 25: // H
return "\x04\x4b\x72\x4d\x5a";
case 26: // I
return "\x04\x4b\x72\x4d\x61";
case 27: // J
return "\x04\x4b\x72\x4d\x62";
case 28: // K
return "\x04\x4b\x72\x4d\x63";
case 29: // L
return "\x04\x4b\x72\x4d\x64";
case 30: // M
return "\x04\x4b\x72\x4d\x65";
case 31: // N
return "\x04\x4b\x72\x4d\x66";
case 32: // O
return "\x04\x4b\x72\x4d\x67";
case 33: // P
return "\x04\x4b\x72\x4d\x68";
case 34: // Q
return "\x04\x4b\x72\x4d\x69";
case 35: // R
return "\x04\x4b\x72\x4d\x6a";
case 36: // S
return "\x04\x4b\x72\x4d\x6b";
case 37: // T
return "\x04\x4b\x72\x4d\x6c";
case 38: // U
return "\x04\x4b\x72\x4d\x6d";
case 39: // V
return "\x04\x4b\x72\x4d\x6e";
case 40: // W
return "\x04\x4b\x72\x4d\x6f";
case 41: // X
return "\x04\x4b\x72\x4d\x70";
case 42: // Y
return "\x04\x4b\x72\x4d\x71";
case 43: // Z
return "\x04\x4b\x72\x4d\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x72\x4d\x73";
case 45: // BACKSLASH
return "\x04\x4b\x72\x4d\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x72\x4d\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x72\x4d\x76";
case 48: // WORLD_1
return "\x04\x4b\x72\x4d\x77";
case 49: // WORLD_2
return "\x04\x4b\x72\x4d\x78";
case 50: // ESCAPE
return "\x04\x4b\x72\x4d\x79";
case 51: // ENTER
return "\x04\x4b\x72\x4d\x7a";
case 52: // TAB
return "\x04\x4b\x72\x4d\x30";
case 53: // BACKSPACE
return "\x04\x4b\x72\x4d\x31";
case 54: // INSERT
return "\x04\x4b\x72\x4d\x32";
case 55: // DELETE
return "\x04\x4b\x72\x4d\x33";
case 56: // RIGHT
return "\x04\x4b\x72\x4d\x34";
case 57: // LEFT
return "\x04\x4b\x72\x4d\x35";
case 58: // DOWN
return "\x04\x4b\x72\x4d\x36";
case 59: // UP
return "\x04\x4b\x72\x4d\x37";
case 60: // PAGE_UP
return "\x04\x4b\x72\x4d\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x72\x4d\x39";
case 62: // HOME
return "\x04\x4b\x72\x4d\x2e";
case 63: // END
return "\x04\x4b\x72\x4d\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x72\x4d\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x72\x4d\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x72\x4d\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x72\x4d\x5e";
case 68: // PAUSE
return "\x04\x4b\x72\x4d\x21";
case 69: // F1
return "\x04\x4b\x72\x4d\x2f";
case 70: // F2
return "\x04\x4b\x72\x4d\x2a";
case 71: // F3
return "\x04\x4b\x72\x4d\x3f";
case 72: // F4
return "\x04\x4b\x72\x4d\x26";
case 73: // F5
return "\x04\x4b\x72\x4d\x3c";
case 74: // F6
return "\x04\x4b\x72\x4d\x3e";
case 75: // F7
return "\x04\x4b\x72\x4d\x28";
case 76: // F8
return "\x04\x4b\x72\x4d\x29";
case 77: // F9
return "\x04\x4b\x72\x4d\x5b";
case 78: // F10
return "\x04\x4b\x72\x4d\x5d";
case 79: // F11
return "\x04\x4b\x72\x4d\x7b";
case 80: // F12
return "\x04\x4b\x72\x4d\x7d";
case 81: // F13
return "\x04\x4b\x72\x4d\x40";
case 82: // F14
return "\x04\x4b\x72\x4d\x25";
case 83: // F15
return "\x04\x4b\x72\x4d\x24";
case 84: // F16
return "\x04\x4b\x72\x4d\x23";
case 85: // F17
return "\x05\x4b\x72\x4d\x42\x41";
case 86: // F18
return "\x05\x4b\x72\x4d\x42\x42";
case 87: // F19
return "\x05\x4b\x72\x4d\x42\x43";
case 88: // F20
return "\x05\x4b\x72\x4d\x42\x44";
case 89: // F21
return "\x05\x4b\x72\x4d\x42\x45";
case 90: // F22
return "\x05\x4b\x72\x4d\x42\x46";
case 91: // F23
return "\x05\x4b\x72\x4d\x42\x47";
case 92: // F24
return "\x05\x4b\x72\x4d\x42\x48";
case 93: // F25
return "\x05\x4b\x72\x4d\x42\x49";
case 94: // KP_0
return "\x05\x4b\x72\x4d\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x72\x4d\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x72\x4d\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x72\x4d\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x72\x4d\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x72\x4d\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x72\x4d\x42\x50";
case 101: // KP_7
return "\x05\x4b\x72\x4d\x42\x51";
case 102: // KP_8
return "\x05\x4b\x72\x4d\x42\x52";
case 103: // KP_9
return "\x05\x4b\x72\x4d\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x72\x4d\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x72\x4d\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x72\x4d\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x72\x4d\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x72\x4d\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x72\x4d\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x72\x4d\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x72\x4d\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x72\x4d\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x72\x4d\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x72\x4d\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x72\x4d\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x72\x4d\x42\x68";
} // end switch(key)
case 0xb:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x4e\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x72\x4e\x42";
case 2: // COMMA
return "\x04\x4b\x72\x4e\x43";
case 3: // MINUS
return "\x04\x4b\x72\x4e\x44";
case 4: // PERIOD
return "\x04\x4b\x72\x4e\x45";
case 5: // SLASH
return "\x04\x4b\x72\x4e\x46";
case 6: // 0
return "\x04\x4b\x72\x4e\x47";
case 7: // 1
return "\x04\x4b\x72\x4e\x48";
case 8: // 2
return "\x04\x4b\x72\x4e\x49";
case 9: // 3
return "\x04\x4b\x72\x4e\x4a";
case 10: // 4
return "\x04\x4b\x72\x4e\x4b";
case 11: // 5
return "\x04\x4b\x72\x4e\x4c";
case 12: // 6
return "\x04\x4b\x72\x4e\x4d";
case 13: // 7
return "\x04\x4b\x72\x4e\x4e";
case 14: // 8
return "\x04\x4b\x72\x4e\x4f";
case 15: // 9
return "\x04\x4b\x72\x4e\x50";
case 16: // SEMICOLON
return "\x04\x4b\x72\x4e\x51";
case 17: // EQUAL
return "\x04\x4b\x72\x4e\x52";
case 18: // A
return "\x04\x4b\x72\x4e\x53";
case 19: // B
return "\x04\x4b\x72\x4e\x54";
case 20: // C
return "\x04\x4b\x72\x4e\x55";
case 21: // D
return "\x04\x4b\x72\x4e\x56";
case 22: // E
return "\x04\x4b\x72\x4e\x57";
case 23: // F
return "\x04\x4b\x72\x4e\x58";
case 24: // G
return "\x04\x4b\x72\x4e\x59";
case 25: // H
return "\x04\x4b\x72\x4e\x5a";
case 26: // I
return "\x04\x4b\x72\x4e\x61";
case 27: // J
return "\x04\x4b\x72\x4e\x62";
case 28: // K
return "\x04\x4b\x72\x4e\x63";
case 29: // L
return "\x04\x4b\x72\x4e\x64";
case 30: // M
return "\x04\x4b\x72\x4e\x65";
case 31: // N
return "\x04\x4b\x72\x4e\x66";
case 32: // O
return "\x04\x4b\x72\x4e\x67";
case 33: // P
return "\x04\x4b\x72\x4e\x68";
case 34: // Q
return "\x04\x4b\x72\x4e\x69";
case 35: // R
return "\x04\x4b\x72\x4e\x6a";
case 36: // S
return "\x04\x4b\x72\x4e\x6b";
case 37: // T
return "\x04\x4b\x72\x4e\x6c";
case 38: // U
return "\x04\x4b\x72\x4e\x6d";
case 39: // V
return "\x04\x4b\x72\x4e\x6e";
case 40: // W
return "\x04\x4b\x72\x4e\x6f";
case 41: // X
return "\x04\x4b\x72\x4e\x70";
case 42: // Y
return "\x04\x4b\x72\x4e\x71";
case 43: // Z
return "\x04\x4b\x72\x4e\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x72\x4e\x73";
case 45: // BACKSLASH
return "\x04\x4b\x72\x4e\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x72\x4e\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x72\x4e\x76";
case 48: // WORLD_1
return "\x04\x4b\x72\x4e\x77";
case 49: // WORLD_2
return "\x04\x4b\x72\x4e\x78";
case 50: // ESCAPE
return "\x04\x4b\x72\x4e\x79";
case 51: // ENTER
return "\x04\x4b\x72\x4e\x7a";
case 52: // TAB
return "\x04\x4b\x72\x4e\x30";
case 53: // BACKSPACE
return "\x04\x4b\x72\x4e\x31";
case 54: // INSERT
return "\x04\x4b\x72\x4e\x32";
case 55: // DELETE
return "\x04\x4b\x72\x4e\x33";
case 56: // RIGHT
return "\x04\x4b\x72\x4e\x34";
case 57: // LEFT
return "\x04\x4b\x72\x4e\x35";
case 58: // DOWN
return "\x04\x4b\x72\x4e\x36";
case 59: // UP
return "\x04\x4b\x72\x4e\x37";
case 60: // PAGE_UP
return "\x04\x4b\x72\x4e\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x72\x4e\x39";
case 62: // HOME
return "\x04\x4b\x72\x4e\x2e";
case 63: // END
return "\x04\x4b\x72\x4e\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x72\x4e\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x72\x4e\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x72\x4e\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x72\x4e\x5e";
case 68: // PAUSE
return "\x04\x4b\x72\x4e\x21";
case 69: // F1
return "\x04\x4b\x72\x4e\x2f";
case 70: // F2
return "\x04\x4b\x72\x4e\x2a";
case 71: // F3
return "\x04\x4b\x72\x4e\x3f";
case 72: // F4
return "\x04\x4b\x72\x4e\x26";
case 73: // F5
return "\x04\x4b\x72\x4e\x3c";
case 74: // F6
return "\x04\x4b\x72\x4e\x3e";
case 75: // F7
return "\x04\x4b\x72\x4e\x28";
case 76: // F8
return "\x04\x4b\x72\x4e\x29";
case 77: // F9
return "\x04\x4b\x72\x4e\x5b";
case 78: // F10
return "\x04\x4b\x72\x4e\x5d";
case 79: // F11
return "\x04\x4b\x72\x4e\x7b";
case 80: // F12
return "\x04\x4b\x72\x4e\x7d";
case 81: // F13
return "\x04\x4b\x72\x4e\x40";
case 82: // F14
return "\x04\x4b\x72\x4e\x25";
case 83: // F15
return "\x04\x4b\x72\x4e\x24";
case 84: // F16
return "\x04\x4b\x72\x4e\x23";
case 85: // F17
return "\x05\x4b\x72\x4e\x42\x41";
case 86: // F18
return "\x05\x4b\x72\x4e\x42\x42";
case 87: // F19
return "\x05\x4b\x72\x4e\x42\x43";
case 88: // F20
return "\x05\x4b\x72\x4e\x42\x44";
case 89: // F21
return "\x05\x4b\x72\x4e\x42\x45";
case 90: // F22
return "\x05\x4b\x72\x4e\x42\x46";
case 91: // F23
return "\x05\x4b\x72\x4e\x42\x47";
case 92: // F24
return "\x05\x4b\x72\x4e\x42\x48";
case 93: // F25
return "\x05\x4b\x72\x4e\x42\x49";
case 94: // KP_0
return "\x05\x4b\x72\x4e\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x72\x4e\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x72\x4e\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x72\x4e\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x72\x4e\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x72\x4e\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x72\x4e\x42\x50";
case 101: // KP_7
return "\x05\x4b\x72\x4e\x42\x51";
case 102: // KP_8
return "\x05\x4b\x72\x4e\x42\x52";
case 103: // KP_9
return "\x05\x4b\x72\x4e\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x72\x4e\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x72\x4e\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x72\x4e\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x72\x4e\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x72\x4e\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x72\x4e\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x72\x4e\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x72\x4e\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x72\x4e\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x72\x4e\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x72\x4e\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x72\x4e\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x72\x4e\x42\x68";
} // end switch(key)
case 0xc:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x4b\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x72\x4b\x42";
case 2: // COMMA
return "\x04\x4b\x72\x4b\x43";
case 3: // MINUS
return "\x04\x4b\x72\x4b\x44";
case 4: // PERIOD
return "\x04\x4b\x72\x4b\x45";
case 5: // SLASH
return "\x04\x4b\x72\x4b\x46";
case 6: // 0
return "\x04\x4b\x72\x4b\x47";
case 7: // 1
return "\x04\x4b\x72\x4b\x48";
case 8: // 2
return "\x04\x4b\x72\x4b\x49";
case 9: // 3
return "\x04\x4b\x72\x4b\x4a";
case 10: // 4
return "\x04\x4b\x72\x4b\x4b";
case 11: // 5
return "\x04\x4b\x72\x4b\x4c";
case 12: // 6
return "\x04\x4b\x72\x4b\x4d";
case 13: // 7
return "\x04\x4b\x72\x4b\x4e";
case 14: // 8
return "\x04\x4b\x72\x4b\x4f";
case 15: // 9
return "\x04\x4b\x72\x4b\x50";
case 16: // SEMICOLON
return "\x04\x4b\x72\x4b\x51";
case 17: // EQUAL
return "\x04\x4b\x72\x4b\x52";
case 18: // A
return "\x04\x4b\x72\x4b\x53";
case 19: // B
return "\x04\x4b\x72\x4b\x54";
case 20: // C
return "\x04\x4b\x72\x4b\x55";
case 21: // D
return "\x04\x4b\x72\x4b\x56";
case 22: // E
return "\x04\x4b\x72\x4b\x57";
case 23: // F
return "\x04\x4b\x72\x4b\x58";
case 24: // G
return "\x04\x4b\x72\x4b\x59";
case 25: // H
return "\x04\x4b\x72\x4b\x5a";
case 26: // I
return "\x04\x4b\x72\x4b\x61";
case 27: // J
return "\x04\x4b\x72\x4b\x62";
case 28: // K
return "\x04\x4b\x72\x4b\x63";
case 29: // L
return "\x04\x4b\x72\x4b\x64";
case 30: // M
return "\x04\x4b\x72\x4b\x65";
case 31: // N
return "\x04\x4b\x72\x4b\x66";
case 32: // O
return "\x04\x4b\x72\x4b\x67";
case 33: // P
return "\x04\x4b\x72\x4b\x68";
case 34: // Q
return "\x04\x4b\x72\x4b\x69";
case 35: // R
return "\x04\x4b\x72\x4b\x6a";
case 36: // S
return "\x04\x4b\x72\x4b\x6b";
case 37: // T
return "\x04\x4b\x72\x4b\x6c";
case 38: // U
return "\x04\x4b\x72\x4b\x6d";
case 39: // V
return "\x04\x4b\x72\x4b\x6e";
case 40: // W
return "\x04\x4b\x72\x4b\x6f";
case 41: // X
return "\x04\x4b\x72\x4b\x70";
case 42: // Y
return "\x04\x4b\x72\x4b\x71";
case 43: // Z
return "\x04\x4b\x72\x4b\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x72\x4b\x73";
case 45: // BACKSLASH
return "\x04\x4b\x72\x4b\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x72\x4b\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x72\x4b\x76";
case 48: // WORLD_1
return "\x04\x4b\x72\x4b\x77";
case 49: // WORLD_2
return "\x04\x4b\x72\x4b\x78";
case 50: // ESCAPE
return "\x04\x4b\x72\x4b\x79";
case 51: // ENTER
return "\x04\x4b\x72\x4b\x7a";
case 52: // TAB
return "\x04\x4b\x72\x4b\x30";
case 53: // BACKSPACE
return "\x04\x4b\x72\x4b\x31";
case 54: // INSERT
return "\x04\x4b\x72\x4b\x32";
case 55: // DELETE
return "\x04\x4b\x72\x4b\x33";
case 56: // RIGHT
return "\x04\x4b\x72\x4b\x34";
case 57: // LEFT
return "\x04\x4b\x72\x4b\x35";
case 58: // DOWN
return "\x04\x4b\x72\x4b\x36";
case 59: // UP
return "\x04\x4b\x72\x4b\x37";
case 60: // PAGE_UP
return "\x04\x4b\x72\x4b\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x72\x4b\x39";
case 62: // HOME
return "\x04\x4b\x72\x4b\x2e";
case 63: // END
return "\x04\x4b\x72\x4b\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x72\x4b\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x72\x4b\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x72\x4b\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x72\x4b\x5e";
case 68: // PAUSE
return "\x04\x4b\x72\x4b\x21";
case 69: // F1
return "\x04\x4b\x72\x4b\x2f";
case 70: // F2
return "\x04\x4b\x72\x4b\x2a";
case 71: // F3
return "\x04\x4b\x72\x4b\x3f";
case 72: // F4
return "\x04\x4b\x72\x4b\x26";
case 73: // F5
return "\x04\x4b\x72\x4b\x3c";
case 74: // F6
return "\x04\x4b\x72\x4b\x3e";
case 75: // F7
return "\x04\x4b\x72\x4b\x28";
case 76: // F8
return "\x04\x4b\x72\x4b\x29";
case 77: // F9
return "\x04\x4b\x72\x4b\x5b";
case 78: // F10
return "\x04\x4b\x72\x4b\x5d";
case 79: // F11
return "\x04\x4b\x72\x4b\x7b";
case 80: // F12
return "\x04\x4b\x72\x4b\x7d";
case 81: // F13
return "\x04\x4b\x72\x4b\x40";
case 82: // F14
return "\x04\x4b\x72\x4b\x25";
case 83: // F15
return "\x04\x4b\x72\x4b\x24";
case 84: // F16
return "\x04\x4b\x72\x4b\x23";
case 85: // F17
return "\x05\x4b\x72\x4b\x42\x41";
case 86: // F18
return "\x05\x4b\x72\x4b\x42\x42";
case 87: // F19
return "\x05\x4b\x72\x4b\x42\x43";
case 88: // F20
return "\x05\x4b\x72\x4b\x42\x44";
case 89: // F21
return "\x05\x4b\x72\x4b\x42\x45";
case 90: // F22
return "\x05\x4b\x72\x4b\x42\x46";
case 91: // F23
return "\x05\x4b\x72\x4b\x42\x47";
case 92: // F24
return "\x05\x4b\x72\x4b\x42\x48";
case 93: // F25
return "\x05\x4b\x72\x4b\x42\x49";
case 94: // KP_0
return "\x05\x4b\x72\x4b\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x72\x4b\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x72\x4b\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x72\x4b\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x72\x4b\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x72\x4b\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x72\x4b\x42\x50";
case 101: // KP_7
return "\x05\x4b\x72\x4b\x42\x51";
case 102: // KP_8
return "\x05\x4b\x72\x4b\x42\x52";
case 103: // KP_9
return "\x05\x4b\x72\x4b\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x72\x4b\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x72\x4b\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x72\x4b\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x72\x4b\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x72\x4b\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x72\x4b\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x72\x4b\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x72\x4b\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x72\x4b\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x72\x4b\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x72\x4b\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x72\x4b\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x72\x4b\x42\x68";
} // end switch(key)
case 0xd:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x4c\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x72\x4c\x42";
case 2: // COMMA
return "\x04\x4b\x72\x4c\x43";
case 3: // MINUS
return "\x04\x4b\x72\x4c\x44";
case 4: // PERIOD
return "\x04\x4b\x72\x4c\x45";
case 5: // SLASH
return "\x04\x4b\x72\x4c\x46";
case 6: // 0
return "\x04\x4b\x72\x4c\x47";
case 7: // 1
return "\x04\x4b\x72\x4c\x48";
case 8: // 2
return "\x04\x4b\x72\x4c\x49";
case 9: // 3
return "\x04\x4b\x72\x4c\x4a";
case 10: // 4
return "\x04\x4b\x72\x4c\x4b";
case 11: // 5
return "\x04\x4b\x72\x4c\x4c";
case 12: // 6
return "\x04\x4b\x72\x4c\x4d";
case 13: // 7
return "\x04\x4b\x72\x4c\x4e";
case 14: // 8
return "\x04\x4b\x72\x4c\x4f";
case 15: // 9
return "\x04\x4b\x72\x4c\x50";
case 16: // SEMICOLON
return "\x04\x4b\x72\x4c\x51";
case 17: // EQUAL
return "\x04\x4b\x72\x4c\x52";
case 18: // A
return "\x04\x4b\x72\x4c\x53";
case 19: // B
return "\x04\x4b\x72\x4c\x54";
case 20: // C
return "\x04\x4b\x72\x4c\x55";
case 21: // D
return "\x04\x4b\x72\x4c\x56";
case 22: // E
return "\x04\x4b\x72\x4c\x57";
case 23: // F
return "\x04\x4b\x72\x4c\x58";
case 24: // G
return "\x04\x4b\x72\x4c\x59";
case 25: // H
return "\x04\x4b\x72\x4c\x5a";
case 26: // I
return "\x04\x4b\x72\x4c\x61";
case 27: // J
return "\x04\x4b\x72\x4c\x62";
case 28: // K
return "\x04\x4b\x72\x4c\x63";
case 29: // L
return "\x04\x4b\x72\x4c\x64";
case 30: // M
return "\x04\x4b\x72\x4c\x65";
case 31: // N
return "\x04\x4b\x72\x4c\x66";
case 32: // O
return "\x04\x4b\x72\x4c\x67";
case 33: // P
return "\x04\x4b\x72\x4c\x68";
case 34: // Q
return "\x04\x4b\x72\x4c\x69";
case 35: // R
return "\x04\x4b\x72\x4c\x6a";
case 36: // S
return "\x04\x4b\x72\x4c\x6b";
case 37: // T
return "\x04\x4b\x72\x4c\x6c";
case 38: // U
return "\x04\x4b\x72\x4c\x6d";
case 39: // V
return "\x04\x4b\x72\x4c\x6e";
case 40: // W
return "\x04\x4b\x72\x4c\x6f";
case 41: // X
return "\x04\x4b\x72\x4c\x70";
case 42: // Y
return "\x04\x4b\x72\x4c\x71";
case 43: // Z
return "\x04\x4b\x72\x4c\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x72\x4c\x73";
case 45: // BACKSLASH
return "\x04\x4b\x72\x4c\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x72\x4c\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x72\x4c\x76";
case 48: // WORLD_1
return "\x04\x4b\x72\x4c\x77";
case 49: // WORLD_2
return "\x04\x4b\x72\x4c\x78";
case 50: // ESCAPE
return "\x04\x4b\x72\x4c\x79";
case 51: // ENTER
return "\x04\x4b\x72\x4c\x7a";
case 52: // TAB
return "\x04\x4b\x72\x4c\x30";
case 53: // BACKSPACE
return "\x04\x4b\x72\x4c\x31";
case 54: // INSERT
return "\x04\x4b\x72\x4c\x32";
case 55: // DELETE
return "\x04\x4b\x72\x4c\x33";
case 56: // RIGHT
return "\x04\x4b\x72\x4c\x34";
case 57: // LEFT
return "\x04\x4b\x72\x4c\x35";
case 58: // DOWN
return "\x04\x4b\x72\x4c\x36";
case 59: // UP
return "\x04\x4b\x72\x4c\x37";
case 60: // PAGE_UP
return "\x04\x4b\x72\x4c\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x72\x4c\x39";
case 62: // HOME
return "\x04\x4b\x72\x4c\x2e";
case 63: // END
return "\x04\x4b\x72\x4c\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x72\x4c\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x72\x4c\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x72\x4c\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x72\x4c\x5e";
case 68: // PAUSE
return "\x04\x4b\x72\x4c\x21";
case 69: // F1
return "\x04\x4b\x72\x4c\x2f";
case 70: // F2
return "\x04\x4b\x72\x4c\x2a";
case 71: // F3
return "\x04\x4b\x72\x4c\x3f";
case 72: // F4
return "\x04\x4b\x72\x4c\x26";
case 73: // F5
return "\x04\x4b\x72\x4c\x3c";
case 74: // F6
return "\x04\x4b\x72\x4c\x3e";
case 75: // F7
return "\x04\x4b\x72\x4c\x28";
case 76: // F8
return "\x04\x4b\x72\x4c\x29";
case 77: // F9
return "\x04\x4b\x72\x4c\x5b";
case 78: // F10
return "\x04\x4b\x72\x4c\x5d";
case 79: // F11
return "\x04\x4b\x72\x4c\x7b";
case 80: // F12
return "\x04\x4b\x72\x4c\x7d";
case 81: // F13
return "\x04\x4b\x72\x4c\x40";
case 82: // F14
return "\x04\x4b\x72\x4c\x25";
case 83: // F15
return "\x04\x4b\x72\x4c\x24";
case 84: // F16
return "\x04\x4b\x72\x4c\x23";
case 85: // F17
return "\x05\x4b\x72\x4c\x42\x41";
case 86: // F18
return "\x05\x4b\x72\x4c\x42\x42";
case 87: // F19
return "\x05\x4b\x72\x4c\x42\x43";
case 88: // F20
return "\x05\x4b\x72\x4c\x42\x44";
case 89: // F21
return "\x05\x4b\x72\x4c\x42\x45";
case 90: // F22
return "\x05\x4b\x72\x4c\x42\x46";
case 91: // F23
return "\x05\x4b\x72\x4c\x42\x47";
case 92: // F24
return "\x05\x4b\x72\x4c\x42\x48";
case 93: // F25
return "\x05\x4b\x72\x4c\x42\x49";
case 94: // KP_0
return "\x05\x4b\x72\x4c\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x72\x4c\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x72\x4c\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x72\x4c\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x72\x4c\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x72\x4c\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x72\x4c\x42\x50";
case 101: // KP_7
return "\x05\x4b\x72\x4c\x42\x51";
case 102: // KP_8
return "\x05\x4b\x72\x4c\x42\x52";
case 103: // KP_9
return "\x05\x4b\x72\x4c\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x72\x4c\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x72\x4c\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x72\x4c\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x72\x4c\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x72\x4c\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x72\x4c\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x72\x4c\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x72\x4c\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x72\x4c\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x72\x4c\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x72\x4c\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x72\x4c\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x72\x4c\x42\x68";
} // end switch(key)
case 0xe:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x4f\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x72\x4f\x42";
case 2: // COMMA
return "\x04\x4b\x72\x4f\x43";
case 3: // MINUS
return "\x04\x4b\x72\x4f\x44";
case 4: // PERIOD
return "\x04\x4b\x72\x4f\x45";
case 5: // SLASH
return "\x04\x4b\x72\x4f\x46";
case 6: // 0
return "\x04\x4b\x72\x4f\x47";
case 7: // 1
return "\x04\x4b\x72\x4f\x48";
case 8: // 2
return "\x04\x4b\x72\x4f\x49";
case 9: // 3
return "\x04\x4b\x72\x4f\x4a";
case 10: // 4
return "\x04\x4b\x72\x4f\x4b";
case 11: // 5
return "\x04\x4b\x72\x4f\x4c";
case 12: // 6
return "\x04\x4b\x72\x4f\x4d";
case 13: // 7
return "\x04\x4b\x72\x4f\x4e";
case 14: // 8
return "\x04\x4b\x72\x4f\x4f";
case 15: // 9
return "\x04\x4b\x72\x4f\x50";
case 16: // SEMICOLON
return "\x04\x4b\x72\x4f\x51";
case 17: // EQUAL
return "\x04\x4b\x72\x4f\x52";
case 18: // A
return "\x04\x4b\x72\x4f\x53";
case 19: // B
return "\x04\x4b\x72\x4f\x54";
case 20: // C
return "\x04\x4b\x72\x4f\x55";
case 21: // D
return "\x04\x4b\x72\x4f\x56";
case 22: // E
return "\x04\x4b\x72\x4f\x57";
case 23: // F
return "\x04\x4b\x72\x4f\x58";
case 24: // G
return "\x04\x4b\x72\x4f\x59";
case 25: // H
return "\x04\x4b\x72\x4f\x5a";
case 26: // I
return "\x04\x4b\x72\x4f\x61";
case 27: // J
return "\x04\x4b\x72\x4f\x62";
case 28: // K
return "\x04\x4b\x72\x4f\x63";
case 29: // L
return "\x04\x4b\x72\x4f\x64";
case 30: // M
return "\x04\x4b\x72\x4f\x65";
case 31: // N
return "\x04\x4b\x72\x4f\x66";
case 32: // O
return "\x04\x4b\x72\x4f\x67";
case 33: // P
return "\x04\x4b\x72\x4f\x68";
case 34: // Q
return "\x04\x4b\x72\x4f\x69";
case 35: // R
return "\x04\x4b\x72\x4f\x6a";
case 36: // S
return "\x04\x4b\x72\x4f\x6b";
case 37: // T
return "\x04\x4b\x72\x4f\x6c";
case 38: // U
return "\x04\x4b\x72\x4f\x6d";
case 39: // V
return "\x04\x4b\x72\x4f\x6e";
case 40: // W
return "\x04\x4b\x72\x4f\x6f";
case 41: // X
return "\x04\x4b\x72\x4f\x70";
case 42: // Y
return "\x04\x4b\x72\x4f\x71";
case 43: // Z
return "\x04\x4b\x72\x4f\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x72\x4f\x73";
case 45: // BACKSLASH
return "\x04\x4b\x72\x4f\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x72\x4f\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x72\x4f\x76";
case 48: // WORLD_1
return "\x04\x4b\x72\x4f\x77";
case 49: // WORLD_2
return "\x04\x4b\x72\x4f\x78";
case 50: // ESCAPE
return "\x04\x4b\x72\x4f\x79";
case 51: // ENTER
return "\x04\x4b\x72\x4f\x7a";
case 52: // TAB
return "\x04\x4b\x72\x4f\x30";
case 53: // BACKSPACE
return "\x04\x4b\x72\x4f\x31";
case 54: // INSERT
return "\x04\x4b\x72\x4f\x32";
case 55: // DELETE
return "\x04\x4b\x72\x4f\x33";
case 56: // RIGHT
return "\x04\x4b\x72\x4f\x34";
case 57: // LEFT
return "\x04\x4b\x72\x4f\x35";
case 58: // DOWN
return "\x04\x4b\x72\x4f\x36";
case 59: // UP
return "\x04\x4b\x72\x4f\x37";
case 60: // PAGE_UP
return "\x04\x4b\x72\x4f\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x72\x4f\x39";
case 62: // HOME
return "\x04\x4b\x72\x4f\x2e";
case 63: // END
return "\x04\x4b\x72\x4f\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x72\x4f\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x72\x4f\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x72\x4f\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x72\x4f\x5e";
case 68: // PAUSE
return "\x04\x4b\x72\x4f\x21";
case 69: // F1
return "\x04\x4b\x72\x4f\x2f";
case 70: // F2
return "\x04\x4b\x72\x4f\x2a";
case 71: // F3
return "\x04\x4b\x72\x4f\x3f";
case 72: // F4
return "\x04\x4b\x72\x4f\x26";
case 73: // F5
return "\x04\x4b\x72\x4f\x3c";
case 74: // F6
return "\x04\x4b\x72\x4f\x3e";
case 75: // F7
return "\x04\x4b\x72\x4f\x28";
case 76: // F8
return "\x04\x4b\x72\x4f\x29";
case 77: // F9
return "\x04\x4b\x72\x4f\x5b";
case 78: // F10
return "\x04\x4b\x72\x4f\x5d";
case 79: // F11
return "\x04\x4b\x72\x4f\x7b";
case 80: // F12
return "\x04\x4b\x72\x4f\x7d";
case 81: // F13
return "\x04\x4b\x72\x4f\x40";
case 82: // F14
return "\x04\x4b\x72\x4f\x25";
case 83: // F15
return "\x04\x4b\x72\x4f\x24";
case 84: // F16
return "\x04\x4b\x72\x4f\x23";
case 85: // F17
return "\x05\x4b\x72\x4f\x42\x41";
case 86: // F18
return "\x05\x4b\x72\x4f\x42\x42";
case 87: // F19
return "\x05\x4b\x72\x4f\x42\x43";
case 88: // F20
return "\x05\x4b\x72\x4f\x42\x44";
case 89: // F21
return "\x05\x4b\x72\x4f\x42\x45";
case 90: // F22
return "\x05\x4b\x72\x4f\x42\x46";
case 91: // F23
return "\x05\x4b\x72\x4f\x42\x47";
case 92: // F24
return "\x05\x4b\x72\x4f\x42\x48";
case 93: // F25
return "\x05\x4b\x72\x4f\x42\x49";
case 94: // KP_0
return "\x05\x4b\x72\x4f\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x72\x4f\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x72\x4f\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x72\x4f\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x72\x4f\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x72\x4f\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x72\x4f\x42\x50";
case 101: // KP_7
return "\x05\x4b\x72\x4f\x42\x51";
case 102: // KP_8
return "\x05\x4b\x72\x4f\x42\x52";
case 103: // KP_9
return "\x05\x4b\x72\x4f\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x72\x4f\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x72\x4f\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x72\x4f\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x72\x4f\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x72\x4f\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x72\x4f\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x72\x4f\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x72\x4f\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x72\x4f\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x72\x4f\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x72\x4f\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x72\x4f\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x72\x4f\x42\x68";
} // end switch(key)
case 0xf:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x72\x50\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x72\x50\x42";
case 2: // COMMA
return "\x04\x4b\x72\x50\x43";
case 3: // MINUS
return "\x04\x4b\x72\x50\x44";
case 4: // PERIOD
return "\x04\x4b\x72\x50\x45";
case 5: // SLASH
return "\x04\x4b\x72\x50\x46";
case 6: // 0
return "\x04\x4b\x72\x50\x47";
case 7: // 1
return "\x04\x4b\x72\x50\x48";
case 8: // 2
return "\x04\x4b\x72\x50\x49";
case 9: // 3
return "\x04\x4b\x72\x50\x4a";
case 10: // 4
return "\x04\x4b\x72\x50\x4b";
case 11: // 5
return "\x04\x4b\x72\x50\x4c";
case 12: // 6
return "\x04\x4b\x72\x50\x4d";
case 13: // 7
return "\x04\x4b\x72\x50\x4e";
case 14: // 8
return "\x04\x4b\x72\x50\x4f";
case 15: // 9
return "\x04\x4b\x72\x50\x50";
case 16: // SEMICOLON
return "\x04\x4b\x72\x50\x51";
case 17: // EQUAL
return "\x04\x4b\x72\x50\x52";
case 18: // A
return "\x04\x4b\x72\x50\x53";
case 19: // B
return "\x04\x4b\x72\x50\x54";
case 20: // C
return "\x04\x4b\x72\x50\x55";
case 21: // D
return "\x04\x4b\x72\x50\x56";
case 22: // E
return "\x04\x4b\x72\x50\x57";
case 23: // F
return "\x04\x4b\x72\x50\x58";
case 24: // G
return "\x04\x4b\x72\x50\x59";
case 25: // H
return "\x04\x4b\x72\x50\x5a";
case 26: // I
return "\x04\x4b\x72\x50\x61";
case 27: // J
return "\x04\x4b\x72\x50\x62";
case 28: // K
return "\x04\x4b\x72\x50\x63";
case 29: // L
return "\x04\x4b\x72\x50\x64";
case 30: // M
return "\x04\x4b\x72\x50\x65";
case 31: // N
return "\x04\x4b\x72\x50\x66";
case 32: // O
return "\x04\x4b\x72\x50\x67";
case 33: // P
return "\x04\x4b\x72\x50\x68";
case 34: // Q
return "\x04\x4b\x72\x50\x69";
case 35: // R
return "\x04\x4b\x72\x50\x6a";
case 36: // S
return "\x04\x4b\x72\x50\x6b";
case 37: // T
return "\x04\x4b\x72\x50\x6c";
case 38: // U
return "\x04\x4b\x72\x50\x6d";
case 39: // V
return "\x04\x4b\x72\x50\x6e";
case 40: // W
return "\x04\x4b\x72\x50\x6f";
case 41: // X
return "\x04\x4b\x72\x50\x70";
case 42: // Y
return "\x04\x4b\x72\x50\x71";
case 43: // Z
return "\x04\x4b\x72\x50\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x72\x50\x73";
case 45: // BACKSLASH
return "\x04\x4b\x72\x50\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x72\x50\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x72\x50\x76";
case 48: // WORLD_1
return "\x04\x4b\x72\x50\x77";
case 49: // WORLD_2
return "\x04\x4b\x72\x50\x78";
case 50: // ESCAPE
return "\x04\x4b\x72\x50\x79";
case 51: // ENTER
return "\x04\x4b\x72\x50\x7a";
case 52: // TAB
return "\x04\x4b\x72\x50\x30";
case 53: // BACKSPACE
return "\x04\x4b\x72\x50\x31";
case 54: // INSERT
return "\x04\x4b\x72\x50\x32";
case 55: // DELETE
return "\x04\x4b\x72\x50\x33";
case 56: // RIGHT
return "\x04\x4b\x72\x50\x34";
case 57: // LEFT
return "\x04\x4b\x72\x50\x35";
case 58: // DOWN
return "\x04\x4b\x72\x50\x36";
case 59: // UP
return "\x04\x4b\x72\x50\x37";
case 60: // PAGE_UP
return "\x04\x4b\x72\x50\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x72\x50\x39";
case 62: // HOME
return "\x04\x4b\x72\x50\x2e";
case 63: // END
return "\x04\x4b\x72\x50\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x72\x50\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x72\x50\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x72\x50\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x72\x50\x5e";
case 68: // PAUSE
return "\x04\x4b\x72\x50\x21";
case 69: // F1
return "\x04\x4b\x72\x50\x2f";
case 70: // F2
return "\x04\x4b\x72\x50\x2a";
case 71: // F3
return "\x04\x4b\x72\x50\x3f";
case 72: // F4
return "\x04\x4b\x72\x50\x26";
case 73: // F5
return "\x04\x4b\x72\x50\x3c";
case 74: // F6
return "\x04\x4b\x72\x50\x3e";
case 75: // F7
return "\x04\x4b\x72\x50\x28";
case 76: // F8
return "\x04\x4b\x72\x50\x29";
case 77: // F9
return "\x04\x4b\x72\x50\x5b";
case 78: // F10
return "\x04\x4b\x72\x50\x5d";
case 79: // F11
return "\x04\x4b\x72\x50\x7b";
case 80: // F12
return "\x04\x4b\x72\x50\x7d";
case 81: // F13
return "\x04\x4b\x72\x50\x40";
case 82: // F14
return "\x04\x4b\x72\x50\x25";
case 83: // F15
return "\x04\x4b\x72\x50\x24";
case 84: // F16
return "\x04\x4b\x72\x50\x23";
case 85: // F17
return "\x05\x4b\x72\x50\x42\x41";
case 86: // F18
return "\x05\x4b\x72\x50\x42\x42";
case 87: // F19
return "\x05\x4b\x72\x50\x42\x43";
case 88: // F20
return "\x05\x4b\x72\x50\x42\x44";
case 89: // F21
return "\x05\x4b\x72\x50\x42\x45";
case 90: // F22
return "\x05\x4b\x72\x50\x42\x46";
case 91: // F23
return "\x05\x4b\x72\x50\x42\x47";
case 92: // F24
return "\x05\x4b\x72\x50\x42\x48";
case 93: // F25
return "\x05\x4b\x72\x50\x42\x49";
case 94: // KP_0
return "\x05\x4b\x72\x50\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x72\x50\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x72\x50\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x72\x50\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x72\x50\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x72\x50\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x72\x50\x42\x50";
case 101: // KP_7
return "\x05\x4b\x72\x50\x42\x51";
case 102: // KP_8
return "\x05\x4b\x72\x50\x42\x52";
case 103: // KP_9
return "\x05\x4b\x72\x50\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x72\x50\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x72\x50\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x72\x50\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x72\x50\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x72\x50\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x72\x50\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x72\x50\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x72\x50\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x72\x50\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x72\x50\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x72\x50\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x72\x50\x42\x67";
case 118: // 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 & 0x7f) { default: return NULL;
case 48: // WORLD_1
return "\x04\x4b\x70\x41\x77";
case 49: // WORLD_2
return "\x04\x4b\x70\x41\x78";
case 50: // ESCAPE
return "\x04\x4b\x70\x41\x79";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x04\x4b\x70\x41\x30";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x4b\x70\x41\x32";
case 55: // DELETE
return "\x04\x4b\x70\x41\x33";
case 56: // RIGHT
return "\x04\x4b\x70\x41\x34";
case 57: // LEFT
return "\x04\x4b\x70\x41\x35";
case 58: // DOWN
return "\x04\x4b\x70\x41\x36";
case 59: // UP
return "\x04\x4b\x70\x41\x37";
case 60: // PAGE_UP
return "\x04\x4b\x70\x41\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x70\x41\x39";
case 62: // HOME
return "\x04\x4b\x70\x41\x2e";
case 63: // END
return "\x04\x4b\x70\x41\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x70\x41\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x70\x41\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x70\x41\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x70\x41\x5e";
case 68: // PAUSE
return "\x04\x4b\x70\x41\x21";
case 69: // F1
return "\x04\x4b\x70\x41\x2f";
case 70: // F2
return "\x04\x4b\x70\x41\x2a";
case 71: // F3
return "\x04\x4b\x70\x41\x3f";
case 72: // F4
return "\x04\x4b\x70\x41\x26";
case 73: // F5
return "\x04\x4b\x70\x41\x3c";
case 74: // F6
return "\x04\x4b\x70\x41\x3e";
case 75: // F7
return "\x04\x4b\x70\x41\x28";
case 76: // F8
return "\x04\x4b\x70\x41\x29";
case 77: // F9
return "\x04\x4b\x70\x41\x5b";
case 78: // F10
return "\x04\x4b\x70\x41\x5d";
case 79: // F11
return "\x04\x4b\x70\x41\x7b";
case 80: // F12
return "\x04\x4b\x70\x41\x7d";
case 81: // F13
return "\x04\x4b\x70\x41\x40";
case 82: // F14
return "\x04\x4b\x70\x41\x25";
case 83: // F15
return "\x04\x4b\x70\x41\x24";
case 84: // F16
return "\x04\x4b\x70\x41\x23";
case 85: // F17
return "\x05\x4b\x70\x41\x42\x41";
case 86: // F18
return "\x05\x4b\x70\x41\x42\x42";
case 87: // F19
return "\x05\x4b\x70\x41\x42\x43";
case 88: // F20
return "\x05\x4b\x70\x41\x42\x44";
case 89: // F21
return "\x05\x4b\x70\x41\x42\x45";
case 90: // F22
return "\x05\x4b\x70\x41\x42\x46";
case 91: // F23
return "\x05\x4b\x70\x41\x42\x47";
case 92: // F24
return "\x05\x4b\x70\x41\x42\x48";
case 93: // F25
return "\x05\x4b\x70\x41\x42\x49";
case 94: // KP_0
return "\x05\x4b\x70\x41\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x70\x41\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x70\x41\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x70\x41\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x70\x41\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x70\x41\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x70\x41\x42\x50";
case 101: // KP_7
return "\x05\x4b\x70\x41\x42\x51";
case 102: // KP_8
return "\x05\x4b\x70\x41\x42\x52";
case 103: // KP_9
return "\x05\x4b\x70\x41\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x70\x41\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x70\x41\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x70\x41\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x70\x41\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x70\x41\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x70\x41\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x70\x41\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x70\x41\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x70\x41\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x70\x41\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x70\x41\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x70\x41\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x70\x41\x42\x68";
} // end switch(key)
case 0x1:
switch(key & 0x7f) { default: return NULL;
case 48: // WORLD_1
return "\x04\x4b\x70\x42\x77";
case 49: // WORLD_2
return "\x04\x4b\x70\x42\x78";
case 50: // ESCAPE
return "\x04\x4b\x70\x42\x79";
case 51: // ENTER
return "\x04\x4b\x70\x42\x7a";
case 52: // TAB
return "\x04\x4b\x70\x42\x30";
case 53: // BACKSPACE
return "\x04\x4b\x70\x42\x31";
case 54: // INSERT
return "\x04\x4b\x70\x42\x32";
case 55: // DELETE
return "\x04\x4b\x70\x42\x33";
case 56: // RIGHT
return "\x04\x4b\x70\x42\x34";
case 57: // LEFT
return "\x04\x4b\x70\x42\x35";
case 58: // DOWN
return "\x04\x4b\x70\x42\x36";
case 59: // UP
return "\x04\x4b\x70\x42\x37";
case 60: // PAGE_UP
return "\x04\x4b\x70\x42\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x70\x42\x39";
case 62: // HOME
return "\x04\x4b\x70\x42\x2e";
case 63: // END
return "\x04\x4b\x70\x42\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x70\x42\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x70\x42\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x70\x42\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x70\x42\x5e";
case 68: // PAUSE
return "\x04\x4b\x70\x42\x21";
case 69: // F1
return "\x04\x4b\x70\x42\x2f";
case 70: // F2
return "\x04\x4b\x70\x42\x2a";
case 71: // F3
return "\x04\x4b\x70\x42\x3f";
case 72: // F4
return "\x04\x4b\x70\x42\x26";
case 73: // F5
return "\x04\x4b\x70\x42\x3c";
case 74: // F6
return "\x04\x4b\x70\x42\x3e";
case 75: // F7
return "\x04\x4b\x70\x42\x28";
case 76: // F8
return "\x04\x4b\x70\x42\x29";
case 77: // F9
return "\x04\x4b\x70\x42\x5b";
case 78: // F10
return "\x04\x4b\x70\x42\x5d";
case 79: // F11
return "\x04\x4b\x70\x42\x7b";
case 80: // F12
return "\x04\x4b\x70\x42\x7d";
case 81: // F13
return "\x04\x4b\x70\x42\x40";
case 82: // F14
return "\x04\x4b\x70\x42\x25";
case 83: // F15
return "\x04\x4b\x70\x42\x24";
case 84: // F16
return "\x04\x4b\x70\x42\x23";
case 85: // F17
return "\x05\x4b\x70\x42\x42\x41";
case 86: // F18
return "\x05\x4b\x70\x42\x42\x42";
case 87: // F19
return "\x05\x4b\x70\x42\x42\x43";
case 88: // F20
return "\x05\x4b\x70\x42\x42\x44";
case 89: // F21
return "\x05\x4b\x70\x42\x42\x45";
case 90: // F22
return "\x05\x4b\x70\x42\x42\x46";
case 91: // F23
return "\x05\x4b\x70\x42\x42\x47";
case 92: // F24
return "\x05\x4b\x70\x42\x42\x48";
case 93: // F25
return "\x05\x4b\x70\x42\x42\x49";
case 94: // KP_0
return "\x05\x4b\x70\x42\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x70\x42\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x70\x42\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x70\x42\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x70\x42\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x70\x42\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x70\x42\x42\x50";
case 101: // KP_7
return "\x05\x4b\x70\x42\x42\x51";
case 102: // KP_8
return "\x05\x4b\x70\x42\x42\x52";
case 103: // KP_9
return "\x05\x4b\x70\x42\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x70\x42\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x70\x42\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x70\x42\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x70\x42\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x70\x42\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x70\x42\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x70\x42\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x70\x42\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x70\x42\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x70\x42\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x70\x42\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x70\x42\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x70\x42\x42\x68";
} // end switch(key)
case 0x2:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x45\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x70\x45\x42";
case 2: // COMMA
return "\x04\x4b\x70\x45\x43";
case 3: // MINUS
return "\x04\x4b\x70\x45\x44";
case 4: // PERIOD
return "\x04\x4b\x70\x45\x45";
case 5: // SLASH
return "\x04\x4b\x70\x45\x46";
case 6: // 0
return "\x04\x4b\x70\x45\x47";
case 7: // 1
return "\x04\x4b\x70\x45\x48";
case 8: // 2
return "\x04\x4b\x70\x45\x49";
case 9: // 3
return "\x04\x4b\x70\x45\x4a";
case 10: // 4
return "\x04\x4b\x70\x45\x4b";
case 11: // 5
return "\x04\x4b\x70\x45\x4c";
case 12: // 6
return "\x04\x4b\x70\x45\x4d";
case 13: // 7
return "\x04\x4b\x70\x45\x4e";
case 14: // 8
return "\x04\x4b\x70\x45\x4f";
case 15: // 9
return "\x04\x4b\x70\x45\x50";
case 16: // SEMICOLON
return "\x04\x4b\x70\x45\x51";
case 17: // EQUAL
return "\x04\x4b\x70\x45\x52";
case 18: // A
return "\x04\x4b\x70\x45\x53";
case 19: // B
return "\x04\x4b\x70\x45\x54";
case 20: // C
return "\x04\x4b\x70\x45\x55";
case 21: // D
return "\x04\x4b\x70\x45\x56";
case 22: // E
return "\x04\x4b\x70\x45\x57";
case 23: // F
return "\x04\x4b\x70\x45\x58";
case 24: // G
return "\x04\x4b\x70\x45\x59";
case 25: // H
return "\x04\x4b\x70\x45\x5a";
case 26: // I
return "\x04\x4b\x70\x45\x61";
case 27: // J
return "\x04\x4b\x70\x45\x62";
case 28: // K
return "\x04\x4b\x70\x45\x63";
case 29: // L
return "\x04\x4b\x70\x45\x64";
case 30: // M
return "\x04\x4b\x70\x45\x65";
case 31: // N
return "\x04\x4b\x70\x45\x66";
case 32: // O
return "\x04\x4b\x70\x45\x67";
case 33: // P
return "\x04\x4b\x70\x45\x68";
case 34: // Q
return "\x04\x4b\x70\x45\x69";
case 35: // R
return "\x04\x4b\x70\x45\x6a";
case 36: // S
return "\x04\x4b\x70\x45\x6b";
case 37: // T
return "\x04\x4b\x70\x45\x6c";
case 38: // U
return "\x04\x4b\x70\x45\x6d";
case 39: // V
return "\x04\x4b\x70\x45\x6e";
case 40: // W
return "\x04\x4b\x70\x45\x6f";
case 41: // X
return "\x04\x4b\x70\x45\x70";
case 42: // Y
return "\x04\x4b\x70\x45\x71";
case 43: // Z
return "\x04\x4b\x70\x45\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x70\x45\x73";
case 45: // BACKSLASH
return "\x04\x4b\x70\x45\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x70\x45\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x70\x45\x76";
case 48: // WORLD_1
return "\x04\x4b\x70\x45\x77";
case 49: // WORLD_2
return "\x04\x4b\x70\x45\x78";
case 50: // ESCAPE
return "\x04\x4b\x70\x45\x79";
case 51: // ENTER
return "\x04\x4b\x70\x45\x7a";
case 52: // TAB
return "\x04\x4b\x70\x45\x30";
case 53: // BACKSPACE
return "\x04\x4b\x70\x45\x31";
case 54: // INSERT
return "\x04\x4b\x70\x45\x32";
case 55: // DELETE
return "\x04\x4b\x70\x45\x33";
case 56: // RIGHT
return "\x04\x4b\x70\x45\x34";
case 57: // LEFT
return "\x04\x4b\x70\x45\x35";
case 58: // DOWN
return "\x04\x4b\x70\x45\x36";
case 59: // UP
return "\x04\x4b\x70\x45\x37";
case 60: // PAGE_UP
return "\x04\x4b\x70\x45\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x70\x45\x39";
case 62: // HOME
return "\x04\x4b\x70\x45\x2e";
case 63: // END
return "\x04\x4b\x70\x45\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x70\x45\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x70\x45\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x70\x45\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x70\x45\x5e";
case 68: // PAUSE
return "\x04\x4b\x70\x45\x21";
case 69: // F1
return "\x04\x4b\x70\x45\x2f";
case 70: // F2
return "\x04\x4b\x70\x45\x2a";
case 71: // F3
return "\x04\x4b\x70\x45\x3f";
case 72: // F4
return "\x04\x4b\x70\x45\x26";
case 73: // F5
return "\x04\x4b\x70\x45\x3c";
case 74: // F6
return "\x04\x4b\x70\x45\x3e";
case 75: // F7
return "\x04\x4b\x70\x45\x28";
case 76: // F8
return "\x04\x4b\x70\x45\x29";
case 77: // F9
return "\x04\x4b\x70\x45\x5b";
case 78: // F10
return "\x04\x4b\x70\x45\x5d";
case 79: // F11
return "\x04\x4b\x70\x45\x7b";
case 80: // F12
return "\x04\x4b\x70\x45\x7d";
case 81: // F13
return "\x04\x4b\x70\x45\x40";
case 82: // F14
return "\x04\x4b\x70\x45\x25";
case 83: // F15
return "\x04\x4b\x70\x45\x24";
case 84: // F16
return "\x04\x4b\x70\x45\x23";
case 85: // F17
return "\x05\x4b\x70\x45\x42\x41";
case 86: // F18
return "\x05\x4b\x70\x45\x42\x42";
case 87: // F19
return "\x05\x4b\x70\x45\x42\x43";
case 88: // F20
return "\x05\x4b\x70\x45\x42\x44";
case 89: // F21
return "\x05\x4b\x70\x45\x42\x45";
case 90: // F22
return "\x05\x4b\x70\x45\x42\x46";
case 91: // F23
return "\x05\x4b\x70\x45\x42\x47";
case 92: // F24
return "\x05\x4b\x70\x45\x42\x48";
case 93: // F25
return "\x05\x4b\x70\x45\x42\x49";
case 94: // KP_0
return "\x05\x4b\x70\x45\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x70\x45\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x70\x45\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x70\x45\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x70\x45\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x70\x45\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x70\x45\x42\x50";
case 101: // KP_7
return "\x05\x4b\x70\x45\x42\x51";
case 102: // KP_8
return "\x05\x4b\x70\x45\x42\x52";
case 103: // KP_9
return "\x05\x4b\x70\x45\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x70\x45\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x70\x45\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x70\x45\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x70\x45\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x70\x45\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x70\x45\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x70\x45\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x70\x45\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x70\x45\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x70\x45\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x70\x45\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x70\x45\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x70\x45\x42\x68";
} // end switch(key)
case 0x3:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x46\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x70\x46\x42";
case 2: // COMMA
return "\x04\x4b\x70\x46\x43";
case 3: // MINUS
return "\x04\x4b\x70\x46\x44";
case 4: // PERIOD
return "\x04\x4b\x70\x46\x45";
case 5: // SLASH
return "\x04\x4b\x70\x46\x46";
case 6: // 0
return "\x04\x4b\x70\x46\x47";
case 7: // 1
return "\x04\x4b\x70\x46\x48";
case 8: // 2
return "\x04\x4b\x70\x46\x49";
case 9: // 3
return "\x04\x4b\x70\x46\x4a";
case 10: // 4
return "\x04\x4b\x70\x46\x4b";
case 11: // 5
return "\x04\x4b\x70\x46\x4c";
case 12: // 6
return "\x04\x4b\x70\x46\x4d";
case 13: // 7
return "\x04\x4b\x70\x46\x4e";
case 14: // 8
return "\x04\x4b\x70\x46\x4f";
case 15: // 9
return "\x04\x4b\x70\x46\x50";
case 16: // SEMICOLON
return "\x04\x4b\x70\x46\x51";
case 17: // EQUAL
return "\x04\x4b\x70\x46\x52";
case 18: // A
return "\x04\x4b\x70\x46\x53";
case 19: // B
return "\x04\x4b\x70\x46\x54";
case 20: // C
return "\x04\x4b\x70\x46\x55";
case 21: // D
return "\x04\x4b\x70\x46\x56";
case 22: // E
return "\x04\x4b\x70\x46\x57";
case 23: // F
return "\x04\x4b\x70\x46\x58";
case 24: // G
return "\x04\x4b\x70\x46\x59";
case 25: // H
return "\x04\x4b\x70\x46\x5a";
case 26: // I
return "\x04\x4b\x70\x46\x61";
case 27: // J
return "\x04\x4b\x70\x46\x62";
case 28: // K
return "\x04\x4b\x70\x46\x63";
case 29: // L
return "\x04\x4b\x70\x46\x64";
case 30: // M
return "\x04\x4b\x70\x46\x65";
case 31: // N
return "\x04\x4b\x70\x46\x66";
case 32: // O
return "\x04\x4b\x70\x46\x67";
case 33: // P
return "\x04\x4b\x70\x46\x68";
case 34: // Q
return "\x04\x4b\x70\x46\x69";
case 35: // R
return "\x04\x4b\x70\x46\x6a";
case 36: // S
return "\x04\x4b\x70\x46\x6b";
case 37: // T
return "\x04\x4b\x70\x46\x6c";
case 38: // U
return "\x04\x4b\x70\x46\x6d";
case 39: // V
return "\x04\x4b\x70\x46\x6e";
case 40: // W
return "\x04\x4b\x70\x46\x6f";
case 41: // X
return "\x04\x4b\x70\x46\x70";
case 42: // Y
return "\x04\x4b\x70\x46\x71";
case 43: // Z
return "\x04\x4b\x70\x46\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x70\x46\x73";
case 45: // BACKSLASH
return "\x04\x4b\x70\x46\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x70\x46\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x70\x46\x76";
case 48: // WORLD_1
return "\x04\x4b\x70\x46\x77";
case 49: // WORLD_2
return "\x04\x4b\x70\x46\x78";
case 50: // ESCAPE
return "\x04\x4b\x70\x46\x79";
case 51: // ENTER
return "\x04\x4b\x70\x46\x7a";
case 52: // TAB
return "\x04\x4b\x70\x46\x30";
case 53: // BACKSPACE
return "\x04\x4b\x70\x46\x31";
case 54: // INSERT
return "\x04\x4b\x70\x46\x32";
case 55: // DELETE
return "\x04\x4b\x70\x46\x33";
case 56: // RIGHT
return "\x04\x4b\x70\x46\x34";
case 57: // LEFT
return "\x04\x4b\x70\x46\x35";
case 58: // DOWN
return "\x04\x4b\x70\x46\x36";
case 59: // UP
return "\x04\x4b\x70\x46\x37";
case 60: // PAGE_UP
return "\x04\x4b\x70\x46\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x70\x46\x39";
case 62: // HOME
return "\x04\x4b\x70\x46\x2e";
case 63: // END
return "\x04\x4b\x70\x46\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x70\x46\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x70\x46\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x70\x46\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x70\x46\x5e";
case 68: // PAUSE
return "\x04\x4b\x70\x46\x21";
case 69: // F1
return "\x04\x4b\x70\x46\x2f";
case 70: // F2
return "\x04\x4b\x70\x46\x2a";
case 71: // F3
return "\x04\x4b\x70\x46\x3f";
case 72: // F4
return "\x04\x4b\x70\x46\x26";
case 73: // F5
return "\x04\x4b\x70\x46\x3c";
case 74: // F6
return "\x04\x4b\x70\x46\x3e";
case 75: // F7
return "\x04\x4b\x70\x46\x28";
case 76: // F8
return "\x04\x4b\x70\x46\x29";
case 77: // F9
return "\x04\x4b\x70\x46\x5b";
case 78: // F10
return "\x04\x4b\x70\x46\x5d";
case 79: // F11
return "\x04\x4b\x70\x46\x7b";
case 80: // F12
return "\x04\x4b\x70\x46\x7d";
case 81: // F13
return "\x04\x4b\x70\x46\x40";
case 82: // F14
return "\x04\x4b\x70\x46\x25";
case 83: // F15
return "\x04\x4b\x70\x46\x24";
case 84: // F16
return "\x04\x4b\x70\x46\x23";
case 85: // F17
return "\x05\x4b\x70\x46\x42\x41";
case 86: // F18
return "\x05\x4b\x70\x46\x42\x42";
case 87: // F19
return "\x05\x4b\x70\x46\x42\x43";
case 88: // F20
return "\x05\x4b\x70\x46\x42\x44";
case 89: // F21
return "\x05\x4b\x70\x46\x42\x45";
case 90: // F22
return "\x05\x4b\x70\x46\x42\x46";
case 91: // F23
return "\x05\x4b\x70\x46\x42\x47";
case 92: // F24
return "\x05\x4b\x70\x46\x42\x48";
case 93: // F25
return "\x05\x4b\x70\x46\x42\x49";
case 94: // KP_0
return "\x05\x4b\x70\x46\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x70\x46\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x70\x46\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x70\x46\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x70\x46\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x70\x46\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x70\x46\x42\x50";
case 101: // KP_7
return "\x05\x4b\x70\x46\x42\x51";
case 102: // KP_8
return "\x05\x4b\x70\x46\x42\x52";
case 103: // KP_9
return "\x05\x4b\x70\x46\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x70\x46\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x70\x46\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x70\x46\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x70\x46\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x70\x46\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x70\x46\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x70\x46\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x70\x46\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x70\x46\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x70\x46\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x70\x46\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x70\x46\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x70\x46\x42\x68";
} // end switch(key)
case 0x4:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x43\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x70\x43\x42";
case 2: // COMMA
return "\x04\x4b\x70\x43\x43";
case 3: // MINUS
return "\x04\x4b\x70\x43\x44";
case 4: // PERIOD
return "\x04\x4b\x70\x43\x45";
case 5: // SLASH
return "\x04\x4b\x70\x43\x46";
case 6: // 0
return "\x04\x4b\x70\x43\x47";
case 7: // 1
return "\x04\x4b\x70\x43\x48";
case 8: // 2
return "\x04\x4b\x70\x43\x49";
case 9: // 3
return "\x04\x4b\x70\x43\x4a";
case 10: // 4
return "\x04\x4b\x70\x43\x4b";
case 11: // 5
return "\x04\x4b\x70\x43\x4c";
case 12: // 6
return "\x04\x4b\x70\x43\x4d";
case 13: // 7
return "\x04\x4b\x70\x43\x4e";
case 14: // 8
return "\x04\x4b\x70\x43\x4f";
case 15: // 9
return "\x04\x4b\x70\x43\x50";
case 16: // SEMICOLON
return "\x04\x4b\x70\x43\x51";
case 17: // EQUAL
return "\x04\x4b\x70\x43\x52";
case 18: // A
return "\x04\x4b\x70\x43\x53";
case 19: // B
return "\x04\x4b\x70\x43\x54";
case 20: // C
return "\x04\x4b\x70\x43\x55";
case 21: // D
return "\x04\x4b\x70\x43\x56";
case 22: // E
return "\x04\x4b\x70\x43\x57";
case 23: // F
return "\x04\x4b\x70\x43\x58";
case 24: // G
return "\x04\x4b\x70\x43\x59";
case 25: // H
return "\x04\x4b\x70\x43\x5a";
case 26: // I
return "\x04\x4b\x70\x43\x61";
case 27: // J
return "\x04\x4b\x70\x43\x62";
case 28: // K
return "\x04\x4b\x70\x43\x63";
case 29: // L
return "\x04\x4b\x70\x43\x64";
case 30: // M
return "\x04\x4b\x70\x43\x65";
case 31: // N
return "\x04\x4b\x70\x43\x66";
case 32: // O
return "\x04\x4b\x70\x43\x67";
case 33: // P
return "\x04\x4b\x70\x43\x68";
case 34: // Q
return "\x04\x4b\x70\x43\x69";
case 35: // R
return "\x04\x4b\x70\x43\x6a";
case 36: // S
return "\x04\x4b\x70\x43\x6b";
case 37: // T
return "\x04\x4b\x70\x43\x6c";
case 38: // U
return "\x04\x4b\x70\x43\x6d";
case 39: // V
return "\x04\x4b\x70\x43\x6e";
case 40: // W
return "\x04\x4b\x70\x43\x6f";
case 41: // X
return "\x04\x4b\x70\x43\x70";
case 42: // Y
return "\x04\x4b\x70\x43\x71";
case 43: // Z
return "\x04\x4b\x70\x43\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x70\x43\x73";
case 45: // BACKSLASH
return "\x04\x4b\x70\x43\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x70\x43\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x70\x43\x76";
case 48: // WORLD_1
return "\x04\x4b\x70\x43\x77";
case 49: // WORLD_2
return "\x04\x4b\x70\x43\x78";
case 50: // ESCAPE
return "\x04\x4b\x70\x43\x79";
case 51: // ENTER
return "\x04\x4b\x70\x43\x7a";
case 52: // TAB
return "\x04\x4b\x70\x43\x30";
case 53: // BACKSPACE
return "\x04\x4b\x70\x43\x31";
case 54: // INSERT
return "\x04\x4b\x70\x43\x32";
case 55: // DELETE
return "\x04\x4b\x70\x43\x33";
case 56: // RIGHT
return "\x04\x4b\x70\x43\x34";
case 57: // LEFT
return "\x04\x4b\x70\x43\x35";
case 58: // DOWN
return "\x04\x4b\x70\x43\x36";
case 59: // UP
return "\x04\x4b\x70\x43\x37";
case 60: // PAGE_UP
return "\x04\x4b\x70\x43\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x70\x43\x39";
case 62: // HOME
return "\x04\x4b\x70\x43\x2e";
case 63: // END
return "\x04\x4b\x70\x43\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x70\x43\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x70\x43\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x70\x43\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x70\x43\x5e";
case 68: // PAUSE
return "\x04\x4b\x70\x43\x21";
case 69: // F1
return "\x04\x4b\x70\x43\x2f";
case 70: // F2
return "\x04\x4b\x70\x43\x2a";
case 71: // F3
return "\x04\x4b\x70\x43\x3f";
case 72: // F4
return "\x04\x4b\x70\x43\x26";
case 73: // F5
return "\x04\x4b\x70\x43\x3c";
case 74: // F6
return "\x04\x4b\x70\x43\x3e";
case 75: // F7
return "\x04\x4b\x70\x43\x28";
case 76: // F8
return "\x04\x4b\x70\x43\x29";
case 77: // F9
return "\x04\x4b\x70\x43\x5b";
case 78: // F10
return "\x04\x4b\x70\x43\x5d";
case 79: // F11
return "\x04\x4b\x70\x43\x7b";
case 80: // F12
return "\x04\x4b\x70\x43\x7d";
case 81: // F13
return "\x04\x4b\x70\x43\x40";
case 82: // F14
return "\x04\x4b\x70\x43\x25";
case 83: // F15
return "\x04\x4b\x70\x43\x24";
case 84: // F16
return "\x04\x4b\x70\x43\x23";
case 85: // F17
return "\x05\x4b\x70\x43\x42\x41";
case 86: // F18
return "\x05\x4b\x70\x43\x42\x42";
case 87: // F19
return "\x05\x4b\x70\x43\x42\x43";
case 88: // F20
return "\x05\x4b\x70\x43\x42\x44";
case 89: // F21
return "\x05\x4b\x70\x43\x42\x45";
case 90: // F22
return "\x05\x4b\x70\x43\x42\x46";
case 91: // F23
return "\x05\x4b\x70\x43\x42\x47";
case 92: // F24
return "\x05\x4b\x70\x43\x42\x48";
case 93: // F25
return "\x05\x4b\x70\x43\x42\x49";
case 94: // KP_0
return "\x05\x4b\x70\x43\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x70\x43\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x70\x43\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x70\x43\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x70\x43\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x70\x43\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x70\x43\x42\x50";
case 101: // KP_7
return "\x05\x4b\x70\x43\x42\x51";
case 102: // KP_8
return "\x05\x4b\x70\x43\x42\x52";
case 103: // KP_9
return "\x05\x4b\x70\x43\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x70\x43\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x70\x43\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x70\x43\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x70\x43\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x70\x43\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x70\x43\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x70\x43\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x70\x43\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x70\x43\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x70\x43\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x70\x43\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x70\x43\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x70\x43\x42\x68";
} // end switch(key)
case 0x5:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x44\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x70\x44\x42";
case 2: // COMMA
return "\x04\x4b\x70\x44\x43";
case 3: // MINUS
return "\x04\x4b\x70\x44\x44";
case 4: // PERIOD
return "\x04\x4b\x70\x44\x45";
case 5: // SLASH
return "\x04\x4b\x70\x44\x46";
case 6: // 0
return "\x04\x4b\x70\x44\x47";
case 7: // 1
return "\x04\x4b\x70\x44\x48";
case 8: // 2
return "\x04\x4b\x70\x44\x49";
case 9: // 3
return "\x04\x4b\x70\x44\x4a";
case 10: // 4
return "\x04\x4b\x70\x44\x4b";
case 11: // 5
return "\x04\x4b\x70\x44\x4c";
case 12: // 6
return "\x04\x4b\x70\x44\x4d";
case 13: // 7
return "\x04\x4b\x70\x44\x4e";
case 14: // 8
return "\x04\x4b\x70\x44\x4f";
case 15: // 9
return "\x04\x4b\x70\x44\x50";
case 16: // SEMICOLON
return "\x04\x4b\x70\x44\x51";
case 17: // EQUAL
return "\x04\x4b\x70\x44\x52";
case 18: // A
return "\x04\x4b\x70\x44\x53";
case 19: // B
return "\x04\x4b\x70\x44\x54";
case 20: // C
return "\x04\x4b\x70\x44\x55";
case 21: // D
return "\x04\x4b\x70\x44\x56";
case 22: // E
return "\x04\x4b\x70\x44\x57";
case 23: // F
return "\x04\x4b\x70\x44\x58";
case 24: // G
return "\x04\x4b\x70\x44\x59";
case 25: // H
return "\x04\x4b\x70\x44\x5a";
case 26: // I
return "\x04\x4b\x70\x44\x61";
case 27: // J
return "\x04\x4b\x70\x44\x62";
case 28: // K
return "\x04\x4b\x70\x44\x63";
case 29: // L
return "\x04\x4b\x70\x44\x64";
case 30: // M
return "\x04\x4b\x70\x44\x65";
case 31: // N
return "\x04\x4b\x70\x44\x66";
case 32: // O
return "\x04\x4b\x70\x44\x67";
case 33: // P
return "\x04\x4b\x70\x44\x68";
case 34: // Q
return "\x04\x4b\x70\x44\x69";
case 35: // R
return "\x04\x4b\x70\x44\x6a";
case 36: // S
return "\x04\x4b\x70\x44\x6b";
case 37: // T
return "\x04\x4b\x70\x44\x6c";
case 38: // U
return "\x04\x4b\x70\x44\x6d";
case 39: // V
return "\x04\x4b\x70\x44\x6e";
case 40: // W
return "\x04\x4b\x70\x44\x6f";
case 41: // X
return "\x04\x4b\x70\x44\x70";
case 42: // Y
return "\x04\x4b\x70\x44\x71";
case 43: // Z
return "\x04\x4b\x70\x44\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x70\x44\x73";
case 45: // BACKSLASH
return "\x04\x4b\x70\x44\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x70\x44\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x70\x44\x76";
case 48: // WORLD_1
return "\x04\x4b\x70\x44\x77";
case 49: // WORLD_2
return "\x04\x4b\x70\x44\x78";
case 50: // ESCAPE
return "\x04\x4b\x70\x44\x79";
case 51: // ENTER
return "\x04\x4b\x70\x44\x7a";
case 52: // TAB
return "\x04\x4b\x70\x44\x30";
case 53: // BACKSPACE
return "\x04\x4b\x70\x44\x31";
case 54: // INSERT
return "\x04\x4b\x70\x44\x32";
case 55: // DELETE
return "\x04\x4b\x70\x44\x33";
case 56: // RIGHT
return "\x04\x4b\x70\x44\x34";
case 57: // LEFT
return "\x04\x4b\x70\x44\x35";
case 58: // DOWN
return "\x04\x4b\x70\x44\x36";
case 59: // UP
return "\x04\x4b\x70\x44\x37";
case 60: // PAGE_UP
return "\x04\x4b\x70\x44\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x70\x44\x39";
case 62: // HOME
return "\x04\x4b\x70\x44\x2e";
case 63: // END
return "\x04\x4b\x70\x44\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x70\x44\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x70\x44\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x70\x44\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x70\x44\x5e";
case 68: // PAUSE
return "\x04\x4b\x70\x44\x21";
case 69: // F1
return "\x04\x4b\x70\x44\x2f";
case 70: // F2
return "\x04\x4b\x70\x44\x2a";
case 71: // F3
return "\x04\x4b\x70\x44\x3f";
case 72: // F4
return "\x04\x4b\x70\x44\x26";
case 73: // F5
return "\x04\x4b\x70\x44\x3c";
case 74: // F6
return "\x04\x4b\x70\x44\x3e";
case 75: // F7
return "\x04\x4b\x70\x44\x28";
case 76: // F8
return "\x04\x4b\x70\x44\x29";
case 77: // F9
return "\x04\x4b\x70\x44\x5b";
case 78: // F10
return "\x04\x4b\x70\x44\x5d";
case 79: // F11
return "\x04\x4b\x70\x44\x7b";
case 80: // F12
return "\x04\x4b\x70\x44\x7d";
case 81: // F13
return "\x04\x4b\x70\x44\x40";
case 82: // F14
return "\x04\x4b\x70\x44\x25";
case 83: // F15
return "\x04\x4b\x70\x44\x24";
case 84: // F16
return "\x04\x4b\x70\x44\x23";
case 85: // F17
return "\x05\x4b\x70\x44\x42\x41";
case 86: // F18
return "\x05\x4b\x70\x44\x42\x42";
case 87: // F19
return "\x05\x4b\x70\x44\x42\x43";
case 88: // F20
return "\x05\x4b\x70\x44\x42\x44";
case 89: // F21
return "\x05\x4b\x70\x44\x42\x45";
case 90: // F22
return "\x05\x4b\x70\x44\x42\x46";
case 91: // F23
return "\x05\x4b\x70\x44\x42\x47";
case 92: // F24
return "\x05\x4b\x70\x44\x42\x48";
case 93: // F25
return "\x05\x4b\x70\x44\x42\x49";
case 94: // KP_0
return "\x05\x4b\x70\x44\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x70\x44\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x70\x44\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x70\x44\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x70\x44\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x70\x44\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x70\x44\x42\x50";
case 101: // KP_7
return "\x05\x4b\x70\x44\x42\x51";
case 102: // KP_8
return "\x05\x4b\x70\x44\x42\x52";
case 103: // KP_9
return "\x05\x4b\x70\x44\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x70\x44\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x70\x44\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x70\x44\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x70\x44\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x70\x44\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x70\x44\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x70\x44\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x70\x44\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x70\x44\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x70\x44\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x70\x44\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x70\x44\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x70\x44\x42\x68";
} // end switch(key)
case 0x6:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x47\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x70\x47\x42";
case 2: // COMMA
return "\x04\x4b\x70\x47\x43";
case 3: // MINUS
return "\x04\x4b\x70\x47\x44";
case 4: // PERIOD
return "\x04\x4b\x70\x47\x45";
case 5: // SLASH
return "\x04\x4b\x70\x47\x46";
case 6: // 0
return "\x04\x4b\x70\x47\x47";
case 7: // 1
return "\x04\x4b\x70\x47\x48";
case 8: // 2
return "\x04\x4b\x70\x47\x49";
case 9: // 3
return "\x04\x4b\x70\x47\x4a";
case 10: // 4
return "\x04\x4b\x70\x47\x4b";
case 11: // 5
return "\x04\x4b\x70\x47\x4c";
case 12: // 6
return "\x04\x4b\x70\x47\x4d";
case 13: // 7
return "\x04\x4b\x70\x47\x4e";
case 14: // 8
return "\x04\x4b\x70\x47\x4f";
case 15: // 9
return "\x04\x4b\x70\x47\x50";
case 16: // SEMICOLON
return "\x04\x4b\x70\x47\x51";
case 17: // EQUAL
return "\x04\x4b\x70\x47\x52";
case 18: // A
return "\x04\x4b\x70\x47\x53";
case 19: // B
return "\x04\x4b\x70\x47\x54";
case 20: // C
return "\x04\x4b\x70\x47\x55";
case 21: // D
return "\x04\x4b\x70\x47\x56";
case 22: // E
return "\x04\x4b\x70\x47\x57";
case 23: // F
return "\x04\x4b\x70\x47\x58";
case 24: // G
return "\x04\x4b\x70\x47\x59";
case 25: // H
return "\x04\x4b\x70\x47\x5a";
case 26: // I
return "\x04\x4b\x70\x47\x61";
case 27: // J
return "\x04\x4b\x70\x47\x62";
case 28: // K
return "\x04\x4b\x70\x47\x63";
case 29: // L
return "\x04\x4b\x70\x47\x64";
case 30: // M
return "\x04\x4b\x70\x47\x65";
case 31: // N
return "\x04\x4b\x70\x47\x66";
case 32: // O
return "\x04\x4b\x70\x47\x67";
case 33: // P
return "\x04\x4b\x70\x47\x68";
case 34: // Q
return "\x04\x4b\x70\x47\x69";
case 35: // R
return "\x04\x4b\x70\x47\x6a";
case 36: // S
return "\x04\x4b\x70\x47\x6b";
case 37: // T
return "\x04\x4b\x70\x47\x6c";
case 38: // U
return "\x04\x4b\x70\x47\x6d";
case 39: // V
return "\x04\x4b\x70\x47\x6e";
case 40: // W
return "\x04\x4b\x70\x47\x6f";
case 41: // X
return "\x04\x4b\x70\x47\x70";
case 42: // Y
return "\x04\x4b\x70\x47\x71";
case 43: // Z
return "\x04\x4b\x70\x47\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x70\x47\x73";
case 45: // BACKSLASH
return "\x04\x4b\x70\x47\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x70\x47\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x70\x47\x76";
case 48: // WORLD_1
return "\x04\x4b\x70\x47\x77";
case 49: // WORLD_2
return "\x04\x4b\x70\x47\x78";
case 50: // ESCAPE
return "\x04\x4b\x70\x47\x79";
case 51: // ENTER
return "\x04\x4b\x70\x47\x7a";
case 52: // TAB
return "\x04\x4b\x70\x47\x30";
case 53: // BACKSPACE
return "\x04\x4b\x70\x47\x31";
case 54: // INSERT
return "\x04\x4b\x70\x47\x32";
case 55: // DELETE
return "\x04\x4b\x70\x47\x33";
case 56: // RIGHT
return "\x04\x4b\x70\x47\x34";
case 57: // LEFT
return "\x04\x4b\x70\x47\x35";
case 58: // DOWN
return "\x04\x4b\x70\x47\x36";
case 59: // UP
return "\x04\x4b\x70\x47\x37";
case 60: // PAGE_UP
return "\x04\x4b\x70\x47\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x70\x47\x39";
case 62: // HOME
return "\x04\x4b\x70\x47\x2e";
case 63: // END
return "\x04\x4b\x70\x47\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x70\x47\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x70\x47\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x70\x47\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x70\x47\x5e";
case 68: // PAUSE
return "\x04\x4b\x70\x47\x21";
case 69: // F1
return "\x04\x4b\x70\x47\x2f";
case 70: // F2
return "\x04\x4b\x70\x47\x2a";
case 71: // F3
return "\x04\x4b\x70\x47\x3f";
case 72: // F4
return "\x04\x4b\x70\x47\x26";
case 73: // F5
return "\x04\x4b\x70\x47\x3c";
case 74: // F6
return "\x04\x4b\x70\x47\x3e";
case 75: // F7
return "\x04\x4b\x70\x47\x28";
case 76: // F8
return "\x04\x4b\x70\x47\x29";
case 77: // F9
return "\x04\x4b\x70\x47\x5b";
case 78: // F10
return "\x04\x4b\x70\x47\x5d";
case 79: // F11
return "\x04\x4b\x70\x47\x7b";
case 80: // F12
return "\x04\x4b\x70\x47\x7d";
case 81: // F13
return "\x04\x4b\x70\x47\x40";
case 82: // F14
return "\x04\x4b\x70\x47\x25";
case 83: // F15
return "\x04\x4b\x70\x47\x24";
case 84: // F16
return "\x04\x4b\x70\x47\x23";
case 85: // F17
return "\x05\x4b\x70\x47\x42\x41";
case 86: // F18
return "\x05\x4b\x70\x47\x42\x42";
case 87: // F19
return "\x05\x4b\x70\x47\x42\x43";
case 88: // F20
return "\x05\x4b\x70\x47\x42\x44";
case 89: // F21
return "\x05\x4b\x70\x47\x42\x45";
case 90: // F22
return "\x05\x4b\x70\x47\x42\x46";
case 91: // F23
return "\x05\x4b\x70\x47\x42\x47";
case 92: // F24
return "\x05\x4b\x70\x47\x42\x48";
case 93: // F25
return "\x05\x4b\x70\x47\x42\x49";
case 94: // KP_0
return "\x05\x4b\x70\x47\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x70\x47\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x70\x47\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x70\x47\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x70\x47\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x70\x47\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x70\x47\x42\x50";
case 101: // KP_7
return "\x05\x4b\x70\x47\x42\x51";
case 102: // KP_8
return "\x05\x4b\x70\x47\x42\x52";
case 103: // KP_9
return "\x05\x4b\x70\x47\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x70\x47\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x70\x47\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x70\x47\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x70\x47\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x70\x47\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x70\x47\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x70\x47\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x70\x47\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x70\x47\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x70\x47\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x70\x47\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x70\x47\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x70\x47\x42\x68";
} // end switch(key)
case 0x7:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x48\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x70\x48\x42";
case 2: // COMMA
return "\x04\x4b\x70\x48\x43";
case 3: // MINUS
return "\x04\x4b\x70\x48\x44";
case 4: // PERIOD
return "\x04\x4b\x70\x48\x45";
case 5: // SLASH
return "\x04\x4b\x70\x48\x46";
case 6: // 0
return "\x04\x4b\x70\x48\x47";
case 7: // 1
return "\x04\x4b\x70\x48\x48";
case 8: // 2
return "\x04\x4b\x70\x48\x49";
case 9: // 3
return "\x04\x4b\x70\x48\x4a";
case 10: // 4
return "\x04\x4b\x70\x48\x4b";
case 11: // 5
return "\x04\x4b\x70\x48\x4c";
case 12: // 6
return "\x04\x4b\x70\x48\x4d";
case 13: // 7
return "\x04\x4b\x70\x48\x4e";
case 14: // 8
return "\x04\x4b\x70\x48\x4f";
case 15: // 9
return "\x04\x4b\x70\x48\x50";
case 16: // SEMICOLON
return "\x04\x4b\x70\x48\x51";
case 17: // EQUAL
return "\x04\x4b\x70\x48\x52";
case 18: // A
return "\x04\x4b\x70\x48\x53";
case 19: // B
return "\x04\x4b\x70\x48\x54";
case 20: // C
return "\x04\x4b\x70\x48\x55";
case 21: // D
return "\x04\x4b\x70\x48\x56";
case 22: // E
return "\x04\x4b\x70\x48\x57";
case 23: // F
return "\x04\x4b\x70\x48\x58";
case 24: // G
return "\x04\x4b\x70\x48\x59";
case 25: // H
return "\x04\x4b\x70\x48\x5a";
case 26: // I
return "\x04\x4b\x70\x48\x61";
case 27: // J
return "\x04\x4b\x70\x48\x62";
case 28: // K
return "\x04\x4b\x70\x48\x63";
case 29: // L
return "\x04\x4b\x70\x48\x64";
case 30: // M
return "\x04\x4b\x70\x48\x65";
case 31: // N
return "\x04\x4b\x70\x48\x66";
case 32: // O
return "\x04\x4b\x70\x48\x67";
case 33: // P
return "\x04\x4b\x70\x48\x68";
case 34: // Q
return "\x04\x4b\x70\x48\x69";
case 35: // R
return "\x04\x4b\x70\x48\x6a";
case 36: // S
return "\x04\x4b\x70\x48\x6b";
case 37: // T
return "\x04\x4b\x70\x48\x6c";
case 38: // U
return "\x04\x4b\x70\x48\x6d";
case 39: // V
return "\x04\x4b\x70\x48\x6e";
case 40: // W
return "\x04\x4b\x70\x48\x6f";
case 41: // X
return "\x04\x4b\x70\x48\x70";
case 42: // Y
return "\x04\x4b\x70\x48\x71";
case 43: // Z
return "\x04\x4b\x70\x48\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x70\x48\x73";
case 45: // BACKSLASH
return "\x04\x4b\x70\x48\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x70\x48\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x70\x48\x76";
case 48: // WORLD_1
return "\x04\x4b\x70\x48\x77";
case 49: // WORLD_2
return "\x04\x4b\x70\x48\x78";
case 50: // ESCAPE
return "\x04\x4b\x70\x48\x79";
case 51: // ENTER
return "\x04\x4b\x70\x48\x7a";
case 52: // TAB
return "\x04\x4b\x70\x48\x30";
case 53: // BACKSPACE
return "\x04\x4b\x70\x48\x31";
case 54: // INSERT
return "\x04\x4b\x70\x48\x32";
case 55: // DELETE
return "\x04\x4b\x70\x48\x33";
case 56: // RIGHT
return "\x04\x4b\x70\x48\x34";
case 57: // LEFT
return "\x04\x4b\x70\x48\x35";
case 58: // DOWN
return "\x04\x4b\x70\x48\x36";
case 59: // UP
return "\x04\x4b\x70\x48\x37";
case 60: // PAGE_UP
return "\x04\x4b\x70\x48\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x70\x48\x39";
case 62: // HOME
return "\x04\x4b\x70\x48\x2e";
case 63: // END
return "\x04\x4b\x70\x48\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x70\x48\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x70\x48\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x70\x48\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x70\x48\x5e";
case 68: // PAUSE
return "\x04\x4b\x70\x48\x21";
case 69: // F1
return "\x04\x4b\x70\x48\x2f";
case 70: // F2
return "\x04\x4b\x70\x48\x2a";
case 71: // F3
return "\x04\x4b\x70\x48\x3f";
case 72: // F4
return "\x04\x4b\x70\x48\x26";
case 73: // F5
return "\x04\x4b\x70\x48\x3c";
case 74: // F6
return "\x04\x4b\x70\x48\x3e";
case 75: // F7
return "\x04\x4b\x70\x48\x28";
case 76: // F8
return "\x04\x4b\x70\x48\x29";
case 77: // F9
return "\x04\x4b\x70\x48\x5b";
case 78: // F10
return "\x04\x4b\x70\x48\x5d";
case 79: // F11
return "\x04\x4b\x70\x48\x7b";
case 80: // F12
return "\x04\x4b\x70\x48\x7d";
case 81: // F13
return "\x04\x4b\x70\x48\x40";
case 82: // F14
return "\x04\x4b\x70\x48\x25";
case 83: // F15
return "\x04\x4b\x70\x48\x24";
case 84: // F16
return "\x04\x4b\x70\x48\x23";
case 85: // F17
return "\x05\x4b\x70\x48\x42\x41";
case 86: // F18
return "\x05\x4b\x70\x48\x42\x42";
case 87: // F19
return "\x05\x4b\x70\x48\x42\x43";
case 88: // F20
return "\x05\x4b\x70\x48\x42\x44";
case 89: // F21
return "\x05\x4b\x70\x48\x42\x45";
case 90: // F22
return "\x05\x4b\x70\x48\x42\x46";
case 91: // F23
return "\x05\x4b\x70\x48\x42\x47";
case 92: // F24
return "\x05\x4b\x70\x48\x42\x48";
case 93: // F25
return "\x05\x4b\x70\x48\x42\x49";
case 94: // KP_0
return "\x05\x4b\x70\x48\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x70\x48\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x70\x48\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x70\x48\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x70\x48\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x70\x48\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x70\x48\x42\x50";
case 101: // KP_7
return "\x05\x4b\x70\x48\x42\x51";
case 102: // KP_8
return "\x05\x4b\x70\x48\x42\x52";
case 103: // KP_9
return "\x05\x4b\x70\x48\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x70\x48\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x70\x48\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x70\x48\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x70\x48\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x70\x48\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x70\x48\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x70\x48\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x70\x48\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x70\x48\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x70\x48\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x70\x48\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x70\x48\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x70\x48\x42\x68";
} // end switch(key)
case 0x8:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x49\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x70\x49\x42";
case 2: // COMMA
return "\x04\x4b\x70\x49\x43";
case 3: // MINUS
return "\x04\x4b\x70\x49\x44";
case 4: // PERIOD
return "\x04\x4b\x70\x49\x45";
case 5: // SLASH
return "\x04\x4b\x70\x49\x46";
case 6: // 0
return "\x04\x4b\x70\x49\x47";
case 7: // 1
return "\x04\x4b\x70\x49\x48";
case 8: // 2
return "\x04\x4b\x70\x49\x49";
case 9: // 3
return "\x04\x4b\x70\x49\x4a";
case 10: // 4
return "\x04\x4b\x70\x49\x4b";
case 11: // 5
return "\x04\x4b\x70\x49\x4c";
case 12: // 6
return "\x04\x4b\x70\x49\x4d";
case 13: // 7
return "\x04\x4b\x70\x49\x4e";
case 14: // 8
return "\x04\x4b\x70\x49\x4f";
case 15: // 9
return "\x04\x4b\x70\x49\x50";
case 16: // SEMICOLON
return "\x04\x4b\x70\x49\x51";
case 17: // EQUAL
return "\x04\x4b\x70\x49\x52";
case 18: // A
return "\x04\x4b\x70\x49\x53";
case 19: // B
return "\x04\x4b\x70\x49\x54";
case 20: // C
return "\x04\x4b\x70\x49\x55";
case 21: // D
return "\x04\x4b\x70\x49\x56";
case 22: // E
return "\x04\x4b\x70\x49\x57";
case 23: // F
return "\x04\x4b\x70\x49\x58";
case 24: // G
return "\x04\x4b\x70\x49\x59";
case 25: // H
return "\x04\x4b\x70\x49\x5a";
case 26: // I
return "\x04\x4b\x70\x49\x61";
case 27: // J
return "\x04\x4b\x70\x49\x62";
case 28: // K
return "\x04\x4b\x70\x49\x63";
case 29: // L
return "\x04\x4b\x70\x49\x64";
case 30: // M
return "\x04\x4b\x70\x49\x65";
case 31: // N
return "\x04\x4b\x70\x49\x66";
case 32: // O
return "\x04\x4b\x70\x49\x67";
case 33: // P
return "\x04\x4b\x70\x49\x68";
case 34: // Q
return "\x04\x4b\x70\x49\x69";
case 35: // R
return "\x04\x4b\x70\x49\x6a";
case 36: // S
return "\x04\x4b\x70\x49\x6b";
case 37: // T
return "\x04\x4b\x70\x49\x6c";
case 38: // U
return "\x04\x4b\x70\x49\x6d";
case 39: // V
return "\x04\x4b\x70\x49\x6e";
case 40: // W
return "\x04\x4b\x70\x49\x6f";
case 41: // X
return "\x04\x4b\x70\x49\x70";
case 42: // Y
return "\x04\x4b\x70\x49\x71";
case 43: // Z
return "\x04\x4b\x70\x49\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x70\x49\x73";
case 45: // BACKSLASH
return "\x04\x4b\x70\x49\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x70\x49\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x70\x49\x76";
case 48: // WORLD_1
return "\x04\x4b\x70\x49\x77";
case 49: // WORLD_2
return "\x04\x4b\x70\x49\x78";
case 50: // ESCAPE
return "\x04\x4b\x70\x49\x79";
case 51: // ENTER
return "\x04\x4b\x70\x49\x7a";
case 52: // TAB
return "\x04\x4b\x70\x49\x30";
case 53: // BACKSPACE
return "\x04\x4b\x70\x49\x31";
case 54: // INSERT
return "\x04\x4b\x70\x49\x32";
case 55: // DELETE
return "\x04\x4b\x70\x49\x33";
case 56: // RIGHT
return "\x04\x4b\x70\x49\x34";
case 57: // LEFT
return "\x04\x4b\x70\x49\x35";
case 58: // DOWN
return "\x04\x4b\x70\x49\x36";
case 59: // UP
return "\x04\x4b\x70\x49\x37";
case 60: // PAGE_UP
return "\x04\x4b\x70\x49\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x70\x49\x39";
case 62: // HOME
return "\x04\x4b\x70\x49\x2e";
case 63: // END
return "\x04\x4b\x70\x49\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x70\x49\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x70\x49\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x70\x49\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x70\x49\x5e";
case 68: // PAUSE
return "\x04\x4b\x70\x49\x21";
case 69: // F1
return "\x04\x4b\x70\x49\x2f";
case 70: // F2
return "\x04\x4b\x70\x49\x2a";
case 71: // F3
return "\x04\x4b\x70\x49\x3f";
case 72: // F4
return "\x04\x4b\x70\x49\x26";
case 73: // F5
return "\x04\x4b\x70\x49\x3c";
case 74: // F6
return "\x04\x4b\x70\x49\x3e";
case 75: // F7
return "\x04\x4b\x70\x49\x28";
case 76: // F8
return "\x04\x4b\x70\x49\x29";
case 77: // F9
return "\x04\x4b\x70\x49\x5b";
case 78: // F10
return "\x04\x4b\x70\x49\x5d";
case 79: // F11
return "\x04\x4b\x70\x49\x7b";
case 80: // F12
return "\x04\x4b\x70\x49\x7d";
case 81: // F13
return "\x04\x4b\x70\x49\x40";
case 82: // F14
return "\x04\x4b\x70\x49\x25";
case 83: // F15
return "\x04\x4b\x70\x49\x24";
case 84: // F16
return "\x04\x4b\x70\x49\x23";
case 85: // F17
return "\x05\x4b\x70\x49\x42\x41";
case 86: // F18
return "\x05\x4b\x70\x49\x42\x42";
case 87: // F19
return "\x05\x4b\x70\x49\x42\x43";
case 88: // F20
return "\x05\x4b\x70\x49\x42\x44";
case 89: // F21
return "\x05\x4b\x70\x49\x42\x45";
case 90: // F22
return "\x05\x4b\x70\x49\x42\x46";
case 91: // F23
return "\x05\x4b\x70\x49\x42\x47";
case 92: // F24
return "\x05\x4b\x70\x49\x42\x48";
case 93: // F25
return "\x05\x4b\x70\x49\x42\x49";
case 94: // KP_0
return "\x05\x4b\x70\x49\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x70\x49\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x70\x49\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x70\x49\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x70\x49\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x70\x49\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x70\x49\x42\x50";
case 101: // KP_7
return "\x05\x4b\x70\x49\x42\x51";
case 102: // KP_8
return "\x05\x4b\x70\x49\x42\x52";
case 103: // KP_9
return "\x05\x4b\x70\x49\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x70\x49\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x70\x49\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x70\x49\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x70\x49\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x70\x49\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x70\x49\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x70\x49\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x70\x49\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x70\x49\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x70\x49\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x70\x49\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x70\x49\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x70\x49\x42\x68";
} // end switch(key)
case 0x9:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x4a\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x70\x4a\x42";
case 2: // COMMA
return "\x04\x4b\x70\x4a\x43";
case 3: // MINUS
return "\x04\x4b\x70\x4a\x44";
case 4: // PERIOD
return "\x04\x4b\x70\x4a\x45";
case 5: // SLASH
return "\x04\x4b\x70\x4a\x46";
case 6: // 0
return "\x04\x4b\x70\x4a\x47";
case 7: // 1
return "\x04\x4b\x70\x4a\x48";
case 8: // 2
return "\x04\x4b\x70\x4a\x49";
case 9: // 3
return "\x04\x4b\x70\x4a\x4a";
case 10: // 4
return "\x04\x4b\x70\x4a\x4b";
case 11: // 5
return "\x04\x4b\x70\x4a\x4c";
case 12: // 6
return "\x04\x4b\x70\x4a\x4d";
case 13: // 7
return "\x04\x4b\x70\x4a\x4e";
case 14: // 8
return "\x04\x4b\x70\x4a\x4f";
case 15: // 9
return "\x04\x4b\x70\x4a\x50";
case 16: // SEMICOLON
return "\x04\x4b\x70\x4a\x51";
case 17: // EQUAL
return "\x04\x4b\x70\x4a\x52";
case 18: // A
return "\x04\x4b\x70\x4a\x53";
case 19: // B
return "\x04\x4b\x70\x4a\x54";
case 20: // C
return "\x04\x4b\x70\x4a\x55";
case 21: // D
return "\x04\x4b\x70\x4a\x56";
case 22: // E
return "\x04\x4b\x70\x4a\x57";
case 23: // F
return "\x04\x4b\x70\x4a\x58";
case 24: // G
return "\x04\x4b\x70\x4a\x59";
case 25: // H
return "\x04\x4b\x70\x4a\x5a";
case 26: // I
return "\x04\x4b\x70\x4a\x61";
case 27: // J
return "\x04\x4b\x70\x4a\x62";
case 28: // K
return "\x04\x4b\x70\x4a\x63";
case 29: // L
return "\x04\x4b\x70\x4a\x64";
case 30: // M
return "\x04\x4b\x70\x4a\x65";
case 31: // N
return "\x04\x4b\x70\x4a\x66";
case 32: // O
return "\x04\x4b\x70\x4a\x67";
case 33: // P
return "\x04\x4b\x70\x4a\x68";
case 34: // Q
return "\x04\x4b\x70\x4a\x69";
case 35: // R
return "\x04\x4b\x70\x4a\x6a";
case 36: // S
return "\x04\x4b\x70\x4a\x6b";
case 37: // T
return "\x04\x4b\x70\x4a\x6c";
case 38: // U
return "\x04\x4b\x70\x4a\x6d";
case 39: // V
return "\x04\x4b\x70\x4a\x6e";
case 40: // W
return "\x04\x4b\x70\x4a\x6f";
case 41: // X
return "\x04\x4b\x70\x4a\x70";
case 42: // Y
return "\x04\x4b\x70\x4a\x71";
case 43: // Z
return "\x04\x4b\x70\x4a\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x70\x4a\x73";
case 45: // BACKSLASH
return "\x04\x4b\x70\x4a\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x70\x4a\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x70\x4a\x76";
case 48: // WORLD_1
return "\x04\x4b\x70\x4a\x77";
case 49: // WORLD_2
return "\x04\x4b\x70\x4a\x78";
case 50: // ESCAPE
return "\x04\x4b\x70\x4a\x79";
case 51: // ENTER
return "\x04\x4b\x70\x4a\x7a";
case 52: // TAB
return "\x04\x4b\x70\x4a\x30";
case 53: // BACKSPACE
return "\x04\x4b\x70\x4a\x31";
case 54: // INSERT
return "\x04\x4b\x70\x4a\x32";
case 55: // DELETE
return "\x04\x4b\x70\x4a\x33";
case 56: // RIGHT
return "\x04\x4b\x70\x4a\x34";
case 57: // LEFT
return "\x04\x4b\x70\x4a\x35";
case 58: // DOWN
return "\x04\x4b\x70\x4a\x36";
case 59: // UP
return "\x04\x4b\x70\x4a\x37";
case 60: // PAGE_UP
return "\x04\x4b\x70\x4a\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x70\x4a\x39";
case 62: // HOME
return "\x04\x4b\x70\x4a\x2e";
case 63: // END
return "\x04\x4b\x70\x4a\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x70\x4a\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x70\x4a\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x70\x4a\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x70\x4a\x5e";
case 68: // PAUSE
return "\x04\x4b\x70\x4a\x21";
case 69: // F1
return "\x04\x4b\x70\x4a\x2f";
case 70: // F2
return "\x04\x4b\x70\x4a\x2a";
case 71: // F3
return "\x04\x4b\x70\x4a\x3f";
case 72: // F4
return "\x04\x4b\x70\x4a\x26";
case 73: // F5
return "\x04\x4b\x70\x4a\x3c";
case 74: // F6
return "\x04\x4b\x70\x4a\x3e";
case 75: // F7
return "\x04\x4b\x70\x4a\x28";
case 76: // F8
return "\x04\x4b\x70\x4a\x29";
case 77: // F9
return "\x04\x4b\x70\x4a\x5b";
case 78: // F10
return "\x04\x4b\x70\x4a\x5d";
case 79: // F11
return "\x04\x4b\x70\x4a\x7b";
case 80: // F12
return "\x04\x4b\x70\x4a\x7d";
case 81: // F13
return "\x04\x4b\x70\x4a\x40";
case 82: // F14
return "\x04\x4b\x70\x4a\x25";
case 83: // F15
return "\x04\x4b\x70\x4a\x24";
case 84: // F16
return "\x04\x4b\x70\x4a\x23";
case 85: // F17
return "\x05\x4b\x70\x4a\x42\x41";
case 86: // F18
return "\x05\x4b\x70\x4a\x42\x42";
case 87: // F19
return "\x05\x4b\x70\x4a\x42\x43";
case 88: // F20
return "\x05\x4b\x70\x4a\x42\x44";
case 89: // F21
return "\x05\x4b\x70\x4a\x42\x45";
case 90: // F22
return "\x05\x4b\x70\x4a\x42\x46";
case 91: // F23
return "\x05\x4b\x70\x4a\x42\x47";
case 92: // F24
return "\x05\x4b\x70\x4a\x42\x48";
case 93: // F25
return "\x05\x4b\x70\x4a\x42\x49";
case 94: // KP_0
return "\x05\x4b\x70\x4a\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x70\x4a\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x70\x4a\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x70\x4a\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x70\x4a\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x70\x4a\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x70\x4a\x42\x50";
case 101: // KP_7
return "\x05\x4b\x70\x4a\x42\x51";
case 102: // KP_8
return "\x05\x4b\x70\x4a\x42\x52";
case 103: // KP_9
return "\x05\x4b\x70\x4a\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x70\x4a\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x70\x4a\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x70\x4a\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x70\x4a\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x70\x4a\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x70\x4a\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x70\x4a\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x70\x4a\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x70\x4a\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x70\x4a\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x70\x4a\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x70\x4a\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x70\x4a\x42\x68";
} // end switch(key)
case 0xa:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x4d\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x70\x4d\x42";
case 2: // COMMA
return "\x04\x4b\x70\x4d\x43";
case 3: // MINUS
return "\x04\x4b\x70\x4d\x44";
case 4: // PERIOD
return "\x04\x4b\x70\x4d\x45";
case 5: // SLASH
return "\x04\x4b\x70\x4d\x46";
case 6: // 0
return "\x04\x4b\x70\x4d\x47";
case 7: // 1
return "\x04\x4b\x70\x4d\x48";
case 8: // 2
return "\x04\x4b\x70\x4d\x49";
case 9: // 3
return "\x04\x4b\x70\x4d\x4a";
case 10: // 4
return "\x04\x4b\x70\x4d\x4b";
case 11: // 5
return "\x04\x4b\x70\x4d\x4c";
case 12: // 6
return "\x04\x4b\x70\x4d\x4d";
case 13: // 7
return "\x04\x4b\x70\x4d\x4e";
case 14: // 8
return "\x04\x4b\x70\x4d\x4f";
case 15: // 9
return "\x04\x4b\x70\x4d\x50";
case 16: // SEMICOLON
return "\x04\x4b\x70\x4d\x51";
case 17: // EQUAL
return "\x04\x4b\x70\x4d\x52";
case 18: // A
return "\x04\x4b\x70\x4d\x53";
case 19: // B
return "\x04\x4b\x70\x4d\x54";
case 20: // C
return "\x04\x4b\x70\x4d\x55";
case 21: // D
return "\x04\x4b\x70\x4d\x56";
case 22: // E
return "\x04\x4b\x70\x4d\x57";
case 23: // F
return "\x04\x4b\x70\x4d\x58";
case 24: // G
return "\x04\x4b\x70\x4d\x59";
case 25: // H
return "\x04\x4b\x70\x4d\x5a";
case 26: // I
return "\x04\x4b\x70\x4d\x61";
case 27: // J
return "\x04\x4b\x70\x4d\x62";
case 28: // K
return "\x04\x4b\x70\x4d\x63";
case 29: // L
return "\x04\x4b\x70\x4d\x64";
case 30: // M
return "\x04\x4b\x70\x4d\x65";
case 31: // N
return "\x04\x4b\x70\x4d\x66";
case 32: // O
return "\x04\x4b\x70\x4d\x67";
case 33: // P
return "\x04\x4b\x70\x4d\x68";
case 34: // Q
return "\x04\x4b\x70\x4d\x69";
case 35: // R
return "\x04\x4b\x70\x4d\x6a";
case 36: // S
return "\x04\x4b\x70\x4d\x6b";
case 37: // T
return "\x04\x4b\x70\x4d\x6c";
case 38: // U
return "\x04\x4b\x70\x4d\x6d";
case 39: // V
return "\x04\x4b\x70\x4d\x6e";
case 40: // W
return "\x04\x4b\x70\x4d\x6f";
case 41: // X
return "\x04\x4b\x70\x4d\x70";
case 42: // Y
return "\x04\x4b\x70\x4d\x71";
case 43: // Z
return "\x04\x4b\x70\x4d\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x70\x4d\x73";
case 45: // BACKSLASH
return "\x04\x4b\x70\x4d\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x70\x4d\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x70\x4d\x76";
case 48: // WORLD_1
return "\x04\x4b\x70\x4d\x77";
case 49: // WORLD_2
return "\x04\x4b\x70\x4d\x78";
case 50: // ESCAPE
return "\x04\x4b\x70\x4d\x79";
case 51: // ENTER
return "\x04\x4b\x70\x4d\x7a";
case 52: // TAB
return "\x04\x4b\x70\x4d\x30";
case 53: // BACKSPACE
return "\x04\x4b\x70\x4d\x31";
case 54: // INSERT
return "\x04\x4b\x70\x4d\x32";
case 55: // DELETE
return "\x04\x4b\x70\x4d\x33";
case 56: // RIGHT
return "\x04\x4b\x70\x4d\x34";
case 57: // LEFT
return "\x04\x4b\x70\x4d\x35";
case 58: // DOWN
return "\x04\x4b\x70\x4d\x36";
case 59: // UP
return "\x04\x4b\x70\x4d\x37";
case 60: // PAGE_UP
return "\x04\x4b\x70\x4d\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x70\x4d\x39";
case 62: // HOME
return "\x04\x4b\x70\x4d\x2e";
case 63: // END
return "\x04\x4b\x70\x4d\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x70\x4d\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x70\x4d\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x70\x4d\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x70\x4d\x5e";
case 68: // PAUSE
return "\x04\x4b\x70\x4d\x21";
case 69: // F1
return "\x04\x4b\x70\x4d\x2f";
case 70: // F2
return "\x04\x4b\x70\x4d\x2a";
case 71: // F3
return "\x04\x4b\x70\x4d\x3f";
case 72: // F4
return "\x04\x4b\x70\x4d\x26";
case 73: // F5
return "\x04\x4b\x70\x4d\x3c";
case 74: // F6
return "\x04\x4b\x70\x4d\x3e";
case 75: // F7
return "\x04\x4b\x70\x4d\x28";
case 76: // F8
return "\x04\x4b\x70\x4d\x29";
case 77: // F9
return "\x04\x4b\x70\x4d\x5b";
case 78: // F10
return "\x04\x4b\x70\x4d\x5d";
case 79: // F11
return "\x04\x4b\x70\x4d\x7b";
case 80: // F12
return "\x04\x4b\x70\x4d\x7d";
case 81: // F13
return "\x04\x4b\x70\x4d\x40";
case 82: // F14
return "\x04\x4b\x70\x4d\x25";
case 83: // F15
return "\x04\x4b\x70\x4d\x24";
case 84: // F16
return "\x04\x4b\x70\x4d\x23";
case 85: // F17
return "\x05\x4b\x70\x4d\x42\x41";
case 86: // F18
return "\x05\x4b\x70\x4d\x42\x42";
case 87: // F19
return "\x05\x4b\x70\x4d\x42\x43";
case 88: // F20
return "\x05\x4b\x70\x4d\x42\x44";
case 89: // F21
return "\x05\x4b\x70\x4d\x42\x45";
case 90: // F22
return "\x05\x4b\x70\x4d\x42\x46";
case 91: // F23
return "\x05\x4b\x70\x4d\x42\x47";
case 92: // F24
return "\x05\x4b\x70\x4d\x42\x48";
case 93: // F25
return "\x05\x4b\x70\x4d\x42\x49";
case 94: // KP_0
return "\x05\x4b\x70\x4d\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x70\x4d\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x70\x4d\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x70\x4d\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x70\x4d\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x70\x4d\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x70\x4d\x42\x50";
case 101: // KP_7
return "\x05\x4b\x70\x4d\x42\x51";
case 102: // KP_8
return "\x05\x4b\x70\x4d\x42\x52";
case 103: // KP_9
return "\x05\x4b\x70\x4d\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x70\x4d\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x70\x4d\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x70\x4d\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x70\x4d\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x70\x4d\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x70\x4d\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x70\x4d\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x70\x4d\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x70\x4d\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x70\x4d\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x70\x4d\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x70\x4d\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x70\x4d\x42\x68";
} // end switch(key)
case 0xb:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x4e\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x70\x4e\x42";
case 2: // COMMA
return "\x04\x4b\x70\x4e\x43";
case 3: // MINUS
return "\x04\x4b\x70\x4e\x44";
case 4: // PERIOD
return "\x04\x4b\x70\x4e\x45";
case 5: // SLASH
return "\x04\x4b\x70\x4e\x46";
case 6: // 0
return "\x04\x4b\x70\x4e\x47";
case 7: // 1
return "\x04\x4b\x70\x4e\x48";
case 8: // 2
return "\x04\x4b\x70\x4e\x49";
case 9: // 3
return "\x04\x4b\x70\x4e\x4a";
case 10: // 4
return "\x04\x4b\x70\x4e\x4b";
case 11: // 5
return "\x04\x4b\x70\x4e\x4c";
case 12: // 6
return "\x04\x4b\x70\x4e\x4d";
case 13: // 7
return "\x04\x4b\x70\x4e\x4e";
case 14: // 8
return "\x04\x4b\x70\x4e\x4f";
case 15: // 9
return "\x04\x4b\x70\x4e\x50";
case 16: // SEMICOLON
return "\x04\x4b\x70\x4e\x51";
case 17: // EQUAL
return "\x04\x4b\x70\x4e\x52";
case 18: // A
return "\x04\x4b\x70\x4e\x53";
case 19: // B
return "\x04\x4b\x70\x4e\x54";
case 20: // C
return "\x04\x4b\x70\x4e\x55";
case 21: // D
return "\x04\x4b\x70\x4e\x56";
case 22: // E
return "\x04\x4b\x70\x4e\x57";
case 23: // F
return "\x04\x4b\x70\x4e\x58";
case 24: // G
return "\x04\x4b\x70\x4e\x59";
case 25: // H
return "\x04\x4b\x70\x4e\x5a";
case 26: // I
return "\x04\x4b\x70\x4e\x61";
case 27: // J
return "\x04\x4b\x70\x4e\x62";
case 28: // K
return "\x04\x4b\x70\x4e\x63";
case 29: // L
return "\x04\x4b\x70\x4e\x64";
case 30: // M
return "\x04\x4b\x70\x4e\x65";
case 31: // N
return "\x04\x4b\x70\x4e\x66";
case 32: // O
return "\x04\x4b\x70\x4e\x67";
case 33: // P
return "\x04\x4b\x70\x4e\x68";
case 34: // Q
return "\x04\x4b\x70\x4e\x69";
case 35: // R
return "\x04\x4b\x70\x4e\x6a";
case 36: // S
return "\x04\x4b\x70\x4e\x6b";
case 37: // T
return "\x04\x4b\x70\x4e\x6c";
case 38: // U
return "\x04\x4b\x70\x4e\x6d";
case 39: // V
return "\x04\x4b\x70\x4e\x6e";
case 40: // W
return "\x04\x4b\x70\x4e\x6f";
case 41: // X
return "\x04\x4b\x70\x4e\x70";
case 42: // Y
return "\x04\x4b\x70\x4e\x71";
case 43: // Z
return "\x04\x4b\x70\x4e\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x70\x4e\x73";
case 45: // BACKSLASH
return "\x04\x4b\x70\x4e\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x70\x4e\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x70\x4e\x76";
case 48: // WORLD_1
return "\x04\x4b\x70\x4e\x77";
case 49: // WORLD_2
return "\x04\x4b\x70\x4e\x78";
case 50: // ESCAPE
return "\x04\x4b\x70\x4e\x79";
case 51: // ENTER
return "\x04\x4b\x70\x4e\x7a";
case 52: // TAB
return "\x04\x4b\x70\x4e\x30";
case 53: // BACKSPACE
return "\x04\x4b\x70\x4e\x31";
case 54: // INSERT
return "\x04\x4b\x70\x4e\x32";
case 55: // DELETE
return "\x04\x4b\x70\x4e\x33";
case 56: // RIGHT
return "\x04\x4b\x70\x4e\x34";
case 57: // LEFT
return "\x04\x4b\x70\x4e\x35";
case 58: // DOWN
return "\x04\x4b\x70\x4e\x36";
case 59: // UP
return "\x04\x4b\x70\x4e\x37";
case 60: // PAGE_UP
return "\x04\x4b\x70\x4e\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x70\x4e\x39";
case 62: // HOME
return "\x04\x4b\x70\x4e\x2e";
case 63: // END
return "\x04\x4b\x70\x4e\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x70\x4e\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x70\x4e\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x70\x4e\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x70\x4e\x5e";
case 68: // PAUSE
return "\x04\x4b\x70\x4e\x21";
case 69: // F1
return "\x04\x4b\x70\x4e\x2f";
case 70: // F2
return "\x04\x4b\x70\x4e\x2a";
case 71: // F3
return "\x04\x4b\x70\x4e\x3f";
case 72: // F4
return "\x04\x4b\x70\x4e\x26";
case 73: // F5
return "\x04\x4b\x70\x4e\x3c";
case 74: // F6
return "\x04\x4b\x70\x4e\x3e";
case 75: // F7
return "\x04\x4b\x70\x4e\x28";
case 76: // F8
return "\x04\x4b\x70\x4e\x29";
case 77: // F9
return "\x04\x4b\x70\x4e\x5b";
case 78: // F10
return "\x04\x4b\x70\x4e\x5d";
case 79: // F11
return "\x04\x4b\x70\x4e\x7b";
case 80: // F12
return "\x04\x4b\x70\x4e\x7d";
case 81: // F13
return "\x04\x4b\x70\x4e\x40";
case 82: // F14
return "\x04\x4b\x70\x4e\x25";
case 83: // F15
return "\x04\x4b\x70\x4e\x24";
case 84: // F16
return "\x04\x4b\x70\x4e\x23";
case 85: // F17
return "\x05\x4b\x70\x4e\x42\x41";
case 86: // F18
return "\x05\x4b\x70\x4e\x42\x42";
case 87: // F19
return "\x05\x4b\x70\x4e\x42\x43";
case 88: // F20
return "\x05\x4b\x70\x4e\x42\x44";
case 89: // F21
return "\x05\x4b\x70\x4e\x42\x45";
case 90: // F22
return "\x05\x4b\x70\x4e\x42\x46";
case 91: // F23
return "\x05\x4b\x70\x4e\x42\x47";
case 92: // F24
return "\x05\x4b\x70\x4e\x42\x48";
case 93: // F25
return "\x05\x4b\x70\x4e\x42\x49";
case 94: // KP_0
return "\x05\x4b\x70\x4e\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x70\x4e\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x70\x4e\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x70\x4e\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x70\x4e\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x70\x4e\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x70\x4e\x42\x50";
case 101: // KP_7
return "\x05\x4b\x70\x4e\x42\x51";
case 102: // KP_8
return "\x05\x4b\x70\x4e\x42\x52";
case 103: // KP_9
return "\x05\x4b\x70\x4e\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x70\x4e\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x70\x4e\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x70\x4e\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x70\x4e\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x70\x4e\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x70\x4e\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x70\x4e\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x70\x4e\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x70\x4e\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x70\x4e\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x70\x4e\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x70\x4e\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x70\x4e\x42\x68";
} // end switch(key)
case 0xc:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x4b\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x70\x4b\x42";
case 2: // COMMA
return "\x04\x4b\x70\x4b\x43";
case 3: // MINUS
return "\x04\x4b\x70\x4b\x44";
case 4: // PERIOD
return "\x04\x4b\x70\x4b\x45";
case 5: // SLASH
return "\x04\x4b\x70\x4b\x46";
case 6: // 0
return "\x04\x4b\x70\x4b\x47";
case 7: // 1
return "\x04\x4b\x70\x4b\x48";
case 8: // 2
return "\x04\x4b\x70\x4b\x49";
case 9: // 3
return "\x04\x4b\x70\x4b\x4a";
case 10: // 4
return "\x04\x4b\x70\x4b\x4b";
case 11: // 5
return "\x04\x4b\x70\x4b\x4c";
case 12: // 6
return "\x04\x4b\x70\x4b\x4d";
case 13: // 7
return "\x04\x4b\x70\x4b\x4e";
case 14: // 8
return "\x04\x4b\x70\x4b\x4f";
case 15: // 9
return "\x04\x4b\x70\x4b\x50";
case 16: // SEMICOLON
return "\x04\x4b\x70\x4b\x51";
case 17: // EQUAL
return "\x04\x4b\x70\x4b\x52";
case 18: // A
return "\x04\x4b\x70\x4b\x53";
case 19: // B
return "\x04\x4b\x70\x4b\x54";
case 20: // C
return "\x04\x4b\x70\x4b\x55";
case 21: // D
return "\x04\x4b\x70\x4b\x56";
case 22: // E
return "\x04\x4b\x70\x4b\x57";
case 23: // F
return "\x04\x4b\x70\x4b\x58";
case 24: // G
return "\x04\x4b\x70\x4b\x59";
case 25: // H
return "\x04\x4b\x70\x4b\x5a";
case 26: // I
return "\x04\x4b\x70\x4b\x61";
case 27: // J
return "\x04\x4b\x70\x4b\x62";
case 28: // K
return "\x04\x4b\x70\x4b\x63";
case 29: // L
return "\x04\x4b\x70\x4b\x64";
case 30: // M
return "\x04\x4b\x70\x4b\x65";
case 31: // N
return "\x04\x4b\x70\x4b\x66";
case 32: // O
return "\x04\x4b\x70\x4b\x67";
case 33: // P
return "\x04\x4b\x70\x4b\x68";
case 34: // Q
return "\x04\x4b\x70\x4b\x69";
case 35: // R
return "\x04\x4b\x70\x4b\x6a";
case 36: // S
return "\x04\x4b\x70\x4b\x6b";
case 37: // T
return "\x04\x4b\x70\x4b\x6c";
case 38: // U
return "\x04\x4b\x70\x4b\x6d";
case 39: // V
return "\x04\x4b\x70\x4b\x6e";
case 40: // W
return "\x04\x4b\x70\x4b\x6f";
case 41: // X
return "\x04\x4b\x70\x4b\x70";
case 42: // Y
return "\x04\x4b\x70\x4b\x71";
case 43: // Z
return "\x04\x4b\x70\x4b\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x70\x4b\x73";
case 45: // BACKSLASH
return "\x04\x4b\x70\x4b\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x70\x4b\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x70\x4b\x76";
case 48: // WORLD_1
return "\x04\x4b\x70\x4b\x77";
case 49: // WORLD_2
return "\x04\x4b\x70\x4b\x78";
case 50: // ESCAPE
return "\x04\x4b\x70\x4b\x79";
case 51: // ENTER
return "\x04\x4b\x70\x4b\x7a";
case 52: // TAB
return "\x04\x4b\x70\x4b\x30";
case 53: // BACKSPACE
return "\x04\x4b\x70\x4b\x31";
case 54: // INSERT
return "\x04\x4b\x70\x4b\x32";
case 55: // DELETE
return "\x04\x4b\x70\x4b\x33";
case 56: // RIGHT
return "\x04\x4b\x70\x4b\x34";
case 57: // LEFT
return "\x04\x4b\x70\x4b\x35";
case 58: // DOWN
return "\x04\x4b\x70\x4b\x36";
case 59: // UP
return "\x04\x4b\x70\x4b\x37";
case 60: // PAGE_UP
return "\x04\x4b\x70\x4b\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x70\x4b\x39";
case 62: // HOME
return "\x04\x4b\x70\x4b\x2e";
case 63: // END
return "\x04\x4b\x70\x4b\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x70\x4b\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x70\x4b\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x70\x4b\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x70\x4b\x5e";
case 68: // PAUSE
return "\x04\x4b\x70\x4b\x21";
case 69: // F1
return "\x04\x4b\x70\x4b\x2f";
case 70: // F2
return "\x04\x4b\x70\x4b\x2a";
case 71: // F3
return "\x04\x4b\x70\x4b\x3f";
case 72: // F4
return "\x04\x4b\x70\x4b\x26";
case 73: // F5
return "\x04\x4b\x70\x4b\x3c";
case 74: // F6
return "\x04\x4b\x70\x4b\x3e";
case 75: // F7
return "\x04\x4b\x70\x4b\x28";
case 76: // F8
return "\x04\x4b\x70\x4b\x29";
case 77: // F9
return "\x04\x4b\x70\x4b\x5b";
case 78: // F10
return "\x04\x4b\x70\x4b\x5d";
case 79: // F11
return "\x04\x4b\x70\x4b\x7b";
case 80: // F12
return "\x04\x4b\x70\x4b\x7d";
case 81: // F13
return "\x04\x4b\x70\x4b\x40";
case 82: // F14
return "\x04\x4b\x70\x4b\x25";
case 83: // F15
return "\x04\x4b\x70\x4b\x24";
case 84: // F16
return "\x04\x4b\x70\x4b\x23";
case 85: // F17
return "\x05\x4b\x70\x4b\x42\x41";
case 86: // F18
return "\x05\x4b\x70\x4b\x42\x42";
case 87: // F19
return "\x05\x4b\x70\x4b\x42\x43";
case 88: // F20
return "\x05\x4b\x70\x4b\x42\x44";
case 89: // F21
return "\x05\x4b\x70\x4b\x42\x45";
case 90: // F22
return "\x05\x4b\x70\x4b\x42\x46";
case 91: // F23
return "\x05\x4b\x70\x4b\x42\x47";
case 92: // F24
return "\x05\x4b\x70\x4b\x42\x48";
case 93: // F25
return "\x05\x4b\x70\x4b\x42\x49";
case 94: // KP_0
return "\x05\x4b\x70\x4b\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x70\x4b\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x70\x4b\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x70\x4b\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x70\x4b\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x70\x4b\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x70\x4b\x42\x50";
case 101: // KP_7
return "\x05\x4b\x70\x4b\x42\x51";
case 102: // KP_8
return "\x05\x4b\x70\x4b\x42\x52";
case 103: // KP_9
return "\x05\x4b\x70\x4b\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x70\x4b\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x70\x4b\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x70\x4b\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x70\x4b\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x70\x4b\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x70\x4b\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x70\x4b\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x70\x4b\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x70\x4b\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x70\x4b\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x70\x4b\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x70\x4b\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x70\x4b\x42\x68";
} // end switch(key)
case 0xd:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x4c\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x70\x4c\x42";
case 2: // COMMA
return "\x04\x4b\x70\x4c\x43";
case 3: // MINUS
return "\x04\x4b\x70\x4c\x44";
case 4: // PERIOD
return "\x04\x4b\x70\x4c\x45";
case 5: // SLASH
return "\x04\x4b\x70\x4c\x46";
case 6: // 0
return "\x04\x4b\x70\x4c\x47";
case 7: // 1
return "\x04\x4b\x70\x4c\x48";
case 8: // 2
return "\x04\x4b\x70\x4c\x49";
case 9: // 3
return "\x04\x4b\x70\x4c\x4a";
case 10: // 4
return "\x04\x4b\x70\x4c\x4b";
case 11: // 5
return "\x04\x4b\x70\x4c\x4c";
case 12: // 6
return "\x04\x4b\x70\x4c\x4d";
case 13: // 7
return "\x04\x4b\x70\x4c\x4e";
case 14: // 8
return "\x04\x4b\x70\x4c\x4f";
case 15: // 9
return "\x04\x4b\x70\x4c\x50";
case 16: // SEMICOLON
return "\x04\x4b\x70\x4c\x51";
case 17: // EQUAL
return "\x04\x4b\x70\x4c\x52";
case 18: // A
return "\x04\x4b\x70\x4c\x53";
case 19: // B
return "\x04\x4b\x70\x4c\x54";
case 20: // C
return "\x04\x4b\x70\x4c\x55";
case 21: // D
return "\x04\x4b\x70\x4c\x56";
case 22: // E
return "\x04\x4b\x70\x4c\x57";
case 23: // F
return "\x04\x4b\x70\x4c\x58";
case 24: // G
return "\x04\x4b\x70\x4c\x59";
case 25: // H
return "\x04\x4b\x70\x4c\x5a";
case 26: // I
return "\x04\x4b\x70\x4c\x61";
case 27: // J
return "\x04\x4b\x70\x4c\x62";
case 28: // K
return "\x04\x4b\x70\x4c\x63";
case 29: // L
return "\x04\x4b\x70\x4c\x64";
case 30: // M
return "\x04\x4b\x70\x4c\x65";
case 31: // N
return "\x04\x4b\x70\x4c\x66";
case 32: // O
return "\x04\x4b\x70\x4c\x67";
case 33: // P
return "\x04\x4b\x70\x4c\x68";
case 34: // Q
return "\x04\x4b\x70\x4c\x69";
case 35: // R
return "\x04\x4b\x70\x4c\x6a";
case 36: // S
return "\x04\x4b\x70\x4c\x6b";
case 37: // T
return "\x04\x4b\x70\x4c\x6c";
case 38: // U
return "\x04\x4b\x70\x4c\x6d";
case 39: // V
return "\x04\x4b\x70\x4c\x6e";
case 40: // W
return "\x04\x4b\x70\x4c\x6f";
case 41: // X
return "\x04\x4b\x70\x4c\x70";
case 42: // Y
return "\x04\x4b\x70\x4c\x71";
case 43: // Z
return "\x04\x4b\x70\x4c\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x70\x4c\x73";
case 45: // BACKSLASH
return "\x04\x4b\x70\x4c\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x70\x4c\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x70\x4c\x76";
case 48: // WORLD_1
return "\x04\x4b\x70\x4c\x77";
case 49: // WORLD_2
return "\x04\x4b\x70\x4c\x78";
case 50: // ESCAPE
return "\x04\x4b\x70\x4c\x79";
case 51: // ENTER
return "\x04\x4b\x70\x4c\x7a";
case 52: // TAB
return "\x04\x4b\x70\x4c\x30";
case 53: // BACKSPACE
return "\x04\x4b\x70\x4c\x31";
case 54: // INSERT
return "\x04\x4b\x70\x4c\x32";
case 55: // DELETE
return "\x04\x4b\x70\x4c\x33";
case 56: // RIGHT
return "\x04\x4b\x70\x4c\x34";
case 57: // LEFT
return "\x04\x4b\x70\x4c\x35";
case 58: // DOWN
return "\x04\x4b\x70\x4c\x36";
case 59: // UP
return "\x04\x4b\x70\x4c\x37";
case 60: // PAGE_UP
return "\x04\x4b\x70\x4c\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x70\x4c\x39";
case 62: // HOME
return "\x04\x4b\x70\x4c\x2e";
case 63: // END
return "\x04\x4b\x70\x4c\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x70\x4c\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x70\x4c\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x70\x4c\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x70\x4c\x5e";
case 68: // PAUSE
return "\x04\x4b\x70\x4c\x21";
case 69: // F1
return "\x04\x4b\x70\x4c\x2f";
case 70: // F2
return "\x04\x4b\x70\x4c\x2a";
case 71: // F3
return "\x04\x4b\x70\x4c\x3f";
case 72: // F4
return "\x04\x4b\x70\x4c\x26";
case 73: // F5
return "\x04\x4b\x70\x4c\x3c";
case 74: // F6
return "\x04\x4b\x70\x4c\x3e";
case 75: // F7
return "\x04\x4b\x70\x4c\x28";
case 76: // F8
return "\x04\x4b\x70\x4c\x29";
case 77: // F9
return "\x04\x4b\x70\x4c\x5b";
case 78: // F10
return "\x04\x4b\x70\x4c\x5d";
case 79: // F11
return "\x04\x4b\x70\x4c\x7b";
case 80: // F12
return "\x04\x4b\x70\x4c\x7d";
case 81: // F13
return "\x04\x4b\x70\x4c\x40";
case 82: // F14
return "\x04\x4b\x70\x4c\x25";
case 83: // F15
return "\x04\x4b\x70\x4c\x24";
case 84: // F16
return "\x04\x4b\x70\x4c\x23";
case 85: // F17
return "\x05\x4b\x70\x4c\x42\x41";
case 86: // F18
return "\x05\x4b\x70\x4c\x42\x42";
case 87: // F19
return "\x05\x4b\x70\x4c\x42\x43";
case 88: // F20
return "\x05\x4b\x70\x4c\x42\x44";
case 89: // F21
return "\x05\x4b\x70\x4c\x42\x45";
case 90: // F22
return "\x05\x4b\x70\x4c\x42\x46";
case 91: // F23
return "\x05\x4b\x70\x4c\x42\x47";
case 92: // F24
return "\x05\x4b\x70\x4c\x42\x48";
case 93: // F25
return "\x05\x4b\x70\x4c\x42\x49";
case 94: // KP_0
return "\x05\x4b\x70\x4c\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x70\x4c\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x70\x4c\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x70\x4c\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x70\x4c\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x70\x4c\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x70\x4c\x42\x50";
case 101: // KP_7
return "\x05\x4b\x70\x4c\x42\x51";
case 102: // KP_8
return "\x05\x4b\x70\x4c\x42\x52";
case 103: // KP_9
return "\x05\x4b\x70\x4c\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x70\x4c\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x70\x4c\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x70\x4c\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x70\x4c\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x70\x4c\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x70\x4c\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x70\x4c\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x70\x4c\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x70\x4c\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x70\x4c\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x70\x4c\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x70\x4c\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x70\x4c\x42\x68";
} // end switch(key)
case 0xe:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x4f\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x70\x4f\x42";
case 2: // COMMA
return "\x04\x4b\x70\x4f\x43";
case 3: // MINUS
return "\x04\x4b\x70\x4f\x44";
case 4: // PERIOD
return "\x04\x4b\x70\x4f\x45";
case 5: // SLASH
return "\x04\x4b\x70\x4f\x46";
case 6: // 0
return "\x04\x4b\x70\x4f\x47";
case 7: // 1
return "\x04\x4b\x70\x4f\x48";
case 8: // 2
return "\x04\x4b\x70\x4f\x49";
case 9: // 3
return "\x04\x4b\x70\x4f\x4a";
case 10: // 4
return "\x04\x4b\x70\x4f\x4b";
case 11: // 5
return "\x04\x4b\x70\x4f\x4c";
case 12: // 6
return "\x04\x4b\x70\x4f\x4d";
case 13: // 7
return "\x04\x4b\x70\x4f\x4e";
case 14: // 8
return "\x04\x4b\x70\x4f\x4f";
case 15: // 9
return "\x04\x4b\x70\x4f\x50";
case 16: // SEMICOLON
return "\x04\x4b\x70\x4f\x51";
case 17: // EQUAL
return "\x04\x4b\x70\x4f\x52";
case 18: // A
return "\x04\x4b\x70\x4f\x53";
case 19: // B
return "\x04\x4b\x70\x4f\x54";
case 20: // C
return "\x04\x4b\x70\x4f\x55";
case 21: // D
return "\x04\x4b\x70\x4f\x56";
case 22: // E
return "\x04\x4b\x70\x4f\x57";
case 23: // F
return "\x04\x4b\x70\x4f\x58";
case 24: // G
return "\x04\x4b\x70\x4f\x59";
case 25: // H
return "\x04\x4b\x70\x4f\x5a";
case 26: // I
return "\x04\x4b\x70\x4f\x61";
case 27: // J
return "\x04\x4b\x70\x4f\x62";
case 28: // K
return "\x04\x4b\x70\x4f\x63";
case 29: // L
return "\x04\x4b\x70\x4f\x64";
case 30: // M
return "\x04\x4b\x70\x4f\x65";
case 31: // N
return "\x04\x4b\x70\x4f\x66";
case 32: // O
return "\x04\x4b\x70\x4f\x67";
case 33: // P
return "\x04\x4b\x70\x4f\x68";
case 34: // Q
return "\x04\x4b\x70\x4f\x69";
case 35: // R
return "\x04\x4b\x70\x4f\x6a";
case 36: // S
return "\x04\x4b\x70\x4f\x6b";
case 37: // T
return "\x04\x4b\x70\x4f\x6c";
case 38: // U
return "\x04\x4b\x70\x4f\x6d";
case 39: // V
return "\x04\x4b\x70\x4f\x6e";
case 40: // W
return "\x04\x4b\x70\x4f\x6f";
case 41: // X
return "\x04\x4b\x70\x4f\x70";
case 42: // Y
return "\x04\x4b\x70\x4f\x71";
case 43: // Z
return "\x04\x4b\x70\x4f\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x70\x4f\x73";
case 45: // BACKSLASH
return "\x04\x4b\x70\x4f\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x70\x4f\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x70\x4f\x76";
case 48: // WORLD_1
return "\x04\x4b\x70\x4f\x77";
case 49: // WORLD_2
return "\x04\x4b\x70\x4f\x78";
case 50: // ESCAPE
return "\x04\x4b\x70\x4f\x79";
case 51: // ENTER
return "\x04\x4b\x70\x4f\x7a";
case 52: // TAB
return "\x04\x4b\x70\x4f\x30";
case 53: // BACKSPACE
return "\x04\x4b\x70\x4f\x31";
case 54: // INSERT
return "\x04\x4b\x70\x4f\x32";
case 55: // DELETE
return "\x04\x4b\x70\x4f\x33";
case 56: // RIGHT
return "\x04\x4b\x70\x4f\x34";
case 57: // LEFT
return "\x04\x4b\x70\x4f\x35";
case 58: // DOWN
return "\x04\x4b\x70\x4f\x36";
case 59: // UP
return "\x04\x4b\x70\x4f\x37";
case 60: // PAGE_UP
return "\x04\x4b\x70\x4f\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x70\x4f\x39";
case 62: // HOME
return "\x04\x4b\x70\x4f\x2e";
case 63: // END
return "\x04\x4b\x70\x4f\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x70\x4f\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x70\x4f\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x70\x4f\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x70\x4f\x5e";
case 68: // PAUSE
return "\x04\x4b\x70\x4f\x21";
case 69: // F1
return "\x04\x4b\x70\x4f\x2f";
case 70: // F2
return "\x04\x4b\x70\x4f\x2a";
case 71: // F3
return "\x04\x4b\x70\x4f\x3f";
case 72: // F4
return "\x04\x4b\x70\x4f\x26";
case 73: // F5
return "\x04\x4b\x70\x4f\x3c";
case 74: // F6
return "\x04\x4b\x70\x4f\x3e";
case 75: // F7
return "\x04\x4b\x70\x4f\x28";
case 76: // F8
return "\x04\x4b\x70\x4f\x29";
case 77: // F9
return "\x04\x4b\x70\x4f\x5b";
case 78: // F10
return "\x04\x4b\x70\x4f\x5d";
case 79: // F11
return "\x04\x4b\x70\x4f\x7b";
case 80: // F12
return "\x04\x4b\x70\x4f\x7d";
case 81: // F13
return "\x04\x4b\x70\x4f\x40";
case 82: // F14
return "\x04\x4b\x70\x4f\x25";
case 83: // F15
return "\x04\x4b\x70\x4f\x24";
case 84: // F16
return "\x04\x4b\x70\x4f\x23";
case 85: // F17
return "\x05\x4b\x70\x4f\x42\x41";
case 86: // F18
return "\x05\x4b\x70\x4f\x42\x42";
case 87: // F19
return "\x05\x4b\x70\x4f\x42\x43";
case 88: // F20
return "\x05\x4b\x70\x4f\x42\x44";
case 89: // F21
return "\x05\x4b\x70\x4f\x42\x45";
case 90: // F22
return "\x05\x4b\x70\x4f\x42\x46";
case 91: // F23
return "\x05\x4b\x70\x4f\x42\x47";
case 92: // F24
return "\x05\x4b\x70\x4f\x42\x48";
case 93: // F25
return "\x05\x4b\x70\x4f\x42\x49";
case 94: // KP_0
return "\x05\x4b\x70\x4f\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x70\x4f\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x70\x4f\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x70\x4f\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x70\x4f\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x70\x4f\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x70\x4f\x42\x50";
case 101: // KP_7
return "\x05\x4b\x70\x4f\x42\x51";
case 102: // KP_8
return "\x05\x4b\x70\x4f\x42\x52";
case 103: // KP_9
return "\x05\x4b\x70\x4f\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x70\x4f\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x70\x4f\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x70\x4f\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x70\x4f\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x70\x4f\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x70\x4f\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x70\x4f\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x70\x4f\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x70\x4f\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x70\x4f\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x70\x4f\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x70\x4f\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x70\x4f\x42\x68";
} // end switch(key)
case 0xf:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x70\x50\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x70\x50\x42";
case 2: // COMMA
return "\x04\x4b\x70\x50\x43";
case 3: // MINUS
return "\x04\x4b\x70\x50\x44";
case 4: // PERIOD
return "\x04\x4b\x70\x50\x45";
case 5: // SLASH
return "\x04\x4b\x70\x50\x46";
case 6: // 0
return "\x04\x4b\x70\x50\x47";
case 7: // 1
return "\x04\x4b\x70\x50\x48";
case 8: // 2
return "\x04\x4b\x70\x50\x49";
case 9: // 3
return "\x04\x4b\x70\x50\x4a";
case 10: // 4
return "\x04\x4b\x70\x50\x4b";
case 11: // 5
return "\x04\x4b\x70\x50\x4c";
case 12: // 6
return "\x04\x4b\x70\x50\x4d";
case 13: // 7
return "\x04\x4b\x70\x50\x4e";
case 14: // 8
return "\x04\x4b\x70\x50\x4f";
case 15: // 9
return "\x04\x4b\x70\x50\x50";
case 16: // SEMICOLON
return "\x04\x4b\x70\x50\x51";
case 17: // EQUAL
return "\x04\x4b\x70\x50\x52";
case 18: // A
return "\x04\x4b\x70\x50\x53";
case 19: // B
return "\x04\x4b\x70\x50\x54";
case 20: // C
return "\x04\x4b\x70\x50\x55";
case 21: // D
return "\x04\x4b\x70\x50\x56";
case 22: // E
return "\x04\x4b\x70\x50\x57";
case 23: // F
return "\x04\x4b\x70\x50\x58";
case 24: // G
return "\x04\x4b\x70\x50\x59";
case 25: // H
return "\x04\x4b\x70\x50\x5a";
case 26: // I
return "\x04\x4b\x70\x50\x61";
case 27: // J
return "\x04\x4b\x70\x50\x62";
case 28: // K
return "\x04\x4b\x70\x50\x63";
case 29: // L
return "\x04\x4b\x70\x50\x64";
case 30: // M
return "\x04\x4b\x70\x50\x65";
case 31: // N
return "\x04\x4b\x70\x50\x66";
case 32: // O
return "\x04\x4b\x70\x50\x67";
case 33: // P
return "\x04\x4b\x70\x50\x68";
case 34: // Q
return "\x04\x4b\x70\x50\x69";
case 35: // R
return "\x04\x4b\x70\x50\x6a";
case 36: // S
return "\x04\x4b\x70\x50\x6b";
case 37: // T
return "\x04\x4b\x70\x50\x6c";
case 38: // U
return "\x04\x4b\x70\x50\x6d";
case 39: // V
return "\x04\x4b\x70\x50\x6e";
case 40: // W
return "\x04\x4b\x70\x50\x6f";
case 41: // X
return "\x04\x4b\x70\x50\x70";
case 42: // Y
return "\x04\x4b\x70\x50\x71";
case 43: // Z
return "\x04\x4b\x70\x50\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x70\x50\x73";
case 45: // BACKSLASH
return "\x04\x4b\x70\x50\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x70\x50\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x70\x50\x76";
case 48: // WORLD_1
return "\x04\x4b\x70\x50\x77";
case 49: // WORLD_2
return "\x04\x4b\x70\x50\x78";
case 50: // ESCAPE
return "\x04\x4b\x70\x50\x79";
case 51: // ENTER
return "\x04\x4b\x70\x50\x7a";
case 52: // TAB
return "\x04\x4b\x70\x50\x30";
case 53: // BACKSPACE
return "\x04\x4b\x70\x50\x31";
case 54: // INSERT
return "\x04\x4b\x70\x50\x32";
case 55: // DELETE
return "\x04\x4b\x70\x50\x33";
case 56: // RIGHT
return "\x04\x4b\x70\x50\x34";
case 57: // LEFT
return "\x04\x4b\x70\x50\x35";
case 58: // DOWN
return "\x04\x4b\x70\x50\x36";
case 59: // UP
return "\x04\x4b\x70\x50\x37";
case 60: // PAGE_UP
return "\x04\x4b\x70\x50\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x70\x50\x39";
case 62: // HOME
return "\x04\x4b\x70\x50\x2e";
case 63: // END
return "\x04\x4b\x70\x50\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x70\x50\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x70\x50\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x70\x50\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x70\x50\x5e";
case 68: // PAUSE
return "\x04\x4b\x70\x50\x21";
case 69: // F1
return "\x04\x4b\x70\x50\x2f";
case 70: // F2
return "\x04\x4b\x70\x50\x2a";
case 71: // F3
return "\x04\x4b\x70\x50\x3f";
case 72: // F4
return "\x04\x4b\x70\x50\x26";
case 73: // F5
return "\x04\x4b\x70\x50\x3c";
case 74: // F6
return "\x04\x4b\x70\x50\x3e";
case 75: // F7
return "\x04\x4b\x70\x50\x28";
case 76: // F8
return "\x04\x4b\x70\x50\x29";
case 77: // F9
return "\x04\x4b\x70\x50\x5b";
case 78: // F10
return "\x04\x4b\x70\x50\x5d";
case 79: // F11
return "\x04\x4b\x70\x50\x7b";
case 80: // F12
return "\x04\x4b\x70\x50\x7d";
case 81: // F13
return "\x04\x4b\x70\x50\x40";
case 82: // F14
return "\x04\x4b\x70\x50\x25";
case 83: // F15
return "\x04\x4b\x70\x50\x24";
case 84: // F16
return "\x04\x4b\x70\x50\x23";
case 85: // F17
return "\x05\x4b\x70\x50\x42\x41";
case 86: // F18
return "\x05\x4b\x70\x50\x42\x42";
case 87: // F19
return "\x05\x4b\x70\x50\x42\x43";
case 88: // F20
return "\x05\x4b\x70\x50\x42\x44";
case 89: // F21
return "\x05\x4b\x70\x50\x42\x45";
case 90: // F22
return "\x05\x4b\x70\x50\x42\x46";
case 91: // F23
return "\x05\x4b\x70\x50\x42\x47";
case 92: // F24
return "\x05\x4b\x70\x50\x42\x48";
case 93: // F25
return "\x05\x4b\x70\x50\x42\x49";
case 94: // KP_0
return "\x05\x4b\x70\x50\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x70\x50\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x70\x50\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x70\x50\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x70\x50\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x70\x50\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x70\x50\x42\x50";
case 101: // KP_7
return "\x05\x4b\x70\x50\x42\x51";
case 102: // KP_8
return "\x05\x4b\x70\x50\x42\x52";
case 103: // KP_9
return "\x05\x4b\x70\x50\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x70\x50\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x70\x50\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x70\x50\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x70\x50\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x70\x50\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x70\x50\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x70\x50\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x70\x50\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x70\x50\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x70\x50\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x70\x50\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x70\x50\x42\x67";
case 118: // 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 & 0x7f) { default: return NULL;
case 48: // WORLD_1
return "\x04\x4b\x74\x41\x77";
case 49: // WORLD_2
return "\x04\x4b\x74\x41\x78";
case 50: // ESCAPE
return "\x04\x4b\x74\x41\x79";
case 51: // ENTER
return "\x01\x0d";
case 52: // TAB
return "\x04\x4b\x74\x41\x30";
case 53: // BACKSPACE
return "\x01\x7f";
case 54: // INSERT
return "\x04\x4b\x74\x41\x32";
case 55: // DELETE
return "\x04\x4b\x74\x41\x33";
case 56: // RIGHT
return "\x04\x4b\x74\x41\x34";
case 57: // LEFT
return "\x04\x4b\x74\x41\x35";
case 58: // DOWN
return "\x04\x4b\x74\x41\x36";
case 59: // UP
return "\x04\x4b\x74\x41\x37";
case 60: // PAGE_UP
return "\x04\x4b\x74\x41\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x74\x41\x39";
case 62: // HOME
return "\x04\x4b\x74\x41\x2e";
case 63: // END
return "\x04\x4b\x74\x41\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x74\x41\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x74\x41\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x74\x41\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x74\x41\x5e";
case 68: // PAUSE
return "\x04\x4b\x74\x41\x21";
case 69: // F1
return "\x04\x4b\x74\x41\x2f";
case 70: // F2
return "\x04\x4b\x74\x41\x2a";
case 71: // F3
return "\x04\x4b\x74\x41\x3f";
case 72: // F4
return "\x04\x4b\x74\x41\x26";
case 73: // F5
return "\x04\x4b\x74\x41\x3c";
case 74: // F6
return "\x04\x4b\x74\x41\x3e";
case 75: // F7
return "\x04\x4b\x74\x41\x28";
case 76: // F8
return "\x04\x4b\x74\x41\x29";
case 77: // F9
return "\x04\x4b\x74\x41\x5b";
case 78: // F10
return "\x04\x4b\x74\x41\x5d";
case 79: // F11
return "\x04\x4b\x74\x41\x7b";
case 80: // F12
return "\x04\x4b\x74\x41\x7d";
case 81: // F13
return "\x04\x4b\x74\x41\x40";
case 82: // F14
return "\x04\x4b\x74\x41\x25";
case 83: // F15
return "\x04\x4b\x74\x41\x24";
case 84: // F16
return "\x04\x4b\x74\x41\x23";
case 85: // F17
return "\x05\x4b\x74\x41\x42\x41";
case 86: // F18
return "\x05\x4b\x74\x41\x42\x42";
case 87: // F19
return "\x05\x4b\x74\x41\x42\x43";
case 88: // F20
return "\x05\x4b\x74\x41\x42\x44";
case 89: // F21
return "\x05\x4b\x74\x41\x42\x45";
case 90: // F22
return "\x05\x4b\x74\x41\x42\x46";
case 91: // F23
return "\x05\x4b\x74\x41\x42\x47";
case 92: // F24
return "\x05\x4b\x74\x41\x42\x48";
case 93: // F25
return "\x05\x4b\x74\x41\x42\x49";
case 94: // KP_0
return "\x05\x4b\x74\x41\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x74\x41\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x74\x41\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x74\x41\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x74\x41\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x74\x41\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x74\x41\x42\x50";
case 101: // KP_7
return "\x05\x4b\x74\x41\x42\x51";
case 102: // KP_8
return "\x05\x4b\x74\x41\x42\x52";
case 103: // KP_9
return "\x05\x4b\x74\x41\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x74\x41\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x74\x41\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x74\x41\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x74\x41\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x74\x41\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x74\x41\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x74\x41\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x74\x41\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x74\x41\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x74\x41\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x74\x41\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x74\x41\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x74\x41\x42\x68";
} // end switch(key)
case 0x1:
switch(key & 0x7f) { default: return NULL;
case 48: // WORLD_1
return "\x04\x4b\x74\x42\x77";
case 49: // WORLD_2
return "\x04\x4b\x74\x42\x78";
case 50: // ESCAPE
return "\x04\x4b\x74\x42\x79";
case 51: // ENTER
return "\x04\x4b\x74\x42\x7a";
case 52: // TAB
return "\x04\x4b\x74\x42\x30";
case 53: // BACKSPACE
return "\x04\x4b\x74\x42\x31";
case 54: // INSERT
return "\x04\x4b\x74\x42\x32";
case 55: // DELETE
return "\x04\x4b\x74\x42\x33";
case 56: // RIGHT
return "\x04\x4b\x74\x42\x34";
case 57: // LEFT
return "\x04\x4b\x74\x42\x35";
case 58: // DOWN
return "\x04\x4b\x74\x42\x36";
case 59: // UP
return "\x04\x4b\x74\x42\x37";
case 60: // PAGE_UP
return "\x04\x4b\x74\x42\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x74\x42\x39";
case 62: // HOME
return "\x04\x4b\x74\x42\x2e";
case 63: // END
return "\x04\x4b\x74\x42\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x74\x42\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x74\x42\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x74\x42\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x74\x42\x5e";
case 68: // PAUSE
return "\x04\x4b\x74\x42\x21";
case 69: // F1
return "\x04\x4b\x74\x42\x2f";
case 70: // F2
return "\x04\x4b\x74\x42\x2a";
case 71: // F3
return "\x04\x4b\x74\x42\x3f";
case 72: // F4
return "\x04\x4b\x74\x42\x26";
case 73: // F5
return "\x04\x4b\x74\x42\x3c";
case 74: // F6
return "\x04\x4b\x74\x42\x3e";
case 75: // F7
return "\x04\x4b\x74\x42\x28";
case 76: // F8
return "\x04\x4b\x74\x42\x29";
case 77: // F9
return "\x04\x4b\x74\x42\x5b";
case 78: // F10
return "\x04\x4b\x74\x42\x5d";
case 79: // F11
return "\x04\x4b\x74\x42\x7b";
case 80: // F12
return "\x04\x4b\x74\x42\x7d";
case 81: // F13
return "\x04\x4b\x74\x42\x40";
case 82: // F14
return "\x04\x4b\x74\x42\x25";
case 83: // F15
return "\x04\x4b\x74\x42\x24";
case 84: // F16
return "\x04\x4b\x74\x42\x23";
case 85: // F17
return "\x05\x4b\x74\x42\x42\x41";
case 86: // F18
return "\x05\x4b\x74\x42\x42\x42";
case 87: // F19
return "\x05\x4b\x74\x42\x42\x43";
case 88: // F20
return "\x05\x4b\x74\x42\x42\x44";
case 89: // F21
return "\x05\x4b\x74\x42\x42\x45";
case 90: // F22
return "\x05\x4b\x74\x42\x42\x46";
case 91: // F23
return "\x05\x4b\x74\x42\x42\x47";
case 92: // F24
return "\x05\x4b\x74\x42\x42\x48";
case 93: // F25
return "\x05\x4b\x74\x42\x42\x49";
case 94: // KP_0
return "\x05\x4b\x74\x42\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x74\x42\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x74\x42\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x74\x42\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x74\x42\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x74\x42\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x74\x42\x42\x50";
case 101: // KP_7
return "\x05\x4b\x74\x42\x42\x51";
case 102: // KP_8
return "\x05\x4b\x74\x42\x42\x52";
case 103: // KP_9
return "\x05\x4b\x74\x42\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x74\x42\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x74\x42\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x74\x42\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x74\x42\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x74\x42\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x74\x42\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x74\x42\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x74\x42\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x74\x42\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x74\x42\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x74\x42\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x74\x42\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x74\x42\x42\x68";
} // end switch(key)
case 0x2:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x45\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x74\x45\x42";
case 2: // COMMA
return "\x04\x4b\x74\x45\x43";
case 3: // MINUS
return "\x04\x4b\x74\x45\x44";
case 4: // PERIOD
return "\x04\x4b\x74\x45\x45";
case 5: // SLASH
return "\x04\x4b\x74\x45\x46";
case 6: // 0
return "\x04\x4b\x74\x45\x47";
case 7: // 1
return "\x04\x4b\x74\x45\x48";
case 8: // 2
return "\x04\x4b\x74\x45\x49";
case 9: // 3
return "\x04\x4b\x74\x45\x4a";
case 10: // 4
return "\x04\x4b\x74\x45\x4b";
case 11: // 5
return "\x04\x4b\x74\x45\x4c";
case 12: // 6
return "\x04\x4b\x74\x45\x4d";
case 13: // 7
return "\x04\x4b\x74\x45\x4e";
case 14: // 8
return "\x04\x4b\x74\x45\x4f";
case 15: // 9
return "\x04\x4b\x74\x45\x50";
case 16: // SEMICOLON
return "\x04\x4b\x74\x45\x51";
case 17: // EQUAL
return "\x04\x4b\x74\x45\x52";
case 18: // A
return "\x04\x4b\x74\x45\x53";
case 19: // B
return "\x04\x4b\x74\x45\x54";
case 20: // C
return "\x04\x4b\x74\x45\x55";
case 21: // D
return "\x04\x4b\x74\x45\x56";
case 22: // E
return "\x04\x4b\x74\x45\x57";
case 23: // F
return "\x04\x4b\x74\x45\x58";
case 24: // G
return "\x04\x4b\x74\x45\x59";
case 25: // H
return "\x04\x4b\x74\x45\x5a";
case 26: // I
return "\x04\x4b\x74\x45\x61";
case 27: // J
return "\x04\x4b\x74\x45\x62";
case 28: // K
return "\x04\x4b\x74\x45\x63";
case 29: // L
return "\x04\x4b\x74\x45\x64";
case 30: // M
return "\x04\x4b\x74\x45\x65";
case 31: // N
return "\x04\x4b\x74\x45\x66";
case 32: // O
return "\x04\x4b\x74\x45\x67";
case 33: // P
return "\x04\x4b\x74\x45\x68";
case 34: // Q
return "\x04\x4b\x74\x45\x69";
case 35: // R
return "\x04\x4b\x74\x45\x6a";
case 36: // S
return "\x04\x4b\x74\x45\x6b";
case 37: // T
return "\x04\x4b\x74\x45\x6c";
case 38: // U
return "\x04\x4b\x74\x45\x6d";
case 39: // V
return "\x04\x4b\x74\x45\x6e";
case 40: // W
return "\x04\x4b\x74\x45\x6f";
case 41: // X
return "\x04\x4b\x74\x45\x70";
case 42: // Y
return "\x04\x4b\x74\x45\x71";
case 43: // Z
return "\x04\x4b\x74\x45\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x74\x45\x73";
case 45: // BACKSLASH
return "\x04\x4b\x74\x45\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x74\x45\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x74\x45\x76";
case 48: // WORLD_1
return "\x04\x4b\x74\x45\x77";
case 49: // WORLD_2
return "\x04\x4b\x74\x45\x78";
case 50: // ESCAPE
return "\x04\x4b\x74\x45\x79";
case 51: // ENTER
return "\x04\x4b\x74\x45\x7a";
case 52: // TAB
return "\x04\x4b\x74\x45\x30";
case 53: // BACKSPACE
return "\x04\x4b\x74\x45\x31";
case 54: // INSERT
return "\x04\x4b\x74\x45\x32";
case 55: // DELETE
return "\x04\x4b\x74\x45\x33";
case 56: // RIGHT
return "\x04\x4b\x74\x45\x34";
case 57: // LEFT
return "\x04\x4b\x74\x45\x35";
case 58: // DOWN
return "\x04\x4b\x74\x45\x36";
case 59: // UP
return "\x04\x4b\x74\x45\x37";
case 60: // PAGE_UP
return "\x04\x4b\x74\x45\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x74\x45\x39";
case 62: // HOME
return "\x04\x4b\x74\x45\x2e";
case 63: // END
return "\x04\x4b\x74\x45\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x74\x45\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x74\x45\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x74\x45\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x74\x45\x5e";
case 68: // PAUSE
return "\x04\x4b\x74\x45\x21";
case 69: // F1
return "\x04\x4b\x74\x45\x2f";
case 70: // F2
return "\x04\x4b\x74\x45\x2a";
case 71: // F3
return "\x04\x4b\x74\x45\x3f";
case 72: // F4
return "\x04\x4b\x74\x45\x26";
case 73: // F5
return "\x04\x4b\x74\x45\x3c";
case 74: // F6
return "\x04\x4b\x74\x45\x3e";
case 75: // F7
return "\x04\x4b\x74\x45\x28";
case 76: // F8
return "\x04\x4b\x74\x45\x29";
case 77: // F9
return "\x04\x4b\x74\x45\x5b";
case 78: // F10
return "\x04\x4b\x74\x45\x5d";
case 79: // F11
return "\x04\x4b\x74\x45\x7b";
case 80: // F12
return "\x04\x4b\x74\x45\x7d";
case 81: // F13
return "\x04\x4b\x74\x45\x40";
case 82: // F14
return "\x04\x4b\x74\x45\x25";
case 83: // F15
return "\x04\x4b\x74\x45\x24";
case 84: // F16
return "\x04\x4b\x74\x45\x23";
case 85: // F17
return "\x05\x4b\x74\x45\x42\x41";
case 86: // F18
return "\x05\x4b\x74\x45\x42\x42";
case 87: // F19
return "\x05\x4b\x74\x45\x42\x43";
case 88: // F20
return "\x05\x4b\x74\x45\x42\x44";
case 89: // F21
return "\x05\x4b\x74\x45\x42\x45";
case 90: // F22
return "\x05\x4b\x74\x45\x42\x46";
case 91: // F23
return "\x05\x4b\x74\x45\x42\x47";
case 92: // F24
return "\x05\x4b\x74\x45\x42\x48";
case 93: // F25
return "\x05\x4b\x74\x45\x42\x49";
case 94: // KP_0
return "\x05\x4b\x74\x45\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x74\x45\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x74\x45\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x74\x45\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x74\x45\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x74\x45\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x74\x45\x42\x50";
case 101: // KP_7
return "\x05\x4b\x74\x45\x42\x51";
case 102: // KP_8
return "\x05\x4b\x74\x45\x42\x52";
case 103: // KP_9
return "\x05\x4b\x74\x45\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x74\x45\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x74\x45\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x74\x45\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x74\x45\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x74\x45\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x74\x45\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x74\x45\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x74\x45\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x74\x45\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x74\x45\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x74\x45\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x74\x45\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x74\x45\x42\x68";
} // end switch(key)
case 0x3:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x46\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x74\x46\x42";
case 2: // COMMA
return "\x04\x4b\x74\x46\x43";
case 3: // MINUS
return "\x04\x4b\x74\x46\x44";
case 4: // PERIOD
return "\x04\x4b\x74\x46\x45";
case 5: // SLASH
return "\x04\x4b\x74\x46\x46";
case 6: // 0
return "\x04\x4b\x74\x46\x47";
case 7: // 1
return "\x04\x4b\x74\x46\x48";
case 8: // 2
return "\x04\x4b\x74\x46\x49";
case 9: // 3
return "\x04\x4b\x74\x46\x4a";
case 10: // 4
return "\x04\x4b\x74\x46\x4b";
case 11: // 5
return "\x04\x4b\x74\x46\x4c";
case 12: // 6
return "\x04\x4b\x74\x46\x4d";
case 13: // 7
return "\x04\x4b\x74\x46\x4e";
case 14: // 8
return "\x04\x4b\x74\x46\x4f";
case 15: // 9
return "\x04\x4b\x74\x46\x50";
case 16: // SEMICOLON
return "\x04\x4b\x74\x46\x51";
case 17: // EQUAL
return "\x04\x4b\x74\x46\x52";
case 18: // A
return "\x04\x4b\x74\x46\x53";
case 19: // B
return "\x04\x4b\x74\x46\x54";
case 20: // C
return "\x04\x4b\x74\x46\x55";
case 21: // D
return "\x04\x4b\x74\x46\x56";
case 22: // E
return "\x04\x4b\x74\x46\x57";
case 23: // F
return "\x04\x4b\x74\x46\x58";
case 24: // G
return "\x04\x4b\x74\x46\x59";
case 25: // H
return "\x04\x4b\x74\x46\x5a";
case 26: // I
return "\x04\x4b\x74\x46\x61";
case 27: // J
return "\x04\x4b\x74\x46\x62";
case 28: // K
return "\x04\x4b\x74\x46\x63";
case 29: // L
return "\x04\x4b\x74\x46\x64";
case 30: // M
return "\x04\x4b\x74\x46\x65";
case 31: // N
return "\x04\x4b\x74\x46\x66";
case 32: // O
return "\x04\x4b\x74\x46\x67";
case 33: // P
return "\x04\x4b\x74\x46\x68";
case 34: // Q
return "\x04\x4b\x74\x46\x69";
case 35: // R
return "\x04\x4b\x74\x46\x6a";
case 36: // S
return "\x04\x4b\x74\x46\x6b";
case 37: // T
return "\x04\x4b\x74\x46\x6c";
case 38: // U
return "\x04\x4b\x74\x46\x6d";
case 39: // V
return "\x04\x4b\x74\x46\x6e";
case 40: // W
return "\x04\x4b\x74\x46\x6f";
case 41: // X
return "\x04\x4b\x74\x46\x70";
case 42: // Y
return "\x04\x4b\x74\x46\x71";
case 43: // Z
return "\x04\x4b\x74\x46\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x74\x46\x73";
case 45: // BACKSLASH
return "\x04\x4b\x74\x46\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x74\x46\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x74\x46\x76";
case 48: // WORLD_1
return "\x04\x4b\x74\x46\x77";
case 49: // WORLD_2
return "\x04\x4b\x74\x46\x78";
case 50: // ESCAPE
return "\x04\x4b\x74\x46\x79";
case 51: // ENTER
return "\x04\x4b\x74\x46\x7a";
case 52: // TAB
return "\x04\x4b\x74\x46\x30";
case 53: // BACKSPACE
return "\x04\x4b\x74\x46\x31";
case 54: // INSERT
return "\x04\x4b\x74\x46\x32";
case 55: // DELETE
return "\x04\x4b\x74\x46\x33";
case 56: // RIGHT
return "\x04\x4b\x74\x46\x34";
case 57: // LEFT
return "\x04\x4b\x74\x46\x35";
case 58: // DOWN
return "\x04\x4b\x74\x46\x36";
case 59: // UP
return "\x04\x4b\x74\x46\x37";
case 60: // PAGE_UP
return "\x04\x4b\x74\x46\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x74\x46\x39";
case 62: // HOME
return "\x04\x4b\x74\x46\x2e";
case 63: // END
return "\x04\x4b\x74\x46\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x74\x46\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x74\x46\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x74\x46\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x74\x46\x5e";
case 68: // PAUSE
return "\x04\x4b\x74\x46\x21";
case 69: // F1
return "\x04\x4b\x74\x46\x2f";
case 70: // F2
return "\x04\x4b\x74\x46\x2a";
case 71: // F3
return "\x04\x4b\x74\x46\x3f";
case 72: // F4
return "\x04\x4b\x74\x46\x26";
case 73: // F5
return "\x04\x4b\x74\x46\x3c";
case 74: // F6
return "\x04\x4b\x74\x46\x3e";
case 75: // F7
return "\x04\x4b\x74\x46\x28";
case 76: // F8
return "\x04\x4b\x74\x46\x29";
case 77: // F9
return "\x04\x4b\x74\x46\x5b";
case 78: // F10
return "\x04\x4b\x74\x46\x5d";
case 79: // F11
return "\x04\x4b\x74\x46\x7b";
case 80: // F12
return "\x04\x4b\x74\x46\x7d";
case 81: // F13
return "\x04\x4b\x74\x46\x40";
case 82: // F14
return "\x04\x4b\x74\x46\x25";
case 83: // F15
return "\x04\x4b\x74\x46\x24";
case 84: // F16
return "\x04\x4b\x74\x46\x23";
case 85: // F17
return "\x05\x4b\x74\x46\x42\x41";
case 86: // F18
return "\x05\x4b\x74\x46\x42\x42";
case 87: // F19
return "\x05\x4b\x74\x46\x42\x43";
case 88: // F20
return "\x05\x4b\x74\x46\x42\x44";
case 89: // F21
return "\x05\x4b\x74\x46\x42\x45";
case 90: // F22
return "\x05\x4b\x74\x46\x42\x46";
case 91: // F23
return "\x05\x4b\x74\x46\x42\x47";
case 92: // F24
return "\x05\x4b\x74\x46\x42\x48";
case 93: // F25
return "\x05\x4b\x74\x46\x42\x49";
case 94: // KP_0
return "\x05\x4b\x74\x46\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x74\x46\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x74\x46\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x74\x46\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x74\x46\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x74\x46\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x74\x46\x42\x50";
case 101: // KP_7
return "\x05\x4b\x74\x46\x42\x51";
case 102: // KP_8
return "\x05\x4b\x74\x46\x42\x52";
case 103: // KP_9
return "\x05\x4b\x74\x46\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x74\x46\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x74\x46\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x74\x46\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x74\x46\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x74\x46\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x74\x46\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x74\x46\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x74\x46\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x74\x46\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x74\x46\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x74\x46\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x74\x46\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x74\x46\x42\x68";
} // end switch(key)
case 0x4:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x43\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x74\x43\x42";
case 2: // COMMA
return "\x04\x4b\x74\x43\x43";
case 3: // MINUS
return "\x04\x4b\x74\x43\x44";
case 4: // PERIOD
return "\x04\x4b\x74\x43\x45";
case 5: // SLASH
return "\x04\x4b\x74\x43\x46";
case 6: // 0
return "\x04\x4b\x74\x43\x47";
case 7: // 1
return "\x04\x4b\x74\x43\x48";
case 8: // 2
return "\x04\x4b\x74\x43\x49";
case 9: // 3
return "\x04\x4b\x74\x43\x4a";
case 10: // 4
return "\x04\x4b\x74\x43\x4b";
case 11: // 5
return "\x04\x4b\x74\x43\x4c";
case 12: // 6
return "\x04\x4b\x74\x43\x4d";
case 13: // 7
return "\x04\x4b\x74\x43\x4e";
case 14: // 8
return "\x04\x4b\x74\x43\x4f";
case 15: // 9
return "\x04\x4b\x74\x43\x50";
case 16: // SEMICOLON
return "\x04\x4b\x74\x43\x51";
case 17: // EQUAL
return "\x04\x4b\x74\x43\x52";
case 18: // A
return "\x04\x4b\x74\x43\x53";
case 19: // B
return "\x04\x4b\x74\x43\x54";
case 20: // C
return "\x04\x4b\x74\x43\x55";
case 21: // D
return "\x04\x4b\x74\x43\x56";
case 22: // E
return "\x04\x4b\x74\x43\x57";
case 23: // F
return "\x04\x4b\x74\x43\x58";
case 24: // G
return "\x04\x4b\x74\x43\x59";
case 25: // H
return "\x04\x4b\x74\x43\x5a";
case 26: // I
return "\x04\x4b\x74\x43\x61";
case 27: // J
return "\x04\x4b\x74\x43\x62";
case 28: // K
return "\x04\x4b\x74\x43\x63";
case 29: // L
return "\x04\x4b\x74\x43\x64";
case 30: // M
return "\x04\x4b\x74\x43\x65";
case 31: // N
return "\x04\x4b\x74\x43\x66";
case 32: // O
return "\x04\x4b\x74\x43\x67";
case 33: // P
return "\x04\x4b\x74\x43\x68";
case 34: // Q
return "\x04\x4b\x74\x43\x69";
case 35: // R
return "\x04\x4b\x74\x43\x6a";
case 36: // S
return "\x04\x4b\x74\x43\x6b";
case 37: // T
return "\x04\x4b\x74\x43\x6c";
case 38: // U
return "\x04\x4b\x74\x43\x6d";
case 39: // V
return "\x04\x4b\x74\x43\x6e";
case 40: // W
return "\x04\x4b\x74\x43\x6f";
case 41: // X
return "\x04\x4b\x74\x43\x70";
case 42: // Y
return "\x04\x4b\x74\x43\x71";
case 43: // Z
return "\x04\x4b\x74\x43\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x74\x43\x73";
case 45: // BACKSLASH
return "\x04\x4b\x74\x43\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x74\x43\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x74\x43\x76";
case 48: // WORLD_1
return "\x04\x4b\x74\x43\x77";
case 49: // WORLD_2
return "\x04\x4b\x74\x43\x78";
case 50: // ESCAPE
return "\x04\x4b\x74\x43\x79";
case 51: // ENTER
return "\x04\x4b\x74\x43\x7a";
case 52: // TAB
return "\x04\x4b\x74\x43\x30";
case 53: // BACKSPACE
return "\x04\x4b\x74\x43\x31";
case 54: // INSERT
return "\x04\x4b\x74\x43\x32";
case 55: // DELETE
return "\x04\x4b\x74\x43\x33";
case 56: // RIGHT
return "\x04\x4b\x74\x43\x34";
case 57: // LEFT
return "\x04\x4b\x74\x43\x35";
case 58: // DOWN
return "\x04\x4b\x74\x43\x36";
case 59: // UP
return "\x04\x4b\x74\x43\x37";
case 60: // PAGE_UP
return "\x04\x4b\x74\x43\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x74\x43\x39";
case 62: // HOME
return "\x04\x4b\x74\x43\x2e";
case 63: // END
return "\x04\x4b\x74\x43\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x74\x43\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x74\x43\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x74\x43\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x74\x43\x5e";
case 68: // PAUSE
return "\x04\x4b\x74\x43\x21";
case 69: // F1
return "\x04\x4b\x74\x43\x2f";
case 70: // F2
return "\x04\x4b\x74\x43\x2a";
case 71: // F3
return "\x04\x4b\x74\x43\x3f";
case 72: // F4
return "\x04\x4b\x74\x43\x26";
case 73: // F5
return "\x04\x4b\x74\x43\x3c";
case 74: // F6
return "\x04\x4b\x74\x43\x3e";
case 75: // F7
return "\x04\x4b\x74\x43\x28";
case 76: // F8
return "\x04\x4b\x74\x43\x29";
case 77: // F9
return "\x04\x4b\x74\x43\x5b";
case 78: // F10
return "\x04\x4b\x74\x43\x5d";
case 79: // F11
return "\x04\x4b\x74\x43\x7b";
case 80: // F12
return "\x04\x4b\x74\x43\x7d";
case 81: // F13
return "\x04\x4b\x74\x43\x40";
case 82: // F14
return "\x04\x4b\x74\x43\x25";
case 83: // F15
return "\x04\x4b\x74\x43\x24";
case 84: // F16
return "\x04\x4b\x74\x43\x23";
case 85: // F17
return "\x05\x4b\x74\x43\x42\x41";
case 86: // F18
return "\x05\x4b\x74\x43\x42\x42";
case 87: // F19
return "\x05\x4b\x74\x43\x42\x43";
case 88: // F20
return "\x05\x4b\x74\x43\x42\x44";
case 89: // F21
return "\x05\x4b\x74\x43\x42\x45";
case 90: // F22
return "\x05\x4b\x74\x43\x42\x46";
case 91: // F23
return "\x05\x4b\x74\x43\x42\x47";
case 92: // F24
return "\x05\x4b\x74\x43\x42\x48";
case 93: // F25
return "\x05\x4b\x74\x43\x42\x49";
case 94: // KP_0
return "\x05\x4b\x74\x43\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x74\x43\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x74\x43\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x74\x43\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x74\x43\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x74\x43\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x74\x43\x42\x50";
case 101: // KP_7
return "\x05\x4b\x74\x43\x42\x51";
case 102: // KP_8
return "\x05\x4b\x74\x43\x42\x52";
case 103: // KP_9
return "\x05\x4b\x74\x43\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x74\x43\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x74\x43\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x74\x43\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x74\x43\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x74\x43\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x74\x43\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x74\x43\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x74\x43\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x74\x43\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x74\x43\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x74\x43\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x74\x43\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x74\x43\x42\x68";
} // end switch(key)
case 0x5:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x44\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x74\x44\x42";
case 2: // COMMA
return "\x04\x4b\x74\x44\x43";
case 3: // MINUS
return "\x04\x4b\x74\x44\x44";
case 4: // PERIOD
return "\x04\x4b\x74\x44\x45";
case 5: // SLASH
return "\x04\x4b\x74\x44\x46";
case 6: // 0
return "\x04\x4b\x74\x44\x47";
case 7: // 1
return "\x04\x4b\x74\x44\x48";
case 8: // 2
return "\x04\x4b\x74\x44\x49";
case 9: // 3
return "\x04\x4b\x74\x44\x4a";
case 10: // 4
return "\x04\x4b\x74\x44\x4b";
case 11: // 5
return "\x04\x4b\x74\x44\x4c";
case 12: // 6
return "\x04\x4b\x74\x44\x4d";
case 13: // 7
return "\x04\x4b\x74\x44\x4e";
case 14: // 8
return "\x04\x4b\x74\x44\x4f";
case 15: // 9
return "\x04\x4b\x74\x44\x50";
case 16: // SEMICOLON
return "\x04\x4b\x74\x44\x51";
case 17: // EQUAL
return "\x04\x4b\x74\x44\x52";
case 18: // A
return "\x04\x4b\x74\x44\x53";
case 19: // B
return "\x04\x4b\x74\x44\x54";
case 20: // C
return "\x04\x4b\x74\x44\x55";
case 21: // D
return "\x04\x4b\x74\x44\x56";
case 22: // E
return "\x04\x4b\x74\x44\x57";
case 23: // F
return "\x04\x4b\x74\x44\x58";
case 24: // G
return "\x04\x4b\x74\x44\x59";
case 25: // H
return "\x04\x4b\x74\x44\x5a";
case 26: // I
return "\x04\x4b\x74\x44\x61";
case 27: // J
return "\x04\x4b\x74\x44\x62";
case 28: // K
return "\x04\x4b\x74\x44\x63";
case 29: // L
return "\x04\x4b\x74\x44\x64";
case 30: // M
return "\x04\x4b\x74\x44\x65";
case 31: // N
return "\x04\x4b\x74\x44\x66";
case 32: // O
return "\x04\x4b\x74\x44\x67";
case 33: // P
return "\x04\x4b\x74\x44\x68";
case 34: // Q
return "\x04\x4b\x74\x44\x69";
case 35: // R
return "\x04\x4b\x74\x44\x6a";
case 36: // S
return "\x04\x4b\x74\x44\x6b";
case 37: // T
return "\x04\x4b\x74\x44\x6c";
case 38: // U
return "\x04\x4b\x74\x44\x6d";
case 39: // V
return "\x04\x4b\x74\x44\x6e";
case 40: // W
return "\x04\x4b\x74\x44\x6f";
case 41: // X
return "\x04\x4b\x74\x44\x70";
case 42: // Y
return "\x04\x4b\x74\x44\x71";
case 43: // Z
return "\x04\x4b\x74\x44\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x74\x44\x73";
case 45: // BACKSLASH
return "\x04\x4b\x74\x44\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x74\x44\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x74\x44\x76";
case 48: // WORLD_1
return "\x04\x4b\x74\x44\x77";
case 49: // WORLD_2
return "\x04\x4b\x74\x44\x78";
case 50: // ESCAPE
return "\x04\x4b\x74\x44\x79";
case 51: // ENTER
return "\x04\x4b\x74\x44\x7a";
case 52: // TAB
return "\x04\x4b\x74\x44\x30";
case 53: // BACKSPACE
return "\x04\x4b\x74\x44\x31";
case 54: // INSERT
return "\x04\x4b\x74\x44\x32";
case 55: // DELETE
return "\x04\x4b\x74\x44\x33";
case 56: // RIGHT
return "\x04\x4b\x74\x44\x34";
case 57: // LEFT
return "\x04\x4b\x74\x44\x35";
case 58: // DOWN
return "\x04\x4b\x74\x44\x36";
case 59: // UP
return "\x04\x4b\x74\x44\x37";
case 60: // PAGE_UP
return "\x04\x4b\x74\x44\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x74\x44\x39";
case 62: // HOME
return "\x04\x4b\x74\x44\x2e";
case 63: // END
return "\x04\x4b\x74\x44\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x74\x44\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x74\x44\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x74\x44\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x74\x44\x5e";
case 68: // PAUSE
return "\x04\x4b\x74\x44\x21";
case 69: // F1
return "\x04\x4b\x74\x44\x2f";
case 70: // F2
return "\x04\x4b\x74\x44\x2a";
case 71: // F3
return "\x04\x4b\x74\x44\x3f";
case 72: // F4
return "\x04\x4b\x74\x44\x26";
case 73: // F5
return "\x04\x4b\x74\x44\x3c";
case 74: // F6
return "\x04\x4b\x74\x44\x3e";
case 75: // F7
return "\x04\x4b\x74\x44\x28";
case 76: // F8
return "\x04\x4b\x74\x44\x29";
case 77: // F9
return "\x04\x4b\x74\x44\x5b";
case 78: // F10
return "\x04\x4b\x74\x44\x5d";
case 79: // F11
return "\x04\x4b\x74\x44\x7b";
case 80: // F12
return "\x04\x4b\x74\x44\x7d";
case 81: // F13
return "\x04\x4b\x74\x44\x40";
case 82: // F14
return "\x04\x4b\x74\x44\x25";
case 83: // F15
return "\x04\x4b\x74\x44\x24";
case 84: // F16
return "\x04\x4b\x74\x44\x23";
case 85: // F17
return "\x05\x4b\x74\x44\x42\x41";
case 86: // F18
return "\x05\x4b\x74\x44\x42\x42";
case 87: // F19
return "\x05\x4b\x74\x44\x42\x43";
case 88: // F20
return "\x05\x4b\x74\x44\x42\x44";
case 89: // F21
return "\x05\x4b\x74\x44\x42\x45";
case 90: // F22
return "\x05\x4b\x74\x44\x42\x46";
case 91: // F23
return "\x05\x4b\x74\x44\x42\x47";
case 92: // F24
return "\x05\x4b\x74\x44\x42\x48";
case 93: // F25
return "\x05\x4b\x74\x44\x42\x49";
case 94: // KP_0
return "\x05\x4b\x74\x44\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x74\x44\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x74\x44\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x74\x44\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x74\x44\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x74\x44\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x74\x44\x42\x50";
case 101: // KP_7
return "\x05\x4b\x74\x44\x42\x51";
case 102: // KP_8
return "\x05\x4b\x74\x44\x42\x52";
case 103: // KP_9
return "\x05\x4b\x74\x44\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x74\x44\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x74\x44\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x74\x44\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x74\x44\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x74\x44\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x74\x44\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x74\x44\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x74\x44\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x74\x44\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x74\x44\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x74\x44\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x74\x44\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x74\x44\x42\x68";
} // end switch(key)
case 0x6:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x47\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x74\x47\x42";
case 2: // COMMA
return "\x04\x4b\x74\x47\x43";
case 3: // MINUS
return "\x04\x4b\x74\x47\x44";
case 4: // PERIOD
return "\x04\x4b\x74\x47\x45";
case 5: // SLASH
return "\x04\x4b\x74\x47\x46";
case 6: // 0
return "\x04\x4b\x74\x47\x47";
case 7: // 1
return "\x04\x4b\x74\x47\x48";
case 8: // 2
return "\x04\x4b\x74\x47\x49";
case 9: // 3
return "\x04\x4b\x74\x47\x4a";
case 10: // 4
return "\x04\x4b\x74\x47\x4b";
case 11: // 5
return "\x04\x4b\x74\x47\x4c";
case 12: // 6
return "\x04\x4b\x74\x47\x4d";
case 13: // 7
return "\x04\x4b\x74\x47\x4e";
case 14: // 8
return "\x04\x4b\x74\x47\x4f";
case 15: // 9
return "\x04\x4b\x74\x47\x50";
case 16: // SEMICOLON
return "\x04\x4b\x74\x47\x51";
case 17: // EQUAL
return "\x04\x4b\x74\x47\x52";
case 18: // A
return "\x04\x4b\x74\x47\x53";
case 19: // B
return "\x04\x4b\x74\x47\x54";
case 20: // C
return "\x04\x4b\x74\x47\x55";
case 21: // D
return "\x04\x4b\x74\x47\x56";
case 22: // E
return "\x04\x4b\x74\x47\x57";
case 23: // F
return "\x04\x4b\x74\x47\x58";
case 24: // G
return "\x04\x4b\x74\x47\x59";
case 25: // H
return "\x04\x4b\x74\x47\x5a";
case 26: // I
return "\x04\x4b\x74\x47\x61";
case 27: // J
return "\x04\x4b\x74\x47\x62";
case 28: // K
return "\x04\x4b\x74\x47\x63";
case 29: // L
return "\x04\x4b\x74\x47\x64";
case 30: // M
return "\x04\x4b\x74\x47\x65";
case 31: // N
return "\x04\x4b\x74\x47\x66";
case 32: // O
return "\x04\x4b\x74\x47\x67";
case 33: // P
return "\x04\x4b\x74\x47\x68";
case 34: // Q
return "\x04\x4b\x74\x47\x69";
case 35: // R
return "\x04\x4b\x74\x47\x6a";
case 36: // S
return "\x04\x4b\x74\x47\x6b";
case 37: // T
return "\x04\x4b\x74\x47\x6c";
case 38: // U
return "\x04\x4b\x74\x47\x6d";
case 39: // V
return "\x04\x4b\x74\x47\x6e";
case 40: // W
return "\x04\x4b\x74\x47\x6f";
case 41: // X
return "\x04\x4b\x74\x47\x70";
case 42: // Y
return "\x04\x4b\x74\x47\x71";
case 43: // Z
return "\x04\x4b\x74\x47\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x74\x47\x73";
case 45: // BACKSLASH
return "\x04\x4b\x74\x47\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x74\x47\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x74\x47\x76";
case 48: // WORLD_1
return "\x04\x4b\x74\x47\x77";
case 49: // WORLD_2
return "\x04\x4b\x74\x47\x78";
case 50: // ESCAPE
return "\x04\x4b\x74\x47\x79";
case 51: // ENTER
return "\x04\x4b\x74\x47\x7a";
case 52: // TAB
return "\x04\x4b\x74\x47\x30";
case 53: // BACKSPACE
return "\x04\x4b\x74\x47\x31";
case 54: // INSERT
return "\x04\x4b\x74\x47\x32";
case 55: // DELETE
return "\x04\x4b\x74\x47\x33";
case 56: // RIGHT
return "\x04\x4b\x74\x47\x34";
case 57: // LEFT
return "\x04\x4b\x74\x47\x35";
case 58: // DOWN
return "\x04\x4b\x74\x47\x36";
case 59: // UP
return "\x04\x4b\x74\x47\x37";
case 60: // PAGE_UP
return "\x04\x4b\x74\x47\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x74\x47\x39";
case 62: // HOME
return "\x04\x4b\x74\x47\x2e";
case 63: // END
return "\x04\x4b\x74\x47\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x74\x47\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x74\x47\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x74\x47\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x74\x47\x5e";
case 68: // PAUSE
return "\x04\x4b\x74\x47\x21";
case 69: // F1
return "\x04\x4b\x74\x47\x2f";
case 70: // F2
return "\x04\x4b\x74\x47\x2a";
case 71: // F3
return "\x04\x4b\x74\x47\x3f";
case 72: // F4
return "\x04\x4b\x74\x47\x26";
case 73: // F5
return "\x04\x4b\x74\x47\x3c";
case 74: // F6
return "\x04\x4b\x74\x47\x3e";
case 75: // F7
return "\x04\x4b\x74\x47\x28";
case 76: // F8
return "\x04\x4b\x74\x47\x29";
case 77: // F9
return "\x04\x4b\x74\x47\x5b";
case 78: // F10
return "\x04\x4b\x74\x47\x5d";
case 79: // F11
return "\x04\x4b\x74\x47\x7b";
case 80: // F12
return "\x04\x4b\x74\x47\x7d";
case 81: // F13
return "\x04\x4b\x74\x47\x40";
case 82: // F14
return "\x04\x4b\x74\x47\x25";
case 83: // F15
return "\x04\x4b\x74\x47\x24";
case 84: // F16
return "\x04\x4b\x74\x47\x23";
case 85: // F17
return "\x05\x4b\x74\x47\x42\x41";
case 86: // F18
return "\x05\x4b\x74\x47\x42\x42";
case 87: // F19
return "\x05\x4b\x74\x47\x42\x43";
case 88: // F20
return "\x05\x4b\x74\x47\x42\x44";
case 89: // F21
return "\x05\x4b\x74\x47\x42\x45";
case 90: // F22
return "\x05\x4b\x74\x47\x42\x46";
case 91: // F23
return "\x05\x4b\x74\x47\x42\x47";
case 92: // F24
return "\x05\x4b\x74\x47\x42\x48";
case 93: // F25
return "\x05\x4b\x74\x47\x42\x49";
case 94: // KP_0
return "\x05\x4b\x74\x47\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x74\x47\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x74\x47\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x74\x47\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x74\x47\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x74\x47\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x74\x47\x42\x50";
case 101: // KP_7
return "\x05\x4b\x74\x47\x42\x51";
case 102: // KP_8
return "\x05\x4b\x74\x47\x42\x52";
case 103: // KP_9
return "\x05\x4b\x74\x47\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x74\x47\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x74\x47\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x74\x47\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x74\x47\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x74\x47\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x74\x47\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x74\x47\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x74\x47\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x74\x47\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x74\x47\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x74\x47\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x74\x47\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x74\x47\x42\x68";
} // end switch(key)
case 0x7:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x48\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x74\x48\x42";
case 2: // COMMA
return "\x04\x4b\x74\x48\x43";
case 3: // MINUS
return "\x04\x4b\x74\x48\x44";
case 4: // PERIOD
return "\x04\x4b\x74\x48\x45";
case 5: // SLASH
return "\x04\x4b\x74\x48\x46";
case 6: // 0
return "\x04\x4b\x74\x48\x47";
case 7: // 1
return "\x04\x4b\x74\x48\x48";
case 8: // 2
return "\x04\x4b\x74\x48\x49";
case 9: // 3
return "\x04\x4b\x74\x48\x4a";
case 10: // 4
return "\x04\x4b\x74\x48\x4b";
case 11: // 5
return "\x04\x4b\x74\x48\x4c";
case 12: // 6
return "\x04\x4b\x74\x48\x4d";
case 13: // 7
return "\x04\x4b\x74\x48\x4e";
case 14: // 8
return "\x04\x4b\x74\x48\x4f";
case 15: // 9
return "\x04\x4b\x74\x48\x50";
case 16: // SEMICOLON
return "\x04\x4b\x74\x48\x51";
case 17: // EQUAL
return "\x04\x4b\x74\x48\x52";
case 18: // A
return "\x04\x4b\x74\x48\x53";
case 19: // B
return "\x04\x4b\x74\x48\x54";
case 20: // C
return "\x04\x4b\x74\x48\x55";
case 21: // D
return "\x04\x4b\x74\x48\x56";
case 22: // E
return "\x04\x4b\x74\x48\x57";
case 23: // F
return "\x04\x4b\x74\x48\x58";
case 24: // G
return "\x04\x4b\x74\x48\x59";
case 25: // H
return "\x04\x4b\x74\x48\x5a";
case 26: // I
return "\x04\x4b\x74\x48\x61";
case 27: // J
return "\x04\x4b\x74\x48\x62";
case 28: // K
return "\x04\x4b\x74\x48\x63";
case 29: // L
return "\x04\x4b\x74\x48\x64";
case 30: // M
return "\x04\x4b\x74\x48\x65";
case 31: // N
return "\x04\x4b\x74\x48\x66";
case 32: // O
return "\x04\x4b\x74\x48\x67";
case 33: // P
return "\x04\x4b\x74\x48\x68";
case 34: // Q
return "\x04\x4b\x74\x48\x69";
case 35: // R
return "\x04\x4b\x74\x48\x6a";
case 36: // S
return "\x04\x4b\x74\x48\x6b";
case 37: // T
return "\x04\x4b\x74\x48\x6c";
case 38: // U
return "\x04\x4b\x74\x48\x6d";
case 39: // V
return "\x04\x4b\x74\x48\x6e";
case 40: // W
return "\x04\x4b\x74\x48\x6f";
case 41: // X
return "\x04\x4b\x74\x48\x70";
case 42: // Y
return "\x04\x4b\x74\x48\x71";
case 43: // Z
return "\x04\x4b\x74\x48\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x74\x48\x73";
case 45: // BACKSLASH
return "\x04\x4b\x74\x48\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x74\x48\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x74\x48\x76";
case 48: // WORLD_1
return "\x04\x4b\x74\x48\x77";
case 49: // WORLD_2
return "\x04\x4b\x74\x48\x78";
case 50: // ESCAPE
return "\x04\x4b\x74\x48\x79";
case 51: // ENTER
return "\x04\x4b\x74\x48\x7a";
case 52: // TAB
return "\x04\x4b\x74\x48\x30";
case 53: // BACKSPACE
return "\x04\x4b\x74\x48\x31";
case 54: // INSERT
return "\x04\x4b\x74\x48\x32";
case 55: // DELETE
return "\x04\x4b\x74\x48\x33";
case 56: // RIGHT
return "\x04\x4b\x74\x48\x34";
case 57: // LEFT
return "\x04\x4b\x74\x48\x35";
case 58: // DOWN
return "\x04\x4b\x74\x48\x36";
case 59: // UP
return "\x04\x4b\x74\x48\x37";
case 60: // PAGE_UP
return "\x04\x4b\x74\x48\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x74\x48\x39";
case 62: // HOME
return "\x04\x4b\x74\x48\x2e";
case 63: // END
return "\x04\x4b\x74\x48\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x74\x48\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x74\x48\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x74\x48\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x74\x48\x5e";
case 68: // PAUSE
return "\x04\x4b\x74\x48\x21";
case 69: // F1
return "\x04\x4b\x74\x48\x2f";
case 70: // F2
return "\x04\x4b\x74\x48\x2a";
case 71: // F3
return "\x04\x4b\x74\x48\x3f";
case 72: // F4
return "\x04\x4b\x74\x48\x26";
case 73: // F5
return "\x04\x4b\x74\x48\x3c";
case 74: // F6
return "\x04\x4b\x74\x48\x3e";
case 75: // F7
return "\x04\x4b\x74\x48\x28";
case 76: // F8
return "\x04\x4b\x74\x48\x29";
case 77: // F9
return "\x04\x4b\x74\x48\x5b";
case 78: // F10
return "\x04\x4b\x74\x48\x5d";
case 79: // F11
return "\x04\x4b\x74\x48\x7b";
case 80: // F12
return "\x04\x4b\x74\x48\x7d";
case 81: // F13
return "\x04\x4b\x74\x48\x40";
case 82: // F14
return "\x04\x4b\x74\x48\x25";
case 83: // F15
return "\x04\x4b\x74\x48\x24";
case 84: // F16
return "\x04\x4b\x74\x48\x23";
case 85: // F17
return "\x05\x4b\x74\x48\x42\x41";
case 86: // F18
return "\x05\x4b\x74\x48\x42\x42";
case 87: // F19
return "\x05\x4b\x74\x48\x42\x43";
case 88: // F20
return "\x05\x4b\x74\x48\x42\x44";
case 89: // F21
return "\x05\x4b\x74\x48\x42\x45";
case 90: // F22
return "\x05\x4b\x74\x48\x42\x46";
case 91: // F23
return "\x05\x4b\x74\x48\x42\x47";
case 92: // F24
return "\x05\x4b\x74\x48\x42\x48";
case 93: // F25
return "\x05\x4b\x74\x48\x42\x49";
case 94: // KP_0
return "\x05\x4b\x74\x48\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x74\x48\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x74\x48\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x74\x48\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x74\x48\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x74\x48\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x74\x48\x42\x50";
case 101: // KP_7
return "\x05\x4b\x74\x48\x42\x51";
case 102: // KP_8
return "\x05\x4b\x74\x48\x42\x52";
case 103: // KP_9
return "\x05\x4b\x74\x48\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x74\x48\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x74\x48\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x74\x48\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x74\x48\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x74\x48\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x74\x48\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x74\x48\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x74\x48\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x74\x48\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x74\x48\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x74\x48\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x74\x48\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x74\x48\x42\x68";
} // end switch(key)
case 0x8:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x49\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x74\x49\x42";
case 2: // COMMA
return "\x04\x4b\x74\x49\x43";
case 3: // MINUS
return "\x04\x4b\x74\x49\x44";
case 4: // PERIOD
return "\x04\x4b\x74\x49\x45";
case 5: // SLASH
return "\x04\x4b\x74\x49\x46";
case 6: // 0
return "\x04\x4b\x74\x49\x47";
case 7: // 1
return "\x04\x4b\x74\x49\x48";
case 8: // 2
return "\x04\x4b\x74\x49\x49";
case 9: // 3
return "\x04\x4b\x74\x49\x4a";
case 10: // 4
return "\x04\x4b\x74\x49\x4b";
case 11: // 5
return "\x04\x4b\x74\x49\x4c";
case 12: // 6
return "\x04\x4b\x74\x49\x4d";
case 13: // 7
return "\x04\x4b\x74\x49\x4e";
case 14: // 8
return "\x04\x4b\x74\x49\x4f";
case 15: // 9
return "\x04\x4b\x74\x49\x50";
case 16: // SEMICOLON
return "\x04\x4b\x74\x49\x51";
case 17: // EQUAL
return "\x04\x4b\x74\x49\x52";
case 18: // A
return "\x04\x4b\x74\x49\x53";
case 19: // B
return "\x04\x4b\x74\x49\x54";
case 20: // C
return "\x04\x4b\x74\x49\x55";
case 21: // D
return "\x04\x4b\x74\x49\x56";
case 22: // E
return "\x04\x4b\x74\x49\x57";
case 23: // F
return "\x04\x4b\x74\x49\x58";
case 24: // G
return "\x04\x4b\x74\x49\x59";
case 25: // H
return "\x04\x4b\x74\x49\x5a";
case 26: // I
return "\x04\x4b\x74\x49\x61";
case 27: // J
return "\x04\x4b\x74\x49\x62";
case 28: // K
return "\x04\x4b\x74\x49\x63";
case 29: // L
return "\x04\x4b\x74\x49\x64";
case 30: // M
return "\x04\x4b\x74\x49\x65";
case 31: // N
return "\x04\x4b\x74\x49\x66";
case 32: // O
return "\x04\x4b\x74\x49\x67";
case 33: // P
return "\x04\x4b\x74\x49\x68";
case 34: // Q
return "\x04\x4b\x74\x49\x69";
case 35: // R
return "\x04\x4b\x74\x49\x6a";
case 36: // S
return "\x04\x4b\x74\x49\x6b";
case 37: // T
return "\x04\x4b\x74\x49\x6c";
case 38: // U
return "\x04\x4b\x74\x49\x6d";
case 39: // V
return "\x04\x4b\x74\x49\x6e";
case 40: // W
return "\x04\x4b\x74\x49\x6f";
case 41: // X
return "\x04\x4b\x74\x49\x70";
case 42: // Y
return "\x04\x4b\x74\x49\x71";
case 43: // Z
return "\x04\x4b\x74\x49\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x74\x49\x73";
case 45: // BACKSLASH
return "\x04\x4b\x74\x49\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x74\x49\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x74\x49\x76";
case 48: // WORLD_1
return "\x04\x4b\x74\x49\x77";
case 49: // WORLD_2
return "\x04\x4b\x74\x49\x78";
case 50: // ESCAPE
return "\x04\x4b\x74\x49\x79";
case 51: // ENTER
return "\x04\x4b\x74\x49\x7a";
case 52: // TAB
return "\x04\x4b\x74\x49\x30";
case 53: // BACKSPACE
return "\x04\x4b\x74\x49\x31";
case 54: // INSERT
return "\x04\x4b\x74\x49\x32";
case 55: // DELETE
return "\x04\x4b\x74\x49\x33";
case 56: // RIGHT
return "\x04\x4b\x74\x49\x34";
case 57: // LEFT
return "\x04\x4b\x74\x49\x35";
case 58: // DOWN
return "\x04\x4b\x74\x49\x36";
case 59: // UP
return "\x04\x4b\x74\x49\x37";
case 60: // PAGE_UP
return "\x04\x4b\x74\x49\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x74\x49\x39";
case 62: // HOME
return "\x04\x4b\x74\x49\x2e";
case 63: // END
return "\x04\x4b\x74\x49\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x74\x49\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x74\x49\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x74\x49\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x74\x49\x5e";
case 68: // PAUSE
return "\x04\x4b\x74\x49\x21";
case 69: // F1
return "\x04\x4b\x74\x49\x2f";
case 70: // F2
return "\x04\x4b\x74\x49\x2a";
case 71: // F3
return "\x04\x4b\x74\x49\x3f";
case 72: // F4
return "\x04\x4b\x74\x49\x26";
case 73: // F5
return "\x04\x4b\x74\x49\x3c";
case 74: // F6
return "\x04\x4b\x74\x49\x3e";
case 75: // F7
return "\x04\x4b\x74\x49\x28";
case 76: // F8
return "\x04\x4b\x74\x49\x29";
case 77: // F9
return "\x04\x4b\x74\x49\x5b";
case 78: // F10
return "\x04\x4b\x74\x49\x5d";
case 79: // F11
return "\x04\x4b\x74\x49\x7b";
case 80: // F12
return "\x04\x4b\x74\x49\x7d";
case 81: // F13
return "\x04\x4b\x74\x49\x40";
case 82: // F14
return "\x04\x4b\x74\x49\x25";
case 83: // F15
return "\x04\x4b\x74\x49\x24";
case 84: // F16
return "\x04\x4b\x74\x49\x23";
case 85: // F17
return "\x05\x4b\x74\x49\x42\x41";
case 86: // F18
return "\x05\x4b\x74\x49\x42\x42";
case 87: // F19
return "\x05\x4b\x74\x49\x42\x43";
case 88: // F20
return "\x05\x4b\x74\x49\x42\x44";
case 89: // F21
return "\x05\x4b\x74\x49\x42\x45";
case 90: // F22
return "\x05\x4b\x74\x49\x42\x46";
case 91: // F23
return "\x05\x4b\x74\x49\x42\x47";
case 92: // F24
return "\x05\x4b\x74\x49\x42\x48";
case 93: // F25
return "\x05\x4b\x74\x49\x42\x49";
case 94: // KP_0
return "\x05\x4b\x74\x49\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x74\x49\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x74\x49\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x74\x49\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x74\x49\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x74\x49\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x74\x49\x42\x50";
case 101: // KP_7
return "\x05\x4b\x74\x49\x42\x51";
case 102: // KP_8
return "\x05\x4b\x74\x49\x42\x52";
case 103: // KP_9
return "\x05\x4b\x74\x49\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x74\x49\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x74\x49\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x74\x49\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x74\x49\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x74\x49\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x74\x49\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x74\x49\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x74\x49\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x74\x49\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x74\x49\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x74\x49\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x74\x49\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x74\x49\x42\x68";
} // end switch(key)
case 0x9:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x4a\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x74\x4a\x42";
case 2: // COMMA
return "\x04\x4b\x74\x4a\x43";
case 3: // MINUS
return "\x04\x4b\x74\x4a\x44";
case 4: // PERIOD
return "\x04\x4b\x74\x4a\x45";
case 5: // SLASH
return "\x04\x4b\x74\x4a\x46";
case 6: // 0
return "\x04\x4b\x74\x4a\x47";
case 7: // 1
return "\x04\x4b\x74\x4a\x48";
case 8: // 2
return "\x04\x4b\x74\x4a\x49";
case 9: // 3
return "\x04\x4b\x74\x4a\x4a";
case 10: // 4
return "\x04\x4b\x74\x4a\x4b";
case 11: // 5
return "\x04\x4b\x74\x4a\x4c";
case 12: // 6
return "\x04\x4b\x74\x4a\x4d";
case 13: // 7
return "\x04\x4b\x74\x4a\x4e";
case 14: // 8
return "\x04\x4b\x74\x4a\x4f";
case 15: // 9
return "\x04\x4b\x74\x4a\x50";
case 16: // SEMICOLON
return "\x04\x4b\x74\x4a\x51";
case 17: // EQUAL
return "\x04\x4b\x74\x4a\x52";
case 18: // A
return "\x04\x4b\x74\x4a\x53";
case 19: // B
return "\x04\x4b\x74\x4a\x54";
case 20: // C
return "\x04\x4b\x74\x4a\x55";
case 21: // D
return "\x04\x4b\x74\x4a\x56";
case 22: // E
return "\x04\x4b\x74\x4a\x57";
case 23: // F
return "\x04\x4b\x74\x4a\x58";
case 24: // G
return "\x04\x4b\x74\x4a\x59";
case 25: // H
return "\x04\x4b\x74\x4a\x5a";
case 26: // I
return "\x04\x4b\x74\x4a\x61";
case 27: // J
return "\x04\x4b\x74\x4a\x62";
case 28: // K
return "\x04\x4b\x74\x4a\x63";
case 29: // L
return "\x04\x4b\x74\x4a\x64";
case 30: // M
return "\x04\x4b\x74\x4a\x65";
case 31: // N
return "\x04\x4b\x74\x4a\x66";
case 32: // O
return "\x04\x4b\x74\x4a\x67";
case 33: // P
return "\x04\x4b\x74\x4a\x68";
case 34: // Q
return "\x04\x4b\x74\x4a\x69";
case 35: // R
return "\x04\x4b\x74\x4a\x6a";
case 36: // S
return "\x04\x4b\x74\x4a\x6b";
case 37: // T
return "\x04\x4b\x74\x4a\x6c";
case 38: // U
return "\x04\x4b\x74\x4a\x6d";
case 39: // V
return "\x04\x4b\x74\x4a\x6e";
case 40: // W
return "\x04\x4b\x74\x4a\x6f";
case 41: // X
return "\x04\x4b\x74\x4a\x70";
case 42: // Y
return "\x04\x4b\x74\x4a\x71";
case 43: // Z
return "\x04\x4b\x74\x4a\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x74\x4a\x73";
case 45: // BACKSLASH
return "\x04\x4b\x74\x4a\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x74\x4a\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x74\x4a\x76";
case 48: // WORLD_1
return "\x04\x4b\x74\x4a\x77";
case 49: // WORLD_2
return "\x04\x4b\x74\x4a\x78";
case 50: // ESCAPE
return "\x04\x4b\x74\x4a\x79";
case 51: // ENTER
return "\x04\x4b\x74\x4a\x7a";
case 52: // TAB
return "\x04\x4b\x74\x4a\x30";
case 53: // BACKSPACE
return "\x04\x4b\x74\x4a\x31";
case 54: // INSERT
return "\x04\x4b\x74\x4a\x32";
case 55: // DELETE
return "\x04\x4b\x74\x4a\x33";
case 56: // RIGHT
return "\x04\x4b\x74\x4a\x34";
case 57: // LEFT
return "\x04\x4b\x74\x4a\x35";
case 58: // DOWN
return "\x04\x4b\x74\x4a\x36";
case 59: // UP
return "\x04\x4b\x74\x4a\x37";
case 60: // PAGE_UP
return "\x04\x4b\x74\x4a\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x74\x4a\x39";
case 62: // HOME
return "\x04\x4b\x74\x4a\x2e";
case 63: // END
return "\x04\x4b\x74\x4a\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x74\x4a\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x74\x4a\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x74\x4a\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x74\x4a\x5e";
case 68: // PAUSE
return "\x04\x4b\x74\x4a\x21";
case 69: // F1
return "\x04\x4b\x74\x4a\x2f";
case 70: // F2
return "\x04\x4b\x74\x4a\x2a";
case 71: // F3
return "\x04\x4b\x74\x4a\x3f";
case 72: // F4
return "\x04\x4b\x74\x4a\x26";
case 73: // F5
return "\x04\x4b\x74\x4a\x3c";
case 74: // F6
return "\x04\x4b\x74\x4a\x3e";
case 75: // F7
return "\x04\x4b\x74\x4a\x28";
case 76: // F8
return "\x04\x4b\x74\x4a\x29";
case 77: // F9
return "\x04\x4b\x74\x4a\x5b";
case 78: // F10
return "\x04\x4b\x74\x4a\x5d";
case 79: // F11
return "\x04\x4b\x74\x4a\x7b";
case 80: // F12
return "\x04\x4b\x74\x4a\x7d";
case 81: // F13
return "\x04\x4b\x74\x4a\x40";
case 82: // F14
return "\x04\x4b\x74\x4a\x25";
case 83: // F15
return "\x04\x4b\x74\x4a\x24";
case 84: // F16
return "\x04\x4b\x74\x4a\x23";
case 85: // F17
return "\x05\x4b\x74\x4a\x42\x41";
case 86: // F18
return "\x05\x4b\x74\x4a\x42\x42";
case 87: // F19
return "\x05\x4b\x74\x4a\x42\x43";
case 88: // F20
return "\x05\x4b\x74\x4a\x42\x44";
case 89: // F21
return "\x05\x4b\x74\x4a\x42\x45";
case 90: // F22
return "\x05\x4b\x74\x4a\x42\x46";
case 91: // F23
return "\x05\x4b\x74\x4a\x42\x47";
case 92: // F24
return "\x05\x4b\x74\x4a\x42\x48";
case 93: // F25
return "\x05\x4b\x74\x4a\x42\x49";
case 94: // KP_0
return "\x05\x4b\x74\x4a\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x74\x4a\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x74\x4a\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x74\x4a\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x74\x4a\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x74\x4a\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x74\x4a\x42\x50";
case 101: // KP_7
return "\x05\x4b\x74\x4a\x42\x51";
case 102: // KP_8
return "\x05\x4b\x74\x4a\x42\x52";
case 103: // KP_9
return "\x05\x4b\x74\x4a\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x74\x4a\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x74\x4a\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x74\x4a\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x74\x4a\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x74\x4a\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x74\x4a\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x74\x4a\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x74\x4a\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x74\x4a\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x74\x4a\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x74\x4a\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x74\x4a\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x74\x4a\x42\x68";
} // end switch(key)
case 0xa:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x4d\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x74\x4d\x42";
case 2: // COMMA
return "\x04\x4b\x74\x4d\x43";
case 3: // MINUS
return "\x04\x4b\x74\x4d\x44";
case 4: // PERIOD
return "\x04\x4b\x74\x4d\x45";
case 5: // SLASH
return "\x04\x4b\x74\x4d\x46";
case 6: // 0
return "\x04\x4b\x74\x4d\x47";
case 7: // 1
return "\x04\x4b\x74\x4d\x48";
case 8: // 2
return "\x04\x4b\x74\x4d\x49";
case 9: // 3
return "\x04\x4b\x74\x4d\x4a";
case 10: // 4
return "\x04\x4b\x74\x4d\x4b";
case 11: // 5
return "\x04\x4b\x74\x4d\x4c";
case 12: // 6
return "\x04\x4b\x74\x4d\x4d";
case 13: // 7
return "\x04\x4b\x74\x4d\x4e";
case 14: // 8
return "\x04\x4b\x74\x4d\x4f";
case 15: // 9
return "\x04\x4b\x74\x4d\x50";
case 16: // SEMICOLON
return "\x04\x4b\x74\x4d\x51";
case 17: // EQUAL
return "\x04\x4b\x74\x4d\x52";
case 18: // A
return "\x04\x4b\x74\x4d\x53";
case 19: // B
return "\x04\x4b\x74\x4d\x54";
case 20: // C
return "\x04\x4b\x74\x4d\x55";
case 21: // D
return "\x04\x4b\x74\x4d\x56";
case 22: // E
return "\x04\x4b\x74\x4d\x57";
case 23: // F
return "\x04\x4b\x74\x4d\x58";
case 24: // G
return "\x04\x4b\x74\x4d\x59";
case 25: // H
return "\x04\x4b\x74\x4d\x5a";
case 26: // I
return "\x04\x4b\x74\x4d\x61";
case 27: // J
return "\x04\x4b\x74\x4d\x62";
case 28: // K
return "\x04\x4b\x74\x4d\x63";
case 29: // L
return "\x04\x4b\x74\x4d\x64";
case 30: // M
return "\x04\x4b\x74\x4d\x65";
case 31: // N
return "\x04\x4b\x74\x4d\x66";
case 32: // O
return "\x04\x4b\x74\x4d\x67";
case 33: // P
return "\x04\x4b\x74\x4d\x68";
case 34: // Q
return "\x04\x4b\x74\x4d\x69";
case 35: // R
return "\x04\x4b\x74\x4d\x6a";
case 36: // S
return "\x04\x4b\x74\x4d\x6b";
case 37: // T
return "\x04\x4b\x74\x4d\x6c";
case 38: // U
return "\x04\x4b\x74\x4d\x6d";
case 39: // V
return "\x04\x4b\x74\x4d\x6e";
case 40: // W
return "\x04\x4b\x74\x4d\x6f";
case 41: // X
return "\x04\x4b\x74\x4d\x70";
case 42: // Y
return "\x04\x4b\x74\x4d\x71";
case 43: // Z
return "\x04\x4b\x74\x4d\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x74\x4d\x73";
case 45: // BACKSLASH
return "\x04\x4b\x74\x4d\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x74\x4d\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x74\x4d\x76";
case 48: // WORLD_1
return "\x04\x4b\x74\x4d\x77";
case 49: // WORLD_2
return "\x04\x4b\x74\x4d\x78";
case 50: // ESCAPE
return "\x04\x4b\x74\x4d\x79";
case 51: // ENTER
return "\x04\x4b\x74\x4d\x7a";
case 52: // TAB
return "\x04\x4b\x74\x4d\x30";
case 53: // BACKSPACE
return "\x04\x4b\x74\x4d\x31";
case 54: // INSERT
return "\x04\x4b\x74\x4d\x32";
case 55: // DELETE
return "\x04\x4b\x74\x4d\x33";
case 56: // RIGHT
return "\x04\x4b\x74\x4d\x34";
case 57: // LEFT
return "\x04\x4b\x74\x4d\x35";
case 58: // DOWN
return "\x04\x4b\x74\x4d\x36";
case 59: // UP
return "\x04\x4b\x74\x4d\x37";
case 60: // PAGE_UP
return "\x04\x4b\x74\x4d\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x74\x4d\x39";
case 62: // HOME
return "\x04\x4b\x74\x4d\x2e";
case 63: // END
return "\x04\x4b\x74\x4d\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x74\x4d\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x74\x4d\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x74\x4d\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x74\x4d\x5e";
case 68: // PAUSE
return "\x04\x4b\x74\x4d\x21";
case 69: // F1
return "\x04\x4b\x74\x4d\x2f";
case 70: // F2
return "\x04\x4b\x74\x4d\x2a";
case 71: // F3
return "\x04\x4b\x74\x4d\x3f";
case 72: // F4
return "\x04\x4b\x74\x4d\x26";
case 73: // F5
return "\x04\x4b\x74\x4d\x3c";
case 74: // F6
return "\x04\x4b\x74\x4d\x3e";
case 75: // F7
return "\x04\x4b\x74\x4d\x28";
case 76: // F8
return "\x04\x4b\x74\x4d\x29";
case 77: // F9
return "\x04\x4b\x74\x4d\x5b";
case 78: // F10
return "\x04\x4b\x74\x4d\x5d";
case 79: // F11
return "\x04\x4b\x74\x4d\x7b";
case 80: // F12
return "\x04\x4b\x74\x4d\x7d";
case 81: // F13
return "\x04\x4b\x74\x4d\x40";
case 82: // F14
return "\x04\x4b\x74\x4d\x25";
case 83: // F15
return "\x04\x4b\x74\x4d\x24";
case 84: // F16
return "\x04\x4b\x74\x4d\x23";
case 85: // F17
return "\x05\x4b\x74\x4d\x42\x41";
case 86: // F18
return "\x05\x4b\x74\x4d\x42\x42";
case 87: // F19
return "\x05\x4b\x74\x4d\x42\x43";
case 88: // F20
return "\x05\x4b\x74\x4d\x42\x44";
case 89: // F21
return "\x05\x4b\x74\x4d\x42\x45";
case 90: // F22
return "\x05\x4b\x74\x4d\x42\x46";
case 91: // F23
return "\x05\x4b\x74\x4d\x42\x47";
case 92: // F24
return "\x05\x4b\x74\x4d\x42\x48";
case 93: // F25
return "\x05\x4b\x74\x4d\x42\x49";
case 94: // KP_0
return "\x05\x4b\x74\x4d\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x74\x4d\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x74\x4d\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x74\x4d\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x74\x4d\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x74\x4d\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x74\x4d\x42\x50";
case 101: // KP_7
return "\x05\x4b\x74\x4d\x42\x51";
case 102: // KP_8
return "\x05\x4b\x74\x4d\x42\x52";
case 103: // KP_9
return "\x05\x4b\x74\x4d\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x74\x4d\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x74\x4d\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x74\x4d\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x74\x4d\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x74\x4d\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x74\x4d\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x74\x4d\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x74\x4d\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x74\x4d\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x74\x4d\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x74\x4d\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x74\x4d\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x74\x4d\x42\x68";
} // end switch(key)
case 0xb:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x4e\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x74\x4e\x42";
case 2: // COMMA
return "\x04\x4b\x74\x4e\x43";
case 3: // MINUS
return "\x04\x4b\x74\x4e\x44";
case 4: // PERIOD
return "\x04\x4b\x74\x4e\x45";
case 5: // SLASH
return "\x04\x4b\x74\x4e\x46";
case 6: // 0
return "\x04\x4b\x74\x4e\x47";
case 7: // 1
return "\x04\x4b\x74\x4e\x48";
case 8: // 2
return "\x04\x4b\x74\x4e\x49";
case 9: // 3
return "\x04\x4b\x74\x4e\x4a";
case 10: // 4
return "\x04\x4b\x74\x4e\x4b";
case 11: // 5
return "\x04\x4b\x74\x4e\x4c";
case 12: // 6
return "\x04\x4b\x74\x4e\x4d";
case 13: // 7
return "\x04\x4b\x74\x4e\x4e";
case 14: // 8
return "\x04\x4b\x74\x4e\x4f";
case 15: // 9
return "\x04\x4b\x74\x4e\x50";
case 16: // SEMICOLON
return "\x04\x4b\x74\x4e\x51";
case 17: // EQUAL
return "\x04\x4b\x74\x4e\x52";
case 18: // A
return "\x04\x4b\x74\x4e\x53";
case 19: // B
return "\x04\x4b\x74\x4e\x54";
case 20: // C
return "\x04\x4b\x74\x4e\x55";
case 21: // D
return "\x04\x4b\x74\x4e\x56";
case 22: // E
return "\x04\x4b\x74\x4e\x57";
case 23: // F
return "\x04\x4b\x74\x4e\x58";
case 24: // G
return "\x04\x4b\x74\x4e\x59";
case 25: // H
return "\x04\x4b\x74\x4e\x5a";
case 26: // I
return "\x04\x4b\x74\x4e\x61";
case 27: // J
return "\x04\x4b\x74\x4e\x62";
case 28: // K
return "\x04\x4b\x74\x4e\x63";
case 29: // L
return "\x04\x4b\x74\x4e\x64";
case 30: // M
return "\x04\x4b\x74\x4e\x65";
case 31: // N
return "\x04\x4b\x74\x4e\x66";
case 32: // O
return "\x04\x4b\x74\x4e\x67";
case 33: // P
return "\x04\x4b\x74\x4e\x68";
case 34: // Q
return "\x04\x4b\x74\x4e\x69";
case 35: // R
return "\x04\x4b\x74\x4e\x6a";
case 36: // S
return "\x04\x4b\x74\x4e\x6b";
case 37: // T
return "\x04\x4b\x74\x4e\x6c";
case 38: // U
return "\x04\x4b\x74\x4e\x6d";
case 39: // V
return "\x04\x4b\x74\x4e\x6e";
case 40: // W
return "\x04\x4b\x74\x4e\x6f";
case 41: // X
return "\x04\x4b\x74\x4e\x70";
case 42: // Y
return "\x04\x4b\x74\x4e\x71";
case 43: // Z
return "\x04\x4b\x74\x4e\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x74\x4e\x73";
case 45: // BACKSLASH
return "\x04\x4b\x74\x4e\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x74\x4e\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x74\x4e\x76";
case 48: // WORLD_1
return "\x04\x4b\x74\x4e\x77";
case 49: // WORLD_2
return "\x04\x4b\x74\x4e\x78";
case 50: // ESCAPE
return "\x04\x4b\x74\x4e\x79";
case 51: // ENTER
return "\x04\x4b\x74\x4e\x7a";
case 52: // TAB
return "\x04\x4b\x74\x4e\x30";
case 53: // BACKSPACE
return "\x04\x4b\x74\x4e\x31";
case 54: // INSERT
return "\x04\x4b\x74\x4e\x32";
case 55: // DELETE
return "\x04\x4b\x74\x4e\x33";
case 56: // RIGHT
return "\x04\x4b\x74\x4e\x34";
case 57: // LEFT
return "\x04\x4b\x74\x4e\x35";
case 58: // DOWN
return "\x04\x4b\x74\x4e\x36";
case 59: // UP
return "\x04\x4b\x74\x4e\x37";
case 60: // PAGE_UP
return "\x04\x4b\x74\x4e\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x74\x4e\x39";
case 62: // HOME
return "\x04\x4b\x74\x4e\x2e";
case 63: // END
return "\x04\x4b\x74\x4e\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x74\x4e\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x74\x4e\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x74\x4e\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x74\x4e\x5e";
case 68: // PAUSE
return "\x04\x4b\x74\x4e\x21";
case 69: // F1
return "\x04\x4b\x74\x4e\x2f";
case 70: // F2
return "\x04\x4b\x74\x4e\x2a";
case 71: // F3
return "\x04\x4b\x74\x4e\x3f";
case 72: // F4
return "\x04\x4b\x74\x4e\x26";
case 73: // F5
return "\x04\x4b\x74\x4e\x3c";
case 74: // F6
return "\x04\x4b\x74\x4e\x3e";
case 75: // F7
return "\x04\x4b\x74\x4e\x28";
case 76: // F8
return "\x04\x4b\x74\x4e\x29";
case 77: // F9
return "\x04\x4b\x74\x4e\x5b";
case 78: // F10
return "\x04\x4b\x74\x4e\x5d";
case 79: // F11
return "\x04\x4b\x74\x4e\x7b";
case 80: // F12
return "\x04\x4b\x74\x4e\x7d";
case 81: // F13
return "\x04\x4b\x74\x4e\x40";
case 82: // F14
return "\x04\x4b\x74\x4e\x25";
case 83: // F15
return "\x04\x4b\x74\x4e\x24";
case 84: // F16
return "\x04\x4b\x74\x4e\x23";
case 85: // F17
return "\x05\x4b\x74\x4e\x42\x41";
case 86: // F18
return "\x05\x4b\x74\x4e\x42\x42";
case 87: // F19
return "\x05\x4b\x74\x4e\x42\x43";
case 88: // F20
return "\x05\x4b\x74\x4e\x42\x44";
case 89: // F21
return "\x05\x4b\x74\x4e\x42\x45";
case 90: // F22
return "\x05\x4b\x74\x4e\x42\x46";
case 91: // F23
return "\x05\x4b\x74\x4e\x42\x47";
case 92: // F24
return "\x05\x4b\x74\x4e\x42\x48";
case 93: // F25
return "\x05\x4b\x74\x4e\x42\x49";
case 94: // KP_0
return "\x05\x4b\x74\x4e\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x74\x4e\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x74\x4e\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x74\x4e\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x74\x4e\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x74\x4e\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x74\x4e\x42\x50";
case 101: // KP_7
return "\x05\x4b\x74\x4e\x42\x51";
case 102: // KP_8
return "\x05\x4b\x74\x4e\x42\x52";
case 103: // KP_9
return "\x05\x4b\x74\x4e\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x74\x4e\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x74\x4e\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x74\x4e\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x74\x4e\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x74\x4e\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x74\x4e\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x74\x4e\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x74\x4e\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x74\x4e\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x74\x4e\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x74\x4e\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x74\x4e\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x74\x4e\x42\x68";
} // end switch(key)
case 0xc:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x4b\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x74\x4b\x42";
case 2: // COMMA
return "\x04\x4b\x74\x4b\x43";
case 3: // MINUS
return "\x04\x4b\x74\x4b\x44";
case 4: // PERIOD
return "\x04\x4b\x74\x4b\x45";
case 5: // SLASH
return "\x04\x4b\x74\x4b\x46";
case 6: // 0
return "\x04\x4b\x74\x4b\x47";
case 7: // 1
return "\x04\x4b\x74\x4b\x48";
case 8: // 2
return "\x04\x4b\x74\x4b\x49";
case 9: // 3
return "\x04\x4b\x74\x4b\x4a";
case 10: // 4
return "\x04\x4b\x74\x4b\x4b";
case 11: // 5
return "\x04\x4b\x74\x4b\x4c";
case 12: // 6
return "\x04\x4b\x74\x4b\x4d";
case 13: // 7
return "\x04\x4b\x74\x4b\x4e";
case 14: // 8
return "\x04\x4b\x74\x4b\x4f";
case 15: // 9
return "\x04\x4b\x74\x4b\x50";
case 16: // SEMICOLON
return "\x04\x4b\x74\x4b\x51";
case 17: // EQUAL
return "\x04\x4b\x74\x4b\x52";
case 18: // A
return "\x04\x4b\x74\x4b\x53";
case 19: // B
return "\x04\x4b\x74\x4b\x54";
case 20: // C
return "\x04\x4b\x74\x4b\x55";
case 21: // D
return "\x04\x4b\x74\x4b\x56";
case 22: // E
return "\x04\x4b\x74\x4b\x57";
case 23: // F
return "\x04\x4b\x74\x4b\x58";
case 24: // G
return "\x04\x4b\x74\x4b\x59";
case 25: // H
return "\x04\x4b\x74\x4b\x5a";
case 26: // I
return "\x04\x4b\x74\x4b\x61";
case 27: // J
return "\x04\x4b\x74\x4b\x62";
case 28: // K
return "\x04\x4b\x74\x4b\x63";
case 29: // L
return "\x04\x4b\x74\x4b\x64";
case 30: // M
return "\x04\x4b\x74\x4b\x65";
case 31: // N
return "\x04\x4b\x74\x4b\x66";
case 32: // O
return "\x04\x4b\x74\x4b\x67";
case 33: // P
return "\x04\x4b\x74\x4b\x68";
case 34: // Q
return "\x04\x4b\x74\x4b\x69";
case 35: // R
return "\x04\x4b\x74\x4b\x6a";
case 36: // S
return "\x04\x4b\x74\x4b\x6b";
case 37: // T
return "\x04\x4b\x74\x4b\x6c";
case 38: // U
return "\x04\x4b\x74\x4b\x6d";
case 39: // V
return "\x04\x4b\x74\x4b\x6e";
case 40: // W
return "\x04\x4b\x74\x4b\x6f";
case 41: // X
return "\x04\x4b\x74\x4b\x70";
case 42: // Y
return "\x04\x4b\x74\x4b\x71";
case 43: // Z
return "\x04\x4b\x74\x4b\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x74\x4b\x73";
case 45: // BACKSLASH
return "\x04\x4b\x74\x4b\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x74\x4b\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x74\x4b\x76";
case 48: // WORLD_1
return "\x04\x4b\x74\x4b\x77";
case 49: // WORLD_2
return "\x04\x4b\x74\x4b\x78";
case 50: // ESCAPE
return "\x04\x4b\x74\x4b\x79";
case 51: // ENTER
return "\x04\x4b\x74\x4b\x7a";
case 52: // TAB
return "\x04\x4b\x74\x4b\x30";
case 53: // BACKSPACE
return "\x04\x4b\x74\x4b\x31";
case 54: // INSERT
return "\x04\x4b\x74\x4b\x32";
case 55: // DELETE
return "\x04\x4b\x74\x4b\x33";
case 56: // RIGHT
return "\x04\x4b\x74\x4b\x34";
case 57: // LEFT
return "\x04\x4b\x74\x4b\x35";
case 58: // DOWN
return "\x04\x4b\x74\x4b\x36";
case 59: // UP
return "\x04\x4b\x74\x4b\x37";
case 60: // PAGE_UP
return "\x04\x4b\x74\x4b\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x74\x4b\x39";
case 62: // HOME
return "\x04\x4b\x74\x4b\x2e";
case 63: // END
return "\x04\x4b\x74\x4b\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x74\x4b\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x74\x4b\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x74\x4b\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x74\x4b\x5e";
case 68: // PAUSE
return "\x04\x4b\x74\x4b\x21";
case 69: // F1
return "\x04\x4b\x74\x4b\x2f";
case 70: // F2
return "\x04\x4b\x74\x4b\x2a";
case 71: // F3
return "\x04\x4b\x74\x4b\x3f";
case 72: // F4
return "\x04\x4b\x74\x4b\x26";
case 73: // F5
return "\x04\x4b\x74\x4b\x3c";
case 74: // F6
return "\x04\x4b\x74\x4b\x3e";
case 75: // F7
return "\x04\x4b\x74\x4b\x28";
case 76: // F8
return "\x04\x4b\x74\x4b\x29";
case 77: // F9
return "\x04\x4b\x74\x4b\x5b";
case 78: // F10
return "\x04\x4b\x74\x4b\x5d";
case 79: // F11
return "\x04\x4b\x74\x4b\x7b";
case 80: // F12
return "\x04\x4b\x74\x4b\x7d";
case 81: // F13
return "\x04\x4b\x74\x4b\x40";
case 82: // F14
return "\x04\x4b\x74\x4b\x25";
case 83: // F15
return "\x04\x4b\x74\x4b\x24";
case 84: // F16
return "\x04\x4b\x74\x4b\x23";
case 85: // F17
return "\x05\x4b\x74\x4b\x42\x41";
case 86: // F18
return "\x05\x4b\x74\x4b\x42\x42";
case 87: // F19
return "\x05\x4b\x74\x4b\x42\x43";
case 88: // F20
return "\x05\x4b\x74\x4b\x42\x44";
case 89: // F21
return "\x05\x4b\x74\x4b\x42\x45";
case 90: // F22
return "\x05\x4b\x74\x4b\x42\x46";
case 91: // F23
return "\x05\x4b\x74\x4b\x42\x47";
case 92: // F24
return "\x05\x4b\x74\x4b\x42\x48";
case 93: // F25
return "\x05\x4b\x74\x4b\x42\x49";
case 94: // KP_0
return "\x05\x4b\x74\x4b\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x74\x4b\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x74\x4b\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x74\x4b\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x74\x4b\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x74\x4b\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x74\x4b\x42\x50";
case 101: // KP_7
return "\x05\x4b\x74\x4b\x42\x51";
case 102: // KP_8
return "\x05\x4b\x74\x4b\x42\x52";
case 103: // KP_9
return "\x05\x4b\x74\x4b\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x74\x4b\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x74\x4b\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x74\x4b\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x74\x4b\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x74\x4b\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x74\x4b\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x74\x4b\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x74\x4b\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x74\x4b\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x74\x4b\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x74\x4b\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x74\x4b\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x74\x4b\x42\x68";
} // end switch(key)
case 0xd:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x4c\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x74\x4c\x42";
case 2: // COMMA
return "\x04\x4b\x74\x4c\x43";
case 3: // MINUS
return "\x04\x4b\x74\x4c\x44";
case 4: // PERIOD
return "\x04\x4b\x74\x4c\x45";
case 5: // SLASH
return "\x04\x4b\x74\x4c\x46";
case 6: // 0
return "\x04\x4b\x74\x4c\x47";
case 7: // 1
return "\x04\x4b\x74\x4c\x48";
case 8: // 2
return "\x04\x4b\x74\x4c\x49";
case 9: // 3
return "\x04\x4b\x74\x4c\x4a";
case 10: // 4
return "\x04\x4b\x74\x4c\x4b";
case 11: // 5
return "\x04\x4b\x74\x4c\x4c";
case 12: // 6
return "\x04\x4b\x74\x4c\x4d";
case 13: // 7
return "\x04\x4b\x74\x4c\x4e";
case 14: // 8
return "\x04\x4b\x74\x4c\x4f";
case 15: // 9
return "\x04\x4b\x74\x4c\x50";
case 16: // SEMICOLON
return "\x04\x4b\x74\x4c\x51";
case 17: // EQUAL
return "\x04\x4b\x74\x4c\x52";
case 18: // A
return "\x04\x4b\x74\x4c\x53";
case 19: // B
return "\x04\x4b\x74\x4c\x54";
case 20: // C
return "\x04\x4b\x74\x4c\x55";
case 21: // D
return "\x04\x4b\x74\x4c\x56";
case 22: // E
return "\x04\x4b\x74\x4c\x57";
case 23: // F
return "\x04\x4b\x74\x4c\x58";
case 24: // G
return "\x04\x4b\x74\x4c\x59";
case 25: // H
return "\x04\x4b\x74\x4c\x5a";
case 26: // I
return "\x04\x4b\x74\x4c\x61";
case 27: // J
return "\x04\x4b\x74\x4c\x62";
case 28: // K
return "\x04\x4b\x74\x4c\x63";
case 29: // L
return "\x04\x4b\x74\x4c\x64";
case 30: // M
return "\x04\x4b\x74\x4c\x65";
case 31: // N
return "\x04\x4b\x74\x4c\x66";
case 32: // O
return "\x04\x4b\x74\x4c\x67";
case 33: // P
return "\x04\x4b\x74\x4c\x68";
case 34: // Q
return "\x04\x4b\x74\x4c\x69";
case 35: // R
return "\x04\x4b\x74\x4c\x6a";
case 36: // S
return "\x04\x4b\x74\x4c\x6b";
case 37: // T
return "\x04\x4b\x74\x4c\x6c";
case 38: // U
return "\x04\x4b\x74\x4c\x6d";
case 39: // V
return "\x04\x4b\x74\x4c\x6e";
case 40: // W
return "\x04\x4b\x74\x4c\x6f";
case 41: // X
return "\x04\x4b\x74\x4c\x70";
case 42: // Y
return "\x04\x4b\x74\x4c\x71";
case 43: // Z
return "\x04\x4b\x74\x4c\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x74\x4c\x73";
case 45: // BACKSLASH
return "\x04\x4b\x74\x4c\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x74\x4c\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x74\x4c\x76";
case 48: // WORLD_1
return "\x04\x4b\x74\x4c\x77";
case 49: // WORLD_2
return "\x04\x4b\x74\x4c\x78";
case 50: // ESCAPE
return "\x04\x4b\x74\x4c\x79";
case 51: // ENTER
return "\x04\x4b\x74\x4c\x7a";
case 52: // TAB
return "\x04\x4b\x74\x4c\x30";
case 53: // BACKSPACE
return "\x04\x4b\x74\x4c\x31";
case 54: // INSERT
return "\x04\x4b\x74\x4c\x32";
case 55: // DELETE
return "\x04\x4b\x74\x4c\x33";
case 56: // RIGHT
return "\x04\x4b\x74\x4c\x34";
case 57: // LEFT
return "\x04\x4b\x74\x4c\x35";
case 58: // DOWN
return "\x04\x4b\x74\x4c\x36";
case 59: // UP
return "\x04\x4b\x74\x4c\x37";
case 60: // PAGE_UP
return "\x04\x4b\x74\x4c\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x74\x4c\x39";
case 62: // HOME
return "\x04\x4b\x74\x4c\x2e";
case 63: // END
return "\x04\x4b\x74\x4c\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x74\x4c\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x74\x4c\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x74\x4c\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x74\x4c\x5e";
case 68: // PAUSE
return "\x04\x4b\x74\x4c\x21";
case 69: // F1
return "\x04\x4b\x74\x4c\x2f";
case 70: // F2
return "\x04\x4b\x74\x4c\x2a";
case 71: // F3
return "\x04\x4b\x74\x4c\x3f";
case 72: // F4
return "\x04\x4b\x74\x4c\x26";
case 73: // F5
return "\x04\x4b\x74\x4c\x3c";
case 74: // F6
return "\x04\x4b\x74\x4c\x3e";
case 75: // F7
return "\x04\x4b\x74\x4c\x28";
case 76: // F8
return "\x04\x4b\x74\x4c\x29";
case 77: // F9
return "\x04\x4b\x74\x4c\x5b";
case 78: // F10
return "\x04\x4b\x74\x4c\x5d";
case 79: // F11
return "\x04\x4b\x74\x4c\x7b";
case 80: // F12
return "\x04\x4b\x74\x4c\x7d";
case 81: // F13
return "\x04\x4b\x74\x4c\x40";
case 82: // F14
return "\x04\x4b\x74\x4c\x25";
case 83: // F15
return "\x04\x4b\x74\x4c\x24";
case 84: // F16
return "\x04\x4b\x74\x4c\x23";
case 85: // F17
return "\x05\x4b\x74\x4c\x42\x41";
case 86: // F18
return "\x05\x4b\x74\x4c\x42\x42";
case 87: // F19
return "\x05\x4b\x74\x4c\x42\x43";
case 88: // F20
return "\x05\x4b\x74\x4c\x42\x44";
case 89: // F21
return "\x05\x4b\x74\x4c\x42\x45";
case 90: // F22
return "\x05\x4b\x74\x4c\x42\x46";
case 91: // F23
return "\x05\x4b\x74\x4c\x42\x47";
case 92: // F24
return "\x05\x4b\x74\x4c\x42\x48";
case 93: // F25
return "\x05\x4b\x74\x4c\x42\x49";
case 94: // KP_0
return "\x05\x4b\x74\x4c\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x74\x4c\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x74\x4c\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x74\x4c\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x74\x4c\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x74\x4c\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x74\x4c\x42\x50";
case 101: // KP_7
return "\x05\x4b\x74\x4c\x42\x51";
case 102: // KP_8
return "\x05\x4b\x74\x4c\x42\x52";
case 103: // KP_9
return "\x05\x4b\x74\x4c\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x74\x4c\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x74\x4c\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x74\x4c\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x74\x4c\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x74\x4c\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x74\x4c\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x74\x4c\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x74\x4c\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x74\x4c\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x74\x4c\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x74\x4c\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x74\x4c\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x74\x4c\x42\x68";
} // end switch(key)
case 0xe:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x4f\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x74\x4f\x42";
case 2: // COMMA
return "\x04\x4b\x74\x4f\x43";
case 3: // MINUS
return "\x04\x4b\x74\x4f\x44";
case 4: // PERIOD
return "\x04\x4b\x74\x4f\x45";
case 5: // SLASH
return "\x04\x4b\x74\x4f\x46";
case 6: // 0
return "\x04\x4b\x74\x4f\x47";
case 7: // 1
return "\x04\x4b\x74\x4f\x48";
case 8: // 2
return "\x04\x4b\x74\x4f\x49";
case 9: // 3
return "\x04\x4b\x74\x4f\x4a";
case 10: // 4
return "\x04\x4b\x74\x4f\x4b";
case 11: // 5
return "\x04\x4b\x74\x4f\x4c";
case 12: // 6
return "\x04\x4b\x74\x4f\x4d";
case 13: // 7
return "\x04\x4b\x74\x4f\x4e";
case 14: // 8
return "\x04\x4b\x74\x4f\x4f";
case 15: // 9
return "\x04\x4b\x74\x4f\x50";
case 16: // SEMICOLON
return "\x04\x4b\x74\x4f\x51";
case 17: // EQUAL
return "\x04\x4b\x74\x4f\x52";
case 18: // A
return "\x04\x4b\x74\x4f\x53";
case 19: // B
return "\x04\x4b\x74\x4f\x54";
case 20: // C
return "\x04\x4b\x74\x4f\x55";
case 21: // D
return "\x04\x4b\x74\x4f\x56";
case 22: // E
return "\x04\x4b\x74\x4f\x57";
case 23: // F
return "\x04\x4b\x74\x4f\x58";
case 24: // G
return "\x04\x4b\x74\x4f\x59";
case 25: // H
return "\x04\x4b\x74\x4f\x5a";
case 26: // I
return "\x04\x4b\x74\x4f\x61";
case 27: // J
return "\x04\x4b\x74\x4f\x62";
case 28: // K
return "\x04\x4b\x74\x4f\x63";
case 29: // L
return "\x04\x4b\x74\x4f\x64";
case 30: // M
return "\x04\x4b\x74\x4f\x65";
case 31: // N
return "\x04\x4b\x74\x4f\x66";
case 32: // O
return "\x04\x4b\x74\x4f\x67";
case 33: // P
return "\x04\x4b\x74\x4f\x68";
case 34: // Q
return "\x04\x4b\x74\x4f\x69";
case 35: // R
return "\x04\x4b\x74\x4f\x6a";
case 36: // S
return "\x04\x4b\x74\x4f\x6b";
case 37: // T
return "\x04\x4b\x74\x4f\x6c";
case 38: // U
return "\x04\x4b\x74\x4f\x6d";
case 39: // V
return "\x04\x4b\x74\x4f\x6e";
case 40: // W
return "\x04\x4b\x74\x4f\x6f";
case 41: // X
return "\x04\x4b\x74\x4f\x70";
case 42: // Y
return "\x04\x4b\x74\x4f\x71";
case 43: // Z
return "\x04\x4b\x74\x4f\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x74\x4f\x73";
case 45: // BACKSLASH
return "\x04\x4b\x74\x4f\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x74\x4f\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x74\x4f\x76";
case 48: // WORLD_1
return "\x04\x4b\x74\x4f\x77";
case 49: // WORLD_2
return "\x04\x4b\x74\x4f\x78";
case 50: // ESCAPE
return "\x04\x4b\x74\x4f\x79";
case 51: // ENTER
return "\x04\x4b\x74\x4f\x7a";
case 52: // TAB
return "\x04\x4b\x74\x4f\x30";
case 53: // BACKSPACE
return "\x04\x4b\x74\x4f\x31";
case 54: // INSERT
return "\x04\x4b\x74\x4f\x32";
case 55: // DELETE
return "\x04\x4b\x74\x4f\x33";
case 56: // RIGHT
return "\x04\x4b\x74\x4f\x34";
case 57: // LEFT
return "\x04\x4b\x74\x4f\x35";
case 58: // DOWN
return "\x04\x4b\x74\x4f\x36";
case 59: // UP
return "\x04\x4b\x74\x4f\x37";
case 60: // PAGE_UP
return "\x04\x4b\x74\x4f\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x74\x4f\x39";
case 62: // HOME
return "\x04\x4b\x74\x4f\x2e";
case 63: // END
return "\x04\x4b\x74\x4f\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x74\x4f\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x74\x4f\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x74\x4f\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x74\x4f\x5e";
case 68: // PAUSE
return "\x04\x4b\x74\x4f\x21";
case 69: // F1
return "\x04\x4b\x74\x4f\x2f";
case 70: // F2
return "\x04\x4b\x74\x4f\x2a";
case 71: // F3
return "\x04\x4b\x74\x4f\x3f";
case 72: // F4
return "\x04\x4b\x74\x4f\x26";
case 73: // F5
return "\x04\x4b\x74\x4f\x3c";
case 74: // F6
return "\x04\x4b\x74\x4f\x3e";
case 75: // F7
return "\x04\x4b\x74\x4f\x28";
case 76: // F8
return "\x04\x4b\x74\x4f\x29";
case 77: // F9
return "\x04\x4b\x74\x4f\x5b";
case 78: // F10
return "\x04\x4b\x74\x4f\x5d";
case 79: // F11
return "\x04\x4b\x74\x4f\x7b";
case 80: // F12
return "\x04\x4b\x74\x4f\x7d";
case 81: // F13
return "\x04\x4b\x74\x4f\x40";
case 82: // F14
return "\x04\x4b\x74\x4f\x25";
case 83: // F15
return "\x04\x4b\x74\x4f\x24";
case 84: // F16
return "\x04\x4b\x74\x4f\x23";
case 85: // F17
return "\x05\x4b\x74\x4f\x42\x41";
case 86: // F18
return "\x05\x4b\x74\x4f\x42\x42";
case 87: // F19
return "\x05\x4b\x74\x4f\x42\x43";
case 88: // F20
return "\x05\x4b\x74\x4f\x42\x44";
case 89: // F21
return "\x05\x4b\x74\x4f\x42\x45";
case 90: // F22
return "\x05\x4b\x74\x4f\x42\x46";
case 91: // F23
return "\x05\x4b\x74\x4f\x42\x47";
case 92: // F24
return "\x05\x4b\x74\x4f\x42\x48";
case 93: // F25
return "\x05\x4b\x74\x4f\x42\x49";
case 94: // KP_0
return "\x05\x4b\x74\x4f\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x74\x4f\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x74\x4f\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x74\x4f\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x74\x4f\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x74\x4f\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x74\x4f\x42\x50";
case 101: // KP_7
return "\x05\x4b\x74\x4f\x42\x51";
case 102: // KP_8
return "\x05\x4b\x74\x4f\x42\x52";
case 103: // KP_9
return "\x05\x4b\x74\x4f\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x74\x4f\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x74\x4f\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x74\x4f\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x74\x4f\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x74\x4f\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x74\x4f\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x74\x4f\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x74\x4f\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x74\x4f\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x74\x4f\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x74\x4f\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x74\x4f\x42\x67";
case 118: // RIGHT_SUPER
return "\x05\x4b\x74\x4f\x42\x68";
} // end switch(key)
case 0xf:
switch(key & 0x7f) { default: return NULL;
case 0: // SPACE
return "\x04\x4b\x74\x50\x41";
case 1: // APOSTROPHE
return "\x04\x4b\x74\x50\x42";
case 2: // COMMA
return "\x04\x4b\x74\x50\x43";
case 3: // MINUS
return "\x04\x4b\x74\x50\x44";
case 4: // PERIOD
return "\x04\x4b\x74\x50\x45";
case 5: // SLASH
return "\x04\x4b\x74\x50\x46";
case 6: // 0
return "\x04\x4b\x74\x50\x47";
case 7: // 1
return "\x04\x4b\x74\x50\x48";
case 8: // 2
return "\x04\x4b\x74\x50\x49";
case 9: // 3
return "\x04\x4b\x74\x50\x4a";
case 10: // 4
return "\x04\x4b\x74\x50\x4b";
case 11: // 5
return "\x04\x4b\x74\x50\x4c";
case 12: // 6
return "\x04\x4b\x74\x50\x4d";
case 13: // 7
return "\x04\x4b\x74\x50\x4e";
case 14: // 8
return "\x04\x4b\x74\x50\x4f";
case 15: // 9
return "\x04\x4b\x74\x50\x50";
case 16: // SEMICOLON
return "\x04\x4b\x74\x50\x51";
case 17: // EQUAL
return "\x04\x4b\x74\x50\x52";
case 18: // A
return "\x04\x4b\x74\x50\x53";
case 19: // B
return "\x04\x4b\x74\x50\x54";
case 20: // C
return "\x04\x4b\x74\x50\x55";
case 21: // D
return "\x04\x4b\x74\x50\x56";
case 22: // E
return "\x04\x4b\x74\x50\x57";
case 23: // F
return "\x04\x4b\x74\x50\x58";
case 24: // G
return "\x04\x4b\x74\x50\x59";
case 25: // H
return "\x04\x4b\x74\x50\x5a";
case 26: // I
return "\x04\x4b\x74\x50\x61";
case 27: // J
return "\x04\x4b\x74\x50\x62";
case 28: // K
return "\x04\x4b\x74\x50\x63";
case 29: // L
return "\x04\x4b\x74\x50\x64";
case 30: // M
return "\x04\x4b\x74\x50\x65";
case 31: // N
return "\x04\x4b\x74\x50\x66";
case 32: // O
return "\x04\x4b\x74\x50\x67";
case 33: // P
return "\x04\x4b\x74\x50\x68";
case 34: // Q
return "\x04\x4b\x74\x50\x69";
case 35: // R
return "\x04\x4b\x74\x50\x6a";
case 36: // S
return "\x04\x4b\x74\x50\x6b";
case 37: // T
return "\x04\x4b\x74\x50\x6c";
case 38: // U
return "\x04\x4b\x74\x50\x6d";
case 39: // V
return "\x04\x4b\x74\x50\x6e";
case 40: // W
return "\x04\x4b\x74\x50\x6f";
case 41: // X
return "\x04\x4b\x74\x50\x70";
case 42: // Y
return "\x04\x4b\x74\x50\x71";
case 43: // Z
return "\x04\x4b\x74\x50\x72";
case 44: // LEFT_BRACKET
return "\x04\x4b\x74\x50\x73";
case 45: // BACKSLASH
return "\x04\x4b\x74\x50\x74";
case 46: // RIGHT_BRACKET
return "\x04\x4b\x74\x50\x75";
case 47: // GRAVE_ACCENT
return "\x04\x4b\x74\x50\x76";
case 48: // WORLD_1
return "\x04\x4b\x74\x50\x77";
case 49: // WORLD_2
return "\x04\x4b\x74\x50\x78";
case 50: // ESCAPE
return "\x04\x4b\x74\x50\x79";
case 51: // ENTER
return "\x04\x4b\x74\x50\x7a";
case 52: // TAB
return "\x04\x4b\x74\x50\x30";
case 53: // BACKSPACE
return "\x04\x4b\x74\x50\x31";
case 54: // INSERT
return "\x04\x4b\x74\x50\x32";
case 55: // DELETE
return "\x04\x4b\x74\x50\x33";
case 56: // RIGHT
return "\x04\x4b\x74\x50\x34";
case 57: // LEFT
return "\x04\x4b\x74\x50\x35";
case 58: // DOWN
return "\x04\x4b\x74\x50\x36";
case 59: // UP
return "\x04\x4b\x74\x50\x37";
case 60: // PAGE_UP
return "\x04\x4b\x74\x50\x38";
case 61: // PAGE_DOWN
return "\x04\x4b\x74\x50\x39";
case 62: // HOME
return "\x04\x4b\x74\x50\x2e";
case 63: // END
return "\x04\x4b\x74\x50\x2d";
case 64: // CAPS_LOCK
return "\x04\x4b\x74\x50\x3a";
case 65: // SCROLL_LOCK
return "\x04\x4b\x74\x50\x2b";
case 66: // NUM_LOCK
return "\x04\x4b\x74\x50\x3d";
case 67: // PRINT_SCREEN
return "\x04\x4b\x74\x50\x5e";
case 68: // PAUSE
return "\x04\x4b\x74\x50\x21";
case 69: // F1
return "\x04\x4b\x74\x50\x2f";
case 70: // F2
return "\x04\x4b\x74\x50\x2a";
case 71: // F3
return "\x04\x4b\x74\x50\x3f";
case 72: // F4
return "\x04\x4b\x74\x50\x26";
case 73: // F5
return "\x04\x4b\x74\x50\x3c";
case 74: // F6
return "\x04\x4b\x74\x50\x3e";
case 75: // F7
return "\x04\x4b\x74\x50\x28";
case 76: // F8
return "\x04\x4b\x74\x50\x29";
case 77: // F9
return "\x04\x4b\x74\x50\x5b";
case 78: // F10
return "\x04\x4b\x74\x50\x5d";
case 79: // F11
return "\x04\x4b\x74\x50\x7b";
case 80: // F12
return "\x04\x4b\x74\x50\x7d";
case 81: // F13
return "\x04\x4b\x74\x50\x40";
case 82: // F14
return "\x04\x4b\x74\x50\x25";
case 83: // F15
return "\x04\x4b\x74\x50\x24";
case 84: // F16
return "\x04\x4b\x74\x50\x23";
case 85: // F17
return "\x05\x4b\x74\x50\x42\x41";
case 86: // F18
return "\x05\x4b\x74\x50\x42\x42";
case 87: // F19
return "\x05\x4b\x74\x50\x42\x43";
case 88: // F20
return "\x05\x4b\x74\x50\x42\x44";
case 89: // F21
return "\x05\x4b\x74\x50\x42\x45";
case 90: // F22
return "\x05\x4b\x74\x50\x42\x46";
case 91: // F23
return "\x05\x4b\x74\x50\x42\x47";
case 92: // F24
return "\x05\x4b\x74\x50\x42\x48";
case 93: // F25
return "\x05\x4b\x74\x50\x42\x49";
case 94: // KP_0
return "\x05\x4b\x74\x50\x42\x4a";
case 95: // KP_1
return "\x05\x4b\x74\x50\x42\x4b";
case 96: // KP_2
return "\x05\x4b\x74\x50\x42\x4c";
case 97: // KP_3
return "\x05\x4b\x74\x50\x42\x4d";
case 98: // KP_4
return "\x05\x4b\x74\x50\x42\x4e";
case 99: // KP_5
return "\x05\x4b\x74\x50\x42\x4f";
case 100: // KP_6
return "\x05\x4b\x74\x50\x42\x50";
case 101: // KP_7
return "\x05\x4b\x74\x50\x42\x51";
case 102: // KP_8
return "\x05\x4b\x74\x50\x42\x52";
case 103: // KP_9
return "\x05\x4b\x74\x50\x42\x53";
case 104: // KP_DECIMAL
return "\x05\x4b\x74\x50\x42\x54";
case 105: // KP_DIVIDE
return "\x05\x4b\x74\x50\x42\x55";
case 106: // KP_MULTIPLY
return "\x05\x4b\x74\x50\x42\x56";
case 107: // KP_SUBTRACT
return "\x05\x4b\x74\x50\x42\x57";
case 108: // KP_ADD
return "\x05\x4b\x74\x50\x42\x58";
case 109: // KP_ENTER
return "\x05\x4b\x74\x50\x42\x59";
case 110: // KP_EQUAL
return "\x05\x4b\x74\x50\x42\x5a";
case 112: // LEFT_CONTROL
return "\x05\x4b\x74\x50\x42\x62";
case 113: // LEFT_ALT
return "\x05\x4b\x74\x50\x42\x63";
case 114: // LEFT_SUPER
return "\x05\x4b\x74\x50\x42\x64";
case 116: // RIGHT_CONTROL
return "\x05\x4b\x74\x50\x42\x66";
case 117: // RIGHT_ALT
return "\x05\x4b\x74\x50\x42\x67";
case 118: // 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;
}