From c17c6cae4cb7c628ce00250a98aedc779b6d131e Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 3 Dec 2017 16:57:08 +0530 Subject: [PATCH] Support S8C1T mode That is, eight bit control codes. When in S8C1T mode, kitty will send only eight bit control codes to the client. --- kitty/boss.py | 17 +- kitty/cursor.c | 4 +- kitty/data-types.c | 7 +- kitty/data-types.h | 1 + kitty/graphics.c | 2 +- kitty/keys.c | 23 +- kitty/keys.h | 11124 +++++++++++++++++++------------------- kitty/keys.py | 2 +- kitty/modes.h | 4 +- kitty/mouse.c | 29 +- kitty/parser.c | 10 + kitty/screen.c | 90 +- kitty/screen.h | 3 + kitty/terminfo.py | 4 +- kitty/window.py | 28 +- kitty_tests/__init__.py | 3 +- kitty_tests/parser.py | 2 +- 17 files changed, 5716 insertions(+), 5637 deletions(-) diff --git a/kitty/boss.py b/kitty/boss.py index b565bd270..15fb10a9e 100644 --- a/kitty/boss.py +++ b/kitty/boss.py @@ -9,14 +9,13 @@ from .cli import create_opts, parse_args from .config import MINIMUM_FONT_SIZE, cached_values, initial_window_size from .constants import set_boss, wakeup from .fast_data_types import ( - GLFW_KEY_DOWN, GLFW_KEY_UP, ChildMonitor, create_os_window, - current_os_window, destroy_global_data, destroy_sprite_map, - get_clipboard_string, glfw_post_empty_event, layout_sprite_map, - mark_os_window_for_close, show_window, toggle_fullscreen, - viewport_for_window + ChildMonitor, create_os_window, current_os_window, destroy_global_data, + destroy_sprite_map, get_clipboard_string, glfw_post_empty_event, + layout_sprite_map, mark_os_window_for_close, show_window, + toggle_fullscreen, viewport_for_window ) from .fonts.render import prerender, resize_fonts, set_font_family -from .keys import get_key_map, get_shortcut +from .keys import get_shortcut from .session import create_session from .tabs import SpecialWindow, TabManager from .utils import ( @@ -288,12 +287,6 @@ class Boss: old_focus.focus_changed(False) tab.active_window.focus_changed(True) - def send_fake_scroll(self, window_idx, amt, upwards): - tab = self.active_tab - w = tab.windows[window_idx] - k = get_key_map(w.screen)[GLFW_KEY_UP if upwards else GLFW_KEY_DOWN] - w.write_to_child(k * amt) - def open_url(self, url): if url: open_url(url, self.opts.open_url_with) diff --git a/kitty/cursor.c b/kitty/cursor.c index 8413b0c7d..72d85ff29 100644 --- a/kitty/cursor.c +++ b/kitty/cursor.c @@ -151,10 +151,10 @@ decoration_as_sgr(uint8_t decoration) { const char* cursor_as_sgr(Cursor *self, Cursor *prev) { - static char buf[128], *p; + static char buf[128]; #define SZ sizeof(buf) - (p - buf) - 2 #define P(fmt, ...) { p += snprintf(p, SZ, fmt ";", __VA_ARGS__); } - p = buf; + char *p = buf; if (self->bold != prev->bold) P("%d", self->bold ? 1 : 22); if (self->italic != prev->italic) P("%d", self->italic ? 3 : 23); if (self->reverse != prev->reverse) P("%d", self->reverse ? 7 : 27); diff --git a/kitty/data-types.c b/kitty/data-types.c index 099c2b9e5..001f24ea9 100644 --- a/kitty/data-types.c +++ b/kitty/data-types.c @@ -12,6 +12,7 @@ #undef _DARWIN_C_SOURCE #endif #include "data-types.h" +#include "control-codes.h" #include "modes.h" #include #include @@ -229,8 +230,6 @@ PyInit_fast_data_types(void) { PyModule_AddIntConstant(m, "REVERSE", REVERSE_SHIFT); PyModule_AddIntConstant(m, "STRIKETHROUGH", STRIKE_SHIFT); PyModule_AddIntConstant(m, "DECORATION", DECORATION_SHIFT); - PyModule_AddStringMacro(m, BRACKETED_PASTE_START); - PyModule_AddStringMacro(m, BRACKETED_PASTE_END); PyModule_AddStringMacro(m, ERROR_PREFIX); PyModule_AddIntMacro(m, CURSOR_BLOCK); PyModule_AddIntMacro(m, CURSOR_BEAM); @@ -239,6 +238,10 @@ PyInit_fast_data_types(void) { PyModule_AddIntMacro(m, DECCOLM); PyModule_AddIntMacro(m, DECOM); PyModule_AddIntMacro(m, IRM); + PyModule_AddIntMacro(m, CSI); + PyModule_AddIntMacro(m, DCS); + PyModule_AddIntMacro(m, APC); + PyModule_AddIntMacro(m, OSC); } return m; diff --git a/kitty/data-types.h b/kitty/data-types.h index 84da9640c..70ab51379 100644 --- a/kitty/data-types.h +++ b/kitty/data-types.h @@ -270,6 +270,7 @@ void change_wcwidth(bool use9); void set_mouse_cursor(MouseShape); void mouse_event(int, int); void scroll_event(double, double); +void fake_scroll(bool); void set_special_key_combo(int glfw_key, int mods); void on_text_input(unsigned int codepoint, int mods); void on_key_input(int key, int scancode, int action, int mods); diff --git a/kitty/graphics.c b/kitty/graphics.c index 9ea81bdbd..ca1cb601a 100644 --- a/kitty/graphics.c +++ b/kitty/graphics.c @@ -515,7 +515,7 @@ create_add_response(GraphicsManager UNUSED *self, bool data_loaded, uint32_t iid if (!data_loaded) return NULL; snprintf(add_response, 10, "OK"); } - snprintf(rbuf, sizeof(rbuf)/sizeof(rbuf[0]) - 1, "\033_Gi=%u;%s\033\\", iid, add_response); + snprintf(rbuf, sizeof(rbuf)/sizeof(rbuf[0]) - 1, "Gi=%u;%s", iid, add_response); return rbuf; } return NULL; diff --git a/kitty/keys.c b/kitty/keys.c index 98b635ae3..fb289530a 100644 --- a/kitty/keys.c +++ b/kitty/keys.c @@ -9,6 +9,7 @@ #include "state.h" #include "screen.h" #include "glfw-wrapper.h" +#include "control-codes.h" const char* key_to_bytes(int glfw_key, bool smkx, bool extended, int mods, int action) { @@ -133,6 +134,16 @@ get_localized_key(int key, int scancode) { } } +static inline void +send_key_to_child(Window *w, int key, int mods, int action) { + Screen *screen = w->render_data.screen; + const char *data = key_to_bytes(key, screen->modes.mDECCKM, screen->modes.mEXTENDED_KEYBOARD, mods, action); + if (data) { + if (screen->modes.mEXTENDED_KEYBOARD) write_escape_code_to_child(screen, APC, data + 1); + else schedule_write_to_child(w->id, (data + 1), *data); + } +} + void on_key_input(int key, int scancode, int action, int mods) { Window *w = active_window(); @@ -168,11 +179,19 @@ on_key_input(int key, int scancode, int action, int mods) { (action == GLFW_REPEAT && screen->modes.mDECARM) || screen->modes.mEXTENDED_KEYBOARD ) { - const char *data = key_to_bytes(lkey, screen->modes.mDECCKM, screen->modes.mEXTENDED_KEYBOARD, mods, action); - if (data) schedule_write_to_child(w->id, (data + 1), *data); + send_key_to_child(w, lkey, mods, action); } } +void +fake_scroll(bool upwards) { + Window *w = active_window(); + if (!w) return; + Screen *screen = w->render_data.screen; + send_key_to_child(w, upwards ? GLFW_KEY_UP : GLFW_KEY_DOWN, 0, GLFW_PRESS); + if (screen->modes.mEXTENDED_KEYBOARD) send_key_to_child(w, upwards ? GLFW_KEY_UP : GLFW_KEY_DOWN, 0, GLFW_RELEASE); +} + #define PYWRAP1(name) static PyObject* py##name(PyObject UNUSED *self, PyObject *args) #define PA(fmt, ...) if(!PyArg_ParseTuple(args, fmt, __VA_ARGS__)) return NULL; #define M(name, arg_type) {#name, (PyCFunction)py##name, arg_type, NULL} diff --git a/kitty/keys.h b/kitty/keys.h index 1198f6dc7..bca7886da 100644 --- a/kitty/keys.h +++ b/kitty/keys.h @@ -5301,3762 +5301,3762 @@ key_lookup(uint8_t key, KeyboardMode mode, uint8_t mods, uint8_t action) { case 0x0: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x72\x41\x41\x1b\x5c"; + return "\x04\x4b\x72\x41\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x72\x41\x42\x1b\x5c"; + return "\x04\x4b\x72\x41\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x72\x41\x43\x1b\x5c"; + return "\x04\x4b\x72\x41\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x72\x41\x44\x1b\x5c"; + return "\x04\x4b\x72\x41\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x72\x41\x45\x1b\x5c"; + return "\x04\x4b\x72\x41\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x72\x41\x46\x1b\x5c"; + return "\x04\x4b\x72\x41\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x72\x41\x47\x1b\x5c"; + return "\x04\x4b\x72\x41\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x72\x41\x48\x1b\x5c"; + return "\x04\x4b\x72\x41\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x72\x41\x49\x1b\x5c"; + return "\x04\x4b\x72\x41\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x72\x41\x4a\x1b\x5c"; + return "\x04\x4b\x72\x41\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x72\x41\x4b\x1b\x5c"; + return "\x04\x4b\x72\x41\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x72\x41\x4c\x1b\x5c"; + return "\x04\x4b\x72\x41\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x72\x41\x4d\x1b\x5c"; + return "\x04\x4b\x72\x41\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x72\x41\x4e\x1b\x5c"; + return "\x04\x4b\x72\x41\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x72\x41\x4f\x1b\x5c"; + return "\x04\x4b\x72\x41\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x72\x41\x50\x1b\x5c"; + return "\x04\x4b\x72\x41\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x72\x41\x51\x1b\x5c"; + return "\x04\x4b\x72\x41\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x72\x41\x52\x1b\x5c"; + return "\x04\x4b\x72\x41\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x72\x41\x53\x1b\x5c"; + return "\x04\x4b\x72\x41\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x72\x41\x54\x1b\x5c"; + return "\x04\x4b\x72\x41\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x72\x41\x55\x1b\x5c"; + return "\x04\x4b\x72\x41\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x72\x41\x56\x1b\x5c"; + return "\x04\x4b\x72\x41\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x72\x41\x57\x1b\x5c"; + return "\x04\x4b\x72\x41\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x72\x41\x58\x1b\x5c"; + return "\x04\x4b\x72\x41\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x72\x41\x59\x1b\x5c"; + return "\x04\x4b\x72\x41\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x72\x41\x5a\x1b\x5c"; + return "\x04\x4b\x72\x41\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x72\x41\x61\x1b\x5c"; + return "\x04\x4b\x72\x41\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x72\x41\x62\x1b\x5c"; + return "\x04\x4b\x72\x41\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x72\x41\x63\x1b\x5c"; + return "\x04\x4b\x72\x41\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x72\x41\x64\x1b\x5c"; + return "\x04\x4b\x72\x41\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x72\x41\x65\x1b\x5c"; + return "\x04\x4b\x72\x41\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x72\x41\x66\x1b\x5c"; + return "\x04\x4b\x72\x41\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x72\x41\x67\x1b\x5c"; + return "\x04\x4b\x72\x41\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x72\x41\x68\x1b\x5c"; + return "\x04\x4b\x72\x41\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x72\x41\x69\x1b\x5c"; + return "\x04\x4b\x72\x41\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x72\x41\x6a\x1b\x5c"; + return "\x04\x4b\x72\x41\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x72\x41\x6b\x1b\x5c"; + return "\x04\x4b\x72\x41\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x72\x41\x6c\x1b\x5c"; + return "\x04\x4b\x72\x41\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x72\x41\x6d\x1b\x5c"; + return "\x04\x4b\x72\x41\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x72\x41\x6e\x1b\x5c"; + return "\x04\x4b\x72\x41\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x72\x41\x6f\x1b\x5c"; + return "\x04\x4b\x72\x41\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x72\x41\x70\x1b\x5c"; + return "\x04\x4b\x72\x41\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x72\x41\x71\x1b\x5c"; + return "\x04\x4b\x72\x41\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x72\x41\x72\x1b\x5c"; + return "\x04\x4b\x72\x41\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x41\x73\x1b\x5c"; + return "\x04\x4b\x72\x41\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x72\x41\x74\x1b\x5c"; + return "\x04\x4b\x72\x41\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x41\x75\x1b\x5c"; + return "\x04\x4b\x72\x41\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x72\x41\x76\x1b\x5c"; + return "\x04\x4b\x72\x41\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x72\x41\x77\x1b\x5c"; + return "\x04\x4b\x72\x41\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x72\x41\x78\x1b\x5c"; + return "\x04\x4b\x72\x41\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x72\x41\x79\x1b\x5c"; + return "\x04\x4b\x72\x41\x79"; case 51: // ENTER return "\x01\x0d"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x72\x41\x30\x1b\x5c"; + return "\x04\x4b\x72\x41\x30"; case 53: // BACKSPACE return "\x01\x7f"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x72\x41\x32\x1b\x5c"; + return "\x04\x4b\x72\x41\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x72\x41\x33\x1b\x5c"; + return "\x04\x4b\x72\x41\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x72\x41\x34\x1b\x5c"; + return "\x04\x4b\x72\x41\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x72\x41\x35\x1b\x5c"; + return "\x04\x4b\x72\x41\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x72\x41\x36\x1b\x5c"; + return "\x04\x4b\x72\x41\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x72\x41\x37\x1b\x5c"; + return "\x04\x4b\x72\x41\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x72\x41\x38\x1b\x5c"; + return "\x04\x4b\x72\x41\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x72\x41\x39\x1b\x5c"; + return "\x04\x4b\x72\x41\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x72\x41\x2e\x1b\x5c"; + return "\x04\x4b\x72\x41\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x72\x41\x2d\x1b\x5c"; + return "\x04\x4b\x72\x41\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x72\x41\x3a\x1b\x5c"; + return "\x04\x4b\x72\x41\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x72\x41\x2b\x1b\x5c"; + return "\x04\x4b\x72\x41\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x72\x41\x3d\x1b\x5c"; + return "\x04\x4b\x72\x41\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x72\x41\x5e\x1b\x5c"; + return "\x04\x4b\x72\x41\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x72\x41\x21\x1b\x5c"; + return "\x04\x4b\x72\x41\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x72\x41\x2f\x1b\x5c"; + return "\x04\x4b\x72\x41\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x72\x41\x2a\x1b\x5c"; + return "\x04\x4b\x72\x41\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x72\x41\x3f\x1b\x5c"; + return "\x04\x4b\x72\x41\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x72\x41\x26\x1b\x5c"; + return "\x04\x4b\x72\x41\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x72\x41\x3c\x1b\x5c"; + return "\x04\x4b\x72\x41\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x72\x41\x3e\x1b\x5c"; + return "\x04\x4b\x72\x41\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x72\x41\x28\x1b\x5c"; + return "\x04\x4b\x72\x41\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x72\x41\x29\x1b\x5c"; + return "\x04\x4b\x72\x41\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x72\x41\x5b\x1b\x5c"; + return "\x04\x4b\x72\x41\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x72\x41\x5d\x1b\x5c"; + return "\x04\x4b\x72\x41\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x72\x41\x7b\x1b\x5c"; + return "\x04\x4b\x72\x41\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x72\x41\x7d\x1b\x5c"; + return "\x04\x4b\x72\x41\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x72\x41\x40\x1b\x5c"; + return "\x04\x4b\x72\x41\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x72\x41\x25\x1b\x5c"; + return "\x04\x4b\x72\x41\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x72\x41\x24\x1b\x5c"; + return "\x04\x4b\x72\x41\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x72\x41\x23\x1b\x5c"; + return "\x04\x4b\x72\x41\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x72\x41\x42\x41\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x72\x41\x42\x42\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x72\x41\x42\x43\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x72\x41\x42\x44\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x72\x41\x42\x45\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x72\x41\x42\x46\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x72\x41\x42\x47\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x72\x41\x42\x48\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x72\x41\x42\x49\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x72\x41\x42\x4a\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x72\x41\x42\x4b\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x72\x41\x42\x4c\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x72\x41\x42\x4d\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x72\x41\x42\x4e\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x72\x41\x42\x4f\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x72\x41\x42\x50\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x72\x41\x42\x51\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x72\x41\x42\x52\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x72\x41\x42\x53\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x72\x41\x42\x54\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x72\x41\x42\x55\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x72\x41\x42\x56\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x72\x41\x42\x57\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x72\x41\x42\x58\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x72\x41\x42\x59\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x72\x41\x42\x5a\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x41\x42\x61\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x41\x42\x62\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x72\x41\x42\x63\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x72\x41\x42\x64\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x41\x42\x65\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x41\x42\x66\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x72\x41\x42\x67\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x72\x41\x42\x68\x1b\x5c"; + return "\x05\x4b\x72\x41\x42\x68"; } // end switch(key) case 0x1: switch(key & 0x7f) { default: return NULL; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x72\x42\x77\x1b\x5c"; + return "\x04\x4b\x72\x42\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x72\x42\x78\x1b\x5c"; + return "\x04\x4b\x72\x42\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x72\x42\x79\x1b\x5c"; + return "\x04\x4b\x72\x42\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x72\x42\x7a\x1b\x5c"; + return "\x04\x4b\x72\x42\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x72\x42\x30\x1b\x5c"; + return "\x04\x4b\x72\x42\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x72\x42\x31\x1b\x5c"; + return "\x04\x4b\x72\x42\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x72\x42\x32\x1b\x5c"; + return "\x04\x4b\x72\x42\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x72\x42\x33\x1b\x5c"; + return "\x04\x4b\x72\x42\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x72\x42\x34\x1b\x5c"; + return "\x04\x4b\x72\x42\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x72\x42\x35\x1b\x5c"; + return "\x04\x4b\x72\x42\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x72\x42\x36\x1b\x5c"; + return "\x04\x4b\x72\x42\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x72\x42\x37\x1b\x5c"; + return "\x04\x4b\x72\x42\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x72\x42\x38\x1b\x5c"; + return "\x04\x4b\x72\x42\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x72\x42\x39\x1b\x5c"; + return "\x04\x4b\x72\x42\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x72\x42\x2e\x1b\x5c"; + return "\x04\x4b\x72\x42\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x72\x42\x2d\x1b\x5c"; + return "\x04\x4b\x72\x42\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x72\x42\x3a\x1b\x5c"; + return "\x04\x4b\x72\x42\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x72\x42\x2b\x1b\x5c"; + return "\x04\x4b\x72\x42\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x72\x42\x3d\x1b\x5c"; + return "\x04\x4b\x72\x42\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x72\x42\x5e\x1b\x5c"; + return "\x04\x4b\x72\x42\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x72\x42\x21\x1b\x5c"; + return "\x04\x4b\x72\x42\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x72\x42\x2f\x1b\x5c"; + return "\x04\x4b\x72\x42\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x72\x42\x2a\x1b\x5c"; + return "\x04\x4b\x72\x42\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x72\x42\x3f\x1b\x5c"; + return "\x04\x4b\x72\x42\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x72\x42\x26\x1b\x5c"; + return "\x04\x4b\x72\x42\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x72\x42\x3c\x1b\x5c"; + return "\x04\x4b\x72\x42\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x72\x42\x3e\x1b\x5c"; + return "\x04\x4b\x72\x42\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x72\x42\x28\x1b\x5c"; + return "\x04\x4b\x72\x42\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x72\x42\x29\x1b\x5c"; + return "\x04\x4b\x72\x42\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x72\x42\x5b\x1b\x5c"; + return "\x04\x4b\x72\x42\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x72\x42\x5d\x1b\x5c"; + return "\x04\x4b\x72\x42\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x72\x42\x7b\x1b\x5c"; + return "\x04\x4b\x72\x42\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x72\x42\x7d\x1b\x5c"; + return "\x04\x4b\x72\x42\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x72\x42\x40\x1b\x5c"; + return "\x04\x4b\x72\x42\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x72\x42\x25\x1b\x5c"; + return "\x04\x4b\x72\x42\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x72\x42\x24\x1b\x5c"; + return "\x04\x4b\x72\x42\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x72\x42\x23\x1b\x5c"; + return "\x04\x4b\x72\x42\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x72\x42\x42\x41\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x72\x42\x42\x42\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x72\x42\x42\x43\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x72\x42\x42\x44\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x72\x42\x42\x45\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x72\x42\x42\x46\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x72\x42\x42\x47\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x72\x42\x42\x48\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x72\x42\x42\x49\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x72\x42\x42\x4a\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x72\x42\x42\x4b\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x72\x42\x42\x4c\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x72\x42\x42\x4d\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x72\x42\x42\x4e\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x72\x42\x42\x4f\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x72\x42\x42\x50\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x72\x42\x42\x51\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x72\x42\x42\x52\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x72\x42\x42\x53\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x72\x42\x42\x54\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x72\x42\x42\x55\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x72\x42\x42\x56\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x72\x42\x42\x57\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x72\x42\x42\x58\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x72\x42\x42\x59\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x72\x42\x42\x5a\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x42\x42\x61\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x42\x42\x62\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x72\x42\x42\x63\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x72\x42\x42\x64\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x42\x42\x65\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x42\x42\x66\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x72\x42\x42\x67\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x72\x42\x42\x68\x1b\x5c"; + return "\x05\x4b\x72\x42\x42\x68"; } // end switch(key) case 0x2: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x72\x45\x41\x1b\x5c"; + return "\x04\x4b\x72\x45\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x72\x45\x42\x1b\x5c"; + return "\x04\x4b\x72\x45\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x72\x45\x43\x1b\x5c"; + return "\x04\x4b\x72\x45\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x72\x45\x44\x1b\x5c"; + return "\x04\x4b\x72\x45\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x72\x45\x45\x1b\x5c"; + return "\x04\x4b\x72\x45\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x72\x45\x46\x1b\x5c"; + return "\x04\x4b\x72\x45\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x72\x45\x47\x1b\x5c"; + return "\x04\x4b\x72\x45\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x72\x45\x48\x1b\x5c"; + return "\x04\x4b\x72\x45\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x72\x45\x49\x1b\x5c"; + return "\x04\x4b\x72\x45\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x72\x45\x4a\x1b\x5c"; + return "\x04\x4b\x72\x45\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x72\x45\x4b\x1b\x5c"; + return "\x04\x4b\x72\x45\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x72\x45\x4c\x1b\x5c"; + return "\x04\x4b\x72\x45\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x72\x45\x4d\x1b\x5c"; + return "\x04\x4b\x72\x45\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x72\x45\x4e\x1b\x5c"; + return "\x04\x4b\x72\x45\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x72\x45\x4f\x1b\x5c"; + return "\x04\x4b\x72\x45\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x72\x45\x50\x1b\x5c"; + return "\x04\x4b\x72\x45\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x72\x45\x51\x1b\x5c"; + return "\x04\x4b\x72\x45\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x72\x45\x52\x1b\x5c"; + return "\x04\x4b\x72\x45\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x72\x45\x53\x1b\x5c"; + return "\x04\x4b\x72\x45\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x72\x45\x54\x1b\x5c"; + return "\x04\x4b\x72\x45\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x72\x45\x55\x1b\x5c"; + return "\x04\x4b\x72\x45\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x72\x45\x56\x1b\x5c"; + return "\x04\x4b\x72\x45\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x72\x45\x57\x1b\x5c"; + return "\x04\x4b\x72\x45\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x72\x45\x58\x1b\x5c"; + return "\x04\x4b\x72\x45\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x72\x45\x59\x1b\x5c"; + return "\x04\x4b\x72\x45\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x72\x45\x5a\x1b\x5c"; + return "\x04\x4b\x72\x45\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x72\x45\x61\x1b\x5c"; + return "\x04\x4b\x72\x45\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x72\x45\x62\x1b\x5c"; + return "\x04\x4b\x72\x45\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x72\x45\x63\x1b\x5c"; + return "\x04\x4b\x72\x45\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x72\x45\x64\x1b\x5c"; + return "\x04\x4b\x72\x45\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x72\x45\x65\x1b\x5c"; + return "\x04\x4b\x72\x45\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x72\x45\x66\x1b\x5c"; + return "\x04\x4b\x72\x45\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x72\x45\x67\x1b\x5c"; + return "\x04\x4b\x72\x45\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x72\x45\x68\x1b\x5c"; + return "\x04\x4b\x72\x45\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x72\x45\x69\x1b\x5c"; + return "\x04\x4b\x72\x45\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x72\x45\x6a\x1b\x5c"; + return "\x04\x4b\x72\x45\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x72\x45\x6b\x1b\x5c"; + return "\x04\x4b\x72\x45\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x72\x45\x6c\x1b\x5c"; + return "\x04\x4b\x72\x45\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x72\x45\x6d\x1b\x5c"; + return "\x04\x4b\x72\x45\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x72\x45\x6e\x1b\x5c"; + return "\x04\x4b\x72\x45\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x72\x45\x6f\x1b\x5c"; + return "\x04\x4b\x72\x45\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x72\x45\x70\x1b\x5c"; + return "\x04\x4b\x72\x45\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x72\x45\x71\x1b\x5c"; + return "\x04\x4b\x72\x45\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x72\x45\x72\x1b\x5c"; + return "\x04\x4b\x72\x45\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x45\x73\x1b\x5c"; + return "\x04\x4b\x72\x45\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x72\x45\x74\x1b\x5c"; + return "\x04\x4b\x72\x45\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x45\x75\x1b\x5c"; + return "\x04\x4b\x72\x45\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x72\x45\x76\x1b\x5c"; + return "\x04\x4b\x72\x45\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x72\x45\x77\x1b\x5c"; + return "\x04\x4b\x72\x45\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x72\x45\x78\x1b\x5c"; + return "\x04\x4b\x72\x45\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x72\x45\x79\x1b\x5c"; + return "\x04\x4b\x72\x45\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x72\x45\x7a\x1b\x5c"; + return "\x04\x4b\x72\x45\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x72\x45\x30\x1b\x5c"; + return "\x04\x4b\x72\x45\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x72\x45\x31\x1b\x5c"; + return "\x04\x4b\x72\x45\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x72\x45\x32\x1b\x5c"; + return "\x04\x4b\x72\x45\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x72\x45\x33\x1b\x5c"; + return "\x04\x4b\x72\x45\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x72\x45\x34\x1b\x5c"; + return "\x04\x4b\x72\x45\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x72\x45\x35\x1b\x5c"; + return "\x04\x4b\x72\x45\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x72\x45\x36\x1b\x5c"; + return "\x04\x4b\x72\x45\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x72\x45\x37\x1b\x5c"; + return "\x04\x4b\x72\x45\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x72\x45\x38\x1b\x5c"; + return "\x04\x4b\x72\x45\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x72\x45\x39\x1b\x5c"; + return "\x04\x4b\x72\x45\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x72\x45\x2e\x1b\x5c"; + return "\x04\x4b\x72\x45\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x72\x45\x2d\x1b\x5c"; + return "\x04\x4b\x72\x45\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x72\x45\x3a\x1b\x5c"; + return "\x04\x4b\x72\x45\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x72\x45\x2b\x1b\x5c"; + return "\x04\x4b\x72\x45\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x72\x45\x3d\x1b\x5c"; + return "\x04\x4b\x72\x45\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x72\x45\x5e\x1b\x5c"; + return "\x04\x4b\x72\x45\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x72\x45\x21\x1b\x5c"; + return "\x04\x4b\x72\x45\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x72\x45\x2f\x1b\x5c"; + return "\x04\x4b\x72\x45\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x72\x45\x2a\x1b\x5c"; + return "\x04\x4b\x72\x45\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x72\x45\x3f\x1b\x5c"; + return "\x04\x4b\x72\x45\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x72\x45\x26\x1b\x5c"; + return "\x04\x4b\x72\x45\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x72\x45\x3c\x1b\x5c"; + return "\x04\x4b\x72\x45\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x72\x45\x3e\x1b\x5c"; + return "\x04\x4b\x72\x45\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x72\x45\x28\x1b\x5c"; + return "\x04\x4b\x72\x45\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x72\x45\x29\x1b\x5c"; + return "\x04\x4b\x72\x45\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x72\x45\x5b\x1b\x5c"; + return "\x04\x4b\x72\x45\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x72\x45\x5d\x1b\x5c"; + return "\x04\x4b\x72\x45\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x72\x45\x7b\x1b\x5c"; + return "\x04\x4b\x72\x45\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x72\x45\x7d\x1b\x5c"; + return "\x04\x4b\x72\x45\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x72\x45\x40\x1b\x5c"; + return "\x04\x4b\x72\x45\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x72\x45\x25\x1b\x5c"; + return "\x04\x4b\x72\x45\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x72\x45\x24\x1b\x5c"; + return "\x04\x4b\x72\x45\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x72\x45\x23\x1b\x5c"; + return "\x04\x4b\x72\x45\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x72\x45\x42\x41\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x72\x45\x42\x42\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x72\x45\x42\x43\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x72\x45\x42\x44\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x72\x45\x42\x45\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x72\x45\x42\x46\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x72\x45\x42\x47\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x72\x45\x42\x48\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x72\x45\x42\x49\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x72\x45\x42\x4a\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x72\x45\x42\x4b\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x72\x45\x42\x4c\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x72\x45\x42\x4d\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x72\x45\x42\x4e\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x72\x45\x42\x4f\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x72\x45\x42\x50\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x72\x45\x42\x51\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x72\x45\x42\x52\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x72\x45\x42\x53\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x72\x45\x42\x54\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x72\x45\x42\x55\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x72\x45\x42\x56\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x72\x45\x42\x57\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x72\x45\x42\x58\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x72\x45\x42\x59\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x72\x45\x42\x5a\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x45\x42\x61\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x45\x42\x62\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x72\x45\x42\x63\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x72\x45\x42\x64\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x45\x42\x65\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x45\x42\x66\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x72\x45\x42\x67\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x72\x45\x42\x68\x1b\x5c"; + return "\x05\x4b\x72\x45\x42\x68"; } // end switch(key) case 0x3: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x72\x46\x41\x1b\x5c"; + return "\x04\x4b\x72\x46\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x72\x46\x42\x1b\x5c"; + return "\x04\x4b\x72\x46\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x72\x46\x43\x1b\x5c"; + return "\x04\x4b\x72\x46\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x72\x46\x44\x1b\x5c"; + return "\x04\x4b\x72\x46\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x72\x46\x45\x1b\x5c"; + return "\x04\x4b\x72\x46\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x72\x46\x46\x1b\x5c"; + return "\x04\x4b\x72\x46\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x72\x46\x47\x1b\x5c"; + return "\x04\x4b\x72\x46\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x72\x46\x48\x1b\x5c"; + return "\x04\x4b\x72\x46\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x72\x46\x49\x1b\x5c"; + return "\x04\x4b\x72\x46\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x72\x46\x4a\x1b\x5c"; + return "\x04\x4b\x72\x46\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x72\x46\x4b\x1b\x5c"; + return "\x04\x4b\x72\x46\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x72\x46\x4c\x1b\x5c"; + return "\x04\x4b\x72\x46\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x72\x46\x4d\x1b\x5c"; + return "\x04\x4b\x72\x46\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x72\x46\x4e\x1b\x5c"; + return "\x04\x4b\x72\x46\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x72\x46\x4f\x1b\x5c"; + return "\x04\x4b\x72\x46\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x72\x46\x50\x1b\x5c"; + return "\x04\x4b\x72\x46\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x72\x46\x51\x1b\x5c"; + return "\x04\x4b\x72\x46\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x72\x46\x52\x1b\x5c"; + return "\x04\x4b\x72\x46\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x72\x46\x53\x1b\x5c"; + return "\x04\x4b\x72\x46\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x72\x46\x54\x1b\x5c"; + return "\x04\x4b\x72\x46\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x72\x46\x55\x1b\x5c"; + return "\x04\x4b\x72\x46\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x72\x46\x56\x1b\x5c"; + return "\x04\x4b\x72\x46\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x72\x46\x57\x1b\x5c"; + return "\x04\x4b\x72\x46\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x72\x46\x58\x1b\x5c"; + return "\x04\x4b\x72\x46\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x72\x46\x59\x1b\x5c"; + return "\x04\x4b\x72\x46\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x72\x46\x5a\x1b\x5c"; + return "\x04\x4b\x72\x46\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x72\x46\x61\x1b\x5c"; + return "\x04\x4b\x72\x46\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x72\x46\x62\x1b\x5c"; + return "\x04\x4b\x72\x46\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x72\x46\x63\x1b\x5c"; + return "\x04\x4b\x72\x46\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x72\x46\x64\x1b\x5c"; + return "\x04\x4b\x72\x46\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x72\x46\x65\x1b\x5c"; + return "\x04\x4b\x72\x46\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x72\x46\x66\x1b\x5c"; + return "\x04\x4b\x72\x46\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x72\x46\x67\x1b\x5c"; + return "\x04\x4b\x72\x46\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x72\x46\x68\x1b\x5c"; + return "\x04\x4b\x72\x46\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x72\x46\x69\x1b\x5c"; + return "\x04\x4b\x72\x46\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x72\x46\x6a\x1b\x5c"; + return "\x04\x4b\x72\x46\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x72\x46\x6b\x1b\x5c"; + return "\x04\x4b\x72\x46\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x72\x46\x6c\x1b\x5c"; + return "\x04\x4b\x72\x46\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x72\x46\x6d\x1b\x5c"; + return "\x04\x4b\x72\x46\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x72\x46\x6e\x1b\x5c"; + return "\x04\x4b\x72\x46\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x72\x46\x6f\x1b\x5c"; + return "\x04\x4b\x72\x46\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x72\x46\x70\x1b\x5c"; + return "\x04\x4b\x72\x46\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x72\x46\x71\x1b\x5c"; + return "\x04\x4b\x72\x46\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x72\x46\x72\x1b\x5c"; + return "\x04\x4b\x72\x46\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x46\x73\x1b\x5c"; + return "\x04\x4b\x72\x46\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x72\x46\x74\x1b\x5c"; + return "\x04\x4b\x72\x46\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x46\x75\x1b\x5c"; + return "\x04\x4b\x72\x46\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x72\x46\x76\x1b\x5c"; + return "\x04\x4b\x72\x46\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x72\x46\x77\x1b\x5c"; + return "\x04\x4b\x72\x46\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x72\x46\x78\x1b\x5c"; + return "\x04\x4b\x72\x46\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x72\x46\x79\x1b\x5c"; + return "\x04\x4b\x72\x46\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x72\x46\x7a\x1b\x5c"; + return "\x04\x4b\x72\x46\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x72\x46\x30\x1b\x5c"; + return "\x04\x4b\x72\x46\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x72\x46\x31\x1b\x5c"; + return "\x04\x4b\x72\x46\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x72\x46\x32\x1b\x5c"; + return "\x04\x4b\x72\x46\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x72\x46\x33\x1b\x5c"; + return "\x04\x4b\x72\x46\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x72\x46\x34\x1b\x5c"; + return "\x04\x4b\x72\x46\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x72\x46\x35\x1b\x5c"; + return "\x04\x4b\x72\x46\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x72\x46\x36\x1b\x5c"; + return "\x04\x4b\x72\x46\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x72\x46\x37\x1b\x5c"; + return "\x04\x4b\x72\x46\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x72\x46\x38\x1b\x5c"; + return "\x04\x4b\x72\x46\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x72\x46\x39\x1b\x5c"; + return "\x04\x4b\x72\x46\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x72\x46\x2e\x1b\x5c"; + return "\x04\x4b\x72\x46\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x72\x46\x2d\x1b\x5c"; + return "\x04\x4b\x72\x46\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x72\x46\x3a\x1b\x5c"; + return "\x04\x4b\x72\x46\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x72\x46\x2b\x1b\x5c"; + return "\x04\x4b\x72\x46\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x72\x46\x3d\x1b\x5c"; + return "\x04\x4b\x72\x46\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x72\x46\x5e\x1b\x5c"; + return "\x04\x4b\x72\x46\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x72\x46\x21\x1b\x5c"; + return "\x04\x4b\x72\x46\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x72\x46\x2f\x1b\x5c"; + return "\x04\x4b\x72\x46\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x72\x46\x2a\x1b\x5c"; + return "\x04\x4b\x72\x46\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x72\x46\x3f\x1b\x5c"; + return "\x04\x4b\x72\x46\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x72\x46\x26\x1b\x5c"; + return "\x04\x4b\x72\x46\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x72\x46\x3c\x1b\x5c"; + return "\x04\x4b\x72\x46\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x72\x46\x3e\x1b\x5c"; + return "\x04\x4b\x72\x46\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x72\x46\x28\x1b\x5c"; + return "\x04\x4b\x72\x46\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x72\x46\x29\x1b\x5c"; + return "\x04\x4b\x72\x46\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x72\x46\x5b\x1b\x5c"; + return "\x04\x4b\x72\x46\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x72\x46\x5d\x1b\x5c"; + return "\x04\x4b\x72\x46\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x72\x46\x7b\x1b\x5c"; + return "\x04\x4b\x72\x46\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x72\x46\x7d\x1b\x5c"; + return "\x04\x4b\x72\x46\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x72\x46\x40\x1b\x5c"; + return "\x04\x4b\x72\x46\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x72\x46\x25\x1b\x5c"; + return "\x04\x4b\x72\x46\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x72\x46\x24\x1b\x5c"; + return "\x04\x4b\x72\x46\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x72\x46\x23\x1b\x5c"; + return "\x04\x4b\x72\x46\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x72\x46\x42\x41\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x72\x46\x42\x42\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x72\x46\x42\x43\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x72\x46\x42\x44\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x72\x46\x42\x45\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x72\x46\x42\x46\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x72\x46\x42\x47\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x72\x46\x42\x48\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x72\x46\x42\x49\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x72\x46\x42\x4a\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x72\x46\x42\x4b\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x72\x46\x42\x4c\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x72\x46\x42\x4d\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x72\x46\x42\x4e\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x72\x46\x42\x4f\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x72\x46\x42\x50\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x72\x46\x42\x51\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x72\x46\x42\x52\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x72\x46\x42\x53\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x72\x46\x42\x54\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x72\x46\x42\x55\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x72\x46\x42\x56\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x72\x46\x42\x57\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x72\x46\x42\x58\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x72\x46\x42\x59\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x72\x46\x42\x5a\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x46\x42\x61\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x46\x42\x62\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x72\x46\x42\x63\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x72\x46\x42\x64\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x46\x42\x65\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x46\x42\x66\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x72\x46\x42\x67\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x72\x46\x42\x68\x1b\x5c"; + return "\x05\x4b\x72\x46\x42\x68"; } // end switch(key) case 0x4: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x72\x43\x41\x1b\x5c"; + return "\x04\x4b\x72\x43\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x72\x43\x42\x1b\x5c"; + return "\x04\x4b\x72\x43\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x72\x43\x43\x1b\x5c"; + return "\x04\x4b\x72\x43\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x72\x43\x44\x1b\x5c"; + return "\x04\x4b\x72\x43\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x72\x43\x45\x1b\x5c"; + return "\x04\x4b\x72\x43\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x72\x43\x46\x1b\x5c"; + return "\x04\x4b\x72\x43\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x72\x43\x47\x1b\x5c"; + return "\x04\x4b\x72\x43\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x72\x43\x48\x1b\x5c"; + return "\x04\x4b\x72\x43\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x72\x43\x49\x1b\x5c"; + return "\x04\x4b\x72\x43\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x72\x43\x4a\x1b\x5c"; + return "\x04\x4b\x72\x43\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x72\x43\x4b\x1b\x5c"; + return "\x04\x4b\x72\x43\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x72\x43\x4c\x1b\x5c"; + return "\x04\x4b\x72\x43\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x72\x43\x4d\x1b\x5c"; + return "\x04\x4b\x72\x43\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x72\x43\x4e\x1b\x5c"; + return "\x04\x4b\x72\x43\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x72\x43\x4f\x1b\x5c"; + return "\x04\x4b\x72\x43\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x72\x43\x50\x1b\x5c"; + return "\x04\x4b\x72\x43\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x72\x43\x51\x1b\x5c"; + return "\x04\x4b\x72\x43\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x72\x43\x52\x1b\x5c"; + return "\x04\x4b\x72\x43\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x72\x43\x53\x1b\x5c"; + return "\x04\x4b\x72\x43\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x72\x43\x54\x1b\x5c"; + return "\x04\x4b\x72\x43\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x72\x43\x55\x1b\x5c"; + return "\x04\x4b\x72\x43\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x72\x43\x56\x1b\x5c"; + return "\x04\x4b\x72\x43\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x72\x43\x57\x1b\x5c"; + return "\x04\x4b\x72\x43\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x72\x43\x58\x1b\x5c"; + return "\x04\x4b\x72\x43\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x72\x43\x59\x1b\x5c"; + return "\x04\x4b\x72\x43\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x72\x43\x5a\x1b\x5c"; + return "\x04\x4b\x72\x43\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x72\x43\x61\x1b\x5c"; + return "\x04\x4b\x72\x43\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x72\x43\x62\x1b\x5c"; + return "\x04\x4b\x72\x43\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x72\x43\x63\x1b\x5c"; + return "\x04\x4b\x72\x43\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x72\x43\x64\x1b\x5c"; + return "\x04\x4b\x72\x43\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x72\x43\x65\x1b\x5c"; + return "\x04\x4b\x72\x43\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x72\x43\x66\x1b\x5c"; + return "\x04\x4b\x72\x43\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x72\x43\x67\x1b\x5c"; + return "\x04\x4b\x72\x43\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x72\x43\x68\x1b\x5c"; + return "\x04\x4b\x72\x43\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x72\x43\x69\x1b\x5c"; + return "\x04\x4b\x72\x43\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x72\x43\x6a\x1b\x5c"; + return "\x04\x4b\x72\x43\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x72\x43\x6b\x1b\x5c"; + return "\x04\x4b\x72\x43\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x72\x43\x6c\x1b\x5c"; + return "\x04\x4b\x72\x43\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x72\x43\x6d\x1b\x5c"; + return "\x04\x4b\x72\x43\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x72\x43\x6e\x1b\x5c"; + return "\x04\x4b\x72\x43\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x72\x43\x6f\x1b\x5c"; + return "\x04\x4b\x72\x43\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x72\x43\x70\x1b\x5c"; + return "\x04\x4b\x72\x43\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x72\x43\x71\x1b\x5c"; + return "\x04\x4b\x72\x43\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x72\x43\x72\x1b\x5c"; + return "\x04\x4b\x72\x43\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x43\x73\x1b\x5c"; + return "\x04\x4b\x72\x43\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x72\x43\x74\x1b\x5c"; + return "\x04\x4b\x72\x43\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x43\x75\x1b\x5c"; + return "\x04\x4b\x72\x43\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x72\x43\x76\x1b\x5c"; + return "\x04\x4b\x72\x43\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x72\x43\x77\x1b\x5c"; + return "\x04\x4b\x72\x43\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x72\x43\x78\x1b\x5c"; + return "\x04\x4b\x72\x43\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x72\x43\x79\x1b\x5c"; + return "\x04\x4b\x72\x43\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x72\x43\x7a\x1b\x5c"; + return "\x04\x4b\x72\x43\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x72\x43\x30\x1b\x5c"; + return "\x04\x4b\x72\x43\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x72\x43\x31\x1b\x5c"; + return "\x04\x4b\x72\x43\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x72\x43\x32\x1b\x5c"; + return "\x04\x4b\x72\x43\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x72\x43\x33\x1b\x5c"; + return "\x04\x4b\x72\x43\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x72\x43\x34\x1b\x5c"; + return "\x04\x4b\x72\x43\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x72\x43\x35\x1b\x5c"; + return "\x04\x4b\x72\x43\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x72\x43\x36\x1b\x5c"; + return "\x04\x4b\x72\x43\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x72\x43\x37\x1b\x5c"; + return "\x04\x4b\x72\x43\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x72\x43\x38\x1b\x5c"; + return "\x04\x4b\x72\x43\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x72\x43\x39\x1b\x5c"; + return "\x04\x4b\x72\x43\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x72\x43\x2e\x1b\x5c"; + return "\x04\x4b\x72\x43\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x72\x43\x2d\x1b\x5c"; + return "\x04\x4b\x72\x43\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x72\x43\x3a\x1b\x5c"; + return "\x04\x4b\x72\x43\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x72\x43\x2b\x1b\x5c"; + return "\x04\x4b\x72\x43\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x72\x43\x3d\x1b\x5c"; + return "\x04\x4b\x72\x43\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x72\x43\x5e\x1b\x5c"; + return "\x04\x4b\x72\x43\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x72\x43\x21\x1b\x5c"; + return "\x04\x4b\x72\x43\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x72\x43\x2f\x1b\x5c"; + return "\x04\x4b\x72\x43\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x72\x43\x2a\x1b\x5c"; + return "\x04\x4b\x72\x43\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x72\x43\x3f\x1b\x5c"; + return "\x04\x4b\x72\x43\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x72\x43\x26\x1b\x5c"; + return "\x04\x4b\x72\x43\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x72\x43\x3c\x1b\x5c"; + return "\x04\x4b\x72\x43\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x72\x43\x3e\x1b\x5c"; + return "\x04\x4b\x72\x43\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x72\x43\x28\x1b\x5c"; + return "\x04\x4b\x72\x43\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x72\x43\x29\x1b\x5c"; + return "\x04\x4b\x72\x43\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x72\x43\x5b\x1b\x5c"; + return "\x04\x4b\x72\x43\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x72\x43\x5d\x1b\x5c"; + return "\x04\x4b\x72\x43\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x72\x43\x7b\x1b\x5c"; + return "\x04\x4b\x72\x43\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x72\x43\x7d\x1b\x5c"; + return "\x04\x4b\x72\x43\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x72\x43\x40\x1b\x5c"; + return "\x04\x4b\x72\x43\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x72\x43\x25\x1b\x5c"; + return "\x04\x4b\x72\x43\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x72\x43\x24\x1b\x5c"; + return "\x04\x4b\x72\x43\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x72\x43\x23\x1b\x5c"; + return "\x04\x4b\x72\x43\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x72\x43\x42\x41\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x72\x43\x42\x42\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x72\x43\x42\x43\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x72\x43\x42\x44\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x72\x43\x42\x45\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x72\x43\x42\x46\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x72\x43\x42\x47\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x72\x43\x42\x48\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x72\x43\x42\x49\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x72\x43\x42\x4a\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x72\x43\x42\x4b\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x72\x43\x42\x4c\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x72\x43\x42\x4d\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x72\x43\x42\x4e\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x72\x43\x42\x4f\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x72\x43\x42\x50\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x72\x43\x42\x51\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x72\x43\x42\x52\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x72\x43\x42\x53\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x72\x43\x42\x54\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x72\x43\x42\x55\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x72\x43\x42\x56\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x72\x43\x42\x57\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x72\x43\x42\x58\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x72\x43\x42\x59\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x72\x43\x42\x5a\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x43\x42\x61\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x43\x42\x62\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x72\x43\x42\x63\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x72\x43\x42\x64\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x43\x42\x65\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x43\x42\x66\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x72\x43\x42\x67\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x72\x43\x42\x68\x1b\x5c"; + return "\x05\x4b\x72\x43\x42\x68"; } // end switch(key) case 0x5: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x72\x44\x41\x1b\x5c"; + return "\x04\x4b\x72\x44\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x72\x44\x42\x1b\x5c"; + return "\x04\x4b\x72\x44\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x72\x44\x43\x1b\x5c"; + return "\x04\x4b\x72\x44\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x72\x44\x44\x1b\x5c"; + return "\x04\x4b\x72\x44\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x72\x44\x45\x1b\x5c"; + return "\x04\x4b\x72\x44\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x72\x44\x46\x1b\x5c"; + return "\x04\x4b\x72\x44\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x72\x44\x47\x1b\x5c"; + return "\x04\x4b\x72\x44\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x72\x44\x48\x1b\x5c"; + return "\x04\x4b\x72\x44\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x72\x44\x49\x1b\x5c"; + return "\x04\x4b\x72\x44\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x72\x44\x4a\x1b\x5c"; + return "\x04\x4b\x72\x44\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x72\x44\x4b\x1b\x5c"; + return "\x04\x4b\x72\x44\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x72\x44\x4c\x1b\x5c"; + return "\x04\x4b\x72\x44\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x72\x44\x4d\x1b\x5c"; + return "\x04\x4b\x72\x44\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x72\x44\x4e\x1b\x5c"; + return "\x04\x4b\x72\x44\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x72\x44\x4f\x1b\x5c"; + return "\x04\x4b\x72\x44\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x72\x44\x50\x1b\x5c"; + return "\x04\x4b\x72\x44\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x72\x44\x51\x1b\x5c"; + return "\x04\x4b\x72\x44\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x72\x44\x52\x1b\x5c"; + return "\x04\x4b\x72\x44\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x72\x44\x53\x1b\x5c"; + return "\x04\x4b\x72\x44\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x72\x44\x54\x1b\x5c"; + return "\x04\x4b\x72\x44\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x72\x44\x55\x1b\x5c"; + return "\x04\x4b\x72\x44\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x72\x44\x56\x1b\x5c"; + return "\x04\x4b\x72\x44\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x72\x44\x57\x1b\x5c"; + return "\x04\x4b\x72\x44\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x72\x44\x58\x1b\x5c"; + return "\x04\x4b\x72\x44\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x72\x44\x59\x1b\x5c"; + return "\x04\x4b\x72\x44\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x72\x44\x5a\x1b\x5c"; + return "\x04\x4b\x72\x44\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x72\x44\x61\x1b\x5c"; + return "\x04\x4b\x72\x44\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x72\x44\x62\x1b\x5c"; + return "\x04\x4b\x72\x44\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x72\x44\x63\x1b\x5c"; + return "\x04\x4b\x72\x44\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x72\x44\x64\x1b\x5c"; + return "\x04\x4b\x72\x44\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x72\x44\x65\x1b\x5c"; + return "\x04\x4b\x72\x44\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x72\x44\x66\x1b\x5c"; + return "\x04\x4b\x72\x44\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x72\x44\x67\x1b\x5c"; + return "\x04\x4b\x72\x44\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x72\x44\x68\x1b\x5c"; + return "\x04\x4b\x72\x44\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x72\x44\x69\x1b\x5c"; + return "\x04\x4b\x72\x44\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x72\x44\x6a\x1b\x5c"; + return "\x04\x4b\x72\x44\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x72\x44\x6b\x1b\x5c"; + return "\x04\x4b\x72\x44\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x72\x44\x6c\x1b\x5c"; + return "\x04\x4b\x72\x44\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x72\x44\x6d\x1b\x5c"; + return "\x04\x4b\x72\x44\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x72\x44\x6e\x1b\x5c"; + return "\x04\x4b\x72\x44\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x72\x44\x6f\x1b\x5c"; + return "\x04\x4b\x72\x44\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x72\x44\x70\x1b\x5c"; + return "\x04\x4b\x72\x44\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x72\x44\x71\x1b\x5c"; + return "\x04\x4b\x72\x44\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x72\x44\x72\x1b\x5c"; + return "\x04\x4b\x72\x44\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x44\x73\x1b\x5c"; + return "\x04\x4b\x72\x44\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x72\x44\x74\x1b\x5c"; + return "\x04\x4b\x72\x44\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x44\x75\x1b\x5c"; + return "\x04\x4b\x72\x44\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x72\x44\x76\x1b\x5c"; + return "\x04\x4b\x72\x44\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x72\x44\x77\x1b\x5c"; + return "\x04\x4b\x72\x44\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x72\x44\x78\x1b\x5c"; + return "\x04\x4b\x72\x44\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x72\x44\x79\x1b\x5c"; + return "\x04\x4b\x72\x44\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x72\x44\x7a\x1b\x5c"; + return "\x04\x4b\x72\x44\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x72\x44\x30\x1b\x5c"; + return "\x04\x4b\x72\x44\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x72\x44\x31\x1b\x5c"; + return "\x04\x4b\x72\x44\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x72\x44\x32\x1b\x5c"; + return "\x04\x4b\x72\x44\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x72\x44\x33\x1b\x5c"; + return "\x04\x4b\x72\x44\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x72\x44\x34\x1b\x5c"; + return "\x04\x4b\x72\x44\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x72\x44\x35\x1b\x5c"; + return "\x04\x4b\x72\x44\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x72\x44\x36\x1b\x5c"; + return "\x04\x4b\x72\x44\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x72\x44\x37\x1b\x5c"; + return "\x04\x4b\x72\x44\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x72\x44\x38\x1b\x5c"; + return "\x04\x4b\x72\x44\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x72\x44\x39\x1b\x5c"; + return "\x04\x4b\x72\x44\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x72\x44\x2e\x1b\x5c"; + return "\x04\x4b\x72\x44\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x72\x44\x2d\x1b\x5c"; + return "\x04\x4b\x72\x44\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x72\x44\x3a\x1b\x5c"; + return "\x04\x4b\x72\x44\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x72\x44\x2b\x1b\x5c"; + return "\x04\x4b\x72\x44\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x72\x44\x3d\x1b\x5c"; + return "\x04\x4b\x72\x44\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x72\x44\x5e\x1b\x5c"; + return "\x04\x4b\x72\x44\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x72\x44\x21\x1b\x5c"; + return "\x04\x4b\x72\x44\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x72\x44\x2f\x1b\x5c"; + return "\x04\x4b\x72\x44\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x72\x44\x2a\x1b\x5c"; + return "\x04\x4b\x72\x44\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x72\x44\x3f\x1b\x5c"; + return "\x04\x4b\x72\x44\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x72\x44\x26\x1b\x5c"; + return "\x04\x4b\x72\x44\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x72\x44\x3c\x1b\x5c"; + return "\x04\x4b\x72\x44\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x72\x44\x3e\x1b\x5c"; + return "\x04\x4b\x72\x44\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x72\x44\x28\x1b\x5c"; + return "\x04\x4b\x72\x44\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x72\x44\x29\x1b\x5c"; + return "\x04\x4b\x72\x44\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x72\x44\x5b\x1b\x5c"; + return "\x04\x4b\x72\x44\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x72\x44\x5d\x1b\x5c"; + return "\x04\x4b\x72\x44\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x72\x44\x7b\x1b\x5c"; + return "\x04\x4b\x72\x44\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x72\x44\x7d\x1b\x5c"; + return "\x04\x4b\x72\x44\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x72\x44\x40\x1b\x5c"; + return "\x04\x4b\x72\x44\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x72\x44\x25\x1b\x5c"; + return "\x04\x4b\x72\x44\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x72\x44\x24\x1b\x5c"; + return "\x04\x4b\x72\x44\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x72\x44\x23\x1b\x5c"; + return "\x04\x4b\x72\x44\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x72\x44\x42\x41\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x72\x44\x42\x42\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x72\x44\x42\x43\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x72\x44\x42\x44\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x72\x44\x42\x45\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x72\x44\x42\x46\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x72\x44\x42\x47\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x72\x44\x42\x48\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x72\x44\x42\x49\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x72\x44\x42\x4a\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x72\x44\x42\x4b\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x72\x44\x42\x4c\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x72\x44\x42\x4d\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x72\x44\x42\x4e\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x72\x44\x42\x4f\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x72\x44\x42\x50\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x72\x44\x42\x51\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x72\x44\x42\x52\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x72\x44\x42\x53\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x72\x44\x42\x54\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x72\x44\x42\x55\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x72\x44\x42\x56\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x72\x44\x42\x57\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x72\x44\x42\x58\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x72\x44\x42\x59\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x72\x44\x42\x5a\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x44\x42\x61\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x44\x42\x62\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x72\x44\x42\x63\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x72\x44\x42\x64\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x44\x42\x65\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x44\x42\x66\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x72\x44\x42\x67\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x72\x44\x42\x68\x1b\x5c"; + return "\x05\x4b\x72\x44\x42\x68"; } // end switch(key) case 0x6: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x72\x47\x41\x1b\x5c"; + return "\x04\x4b\x72\x47\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x72\x47\x42\x1b\x5c"; + return "\x04\x4b\x72\x47\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x72\x47\x43\x1b\x5c"; + return "\x04\x4b\x72\x47\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x72\x47\x44\x1b\x5c"; + return "\x04\x4b\x72\x47\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x72\x47\x45\x1b\x5c"; + return "\x04\x4b\x72\x47\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x72\x47\x46\x1b\x5c"; + return "\x04\x4b\x72\x47\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x72\x47\x47\x1b\x5c"; + return "\x04\x4b\x72\x47\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x72\x47\x48\x1b\x5c"; + return "\x04\x4b\x72\x47\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x72\x47\x49\x1b\x5c"; + return "\x04\x4b\x72\x47\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x72\x47\x4a\x1b\x5c"; + return "\x04\x4b\x72\x47\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x72\x47\x4b\x1b\x5c"; + return "\x04\x4b\x72\x47\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x72\x47\x4c\x1b\x5c"; + return "\x04\x4b\x72\x47\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x72\x47\x4d\x1b\x5c"; + return "\x04\x4b\x72\x47\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x72\x47\x4e\x1b\x5c"; + return "\x04\x4b\x72\x47\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x72\x47\x4f\x1b\x5c"; + return "\x04\x4b\x72\x47\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x72\x47\x50\x1b\x5c"; + return "\x04\x4b\x72\x47\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x72\x47\x51\x1b\x5c"; + return "\x04\x4b\x72\x47\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x72\x47\x52\x1b\x5c"; + return "\x04\x4b\x72\x47\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x72\x47\x53\x1b\x5c"; + return "\x04\x4b\x72\x47\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x72\x47\x54\x1b\x5c"; + return "\x04\x4b\x72\x47\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x72\x47\x55\x1b\x5c"; + return "\x04\x4b\x72\x47\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x72\x47\x56\x1b\x5c"; + return "\x04\x4b\x72\x47\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x72\x47\x57\x1b\x5c"; + return "\x04\x4b\x72\x47\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x72\x47\x58\x1b\x5c"; + return "\x04\x4b\x72\x47\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x72\x47\x59\x1b\x5c"; + return "\x04\x4b\x72\x47\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x72\x47\x5a\x1b\x5c"; + return "\x04\x4b\x72\x47\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x72\x47\x61\x1b\x5c"; + return "\x04\x4b\x72\x47\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x72\x47\x62\x1b\x5c"; + return "\x04\x4b\x72\x47\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x72\x47\x63\x1b\x5c"; + return "\x04\x4b\x72\x47\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x72\x47\x64\x1b\x5c"; + return "\x04\x4b\x72\x47\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x72\x47\x65\x1b\x5c"; + return "\x04\x4b\x72\x47\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x72\x47\x66\x1b\x5c"; + return "\x04\x4b\x72\x47\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x72\x47\x67\x1b\x5c"; + return "\x04\x4b\x72\x47\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x72\x47\x68\x1b\x5c"; + return "\x04\x4b\x72\x47\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x72\x47\x69\x1b\x5c"; + return "\x04\x4b\x72\x47\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x72\x47\x6a\x1b\x5c"; + return "\x04\x4b\x72\x47\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x72\x47\x6b\x1b\x5c"; + return "\x04\x4b\x72\x47\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x72\x47\x6c\x1b\x5c"; + return "\x04\x4b\x72\x47\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x72\x47\x6d\x1b\x5c"; + return "\x04\x4b\x72\x47\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x72\x47\x6e\x1b\x5c"; + return "\x04\x4b\x72\x47\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x72\x47\x6f\x1b\x5c"; + return "\x04\x4b\x72\x47\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x72\x47\x70\x1b\x5c"; + return "\x04\x4b\x72\x47\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x72\x47\x71\x1b\x5c"; + return "\x04\x4b\x72\x47\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x72\x47\x72\x1b\x5c"; + return "\x04\x4b\x72\x47\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x47\x73\x1b\x5c"; + return "\x04\x4b\x72\x47\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x72\x47\x74\x1b\x5c"; + return "\x04\x4b\x72\x47\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x47\x75\x1b\x5c"; + return "\x04\x4b\x72\x47\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x72\x47\x76\x1b\x5c"; + return "\x04\x4b\x72\x47\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x72\x47\x77\x1b\x5c"; + return "\x04\x4b\x72\x47\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x72\x47\x78\x1b\x5c"; + return "\x04\x4b\x72\x47\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x72\x47\x79\x1b\x5c"; + return "\x04\x4b\x72\x47\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x72\x47\x7a\x1b\x5c"; + return "\x04\x4b\x72\x47\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x72\x47\x30\x1b\x5c"; + return "\x04\x4b\x72\x47\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x72\x47\x31\x1b\x5c"; + return "\x04\x4b\x72\x47\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x72\x47\x32\x1b\x5c"; + return "\x04\x4b\x72\x47\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x72\x47\x33\x1b\x5c"; + return "\x04\x4b\x72\x47\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x72\x47\x34\x1b\x5c"; + return "\x04\x4b\x72\x47\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x72\x47\x35\x1b\x5c"; + return "\x04\x4b\x72\x47\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x72\x47\x36\x1b\x5c"; + return "\x04\x4b\x72\x47\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x72\x47\x37\x1b\x5c"; + return "\x04\x4b\x72\x47\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x72\x47\x38\x1b\x5c"; + return "\x04\x4b\x72\x47\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x72\x47\x39\x1b\x5c"; + return "\x04\x4b\x72\x47\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x72\x47\x2e\x1b\x5c"; + return "\x04\x4b\x72\x47\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x72\x47\x2d\x1b\x5c"; + return "\x04\x4b\x72\x47\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x72\x47\x3a\x1b\x5c"; + return "\x04\x4b\x72\x47\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x72\x47\x2b\x1b\x5c"; + return "\x04\x4b\x72\x47\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x72\x47\x3d\x1b\x5c"; + return "\x04\x4b\x72\x47\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x72\x47\x5e\x1b\x5c"; + return "\x04\x4b\x72\x47\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x72\x47\x21\x1b\x5c"; + return "\x04\x4b\x72\x47\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x72\x47\x2f\x1b\x5c"; + return "\x04\x4b\x72\x47\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x72\x47\x2a\x1b\x5c"; + return "\x04\x4b\x72\x47\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x72\x47\x3f\x1b\x5c"; + return "\x04\x4b\x72\x47\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x72\x47\x26\x1b\x5c"; + return "\x04\x4b\x72\x47\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x72\x47\x3c\x1b\x5c"; + return "\x04\x4b\x72\x47\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x72\x47\x3e\x1b\x5c"; + return "\x04\x4b\x72\x47\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x72\x47\x28\x1b\x5c"; + return "\x04\x4b\x72\x47\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x72\x47\x29\x1b\x5c"; + return "\x04\x4b\x72\x47\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x72\x47\x5b\x1b\x5c"; + return "\x04\x4b\x72\x47\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x72\x47\x5d\x1b\x5c"; + return "\x04\x4b\x72\x47\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x72\x47\x7b\x1b\x5c"; + return "\x04\x4b\x72\x47\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x72\x47\x7d\x1b\x5c"; + return "\x04\x4b\x72\x47\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x72\x47\x40\x1b\x5c"; + return "\x04\x4b\x72\x47\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x72\x47\x25\x1b\x5c"; + return "\x04\x4b\x72\x47\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x72\x47\x24\x1b\x5c"; + return "\x04\x4b\x72\x47\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x72\x47\x23\x1b\x5c"; + return "\x04\x4b\x72\x47\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x72\x47\x42\x41\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x72\x47\x42\x42\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x72\x47\x42\x43\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x72\x47\x42\x44\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x72\x47\x42\x45\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x72\x47\x42\x46\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x72\x47\x42\x47\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x72\x47\x42\x48\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x72\x47\x42\x49\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x72\x47\x42\x4a\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x72\x47\x42\x4b\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x72\x47\x42\x4c\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x72\x47\x42\x4d\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x72\x47\x42\x4e\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x72\x47\x42\x4f\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x72\x47\x42\x50\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x72\x47\x42\x51\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x72\x47\x42\x52\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x72\x47\x42\x53\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x72\x47\x42\x54\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x72\x47\x42\x55\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x72\x47\x42\x56\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x72\x47\x42\x57\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x72\x47\x42\x58\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x72\x47\x42\x59\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x72\x47\x42\x5a\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x47\x42\x61\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x47\x42\x62\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x72\x47\x42\x63\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x72\x47\x42\x64\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x47\x42\x65\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x47\x42\x66\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x72\x47\x42\x67\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x72\x47\x42\x68\x1b\x5c"; + return "\x05\x4b\x72\x47\x42\x68"; } // end switch(key) case 0x7: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x72\x48\x41\x1b\x5c"; + return "\x04\x4b\x72\x48\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x72\x48\x42\x1b\x5c"; + return "\x04\x4b\x72\x48\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x72\x48\x43\x1b\x5c"; + return "\x04\x4b\x72\x48\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x72\x48\x44\x1b\x5c"; + return "\x04\x4b\x72\x48\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x72\x48\x45\x1b\x5c"; + return "\x04\x4b\x72\x48\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x72\x48\x46\x1b\x5c"; + return "\x04\x4b\x72\x48\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x72\x48\x47\x1b\x5c"; + return "\x04\x4b\x72\x48\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x72\x48\x48\x1b\x5c"; + return "\x04\x4b\x72\x48\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x72\x48\x49\x1b\x5c"; + return "\x04\x4b\x72\x48\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x72\x48\x4a\x1b\x5c"; + return "\x04\x4b\x72\x48\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x72\x48\x4b\x1b\x5c"; + return "\x04\x4b\x72\x48\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x72\x48\x4c\x1b\x5c"; + return "\x04\x4b\x72\x48\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x72\x48\x4d\x1b\x5c"; + return "\x04\x4b\x72\x48\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x72\x48\x4e\x1b\x5c"; + return "\x04\x4b\x72\x48\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x72\x48\x4f\x1b\x5c"; + return "\x04\x4b\x72\x48\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x72\x48\x50\x1b\x5c"; + return "\x04\x4b\x72\x48\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x72\x48\x51\x1b\x5c"; + return "\x04\x4b\x72\x48\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x72\x48\x52\x1b\x5c"; + return "\x04\x4b\x72\x48\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x72\x48\x53\x1b\x5c"; + return "\x04\x4b\x72\x48\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x72\x48\x54\x1b\x5c"; + return "\x04\x4b\x72\x48\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x72\x48\x55\x1b\x5c"; + return "\x04\x4b\x72\x48\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x72\x48\x56\x1b\x5c"; + return "\x04\x4b\x72\x48\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x72\x48\x57\x1b\x5c"; + return "\x04\x4b\x72\x48\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x72\x48\x58\x1b\x5c"; + return "\x04\x4b\x72\x48\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x72\x48\x59\x1b\x5c"; + return "\x04\x4b\x72\x48\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x72\x48\x5a\x1b\x5c"; + return "\x04\x4b\x72\x48\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x72\x48\x61\x1b\x5c"; + return "\x04\x4b\x72\x48\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x72\x48\x62\x1b\x5c"; + return "\x04\x4b\x72\x48\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x72\x48\x63\x1b\x5c"; + return "\x04\x4b\x72\x48\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x72\x48\x64\x1b\x5c"; + return "\x04\x4b\x72\x48\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x72\x48\x65\x1b\x5c"; + return "\x04\x4b\x72\x48\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x72\x48\x66\x1b\x5c"; + return "\x04\x4b\x72\x48\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x72\x48\x67\x1b\x5c"; + return "\x04\x4b\x72\x48\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x72\x48\x68\x1b\x5c"; + return "\x04\x4b\x72\x48\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x72\x48\x69\x1b\x5c"; + return "\x04\x4b\x72\x48\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x72\x48\x6a\x1b\x5c"; + return "\x04\x4b\x72\x48\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x72\x48\x6b\x1b\x5c"; + return "\x04\x4b\x72\x48\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x72\x48\x6c\x1b\x5c"; + return "\x04\x4b\x72\x48\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x72\x48\x6d\x1b\x5c"; + return "\x04\x4b\x72\x48\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x72\x48\x6e\x1b\x5c"; + return "\x04\x4b\x72\x48\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x72\x48\x6f\x1b\x5c"; + return "\x04\x4b\x72\x48\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x72\x48\x70\x1b\x5c"; + return "\x04\x4b\x72\x48\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x72\x48\x71\x1b\x5c"; + return "\x04\x4b\x72\x48\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x72\x48\x72\x1b\x5c"; + return "\x04\x4b\x72\x48\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x48\x73\x1b\x5c"; + return "\x04\x4b\x72\x48\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x72\x48\x74\x1b\x5c"; + return "\x04\x4b\x72\x48\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x48\x75\x1b\x5c"; + return "\x04\x4b\x72\x48\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x72\x48\x76\x1b\x5c"; + return "\x04\x4b\x72\x48\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x72\x48\x77\x1b\x5c"; + return "\x04\x4b\x72\x48\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x72\x48\x78\x1b\x5c"; + return "\x04\x4b\x72\x48\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x72\x48\x79\x1b\x5c"; + return "\x04\x4b\x72\x48\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x72\x48\x7a\x1b\x5c"; + return "\x04\x4b\x72\x48\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x72\x48\x30\x1b\x5c"; + return "\x04\x4b\x72\x48\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x72\x48\x31\x1b\x5c"; + return "\x04\x4b\x72\x48\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x72\x48\x32\x1b\x5c"; + return "\x04\x4b\x72\x48\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x72\x48\x33\x1b\x5c"; + return "\x04\x4b\x72\x48\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x72\x48\x34\x1b\x5c"; + return "\x04\x4b\x72\x48\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x72\x48\x35\x1b\x5c"; + return "\x04\x4b\x72\x48\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x72\x48\x36\x1b\x5c"; + return "\x04\x4b\x72\x48\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x72\x48\x37\x1b\x5c"; + return "\x04\x4b\x72\x48\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x72\x48\x38\x1b\x5c"; + return "\x04\x4b\x72\x48\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x72\x48\x39\x1b\x5c"; + return "\x04\x4b\x72\x48\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x72\x48\x2e\x1b\x5c"; + return "\x04\x4b\x72\x48\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x72\x48\x2d\x1b\x5c"; + return "\x04\x4b\x72\x48\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x72\x48\x3a\x1b\x5c"; + return "\x04\x4b\x72\x48\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x72\x48\x2b\x1b\x5c"; + return "\x04\x4b\x72\x48\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x72\x48\x3d\x1b\x5c"; + return "\x04\x4b\x72\x48\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x72\x48\x5e\x1b\x5c"; + return "\x04\x4b\x72\x48\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x72\x48\x21\x1b\x5c"; + return "\x04\x4b\x72\x48\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x72\x48\x2f\x1b\x5c"; + return "\x04\x4b\x72\x48\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x72\x48\x2a\x1b\x5c"; + return "\x04\x4b\x72\x48\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x72\x48\x3f\x1b\x5c"; + return "\x04\x4b\x72\x48\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x72\x48\x26\x1b\x5c"; + return "\x04\x4b\x72\x48\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x72\x48\x3c\x1b\x5c"; + return "\x04\x4b\x72\x48\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x72\x48\x3e\x1b\x5c"; + return "\x04\x4b\x72\x48\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x72\x48\x28\x1b\x5c"; + return "\x04\x4b\x72\x48\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x72\x48\x29\x1b\x5c"; + return "\x04\x4b\x72\x48\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x72\x48\x5b\x1b\x5c"; + return "\x04\x4b\x72\x48\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x72\x48\x5d\x1b\x5c"; + return "\x04\x4b\x72\x48\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x72\x48\x7b\x1b\x5c"; + return "\x04\x4b\x72\x48\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x72\x48\x7d\x1b\x5c"; + return "\x04\x4b\x72\x48\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x72\x48\x40\x1b\x5c"; + return "\x04\x4b\x72\x48\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x72\x48\x25\x1b\x5c"; + return "\x04\x4b\x72\x48\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x72\x48\x24\x1b\x5c"; + return "\x04\x4b\x72\x48\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x72\x48\x23\x1b\x5c"; + return "\x04\x4b\x72\x48\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x72\x48\x42\x41\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x72\x48\x42\x42\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x72\x48\x42\x43\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x72\x48\x42\x44\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x72\x48\x42\x45\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x72\x48\x42\x46\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x72\x48\x42\x47\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x72\x48\x42\x48\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x72\x48\x42\x49\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x72\x48\x42\x4a\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x72\x48\x42\x4b\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x72\x48\x42\x4c\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x72\x48\x42\x4d\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x72\x48\x42\x4e\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x72\x48\x42\x4f\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x72\x48\x42\x50\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x72\x48\x42\x51\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x72\x48\x42\x52\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x72\x48\x42\x53\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x72\x48\x42\x54\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x72\x48\x42\x55\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x72\x48\x42\x56\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x72\x48\x42\x57\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x72\x48\x42\x58\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x72\x48\x42\x59\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x72\x48\x42\x5a\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x48\x42\x61\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x48\x42\x62\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x72\x48\x42\x63\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x72\x48\x42\x64\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x48\x42\x65\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x48\x42\x66\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x72\x48\x42\x67\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x72\x48\x42\x68\x1b\x5c"; + return "\x05\x4b\x72\x48\x42\x68"; } // end switch(key) case 0x8: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x72\x49\x41\x1b\x5c"; + return "\x04\x4b\x72\x49\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x72\x49\x42\x1b\x5c"; + return "\x04\x4b\x72\x49\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x72\x49\x43\x1b\x5c"; + return "\x04\x4b\x72\x49\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x72\x49\x44\x1b\x5c"; + return "\x04\x4b\x72\x49\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x72\x49\x45\x1b\x5c"; + return "\x04\x4b\x72\x49\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x72\x49\x46\x1b\x5c"; + return "\x04\x4b\x72\x49\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x72\x49\x47\x1b\x5c"; + return "\x04\x4b\x72\x49\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x72\x49\x48\x1b\x5c"; + return "\x04\x4b\x72\x49\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x72\x49\x49\x1b\x5c"; + return "\x04\x4b\x72\x49\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x72\x49\x4a\x1b\x5c"; + return "\x04\x4b\x72\x49\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x72\x49\x4b\x1b\x5c"; + return "\x04\x4b\x72\x49\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x72\x49\x4c\x1b\x5c"; + return "\x04\x4b\x72\x49\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x72\x49\x4d\x1b\x5c"; + return "\x04\x4b\x72\x49\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x72\x49\x4e\x1b\x5c"; + return "\x04\x4b\x72\x49\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x72\x49\x4f\x1b\x5c"; + return "\x04\x4b\x72\x49\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x72\x49\x50\x1b\x5c"; + return "\x04\x4b\x72\x49\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x72\x49\x51\x1b\x5c"; + return "\x04\x4b\x72\x49\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x72\x49\x52\x1b\x5c"; + return "\x04\x4b\x72\x49\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x72\x49\x53\x1b\x5c"; + return "\x04\x4b\x72\x49\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x72\x49\x54\x1b\x5c"; + return "\x04\x4b\x72\x49\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x72\x49\x55\x1b\x5c"; + return "\x04\x4b\x72\x49\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x72\x49\x56\x1b\x5c"; + return "\x04\x4b\x72\x49\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x72\x49\x57\x1b\x5c"; + return "\x04\x4b\x72\x49\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x72\x49\x58\x1b\x5c"; + return "\x04\x4b\x72\x49\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x72\x49\x59\x1b\x5c"; + return "\x04\x4b\x72\x49\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x72\x49\x5a\x1b\x5c"; + return "\x04\x4b\x72\x49\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x72\x49\x61\x1b\x5c"; + return "\x04\x4b\x72\x49\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x72\x49\x62\x1b\x5c"; + return "\x04\x4b\x72\x49\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x72\x49\x63\x1b\x5c"; + return "\x04\x4b\x72\x49\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x72\x49\x64\x1b\x5c"; + return "\x04\x4b\x72\x49\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x72\x49\x65\x1b\x5c"; + return "\x04\x4b\x72\x49\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x72\x49\x66\x1b\x5c"; + return "\x04\x4b\x72\x49\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x72\x49\x67\x1b\x5c"; + return "\x04\x4b\x72\x49\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x72\x49\x68\x1b\x5c"; + return "\x04\x4b\x72\x49\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x72\x49\x69\x1b\x5c"; + return "\x04\x4b\x72\x49\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x72\x49\x6a\x1b\x5c"; + return "\x04\x4b\x72\x49\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x72\x49\x6b\x1b\x5c"; + return "\x04\x4b\x72\x49\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x72\x49\x6c\x1b\x5c"; + return "\x04\x4b\x72\x49\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x72\x49\x6d\x1b\x5c"; + return "\x04\x4b\x72\x49\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x72\x49\x6e\x1b\x5c"; + return "\x04\x4b\x72\x49\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x72\x49\x6f\x1b\x5c"; + return "\x04\x4b\x72\x49\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x72\x49\x70\x1b\x5c"; + return "\x04\x4b\x72\x49\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x72\x49\x71\x1b\x5c"; + return "\x04\x4b\x72\x49\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x72\x49\x72\x1b\x5c"; + return "\x04\x4b\x72\x49\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x49\x73\x1b\x5c"; + return "\x04\x4b\x72\x49\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x72\x49\x74\x1b\x5c"; + return "\x04\x4b\x72\x49\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x49\x75\x1b\x5c"; + return "\x04\x4b\x72\x49\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x72\x49\x76\x1b\x5c"; + return "\x04\x4b\x72\x49\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x72\x49\x77\x1b\x5c"; + return "\x04\x4b\x72\x49\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x72\x49\x78\x1b\x5c"; + return "\x04\x4b\x72\x49\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x72\x49\x79\x1b\x5c"; + return "\x04\x4b\x72\x49\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x72\x49\x7a\x1b\x5c"; + return "\x04\x4b\x72\x49\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x72\x49\x30\x1b\x5c"; + return "\x04\x4b\x72\x49\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x72\x49\x31\x1b\x5c"; + return "\x04\x4b\x72\x49\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x72\x49\x32\x1b\x5c"; + return "\x04\x4b\x72\x49\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x72\x49\x33\x1b\x5c"; + return "\x04\x4b\x72\x49\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x72\x49\x34\x1b\x5c"; + return "\x04\x4b\x72\x49\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x72\x49\x35\x1b\x5c"; + return "\x04\x4b\x72\x49\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x72\x49\x36\x1b\x5c"; + return "\x04\x4b\x72\x49\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x72\x49\x37\x1b\x5c"; + return "\x04\x4b\x72\x49\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x72\x49\x38\x1b\x5c"; + return "\x04\x4b\x72\x49\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x72\x49\x39\x1b\x5c"; + return "\x04\x4b\x72\x49\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x72\x49\x2e\x1b\x5c"; + return "\x04\x4b\x72\x49\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x72\x49\x2d\x1b\x5c"; + return "\x04\x4b\x72\x49\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x72\x49\x3a\x1b\x5c"; + return "\x04\x4b\x72\x49\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x72\x49\x2b\x1b\x5c"; + return "\x04\x4b\x72\x49\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x72\x49\x3d\x1b\x5c"; + return "\x04\x4b\x72\x49\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x72\x49\x5e\x1b\x5c"; + return "\x04\x4b\x72\x49\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x72\x49\x21\x1b\x5c"; + return "\x04\x4b\x72\x49\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x72\x49\x2f\x1b\x5c"; + return "\x04\x4b\x72\x49\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x72\x49\x2a\x1b\x5c"; + return "\x04\x4b\x72\x49\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x72\x49\x3f\x1b\x5c"; + return "\x04\x4b\x72\x49\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x72\x49\x26\x1b\x5c"; + return "\x04\x4b\x72\x49\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x72\x49\x3c\x1b\x5c"; + return "\x04\x4b\x72\x49\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x72\x49\x3e\x1b\x5c"; + return "\x04\x4b\x72\x49\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x72\x49\x28\x1b\x5c"; + return "\x04\x4b\x72\x49\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x72\x49\x29\x1b\x5c"; + return "\x04\x4b\x72\x49\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x72\x49\x5b\x1b\x5c"; + return "\x04\x4b\x72\x49\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x72\x49\x5d\x1b\x5c"; + return "\x04\x4b\x72\x49\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x72\x49\x7b\x1b\x5c"; + return "\x04\x4b\x72\x49\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x72\x49\x7d\x1b\x5c"; + return "\x04\x4b\x72\x49\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x72\x49\x40\x1b\x5c"; + return "\x04\x4b\x72\x49\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x72\x49\x25\x1b\x5c"; + return "\x04\x4b\x72\x49\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x72\x49\x24\x1b\x5c"; + return "\x04\x4b\x72\x49\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x72\x49\x23\x1b\x5c"; + return "\x04\x4b\x72\x49\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x72\x49\x42\x41\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x72\x49\x42\x42\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x72\x49\x42\x43\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x72\x49\x42\x44\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x72\x49\x42\x45\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x72\x49\x42\x46\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x72\x49\x42\x47\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x72\x49\x42\x48\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x72\x49\x42\x49\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x72\x49\x42\x4a\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x72\x49\x42\x4b\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x72\x49\x42\x4c\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x72\x49\x42\x4d\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x72\x49\x42\x4e\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x72\x49\x42\x4f\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x72\x49\x42\x50\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x72\x49\x42\x51\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x72\x49\x42\x52\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x72\x49\x42\x53\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x72\x49\x42\x54\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x72\x49\x42\x55\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x72\x49\x42\x56\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x72\x49\x42\x57\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x72\x49\x42\x58\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x72\x49\x42\x59\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x72\x49\x42\x5a\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x49\x42\x61\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x49\x42\x62\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x72\x49\x42\x63\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x72\x49\x42\x64\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x49\x42\x65\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x49\x42\x66\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x72\x49\x42\x67\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x72\x49\x42\x68\x1b\x5c"; + return "\x05\x4b\x72\x49\x42\x68"; } // end switch(key) case 0x9: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x72\x4a\x41\x1b\x5c"; + return "\x04\x4b\x72\x4a\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x72\x4a\x42\x1b\x5c"; + return "\x04\x4b\x72\x4a\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x72\x4a\x43\x1b\x5c"; + return "\x04\x4b\x72\x4a\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x72\x4a\x44\x1b\x5c"; + return "\x04\x4b\x72\x4a\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x72\x4a\x45\x1b\x5c"; + return "\x04\x4b\x72\x4a\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x72\x4a\x46\x1b\x5c"; + return "\x04\x4b\x72\x4a\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x72\x4a\x47\x1b\x5c"; + return "\x04\x4b\x72\x4a\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x72\x4a\x48\x1b\x5c"; + return "\x04\x4b\x72\x4a\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x72\x4a\x49\x1b\x5c"; + return "\x04\x4b\x72\x4a\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x72\x4a\x4a\x1b\x5c"; + return "\x04\x4b\x72\x4a\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x72\x4a\x4b\x1b\x5c"; + return "\x04\x4b\x72\x4a\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x72\x4a\x4c\x1b\x5c"; + return "\x04\x4b\x72\x4a\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x72\x4a\x4d\x1b\x5c"; + return "\x04\x4b\x72\x4a\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x72\x4a\x4e\x1b\x5c"; + return "\x04\x4b\x72\x4a\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x72\x4a\x4f\x1b\x5c"; + return "\x04\x4b\x72\x4a\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x72\x4a\x50\x1b\x5c"; + return "\x04\x4b\x72\x4a\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x72\x4a\x51\x1b\x5c"; + return "\x04\x4b\x72\x4a\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x72\x4a\x52\x1b\x5c"; + return "\x04\x4b\x72\x4a\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x72\x4a\x53\x1b\x5c"; + return "\x04\x4b\x72\x4a\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x72\x4a\x54\x1b\x5c"; + return "\x04\x4b\x72\x4a\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x72\x4a\x55\x1b\x5c"; + return "\x04\x4b\x72\x4a\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x72\x4a\x56\x1b\x5c"; + return "\x04\x4b\x72\x4a\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x72\x4a\x57\x1b\x5c"; + return "\x04\x4b\x72\x4a\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x72\x4a\x58\x1b\x5c"; + return "\x04\x4b\x72\x4a\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x72\x4a\x59\x1b\x5c"; + return "\x04\x4b\x72\x4a\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x72\x4a\x5a\x1b\x5c"; + return "\x04\x4b\x72\x4a\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x72\x4a\x61\x1b\x5c"; + return "\x04\x4b\x72\x4a\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x72\x4a\x62\x1b\x5c"; + return "\x04\x4b\x72\x4a\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x72\x4a\x63\x1b\x5c"; + return "\x04\x4b\x72\x4a\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x72\x4a\x64\x1b\x5c"; + return "\x04\x4b\x72\x4a\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x72\x4a\x65\x1b\x5c"; + return "\x04\x4b\x72\x4a\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x72\x4a\x66\x1b\x5c"; + return "\x04\x4b\x72\x4a\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x72\x4a\x67\x1b\x5c"; + return "\x04\x4b\x72\x4a\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x72\x4a\x68\x1b\x5c"; + return "\x04\x4b\x72\x4a\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x72\x4a\x69\x1b\x5c"; + return "\x04\x4b\x72\x4a\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x72\x4a\x6a\x1b\x5c"; + return "\x04\x4b\x72\x4a\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x72\x4a\x6b\x1b\x5c"; + return "\x04\x4b\x72\x4a\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x72\x4a\x6c\x1b\x5c"; + return "\x04\x4b\x72\x4a\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x72\x4a\x6d\x1b\x5c"; + return "\x04\x4b\x72\x4a\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x72\x4a\x6e\x1b\x5c"; + return "\x04\x4b\x72\x4a\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x72\x4a\x6f\x1b\x5c"; + return "\x04\x4b\x72\x4a\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x72\x4a\x70\x1b\x5c"; + return "\x04\x4b\x72\x4a\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x72\x4a\x71\x1b\x5c"; + return "\x04\x4b\x72\x4a\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x72\x4a\x72\x1b\x5c"; + return "\x04\x4b\x72\x4a\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x4a\x73\x1b\x5c"; + return "\x04\x4b\x72\x4a\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x72\x4a\x74\x1b\x5c"; + return "\x04\x4b\x72\x4a\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x4a\x75\x1b\x5c"; + return "\x04\x4b\x72\x4a\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x72\x4a\x76\x1b\x5c"; + return "\x04\x4b\x72\x4a\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x72\x4a\x77\x1b\x5c"; + return "\x04\x4b\x72\x4a\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x72\x4a\x78\x1b\x5c"; + return "\x04\x4b\x72\x4a\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x72\x4a\x79\x1b\x5c"; + return "\x04\x4b\x72\x4a\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x72\x4a\x7a\x1b\x5c"; + return "\x04\x4b\x72\x4a\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x72\x4a\x30\x1b\x5c"; + return "\x04\x4b\x72\x4a\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x72\x4a\x31\x1b\x5c"; + return "\x04\x4b\x72\x4a\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x72\x4a\x32\x1b\x5c"; + return "\x04\x4b\x72\x4a\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x72\x4a\x33\x1b\x5c"; + return "\x04\x4b\x72\x4a\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x72\x4a\x34\x1b\x5c"; + return "\x04\x4b\x72\x4a\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x72\x4a\x35\x1b\x5c"; + return "\x04\x4b\x72\x4a\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x72\x4a\x36\x1b\x5c"; + return "\x04\x4b\x72\x4a\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x72\x4a\x37\x1b\x5c"; + return "\x04\x4b\x72\x4a\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x72\x4a\x38\x1b\x5c"; + return "\x04\x4b\x72\x4a\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x72\x4a\x39\x1b\x5c"; + return "\x04\x4b\x72\x4a\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x72\x4a\x2e\x1b\x5c"; + return "\x04\x4b\x72\x4a\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x72\x4a\x2d\x1b\x5c"; + return "\x04\x4b\x72\x4a\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x72\x4a\x3a\x1b\x5c"; + return "\x04\x4b\x72\x4a\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x72\x4a\x2b\x1b\x5c"; + return "\x04\x4b\x72\x4a\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x72\x4a\x3d\x1b\x5c"; + return "\x04\x4b\x72\x4a\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x72\x4a\x5e\x1b\x5c"; + return "\x04\x4b\x72\x4a\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x72\x4a\x21\x1b\x5c"; + return "\x04\x4b\x72\x4a\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x72\x4a\x2f\x1b\x5c"; + return "\x04\x4b\x72\x4a\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x72\x4a\x2a\x1b\x5c"; + return "\x04\x4b\x72\x4a\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x72\x4a\x3f\x1b\x5c"; + return "\x04\x4b\x72\x4a\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x72\x4a\x26\x1b\x5c"; + return "\x04\x4b\x72\x4a\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x72\x4a\x3c\x1b\x5c"; + return "\x04\x4b\x72\x4a\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x72\x4a\x3e\x1b\x5c"; + return "\x04\x4b\x72\x4a\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x72\x4a\x28\x1b\x5c"; + return "\x04\x4b\x72\x4a\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x72\x4a\x29\x1b\x5c"; + return "\x04\x4b\x72\x4a\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x72\x4a\x5b\x1b\x5c"; + return "\x04\x4b\x72\x4a\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x72\x4a\x5d\x1b\x5c"; + return "\x04\x4b\x72\x4a\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x72\x4a\x7b\x1b\x5c"; + return "\x04\x4b\x72\x4a\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x72\x4a\x7d\x1b\x5c"; + return "\x04\x4b\x72\x4a\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x72\x4a\x40\x1b\x5c"; + return "\x04\x4b\x72\x4a\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x72\x4a\x25\x1b\x5c"; + return "\x04\x4b\x72\x4a\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x72\x4a\x24\x1b\x5c"; + return "\x04\x4b\x72\x4a\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x72\x4a\x23\x1b\x5c"; + return "\x04\x4b\x72\x4a\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x41\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x42\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x43\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x44\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x45\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x46\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x47\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x48\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x49\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x4a\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x4b\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x4c\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x4d\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x4e\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x4f\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x50\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x51\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x52\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x53\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x54\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x55\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x56\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x57\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x58\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x59\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x5a\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x61\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x62\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x63\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x64\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x65\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x66\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x67\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x72\x4a\x42\x68\x1b\x5c"; + return "\x05\x4b\x72\x4a\x42\x68"; } // end switch(key) case 0xa: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x72\x4d\x41\x1b\x5c"; + return "\x04\x4b\x72\x4d\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x72\x4d\x42\x1b\x5c"; + return "\x04\x4b\x72\x4d\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x72\x4d\x43\x1b\x5c"; + return "\x04\x4b\x72\x4d\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x72\x4d\x44\x1b\x5c"; + return "\x04\x4b\x72\x4d\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x72\x4d\x45\x1b\x5c"; + return "\x04\x4b\x72\x4d\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x72\x4d\x46\x1b\x5c"; + return "\x04\x4b\x72\x4d\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x72\x4d\x47\x1b\x5c"; + return "\x04\x4b\x72\x4d\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x72\x4d\x48\x1b\x5c"; + return "\x04\x4b\x72\x4d\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x72\x4d\x49\x1b\x5c"; + return "\x04\x4b\x72\x4d\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x72\x4d\x4a\x1b\x5c"; + return "\x04\x4b\x72\x4d\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x72\x4d\x4b\x1b\x5c"; + return "\x04\x4b\x72\x4d\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x72\x4d\x4c\x1b\x5c"; + return "\x04\x4b\x72\x4d\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x72\x4d\x4d\x1b\x5c"; + return "\x04\x4b\x72\x4d\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x72\x4d\x4e\x1b\x5c"; + return "\x04\x4b\x72\x4d\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x72\x4d\x4f\x1b\x5c"; + return "\x04\x4b\x72\x4d\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x72\x4d\x50\x1b\x5c"; + return "\x04\x4b\x72\x4d\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x72\x4d\x51\x1b\x5c"; + return "\x04\x4b\x72\x4d\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x72\x4d\x52\x1b\x5c"; + return "\x04\x4b\x72\x4d\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x72\x4d\x53\x1b\x5c"; + return "\x04\x4b\x72\x4d\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x72\x4d\x54\x1b\x5c"; + return "\x04\x4b\x72\x4d\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x72\x4d\x55\x1b\x5c"; + return "\x04\x4b\x72\x4d\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x72\x4d\x56\x1b\x5c"; + return "\x04\x4b\x72\x4d\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x72\x4d\x57\x1b\x5c"; + return "\x04\x4b\x72\x4d\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x72\x4d\x58\x1b\x5c"; + return "\x04\x4b\x72\x4d\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x72\x4d\x59\x1b\x5c"; + return "\x04\x4b\x72\x4d\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x72\x4d\x5a\x1b\x5c"; + return "\x04\x4b\x72\x4d\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x72\x4d\x61\x1b\x5c"; + return "\x04\x4b\x72\x4d\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x72\x4d\x62\x1b\x5c"; + return "\x04\x4b\x72\x4d\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x72\x4d\x63\x1b\x5c"; + return "\x04\x4b\x72\x4d\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x72\x4d\x64\x1b\x5c"; + return "\x04\x4b\x72\x4d\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x72\x4d\x65\x1b\x5c"; + return "\x04\x4b\x72\x4d\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x72\x4d\x66\x1b\x5c"; + return "\x04\x4b\x72\x4d\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x72\x4d\x67\x1b\x5c"; + return "\x04\x4b\x72\x4d\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x72\x4d\x68\x1b\x5c"; + return "\x04\x4b\x72\x4d\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x72\x4d\x69\x1b\x5c"; + return "\x04\x4b\x72\x4d\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x72\x4d\x6a\x1b\x5c"; + return "\x04\x4b\x72\x4d\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x72\x4d\x6b\x1b\x5c"; + return "\x04\x4b\x72\x4d\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x72\x4d\x6c\x1b\x5c"; + return "\x04\x4b\x72\x4d\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x72\x4d\x6d\x1b\x5c"; + return "\x04\x4b\x72\x4d\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x72\x4d\x6e\x1b\x5c"; + return "\x04\x4b\x72\x4d\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x72\x4d\x6f\x1b\x5c"; + return "\x04\x4b\x72\x4d\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x72\x4d\x70\x1b\x5c"; + return "\x04\x4b\x72\x4d\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x72\x4d\x71\x1b\x5c"; + return "\x04\x4b\x72\x4d\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x72\x4d\x72\x1b\x5c"; + return "\x04\x4b\x72\x4d\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x4d\x73\x1b\x5c"; + return "\x04\x4b\x72\x4d\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x72\x4d\x74\x1b\x5c"; + return "\x04\x4b\x72\x4d\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x4d\x75\x1b\x5c"; + return "\x04\x4b\x72\x4d\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x72\x4d\x76\x1b\x5c"; + return "\x04\x4b\x72\x4d\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x72\x4d\x77\x1b\x5c"; + return "\x04\x4b\x72\x4d\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x72\x4d\x78\x1b\x5c"; + return "\x04\x4b\x72\x4d\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x72\x4d\x79\x1b\x5c"; + return "\x04\x4b\x72\x4d\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x72\x4d\x7a\x1b\x5c"; + return "\x04\x4b\x72\x4d\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x72\x4d\x30\x1b\x5c"; + return "\x04\x4b\x72\x4d\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x72\x4d\x31\x1b\x5c"; + return "\x04\x4b\x72\x4d\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x72\x4d\x32\x1b\x5c"; + return "\x04\x4b\x72\x4d\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x72\x4d\x33\x1b\x5c"; + return "\x04\x4b\x72\x4d\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x72\x4d\x34\x1b\x5c"; + return "\x04\x4b\x72\x4d\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x72\x4d\x35\x1b\x5c"; + return "\x04\x4b\x72\x4d\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x72\x4d\x36\x1b\x5c"; + return "\x04\x4b\x72\x4d\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x72\x4d\x37\x1b\x5c"; + return "\x04\x4b\x72\x4d\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x72\x4d\x38\x1b\x5c"; + return "\x04\x4b\x72\x4d\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x72\x4d\x39\x1b\x5c"; + return "\x04\x4b\x72\x4d\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x72\x4d\x2e\x1b\x5c"; + return "\x04\x4b\x72\x4d\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x72\x4d\x2d\x1b\x5c"; + return "\x04\x4b\x72\x4d\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x72\x4d\x3a\x1b\x5c"; + return "\x04\x4b\x72\x4d\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x72\x4d\x2b\x1b\x5c"; + return "\x04\x4b\x72\x4d\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x72\x4d\x3d\x1b\x5c"; + return "\x04\x4b\x72\x4d\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x72\x4d\x5e\x1b\x5c"; + return "\x04\x4b\x72\x4d\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x72\x4d\x21\x1b\x5c"; + return "\x04\x4b\x72\x4d\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x72\x4d\x2f\x1b\x5c"; + return "\x04\x4b\x72\x4d\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x72\x4d\x2a\x1b\x5c"; + return "\x04\x4b\x72\x4d\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x72\x4d\x3f\x1b\x5c"; + return "\x04\x4b\x72\x4d\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x72\x4d\x26\x1b\x5c"; + return "\x04\x4b\x72\x4d\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x72\x4d\x3c\x1b\x5c"; + return "\x04\x4b\x72\x4d\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x72\x4d\x3e\x1b\x5c"; + return "\x04\x4b\x72\x4d\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x72\x4d\x28\x1b\x5c"; + return "\x04\x4b\x72\x4d\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x72\x4d\x29\x1b\x5c"; + return "\x04\x4b\x72\x4d\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x72\x4d\x5b\x1b\x5c"; + return "\x04\x4b\x72\x4d\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x72\x4d\x5d\x1b\x5c"; + return "\x04\x4b\x72\x4d\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x72\x4d\x7b\x1b\x5c"; + return "\x04\x4b\x72\x4d\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x72\x4d\x7d\x1b\x5c"; + return "\x04\x4b\x72\x4d\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x72\x4d\x40\x1b\x5c"; + return "\x04\x4b\x72\x4d\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x72\x4d\x25\x1b\x5c"; + return "\x04\x4b\x72\x4d\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x72\x4d\x24\x1b\x5c"; + return "\x04\x4b\x72\x4d\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x72\x4d\x23\x1b\x5c"; + return "\x04\x4b\x72\x4d\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x41\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x42\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x43\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x44\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x45\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x46\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x47\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x48\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x49\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x4a\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x4b\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x4c\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x4d\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x4e\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x4f\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x50\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x51\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x52\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x53\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x54\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x55\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x56\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x57\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x58\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x59\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x5a\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x61\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x62\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x63\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x64\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x65\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x66\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x67\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x72\x4d\x42\x68\x1b\x5c"; + return "\x05\x4b\x72\x4d\x42\x68"; } // end switch(key) case 0xb: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x72\x4e\x41\x1b\x5c"; + return "\x04\x4b\x72\x4e\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x72\x4e\x42\x1b\x5c"; + return "\x04\x4b\x72\x4e\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x72\x4e\x43\x1b\x5c"; + return "\x04\x4b\x72\x4e\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x72\x4e\x44\x1b\x5c"; + return "\x04\x4b\x72\x4e\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x72\x4e\x45\x1b\x5c"; + return "\x04\x4b\x72\x4e\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x72\x4e\x46\x1b\x5c"; + return "\x04\x4b\x72\x4e\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x72\x4e\x47\x1b\x5c"; + return "\x04\x4b\x72\x4e\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x72\x4e\x48\x1b\x5c"; + return "\x04\x4b\x72\x4e\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x72\x4e\x49\x1b\x5c"; + return "\x04\x4b\x72\x4e\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x72\x4e\x4a\x1b\x5c"; + return "\x04\x4b\x72\x4e\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x72\x4e\x4b\x1b\x5c"; + return "\x04\x4b\x72\x4e\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x72\x4e\x4c\x1b\x5c"; + return "\x04\x4b\x72\x4e\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x72\x4e\x4d\x1b\x5c"; + return "\x04\x4b\x72\x4e\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x72\x4e\x4e\x1b\x5c"; + return "\x04\x4b\x72\x4e\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x72\x4e\x4f\x1b\x5c"; + return "\x04\x4b\x72\x4e\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x72\x4e\x50\x1b\x5c"; + return "\x04\x4b\x72\x4e\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x72\x4e\x51\x1b\x5c"; + return "\x04\x4b\x72\x4e\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x72\x4e\x52\x1b\x5c"; + return "\x04\x4b\x72\x4e\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x72\x4e\x53\x1b\x5c"; + return "\x04\x4b\x72\x4e\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x72\x4e\x54\x1b\x5c"; + return "\x04\x4b\x72\x4e\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x72\x4e\x55\x1b\x5c"; + return "\x04\x4b\x72\x4e\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x72\x4e\x56\x1b\x5c"; + return "\x04\x4b\x72\x4e\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x72\x4e\x57\x1b\x5c"; + return "\x04\x4b\x72\x4e\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x72\x4e\x58\x1b\x5c"; + return "\x04\x4b\x72\x4e\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x72\x4e\x59\x1b\x5c"; + return "\x04\x4b\x72\x4e\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x72\x4e\x5a\x1b\x5c"; + return "\x04\x4b\x72\x4e\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x72\x4e\x61\x1b\x5c"; + return "\x04\x4b\x72\x4e\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x72\x4e\x62\x1b\x5c"; + return "\x04\x4b\x72\x4e\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x72\x4e\x63\x1b\x5c"; + return "\x04\x4b\x72\x4e\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x72\x4e\x64\x1b\x5c"; + return "\x04\x4b\x72\x4e\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x72\x4e\x65\x1b\x5c"; + return "\x04\x4b\x72\x4e\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x72\x4e\x66\x1b\x5c"; + return "\x04\x4b\x72\x4e\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x72\x4e\x67\x1b\x5c"; + return "\x04\x4b\x72\x4e\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x72\x4e\x68\x1b\x5c"; + return "\x04\x4b\x72\x4e\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x72\x4e\x69\x1b\x5c"; + return "\x04\x4b\x72\x4e\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x72\x4e\x6a\x1b\x5c"; + return "\x04\x4b\x72\x4e\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x72\x4e\x6b\x1b\x5c"; + return "\x04\x4b\x72\x4e\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x72\x4e\x6c\x1b\x5c"; + return "\x04\x4b\x72\x4e\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x72\x4e\x6d\x1b\x5c"; + return "\x04\x4b\x72\x4e\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x72\x4e\x6e\x1b\x5c"; + return "\x04\x4b\x72\x4e\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x72\x4e\x6f\x1b\x5c"; + return "\x04\x4b\x72\x4e\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x72\x4e\x70\x1b\x5c"; + return "\x04\x4b\x72\x4e\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x72\x4e\x71\x1b\x5c"; + return "\x04\x4b\x72\x4e\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x72\x4e\x72\x1b\x5c"; + return "\x04\x4b\x72\x4e\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x4e\x73\x1b\x5c"; + return "\x04\x4b\x72\x4e\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x72\x4e\x74\x1b\x5c"; + return "\x04\x4b\x72\x4e\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x4e\x75\x1b\x5c"; + return "\x04\x4b\x72\x4e\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x72\x4e\x76\x1b\x5c"; + return "\x04\x4b\x72\x4e\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x72\x4e\x77\x1b\x5c"; + return "\x04\x4b\x72\x4e\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x72\x4e\x78\x1b\x5c"; + return "\x04\x4b\x72\x4e\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x72\x4e\x79\x1b\x5c"; + return "\x04\x4b\x72\x4e\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x72\x4e\x7a\x1b\x5c"; + return "\x04\x4b\x72\x4e\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x72\x4e\x30\x1b\x5c"; + return "\x04\x4b\x72\x4e\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x72\x4e\x31\x1b\x5c"; + return "\x04\x4b\x72\x4e\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x72\x4e\x32\x1b\x5c"; + return "\x04\x4b\x72\x4e\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x72\x4e\x33\x1b\x5c"; + return "\x04\x4b\x72\x4e\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x72\x4e\x34\x1b\x5c"; + return "\x04\x4b\x72\x4e\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x72\x4e\x35\x1b\x5c"; + return "\x04\x4b\x72\x4e\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x72\x4e\x36\x1b\x5c"; + return "\x04\x4b\x72\x4e\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x72\x4e\x37\x1b\x5c"; + return "\x04\x4b\x72\x4e\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x72\x4e\x38\x1b\x5c"; + return "\x04\x4b\x72\x4e\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x72\x4e\x39\x1b\x5c"; + return "\x04\x4b\x72\x4e\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x72\x4e\x2e\x1b\x5c"; + return "\x04\x4b\x72\x4e\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x72\x4e\x2d\x1b\x5c"; + return "\x04\x4b\x72\x4e\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x72\x4e\x3a\x1b\x5c"; + return "\x04\x4b\x72\x4e\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x72\x4e\x2b\x1b\x5c"; + return "\x04\x4b\x72\x4e\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x72\x4e\x3d\x1b\x5c"; + return "\x04\x4b\x72\x4e\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x72\x4e\x5e\x1b\x5c"; + return "\x04\x4b\x72\x4e\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x72\x4e\x21\x1b\x5c"; + return "\x04\x4b\x72\x4e\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x72\x4e\x2f\x1b\x5c"; + return "\x04\x4b\x72\x4e\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x72\x4e\x2a\x1b\x5c"; + return "\x04\x4b\x72\x4e\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x72\x4e\x3f\x1b\x5c"; + return "\x04\x4b\x72\x4e\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x72\x4e\x26\x1b\x5c"; + return "\x04\x4b\x72\x4e\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x72\x4e\x3c\x1b\x5c"; + return "\x04\x4b\x72\x4e\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x72\x4e\x3e\x1b\x5c"; + return "\x04\x4b\x72\x4e\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x72\x4e\x28\x1b\x5c"; + return "\x04\x4b\x72\x4e\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x72\x4e\x29\x1b\x5c"; + return "\x04\x4b\x72\x4e\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x72\x4e\x5b\x1b\x5c"; + return "\x04\x4b\x72\x4e\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x72\x4e\x5d\x1b\x5c"; + return "\x04\x4b\x72\x4e\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x72\x4e\x7b\x1b\x5c"; + return "\x04\x4b\x72\x4e\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x72\x4e\x7d\x1b\x5c"; + return "\x04\x4b\x72\x4e\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x72\x4e\x40\x1b\x5c"; + return "\x04\x4b\x72\x4e\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x72\x4e\x25\x1b\x5c"; + return "\x04\x4b\x72\x4e\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x72\x4e\x24\x1b\x5c"; + return "\x04\x4b\x72\x4e\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x72\x4e\x23\x1b\x5c"; + return "\x04\x4b\x72\x4e\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x41\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x42\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x43\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x44\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x45\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x46\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x47\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x48\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x49\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x4a\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x4b\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x4c\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x4d\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x4e\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x4f\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x50\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x51\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x52\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x53\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x54\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x55\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x56\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x57\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x58\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x59\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x5a\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x61\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x62\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x63\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x64\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x65\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x66\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x67\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x72\x4e\x42\x68\x1b\x5c"; + return "\x05\x4b\x72\x4e\x42\x68"; } // end switch(key) case 0xc: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x72\x4b\x41\x1b\x5c"; + return "\x04\x4b\x72\x4b\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x72\x4b\x42\x1b\x5c"; + return "\x04\x4b\x72\x4b\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x72\x4b\x43\x1b\x5c"; + return "\x04\x4b\x72\x4b\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x72\x4b\x44\x1b\x5c"; + return "\x04\x4b\x72\x4b\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x72\x4b\x45\x1b\x5c"; + return "\x04\x4b\x72\x4b\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x72\x4b\x46\x1b\x5c"; + return "\x04\x4b\x72\x4b\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x72\x4b\x47\x1b\x5c"; + return "\x04\x4b\x72\x4b\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x72\x4b\x48\x1b\x5c"; + return "\x04\x4b\x72\x4b\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x72\x4b\x49\x1b\x5c"; + return "\x04\x4b\x72\x4b\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x72\x4b\x4a\x1b\x5c"; + return "\x04\x4b\x72\x4b\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x72\x4b\x4b\x1b\x5c"; + return "\x04\x4b\x72\x4b\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x72\x4b\x4c\x1b\x5c"; + return "\x04\x4b\x72\x4b\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x72\x4b\x4d\x1b\x5c"; + return "\x04\x4b\x72\x4b\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x72\x4b\x4e\x1b\x5c"; + return "\x04\x4b\x72\x4b\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x72\x4b\x4f\x1b\x5c"; + return "\x04\x4b\x72\x4b\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x72\x4b\x50\x1b\x5c"; + return "\x04\x4b\x72\x4b\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x72\x4b\x51\x1b\x5c"; + return "\x04\x4b\x72\x4b\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x72\x4b\x52\x1b\x5c"; + return "\x04\x4b\x72\x4b\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x72\x4b\x53\x1b\x5c"; + return "\x04\x4b\x72\x4b\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x72\x4b\x54\x1b\x5c"; + return "\x04\x4b\x72\x4b\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x72\x4b\x55\x1b\x5c"; + return "\x04\x4b\x72\x4b\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x72\x4b\x56\x1b\x5c"; + return "\x04\x4b\x72\x4b\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x72\x4b\x57\x1b\x5c"; + return "\x04\x4b\x72\x4b\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x72\x4b\x58\x1b\x5c"; + return "\x04\x4b\x72\x4b\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x72\x4b\x59\x1b\x5c"; + return "\x04\x4b\x72\x4b\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x72\x4b\x5a\x1b\x5c"; + return "\x04\x4b\x72\x4b\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x72\x4b\x61\x1b\x5c"; + return "\x04\x4b\x72\x4b\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x72\x4b\x62\x1b\x5c"; + return "\x04\x4b\x72\x4b\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x72\x4b\x63\x1b\x5c"; + return "\x04\x4b\x72\x4b\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x72\x4b\x64\x1b\x5c"; + return "\x04\x4b\x72\x4b\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x72\x4b\x65\x1b\x5c"; + return "\x04\x4b\x72\x4b\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x72\x4b\x66\x1b\x5c"; + return "\x04\x4b\x72\x4b\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x72\x4b\x67\x1b\x5c"; + return "\x04\x4b\x72\x4b\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x72\x4b\x68\x1b\x5c"; + return "\x04\x4b\x72\x4b\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x72\x4b\x69\x1b\x5c"; + return "\x04\x4b\x72\x4b\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x72\x4b\x6a\x1b\x5c"; + return "\x04\x4b\x72\x4b\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x72\x4b\x6b\x1b\x5c"; + return "\x04\x4b\x72\x4b\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x72\x4b\x6c\x1b\x5c"; + return "\x04\x4b\x72\x4b\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x72\x4b\x6d\x1b\x5c"; + return "\x04\x4b\x72\x4b\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x72\x4b\x6e\x1b\x5c"; + return "\x04\x4b\x72\x4b\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x72\x4b\x6f\x1b\x5c"; + return "\x04\x4b\x72\x4b\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x72\x4b\x70\x1b\x5c"; + return "\x04\x4b\x72\x4b\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x72\x4b\x71\x1b\x5c"; + return "\x04\x4b\x72\x4b\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x72\x4b\x72\x1b\x5c"; + return "\x04\x4b\x72\x4b\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x4b\x73\x1b\x5c"; + return "\x04\x4b\x72\x4b\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x72\x4b\x74\x1b\x5c"; + return "\x04\x4b\x72\x4b\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x4b\x75\x1b\x5c"; + return "\x04\x4b\x72\x4b\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x72\x4b\x76\x1b\x5c"; + return "\x04\x4b\x72\x4b\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x72\x4b\x77\x1b\x5c"; + return "\x04\x4b\x72\x4b\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x72\x4b\x78\x1b\x5c"; + return "\x04\x4b\x72\x4b\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x72\x4b\x79\x1b\x5c"; + return "\x04\x4b\x72\x4b\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x72\x4b\x7a\x1b\x5c"; + return "\x04\x4b\x72\x4b\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x72\x4b\x30\x1b\x5c"; + return "\x04\x4b\x72\x4b\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x72\x4b\x31\x1b\x5c"; + return "\x04\x4b\x72\x4b\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x72\x4b\x32\x1b\x5c"; + return "\x04\x4b\x72\x4b\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x72\x4b\x33\x1b\x5c"; + return "\x04\x4b\x72\x4b\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x72\x4b\x34\x1b\x5c"; + return "\x04\x4b\x72\x4b\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x72\x4b\x35\x1b\x5c"; + return "\x04\x4b\x72\x4b\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x72\x4b\x36\x1b\x5c"; + return "\x04\x4b\x72\x4b\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x72\x4b\x37\x1b\x5c"; + return "\x04\x4b\x72\x4b\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x72\x4b\x38\x1b\x5c"; + return "\x04\x4b\x72\x4b\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x72\x4b\x39\x1b\x5c"; + return "\x04\x4b\x72\x4b\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x72\x4b\x2e\x1b\x5c"; + return "\x04\x4b\x72\x4b\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x72\x4b\x2d\x1b\x5c"; + return "\x04\x4b\x72\x4b\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x72\x4b\x3a\x1b\x5c"; + return "\x04\x4b\x72\x4b\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x72\x4b\x2b\x1b\x5c"; + return "\x04\x4b\x72\x4b\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x72\x4b\x3d\x1b\x5c"; + return "\x04\x4b\x72\x4b\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x72\x4b\x5e\x1b\x5c"; + return "\x04\x4b\x72\x4b\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x72\x4b\x21\x1b\x5c"; + return "\x04\x4b\x72\x4b\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x72\x4b\x2f\x1b\x5c"; + return "\x04\x4b\x72\x4b\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x72\x4b\x2a\x1b\x5c"; + return "\x04\x4b\x72\x4b\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x72\x4b\x3f\x1b\x5c"; + return "\x04\x4b\x72\x4b\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x72\x4b\x26\x1b\x5c"; + return "\x04\x4b\x72\x4b\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x72\x4b\x3c\x1b\x5c"; + return "\x04\x4b\x72\x4b\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x72\x4b\x3e\x1b\x5c"; + return "\x04\x4b\x72\x4b\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x72\x4b\x28\x1b\x5c"; + return "\x04\x4b\x72\x4b\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x72\x4b\x29\x1b\x5c"; + return "\x04\x4b\x72\x4b\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x72\x4b\x5b\x1b\x5c"; + return "\x04\x4b\x72\x4b\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x72\x4b\x5d\x1b\x5c"; + return "\x04\x4b\x72\x4b\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x72\x4b\x7b\x1b\x5c"; + return "\x04\x4b\x72\x4b\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x72\x4b\x7d\x1b\x5c"; + return "\x04\x4b\x72\x4b\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x72\x4b\x40\x1b\x5c"; + return "\x04\x4b\x72\x4b\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x72\x4b\x25\x1b\x5c"; + return "\x04\x4b\x72\x4b\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x72\x4b\x24\x1b\x5c"; + return "\x04\x4b\x72\x4b\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x72\x4b\x23\x1b\x5c"; + return "\x04\x4b\x72\x4b\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x41\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x42\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x43\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x44\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x45\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x46\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x47\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x48\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x49\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x4a\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x4b\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x4c\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x4d\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x4e\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x4f\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x50\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x51\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x52\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x53\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x54\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x55\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x56\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x57\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x58\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x59\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x5a\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x61\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x62\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x63\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x64\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x65\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x66\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x67\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x72\x4b\x42\x68\x1b\x5c"; + return "\x05\x4b\x72\x4b\x42\x68"; } // end switch(key) case 0xd: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x72\x4c\x41\x1b\x5c"; + return "\x04\x4b\x72\x4c\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x72\x4c\x42\x1b\x5c"; + return "\x04\x4b\x72\x4c\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x72\x4c\x43\x1b\x5c"; + return "\x04\x4b\x72\x4c\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x72\x4c\x44\x1b\x5c"; + return "\x04\x4b\x72\x4c\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x72\x4c\x45\x1b\x5c"; + return "\x04\x4b\x72\x4c\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x72\x4c\x46\x1b\x5c"; + return "\x04\x4b\x72\x4c\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x72\x4c\x47\x1b\x5c"; + return "\x04\x4b\x72\x4c\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x72\x4c\x48\x1b\x5c"; + return "\x04\x4b\x72\x4c\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x72\x4c\x49\x1b\x5c"; + return "\x04\x4b\x72\x4c\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x72\x4c\x4a\x1b\x5c"; + return "\x04\x4b\x72\x4c\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x72\x4c\x4b\x1b\x5c"; + return "\x04\x4b\x72\x4c\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x72\x4c\x4c\x1b\x5c"; + return "\x04\x4b\x72\x4c\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x72\x4c\x4d\x1b\x5c"; + return "\x04\x4b\x72\x4c\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x72\x4c\x4e\x1b\x5c"; + return "\x04\x4b\x72\x4c\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x72\x4c\x4f\x1b\x5c"; + return "\x04\x4b\x72\x4c\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x72\x4c\x50\x1b\x5c"; + return "\x04\x4b\x72\x4c\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x72\x4c\x51\x1b\x5c"; + return "\x04\x4b\x72\x4c\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x72\x4c\x52\x1b\x5c"; + return "\x04\x4b\x72\x4c\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x72\x4c\x53\x1b\x5c"; + return "\x04\x4b\x72\x4c\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x72\x4c\x54\x1b\x5c"; + return "\x04\x4b\x72\x4c\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x72\x4c\x55\x1b\x5c"; + return "\x04\x4b\x72\x4c\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x72\x4c\x56\x1b\x5c"; + return "\x04\x4b\x72\x4c\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x72\x4c\x57\x1b\x5c"; + return "\x04\x4b\x72\x4c\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x72\x4c\x58\x1b\x5c"; + return "\x04\x4b\x72\x4c\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x72\x4c\x59\x1b\x5c"; + return "\x04\x4b\x72\x4c\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x72\x4c\x5a\x1b\x5c"; + return "\x04\x4b\x72\x4c\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x72\x4c\x61\x1b\x5c"; + return "\x04\x4b\x72\x4c\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x72\x4c\x62\x1b\x5c"; + return "\x04\x4b\x72\x4c\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x72\x4c\x63\x1b\x5c"; + return "\x04\x4b\x72\x4c\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x72\x4c\x64\x1b\x5c"; + return "\x04\x4b\x72\x4c\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x72\x4c\x65\x1b\x5c"; + return "\x04\x4b\x72\x4c\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x72\x4c\x66\x1b\x5c"; + return "\x04\x4b\x72\x4c\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x72\x4c\x67\x1b\x5c"; + return "\x04\x4b\x72\x4c\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x72\x4c\x68\x1b\x5c"; + return "\x04\x4b\x72\x4c\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x72\x4c\x69\x1b\x5c"; + return "\x04\x4b\x72\x4c\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x72\x4c\x6a\x1b\x5c"; + return "\x04\x4b\x72\x4c\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x72\x4c\x6b\x1b\x5c"; + return "\x04\x4b\x72\x4c\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x72\x4c\x6c\x1b\x5c"; + return "\x04\x4b\x72\x4c\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x72\x4c\x6d\x1b\x5c"; + return "\x04\x4b\x72\x4c\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x72\x4c\x6e\x1b\x5c"; + return "\x04\x4b\x72\x4c\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x72\x4c\x6f\x1b\x5c"; + return "\x04\x4b\x72\x4c\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x72\x4c\x70\x1b\x5c"; + return "\x04\x4b\x72\x4c\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x72\x4c\x71\x1b\x5c"; + return "\x04\x4b\x72\x4c\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x72\x4c\x72\x1b\x5c"; + return "\x04\x4b\x72\x4c\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x4c\x73\x1b\x5c"; + return "\x04\x4b\x72\x4c\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x72\x4c\x74\x1b\x5c"; + return "\x04\x4b\x72\x4c\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x4c\x75\x1b\x5c"; + return "\x04\x4b\x72\x4c\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x72\x4c\x76\x1b\x5c"; + return "\x04\x4b\x72\x4c\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x72\x4c\x77\x1b\x5c"; + return "\x04\x4b\x72\x4c\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x72\x4c\x78\x1b\x5c"; + return "\x04\x4b\x72\x4c\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x72\x4c\x79\x1b\x5c"; + return "\x04\x4b\x72\x4c\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x72\x4c\x7a\x1b\x5c"; + return "\x04\x4b\x72\x4c\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x72\x4c\x30\x1b\x5c"; + return "\x04\x4b\x72\x4c\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x72\x4c\x31\x1b\x5c"; + return "\x04\x4b\x72\x4c\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x72\x4c\x32\x1b\x5c"; + return "\x04\x4b\x72\x4c\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x72\x4c\x33\x1b\x5c"; + return "\x04\x4b\x72\x4c\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x72\x4c\x34\x1b\x5c"; + return "\x04\x4b\x72\x4c\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x72\x4c\x35\x1b\x5c"; + return "\x04\x4b\x72\x4c\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x72\x4c\x36\x1b\x5c"; + return "\x04\x4b\x72\x4c\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x72\x4c\x37\x1b\x5c"; + return "\x04\x4b\x72\x4c\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x72\x4c\x38\x1b\x5c"; + return "\x04\x4b\x72\x4c\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x72\x4c\x39\x1b\x5c"; + return "\x04\x4b\x72\x4c\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x72\x4c\x2e\x1b\x5c"; + return "\x04\x4b\x72\x4c\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x72\x4c\x2d\x1b\x5c"; + return "\x04\x4b\x72\x4c\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x72\x4c\x3a\x1b\x5c"; + return "\x04\x4b\x72\x4c\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x72\x4c\x2b\x1b\x5c"; + return "\x04\x4b\x72\x4c\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x72\x4c\x3d\x1b\x5c"; + return "\x04\x4b\x72\x4c\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x72\x4c\x5e\x1b\x5c"; + return "\x04\x4b\x72\x4c\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x72\x4c\x21\x1b\x5c"; + return "\x04\x4b\x72\x4c\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x72\x4c\x2f\x1b\x5c"; + return "\x04\x4b\x72\x4c\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x72\x4c\x2a\x1b\x5c"; + return "\x04\x4b\x72\x4c\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x72\x4c\x3f\x1b\x5c"; + return "\x04\x4b\x72\x4c\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x72\x4c\x26\x1b\x5c"; + return "\x04\x4b\x72\x4c\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x72\x4c\x3c\x1b\x5c"; + return "\x04\x4b\x72\x4c\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x72\x4c\x3e\x1b\x5c"; + return "\x04\x4b\x72\x4c\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x72\x4c\x28\x1b\x5c"; + return "\x04\x4b\x72\x4c\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x72\x4c\x29\x1b\x5c"; + return "\x04\x4b\x72\x4c\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x72\x4c\x5b\x1b\x5c"; + return "\x04\x4b\x72\x4c\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x72\x4c\x5d\x1b\x5c"; + return "\x04\x4b\x72\x4c\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x72\x4c\x7b\x1b\x5c"; + return "\x04\x4b\x72\x4c\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x72\x4c\x7d\x1b\x5c"; + return "\x04\x4b\x72\x4c\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x72\x4c\x40\x1b\x5c"; + return "\x04\x4b\x72\x4c\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x72\x4c\x25\x1b\x5c"; + return "\x04\x4b\x72\x4c\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x72\x4c\x24\x1b\x5c"; + return "\x04\x4b\x72\x4c\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x72\x4c\x23\x1b\x5c"; + return "\x04\x4b\x72\x4c\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x41\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x42\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x43\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x44\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x45\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x46\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x47\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x48\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x49\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x4a\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x4b\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x4c\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x4d\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x4e\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x4f\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x50\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x51\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x52\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x53\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x54\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x55\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x56\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x57\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x58\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x59\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x5a\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x61\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x62\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x63\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x64\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x65\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x66\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x67\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x72\x4c\x42\x68\x1b\x5c"; + return "\x05\x4b\x72\x4c\x42\x68"; } // end switch(key) case 0xe: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x72\x4f\x41\x1b\x5c"; + return "\x04\x4b\x72\x4f\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x72\x4f\x42\x1b\x5c"; + return "\x04\x4b\x72\x4f\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x72\x4f\x43\x1b\x5c"; + return "\x04\x4b\x72\x4f\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x72\x4f\x44\x1b\x5c"; + return "\x04\x4b\x72\x4f\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x72\x4f\x45\x1b\x5c"; + return "\x04\x4b\x72\x4f\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x72\x4f\x46\x1b\x5c"; + return "\x04\x4b\x72\x4f\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x72\x4f\x47\x1b\x5c"; + return "\x04\x4b\x72\x4f\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x72\x4f\x48\x1b\x5c"; + return "\x04\x4b\x72\x4f\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x72\x4f\x49\x1b\x5c"; + return "\x04\x4b\x72\x4f\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x72\x4f\x4a\x1b\x5c"; + return "\x04\x4b\x72\x4f\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x72\x4f\x4b\x1b\x5c"; + return "\x04\x4b\x72\x4f\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x72\x4f\x4c\x1b\x5c"; + return "\x04\x4b\x72\x4f\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x72\x4f\x4d\x1b\x5c"; + return "\x04\x4b\x72\x4f\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x72\x4f\x4e\x1b\x5c"; + return "\x04\x4b\x72\x4f\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x72\x4f\x4f\x1b\x5c"; + return "\x04\x4b\x72\x4f\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x72\x4f\x50\x1b\x5c"; + return "\x04\x4b\x72\x4f\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x72\x4f\x51\x1b\x5c"; + return "\x04\x4b\x72\x4f\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x72\x4f\x52\x1b\x5c"; + return "\x04\x4b\x72\x4f\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x72\x4f\x53\x1b\x5c"; + return "\x04\x4b\x72\x4f\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x72\x4f\x54\x1b\x5c"; + return "\x04\x4b\x72\x4f\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x72\x4f\x55\x1b\x5c"; + return "\x04\x4b\x72\x4f\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x72\x4f\x56\x1b\x5c"; + return "\x04\x4b\x72\x4f\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x72\x4f\x57\x1b\x5c"; + return "\x04\x4b\x72\x4f\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x72\x4f\x58\x1b\x5c"; + return "\x04\x4b\x72\x4f\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x72\x4f\x59\x1b\x5c"; + return "\x04\x4b\x72\x4f\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x72\x4f\x5a\x1b\x5c"; + return "\x04\x4b\x72\x4f\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x72\x4f\x61\x1b\x5c"; + return "\x04\x4b\x72\x4f\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x72\x4f\x62\x1b\x5c"; + return "\x04\x4b\x72\x4f\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x72\x4f\x63\x1b\x5c"; + return "\x04\x4b\x72\x4f\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x72\x4f\x64\x1b\x5c"; + return "\x04\x4b\x72\x4f\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x72\x4f\x65\x1b\x5c"; + return "\x04\x4b\x72\x4f\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x72\x4f\x66\x1b\x5c"; + return "\x04\x4b\x72\x4f\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x72\x4f\x67\x1b\x5c"; + return "\x04\x4b\x72\x4f\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x72\x4f\x68\x1b\x5c"; + return "\x04\x4b\x72\x4f\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x72\x4f\x69\x1b\x5c"; + return "\x04\x4b\x72\x4f\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x72\x4f\x6a\x1b\x5c"; + return "\x04\x4b\x72\x4f\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x72\x4f\x6b\x1b\x5c"; + return "\x04\x4b\x72\x4f\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x72\x4f\x6c\x1b\x5c"; + return "\x04\x4b\x72\x4f\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x72\x4f\x6d\x1b\x5c"; + return "\x04\x4b\x72\x4f\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x72\x4f\x6e\x1b\x5c"; + return "\x04\x4b\x72\x4f\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x72\x4f\x6f\x1b\x5c"; + return "\x04\x4b\x72\x4f\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x72\x4f\x70\x1b\x5c"; + return "\x04\x4b\x72\x4f\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x72\x4f\x71\x1b\x5c"; + return "\x04\x4b\x72\x4f\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x72\x4f\x72\x1b\x5c"; + return "\x04\x4b\x72\x4f\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x4f\x73\x1b\x5c"; + return "\x04\x4b\x72\x4f\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x72\x4f\x74\x1b\x5c"; + return "\x04\x4b\x72\x4f\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x4f\x75\x1b\x5c"; + return "\x04\x4b\x72\x4f\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x72\x4f\x76\x1b\x5c"; + return "\x04\x4b\x72\x4f\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x72\x4f\x77\x1b\x5c"; + return "\x04\x4b\x72\x4f\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x72\x4f\x78\x1b\x5c"; + return "\x04\x4b\x72\x4f\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x72\x4f\x79\x1b\x5c"; + return "\x04\x4b\x72\x4f\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x72\x4f\x7a\x1b\x5c"; + return "\x04\x4b\x72\x4f\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x72\x4f\x30\x1b\x5c"; + return "\x04\x4b\x72\x4f\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x72\x4f\x31\x1b\x5c"; + return "\x04\x4b\x72\x4f\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x72\x4f\x32\x1b\x5c"; + return "\x04\x4b\x72\x4f\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x72\x4f\x33\x1b\x5c"; + return "\x04\x4b\x72\x4f\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x72\x4f\x34\x1b\x5c"; + return "\x04\x4b\x72\x4f\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x72\x4f\x35\x1b\x5c"; + return "\x04\x4b\x72\x4f\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x72\x4f\x36\x1b\x5c"; + return "\x04\x4b\x72\x4f\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x72\x4f\x37\x1b\x5c"; + return "\x04\x4b\x72\x4f\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x72\x4f\x38\x1b\x5c"; + return "\x04\x4b\x72\x4f\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x72\x4f\x39\x1b\x5c"; + return "\x04\x4b\x72\x4f\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x72\x4f\x2e\x1b\x5c"; + return "\x04\x4b\x72\x4f\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x72\x4f\x2d\x1b\x5c"; + return "\x04\x4b\x72\x4f\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x72\x4f\x3a\x1b\x5c"; + return "\x04\x4b\x72\x4f\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x72\x4f\x2b\x1b\x5c"; + return "\x04\x4b\x72\x4f\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x72\x4f\x3d\x1b\x5c"; + return "\x04\x4b\x72\x4f\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x72\x4f\x5e\x1b\x5c"; + return "\x04\x4b\x72\x4f\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x72\x4f\x21\x1b\x5c"; + return "\x04\x4b\x72\x4f\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x72\x4f\x2f\x1b\x5c"; + return "\x04\x4b\x72\x4f\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x72\x4f\x2a\x1b\x5c"; + return "\x04\x4b\x72\x4f\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x72\x4f\x3f\x1b\x5c"; + return "\x04\x4b\x72\x4f\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x72\x4f\x26\x1b\x5c"; + return "\x04\x4b\x72\x4f\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x72\x4f\x3c\x1b\x5c"; + return "\x04\x4b\x72\x4f\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x72\x4f\x3e\x1b\x5c"; + return "\x04\x4b\x72\x4f\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x72\x4f\x28\x1b\x5c"; + return "\x04\x4b\x72\x4f\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x72\x4f\x29\x1b\x5c"; + return "\x04\x4b\x72\x4f\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x72\x4f\x5b\x1b\x5c"; + return "\x04\x4b\x72\x4f\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x72\x4f\x5d\x1b\x5c"; + return "\x04\x4b\x72\x4f\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x72\x4f\x7b\x1b\x5c"; + return "\x04\x4b\x72\x4f\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x72\x4f\x7d\x1b\x5c"; + return "\x04\x4b\x72\x4f\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x72\x4f\x40\x1b\x5c"; + return "\x04\x4b\x72\x4f\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x72\x4f\x25\x1b\x5c"; + return "\x04\x4b\x72\x4f\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x72\x4f\x24\x1b\x5c"; + return "\x04\x4b\x72\x4f\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x72\x4f\x23\x1b\x5c"; + return "\x04\x4b\x72\x4f\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x41\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x42\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x43\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x44\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x45\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x46\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x47\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x48\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x49\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x4a\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x4b\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x4c\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x4d\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x4e\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x4f\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x50\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x51\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x52\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x53\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x54\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x55\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x56\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x57\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x58\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x59\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x5a\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x61\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x62\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x63\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x64\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x65\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x66\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x67\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x72\x4f\x42\x68\x1b\x5c"; + return "\x05\x4b\x72\x4f\x42\x68"; } // end switch(key) case 0xf: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x72\x50\x41\x1b\x5c"; + return "\x04\x4b\x72\x50\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x72\x50\x42\x1b\x5c"; + return "\x04\x4b\x72\x50\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x72\x50\x43\x1b\x5c"; + return "\x04\x4b\x72\x50\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x72\x50\x44\x1b\x5c"; + return "\x04\x4b\x72\x50\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x72\x50\x45\x1b\x5c"; + return "\x04\x4b\x72\x50\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x72\x50\x46\x1b\x5c"; + return "\x04\x4b\x72\x50\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x72\x50\x47\x1b\x5c"; + return "\x04\x4b\x72\x50\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x72\x50\x48\x1b\x5c"; + return "\x04\x4b\x72\x50\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x72\x50\x49\x1b\x5c"; + return "\x04\x4b\x72\x50\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x72\x50\x4a\x1b\x5c"; + return "\x04\x4b\x72\x50\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x72\x50\x4b\x1b\x5c"; + return "\x04\x4b\x72\x50\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x72\x50\x4c\x1b\x5c"; + return "\x04\x4b\x72\x50\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x72\x50\x4d\x1b\x5c"; + return "\x04\x4b\x72\x50\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x72\x50\x4e\x1b\x5c"; + return "\x04\x4b\x72\x50\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x72\x50\x4f\x1b\x5c"; + return "\x04\x4b\x72\x50\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x72\x50\x50\x1b\x5c"; + return "\x04\x4b\x72\x50\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x72\x50\x51\x1b\x5c"; + return "\x04\x4b\x72\x50\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x72\x50\x52\x1b\x5c"; + return "\x04\x4b\x72\x50\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x72\x50\x53\x1b\x5c"; + return "\x04\x4b\x72\x50\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x72\x50\x54\x1b\x5c"; + return "\x04\x4b\x72\x50\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x72\x50\x55\x1b\x5c"; + return "\x04\x4b\x72\x50\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x72\x50\x56\x1b\x5c"; + return "\x04\x4b\x72\x50\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x72\x50\x57\x1b\x5c"; + return "\x04\x4b\x72\x50\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x72\x50\x58\x1b\x5c"; + return "\x04\x4b\x72\x50\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x72\x50\x59\x1b\x5c"; + return "\x04\x4b\x72\x50\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x72\x50\x5a\x1b\x5c"; + return "\x04\x4b\x72\x50\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x72\x50\x61\x1b\x5c"; + return "\x04\x4b\x72\x50\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x72\x50\x62\x1b\x5c"; + return "\x04\x4b\x72\x50\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x72\x50\x63\x1b\x5c"; + return "\x04\x4b\x72\x50\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x72\x50\x64\x1b\x5c"; + return "\x04\x4b\x72\x50\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x72\x50\x65\x1b\x5c"; + return "\x04\x4b\x72\x50\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x72\x50\x66\x1b\x5c"; + return "\x04\x4b\x72\x50\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x72\x50\x67\x1b\x5c"; + return "\x04\x4b\x72\x50\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x72\x50\x68\x1b\x5c"; + return "\x04\x4b\x72\x50\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x72\x50\x69\x1b\x5c"; + return "\x04\x4b\x72\x50\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x72\x50\x6a\x1b\x5c"; + return "\x04\x4b\x72\x50\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x72\x50\x6b\x1b\x5c"; + return "\x04\x4b\x72\x50\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x72\x50\x6c\x1b\x5c"; + return "\x04\x4b\x72\x50\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x72\x50\x6d\x1b\x5c"; + return "\x04\x4b\x72\x50\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x72\x50\x6e\x1b\x5c"; + return "\x04\x4b\x72\x50\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x72\x50\x6f\x1b\x5c"; + return "\x04\x4b\x72\x50\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x72\x50\x70\x1b\x5c"; + return "\x04\x4b\x72\x50\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x72\x50\x71\x1b\x5c"; + return "\x04\x4b\x72\x50\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x72\x50\x72\x1b\x5c"; + return "\x04\x4b\x72\x50\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x50\x73\x1b\x5c"; + return "\x04\x4b\x72\x50\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x72\x50\x74\x1b\x5c"; + return "\x04\x4b\x72\x50\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x72\x50\x75\x1b\x5c"; + return "\x04\x4b\x72\x50\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x72\x50\x76\x1b\x5c"; + return "\x04\x4b\x72\x50\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x72\x50\x77\x1b\x5c"; + return "\x04\x4b\x72\x50\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x72\x50\x78\x1b\x5c"; + return "\x04\x4b\x72\x50\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x72\x50\x79\x1b\x5c"; + return "\x04\x4b\x72\x50\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x72\x50\x7a\x1b\x5c"; + return "\x04\x4b\x72\x50\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x72\x50\x30\x1b\x5c"; + return "\x04\x4b\x72\x50\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x72\x50\x31\x1b\x5c"; + return "\x04\x4b\x72\x50\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x72\x50\x32\x1b\x5c"; + return "\x04\x4b\x72\x50\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x72\x50\x33\x1b\x5c"; + return "\x04\x4b\x72\x50\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x72\x50\x34\x1b\x5c"; + return "\x04\x4b\x72\x50\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x72\x50\x35\x1b\x5c"; + return "\x04\x4b\x72\x50\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x72\x50\x36\x1b\x5c"; + return "\x04\x4b\x72\x50\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x72\x50\x37\x1b\x5c"; + return "\x04\x4b\x72\x50\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x72\x50\x38\x1b\x5c"; + return "\x04\x4b\x72\x50\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x72\x50\x39\x1b\x5c"; + return "\x04\x4b\x72\x50\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x72\x50\x2e\x1b\x5c"; + return "\x04\x4b\x72\x50\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x72\x50\x2d\x1b\x5c"; + return "\x04\x4b\x72\x50\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x72\x50\x3a\x1b\x5c"; + return "\x04\x4b\x72\x50\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x72\x50\x2b\x1b\x5c"; + return "\x04\x4b\x72\x50\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x72\x50\x3d\x1b\x5c"; + return "\x04\x4b\x72\x50\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x72\x50\x5e\x1b\x5c"; + return "\x04\x4b\x72\x50\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x72\x50\x21\x1b\x5c"; + return "\x04\x4b\x72\x50\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x72\x50\x2f\x1b\x5c"; + return "\x04\x4b\x72\x50\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x72\x50\x2a\x1b\x5c"; + return "\x04\x4b\x72\x50\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x72\x50\x3f\x1b\x5c"; + return "\x04\x4b\x72\x50\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x72\x50\x26\x1b\x5c"; + return "\x04\x4b\x72\x50\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x72\x50\x3c\x1b\x5c"; + return "\x04\x4b\x72\x50\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x72\x50\x3e\x1b\x5c"; + return "\x04\x4b\x72\x50\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x72\x50\x28\x1b\x5c"; + return "\x04\x4b\x72\x50\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x72\x50\x29\x1b\x5c"; + return "\x04\x4b\x72\x50\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x72\x50\x5b\x1b\x5c"; + return "\x04\x4b\x72\x50\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x72\x50\x5d\x1b\x5c"; + return "\x04\x4b\x72\x50\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x72\x50\x7b\x1b\x5c"; + return "\x04\x4b\x72\x50\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x72\x50\x7d\x1b\x5c"; + return "\x04\x4b\x72\x50\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x72\x50\x40\x1b\x5c"; + return "\x04\x4b\x72\x50\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x72\x50\x25\x1b\x5c"; + return "\x04\x4b\x72\x50\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x72\x50\x24\x1b\x5c"; + return "\x04\x4b\x72\x50\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x72\x50\x23\x1b\x5c"; + return "\x04\x4b\x72\x50\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x72\x50\x42\x41\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x72\x50\x42\x42\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x72\x50\x42\x43\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x72\x50\x42\x44\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x72\x50\x42\x45\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x72\x50\x42\x46\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x72\x50\x42\x47\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x72\x50\x42\x48\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x72\x50\x42\x49\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x72\x50\x42\x4a\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x72\x50\x42\x4b\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x72\x50\x42\x4c\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x72\x50\x42\x4d\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x72\x50\x42\x4e\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x72\x50\x42\x4f\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x72\x50\x42\x50\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x72\x50\x42\x51\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x72\x50\x42\x52\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x72\x50\x42\x53\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x72\x50\x42\x54\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x72\x50\x42\x55\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x72\x50\x42\x56\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x72\x50\x42\x57\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x72\x50\x42\x58\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x72\x50\x42\x59\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x72\x50\x42\x5a\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x50\x42\x61\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x50\x42\x62\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x72\x50\x42\x63\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x72\x50\x42\x64\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x72\x50\x42\x65\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x72\x50\x42\x66\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x72\x50\x42\x67\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x72\x50\x42\x68\x1b\x5c"; + return "\x05\x4b\x72\x50\x42\x68"; } // end switch(key) } // end switch(mods) @@ -9065,3762 +9065,3762 @@ key_lookup(uint8_t key, KeyboardMode mode, uint8_t mods, uint8_t action) { case 0x0: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x70\x41\x41\x1b\x5c"; + return "\x04\x4b\x70\x41\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x70\x41\x42\x1b\x5c"; + return "\x04\x4b\x70\x41\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x70\x41\x43\x1b\x5c"; + return "\x04\x4b\x70\x41\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x70\x41\x44\x1b\x5c"; + return "\x04\x4b\x70\x41\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x70\x41\x45\x1b\x5c"; + return "\x04\x4b\x70\x41\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x70\x41\x46\x1b\x5c"; + return "\x04\x4b\x70\x41\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x70\x41\x47\x1b\x5c"; + return "\x04\x4b\x70\x41\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x70\x41\x48\x1b\x5c"; + return "\x04\x4b\x70\x41\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x70\x41\x49\x1b\x5c"; + return "\x04\x4b\x70\x41\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x70\x41\x4a\x1b\x5c"; + return "\x04\x4b\x70\x41\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x70\x41\x4b\x1b\x5c"; + return "\x04\x4b\x70\x41\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x70\x41\x4c\x1b\x5c"; + return "\x04\x4b\x70\x41\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x70\x41\x4d\x1b\x5c"; + return "\x04\x4b\x70\x41\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x70\x41\x4e\x1b\x5c"; + return "\x04\x4b\x70\x41\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x70\x41\x4f\x1b\x5c"; + return "\x04\x4b\x70\x41\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x70\x41\x50\x1b\x5c"; + return "\x04\x4b\x70\x41\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x70\x41\x51\x1b\x5c"; + return "\x04\x4b\x70\x41\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x70\x41\x52\x1b\x5c"; + return "\x04\x4b\x70\x41\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x70\x41\x53\x1b\x5c"; + return "\x04\x4b\x70\x41\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x70\x41\x54\x1b\x5c"; + return "\x04\x4b\x70\x41\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x70\x41\x55\x1b\x5c"; + return "\x04\x4b\x70\x41\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x70\x41\x56\x1b\x5c"; + return "\x04\x4b\x70\x41\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x70\x41\x57\x1b\x5c"; + return "\x04\x4b\x70\x41\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x70\x41\x58\x1b\x5c"; + return "\x04\x4b\x70\x41\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x70\x41\x59\x1b\x5c"; + return "\x04\x4b\x70\x41\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x70\x41\x5a\x1b\x5c"; + return "\x04\x4b\x70\x41\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x70\x41\x61\x1b\x5c"; + return "\x04\x4b\x70\x41\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x70\x41\x62\x1b\x5c"; + return "\x04\x4b\x70\x41\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x70\x41\x63\x1b\x5c"; + return "\x04\x4b\x70\x41\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x70\x41\x64\x1b\x5c"; + return "\x04\x4b\x70\x41\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x70\x41\x65\x1b\x5c"; + return "\x04\x4b\x70\x41\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x70\x41\x66\x1b\x5c"; + return "\x04\x4b\x70\x41\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x70\x41\x67\x1b\x5c"; + return "\x04\x4b\x70\x41\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x70\x41\x68\x1b\x5c"; + return "\x04\x4b\x70\x41\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x70\x41\x69\x1b\x5c"; + return "\x04\x4b\x70\x41\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x70\x41\x6a\x1b\x5c"; + return "\x04\x4b\x70\x41\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x70\x41\x6b\x1b\x5c"; + return "\x04\x4b\x70\x41\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x70\x41\x6c\x1b\x5c"; + return "\x04\x4b\x70\x41\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x70\x41\x6d\x1b\x5c"; + return "\x04\x4b\x70\x41\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x70\x41\x6e\x1b\x5c"; + return "\x04\x4b\x70\x41\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x70\x41\x6f\x1b\x5c"; + return "\x04\x4b\x70\x41\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x70\x41\x70\x1b\x5c"; + return "\x04\x4b\x70\x41\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x70\x41\x71\x1b\x5c"; + return "\x04\x4b\x70\x41\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x70\x41\x72\x1b\x5c"; + return "\x04\x4b\x70\x41\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x41\x73\x1b\x5c"; + return "\x04\x4b\x70\x41\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x70\x41\x74\x1b\x5c"; + return "\x04\x4b\x70\x41\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x41\x75\x1b\x5c"; + return "\x04\x4b\x70\x41\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x70\x41\x76\x1b\x5c"; + return "\x04\x4b\x70\x41\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x70\x41\x77\x1b\x5c"; + return "\x04\x4b\x70\x41\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x70\x41\x78\x1b\x5c"; + return "\x04\x4b\x70\x41\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x70\x41\x79\x1b\x5c"; + return "\x04\x4b\x70\x41\x79"; case 51: // ENTER return "\x01\x0d"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x70\x41\x30\x1b\x5c"; + return "\x04\x4b\x70\x41\x30"; case 53: // BACKSPACE return "\x01\x7f"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x70\x41\x32\x1b\x5c"; + return "\x04\x4b\x70\x41\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x70\x41\x33\x1b\x5c"; + return "\x04\x4b\x70\x41\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x70\x41\x34\x1b\x5c"; + return "\x04\x4b\x70\x41\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x70\x41\x35\x1b\x5c"; + return "\x04\x4b\x70\x41\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x70\x41\x36\x1b\x5c"; + return "\x04\x4b\x70\x41\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x70\x41\x37\x1b\x5c"; + return "\x04\x4b\x70\x41\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x70\x41\x38\x1b\x5c"; + return "\x04\x4b\x70\x41\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x70\x41\x39\x1b\x5c"; + return "\x04\x4b\x70\x41\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x70\x41\x2e\x1b\x5c"; + return "\x04\x4b\x70\x41\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x70\x41\x2d\x1b\x5c"; + return "\x04\x4b\x70\x41\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x70\x41\x3a\x1b\x5c"; + return "\x04\x4b\x70\x41\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x70\x41\x2b\x1b\x5c"; + return "\x04\x4b\x70\x41\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x70\x41\x3d\x1b\x5c"; + return "\x04\x4b\x70\x41\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x70\x41\x5e\x1b\x5c"; + return "\x04\x4b\x70\x41\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x70\x41\x21\x1b\x5c"; + return "\x04\x4b\x70\x41\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x70\x41\x2f\x1b\x5c"; + return "\x04\x4b\x70\x41\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x70\x41\x2a\x1b\x5c"; + return "\x04\x4b\x70\x41\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x70\x41\x3f\x1b\x5c"; + return "\x04\x4b\x70\x41\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x70\x41\x26\x1b\x5c"; + return "\x04\x4b\x70\x41\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x70\x41\x3c\x1b\x5c"; + return "\x04\x4b\x70\x41\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x70\x41\x3e\x1b\x5c"; + return "\x04\x4b\x70\x41\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x70\x41\x28\x1b\x5c"; + return "\x04\x4b\x70\x41\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x70\x41\x29\x1b\x5c"; + return "\x04\x4b\x70\x41\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x70\x41\x5b\x1b\x5c"; + return "\x04\x4b\x70\x41\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x70\x41\x5d\x1b\x5c"; + return "\x04\x4b\x70\x41\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x70\x41\x7b\x1b\x5c"; + return "\x04\x4b\x70\x41\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x70\x41\x7d\x1b\x5c"; + return "\x04\x4b\x70\x41\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x70\x41\x40\x1b\x5c"; + return "\x04\x4b\x70\x41\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x70\x41\x25\x1b\x5c"; + return "\x04\x4b\x70\x41\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x70\x41\x24\x1b\x5c"; + return "\x04\x4b\x70\x41\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x70\x41\x23\x1b\x5c"; + return "\x04\x4b\x70\x41\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x70\x41\x42\x41\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x70\x41\x42\x42\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x70\x41\x42\x43\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x70\x41\x42\x44\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x70\x41\x42\x45\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x70\x41\x42\x46\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x70\x41\x42\x47\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x70\x41\x42\x48\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x70\x41\x42\x49\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x70\x41\x42\x4a\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x70\x41\x42\x4b\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x70\x41\x42\x4c\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x70\x41\x42\x4d\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x70\x41\x42\x4e\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x70\x41\x42\x4f\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x70\x41\x42\x50\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x70\x41\x42\x51\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x70\x41\x42\x52\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x70\x41\x42\x53\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x70\x41\x42\x54\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x70\x41\x42\x55\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x70\x41\x42\x56\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x70\x41\x42\x57\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x70\x41\x42\x58\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x70\x41\x42\x59\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x70\x41\x42\x5a\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x41\x42\x61\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x41\x42\x62\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x70\x41\x42\x63\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x70\x41\x42\x64\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x41\x42\x65\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x41\x42\x66\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x70\x41\x42\x67\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x70\x41\x42\x68\x1b\x5c"; + return "\x05\x4b\x70\x41\x42\x68"; } // end switch(key) case 0x1: switch(key & 0x7f) { default: return NULL; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x70\x42\x77\x1b\x5c"; + return "\x04\x4b\x70\x42\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x70\x42\x78\x1b\x5c"; + return "\x04\x4b\x70\x42\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x70\x42\x79\x1b\x5c"; + return "\x04\x4b\x70\x42\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x70\x42\x7a\x1b\x5c"; + return "\x04\x4b\x70\x42\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x70\x42\x30\x1b\x5c"; + return "\x04\x4b\x70\x42\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x70\x42\x31\x1b\x5c"; + return "\x04\x4b\x70\x42\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x70\x42\x32\x1b\x5c"; + return "\x04\x4b\x70\x42\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x70\x42\x33\x1b\x5c"; + return "\x04\x4b\x70\x42\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x70\x42\x34\x1b\x5c"; + return "\x04\x4b\x70\x42\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x70\x42\x35\x1b\x5c"; + return "\x04\x4b\x70\x42\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x70\x42\x36\x1b\x5c"; + return "\x04\x4b\x70\x42\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x70\x42\x37\x1b\x5c"; + return "\x04\x4b\x70\x42\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x70\x42\x38\x1b\x5c"; + return "\x04\x4b\x70\x42\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x70\x42\x39\x1b\x5c"; + return "\x04\x4b\x70\x42\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x70\x42\x2e\x1b\x5c"; + return "\x04\x4b\x70\x42\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x70\x42\x2d\x1b\x5c"; + return "\x04\x4b\x70\x42\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x70\x42\x3a\x1b\x5c"; + return "\x04\x4b\x70\x42\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x70\x42\x2b\x1b\x5c"; + return "\x04\x4b\x70\x42\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x70\x42\x3d\x1b\x5c"; + return "\x04\x4b\x70\x42\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x70\x42\x5e\x1b\x5c"; + return "\x04\x4b\x70\x42\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x70\x42\x21\x1b\x5c"; + return "\x04\x4b\x70\x42\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x70\x42\x2f\x1b\x5c"; + return "\x04\x4b\x70\x42\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x70\x42\x2a\x1b\x5c"; + return "\x04\x4b\x70\x42\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x70\x42\x3f\x1b\x5c"; + return "\x04\x4b\x70\x42\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x70\x42\x26\x1b\x5c"; + return "\x04\x4b\x70\x42\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x70\x42\x3c\x1b\x5c"; + return "\x04\x4b\x70\x42\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x70\x42\x3e\x1b\x5c"; + return "\x04\x4b\x70\x42\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x70\x42\x28\x1b\x5c"; + return "\x04\x4b\x70\x42\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x70\x42\x29\x1b\x5c"; + return "\x04\x4b\x70\x42\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x70\x42\x5b\x1b\x5c"; + return "\x04\x4b\x70\x42\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x70\x42\x5d\x1b\x5c"; + return "\x04\x4b\x70\x42\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x70\x42\x7b\x1b\x5c"; + return "\x04\x4b\x70\x42\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x70\x42\x7d\x1b\x5c"; + return "\x04\x4b\x70\x42\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x70\x42\x40\x1b\x5c"; + return "\x04\x4b\x70\x42\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x70\x42\x25\x1b\x5c"; + return "\x04\x4b\x70\x42\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x70\x42\x24\x1b\x5c"; + return "\x04\x4b\x70\x42\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x70\x42\x23\x1b\x5c"; + return "\x04\x4b\x70\x42\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x70\x42\x42\x41\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x70\x42\x42\x42\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x70\x42\x42\x43\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x70\x42\x42\x44\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x70\x42\x42\x45\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x70\x42\x42\x46\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x70\x42\x42\x47\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x70\x42\x42\x48\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x70\x42\x42\x49\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x70\x42\x42\x4a\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x70\x42\x42\x4b\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x70\x42\x42\x4c\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x70\x42\x42\x4d\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x70\x42\x42\x4e\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x70\x42\x42\x4f\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x70\x42\x42\x50\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x70\x42\x42\x51\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x70\x42\x42\x52\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x70\x42\x42\x53\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x70\x42\x42\x54\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x70\x42\x42\x55\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x70\x42\x42\x56\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x70\x42\x42\x57\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x70\x42\x42\x58\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x70\x42\x42\x59\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x70\x42\x42\x5a\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x42\x42\x61\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x42\x42\x62\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x70\x42\x42\x63\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x70\x42\x42\x64\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x42\x42\x65\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x42\x42\x66\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x70\x42\x42\x67\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x70\x42\x42\x68\x1b\x5c"; + return "\x05\x4b\x70\x42\x42\x68"; } // end switch(key) case 0x2: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x70\x45\x41\x1b\x5c"; + return "\x04\x4b\x70\x45\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x70\x45\x42\x1b\x5c"; + return "\x04\x4b\x70\x45\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x70\x45\x43\x1b\x5c"; + return "\x04\x4b\x70\x45\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x70\x45\x44\x1b\x5c"; + return "\x04\x4b\x70\x45\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x70\x45\x45\x1b\x5c"; + return "\x04\x4b\x70\x45\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x70\x45\x46\x1b\x5c"; + return "\x04\x4b\x70\x45\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x70\x45\x47\x1b\x5c"; + return "\x04\x4b\x70\x45\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x70\x45\x48\x1b\x5c"; + return "\x04\x4b\x70\x45\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x70\x45\x49\x1b\x5c"; + return "\x04\x4b\x70\x45\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x70\x45\x4a\x1b\x5c"; + return "\x04\x4b\x70\x45\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x70\x45\x4b\x1b\x5c"; + return "\x04\x4b\x70\x45\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x70\x45\x4c\x1b\x5c"; + return "\x04\x4b\x70\x45\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x70\x45\x4d\x1b\x5c"; + return "\x04\x4b\x70\x45\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x70\x45\x4e\x1b\x5c"; + return "\x04\x4b\x70\x45\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x70\x45\x4f\x1b\x5c"; + return "\x04\x4b\x70\x45\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x70\x45\x50\x1b\x5c"; + return "\x04\x4b\x70\x45\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x70\x45\x51\x1b\x5c"; + return "\x04\x4b\x70\x45\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x70\x45\x52\x1b\x5c"; + return "\x04\x4b\x70\x45\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x70\x45\x53\x1b\x5c"; + return "\x04\x4b\x70\x45\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x70\x45\x54\x1b\x5c"; + return "\x04\x4b\x70\x45\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x70\x45\x55\x1b\x5c"; + return "\x04\x4b\x70\x45\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x70\x45\x56\x1b\x5c"; + return "\x04\x4b\x70\x45\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x70\x45\x57\x1b\x5c"; + return "\x04\x4b\x70\x45\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x70\x45\x58\x1b\x5c"; + return "\x04\x4b\x70\x45\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x70\x45\x59\x1b\x5c"; + return "\x04\x4b\x70\x45\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x70\x45\x5a\x1b\x5c"; + return "\x04\x4b\x70\x45\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x70\x45\x61\x1b\x5c"; + return "\x04\x4b\x70\x45\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x70\x45\x62\x1b\x5c"; + return "\x04\x4b\x70\x45\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x70\x45\x63\x1b\x5c"; + return "\x04\x4b\x70\x45\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x70\x45\x64\x1b\x5c"; + return "\x04\x4b\x70\x45\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x70\x45\x65\x1b\x5c"; + return "\x04\x4b\x70\x45\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x70\x45\x66\x1b\x5c"; + return "\x04\x4b\x70\x45\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x70\x45\x67\x1b\x5c"; + return "\x04\x4b\x70\x45\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x70\x45\x68\x1b\x5c"; + return "\x04\x4b\x70\x45\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x70\x45\x69\x1b\x5c"; + return "\x04\x4b\x70\x45\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x70\x45\x6a\x1b\x5c"; + return "\x04\x4b\x70\x45\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x70\x45\x6b\x1b\x5c"; + return "\x04\x4b\x70\x45\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x70\x45\x6c\x1b\x5c"; + return "\x04\x4b\x70\x45\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x70\x45\x6d\x1b\x5c"; + return "\x04\x4b\x70\x45\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x70\x45\x6e\x1b\x5c"; + return "\x04\x4b\x70\x45\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x70\x45\x6f\x1b\x5c"; + return "\x04\x4b\x70\x45\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x70\x45\x70\x1b\x5c"; + return "\x04\x4b\x70\x45\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x70\x45\x71\x1b\x5c"; + return "\x04\x4b\x70\x45\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x70\x45\x72\x1b\x5c"; + return "\x04\x4b\x70\x45\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x45\x73\x1b\x5c"; + return "\x04\x4b\x70\x45\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x70\x45\x74\x1b\x5c"; + return "\x04\x4b\x70\x45\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x45\x75\x1b\x5c"; + return "\x04\x4b\x70\x45\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x70\x45\x76\x1b\x5c"; + return "\x04\x4b\x70\x45\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x70\x45\x77\x1b\x5c"; + return "\x04\x4b\x70\x45\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x70\x45\x78\x1b\x5c"; + return "\x04\x4b\x70\x45\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x70\x45\x79\x1b\x5c"; + return "\x04\x4b\x70\x45\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x70\x45\x7a\x1b\x5c"; + return "\x04\x4b\x70\x45\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x70\x45\x30\x1b\x5c"; + return "\x04\x4b\x70\x45\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x70\x45\x31\x1b\x5c"; + return "\x04\x4b\x70\x45\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x70\x45\x32\x1b\x5c"; + return "\x04\x4b\x70\x45\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x70\x45\x33\x1b\x5c"; + return "\x04\x4b\x70\x45\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x70\x45\x34\x1b\x5c"; + return "\x04\x4b\x70\x45\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x70\x45\x35\x1b\x5c"; + return "\x04\x4b\x70\x45\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x70\x45\x36\x1b\x5c"; + return "\x04\x4b\x70\x45\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x70\x45\x37\x1b\x5c"; + return "\x04\x4b\x70\x45\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x70\x45\x38\x1b\x5c"; + return "\x04\x4b\x70\x45\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x70\x45\x39\x1b\x5c"; + return "\x04\x4b\x70\x45\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x70\x45\x2e\x1b\x5c"; + return "\x04\x4b\x70\x45\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x70\x45\x2d\x1b\x5c"; + return "\x04\x4b\x70\x45\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x70\x45\x3a\x1b\x5c"; + return "\x04\x4b\x70\x45\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x70\x45\x2b\x1b\x5c"; + return "\x04\x4b\x70\x45\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x70\x45\x3d\x1b\x5c"; + return "\x04\x4b\x70\x45\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x70\x45\x5e\x1b\x5c"; + return "\x04\x4b\x70\x45\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x70\x45\x21\x1b\x5c"; + return "\x04\x4b\x70\x45\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x70\x45\x2f\x1b\x5c"; + return "\x04\x4b\x70\x45\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x70\x45\x2a\x1b\x5c"; + return "\x04\x4b\x70\x45\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x70\x45\x3f\x1b\x5c"; + return "\x04\x4b\x70\x45\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x70\x45\x26\x1b\x5c"; + return "\x04\x4b\x70\x45\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x70\x45\x3c\x1b\x5c"; + return "\x04\x4b\x70\x45\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x70\x45\x3e\x1b\x5c"; + return "\x04\x4b\x70\x45\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x70\x45\x28\x1b\x5c"; + return "\x04\x4b\x70\x45\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x70\x45\x29\x1b\x5c"; + return "\x04\x4b\x70\x45\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x70\x45\x5b\x1b\x5c"; + return "\x04\x4b\x70\x45\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x70\x45\x5d\x1b\x5c"; + return "\x04\x4b\x70\x45\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x70\x45\x7b\x1b\x5c"; + return "\x04\x4b\x70\x45\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x70\x45\x7d\x1b\x5c"; + return "\x04\x4b\x70\x45\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x70\x45\x40\x1b\x5c"; + return "\x04\x4b\x70\x45\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x70\x45\x25\x1b\x5c"; + return "\x04\x4b\x70\x45\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x70\x45\x24\x1b\x5c"; + return "\x04\x4b\x70\x45\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x70\x45\x23\x1b\x5c"; + return "\x04\x4b\x70\x45\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x70\x45\x42\x41\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x70\x45\x42\x42\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x70\x45\x42\x43\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x70\x45\x42\x44\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x70\x45\x42\x45\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x70\x45\x42\x46\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x70\x45\x42\x47\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x70\x45\x42\x48\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x70\x45\x42\x49\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x70\x45\x42\x4a\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x70\x45\x42\x4b\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x70\x45\x42\x4c\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x70\x45\x42\x4d\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x70\x45\x42\x4e\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x70\x45\x42\x4f\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x70\x45\x42\x50\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x70\x45\x42\x51\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x70\x45\x42\x52\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x70\x45\x42\x53\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x70\x45\x42\x54\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x70\x45\x42\x55\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x70\x45\x42\x56\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x70\x45\x42\x57\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x70\x45\x42\x58\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x70\x45\x42\x59\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x70\x45\x42\x5a\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x45\x42\x61\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x45\x42\x62\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x70\x45\x42\x63\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x70\x45\x42\x64\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x45\x42\x65\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x45\x42\x66\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x70\x45\x42\x67\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x70\x45\x42\x68\x1b\x5c"; + return "\x05\x4b\x70\x45\x42\x68"; } // end switch(key) case 0x3: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x70\x46\x41\x1b\x5c"; + return "\x04\x4b\x70\x46\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x70\x46\x42\x1b\x5c"; + return "\x04\x4b\x70\x46\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x70\x46\x43\x1b\x5c"; + return "\x04\x4b\x70\x46\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x70\x46\x44\x1b\x5c"; + return "\x04\x4b\x70\x46\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x70\x46\x45\x1b\x5c"; + return "\x04\x4b\x70\x46\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x70\x46\x46\x1b\x5c"; + return "\x04\x4b\x70\x46\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x70\x46\x47\x1b\x5c"; + return "\x04\x4b\x70\x46\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x70\x46\x48\x1b\x5c"; + return "\x04\x4b\x70\x46\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x70\x46\x49\x1b\x5c"; + return "\x04\x4b\x70\x46\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x70\x46\x4a\x1b\x5c"; + return "\x04\x4b\x70\x46\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x70\x46\x4b\x1b\x5c"; + return "\x04\x4b\x70\x46\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x70\x46\x4c\x1b\x5c"; + return "\x04\x4b\x70\x46\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x70\x46\x4d\x1b\x5c"; + return "\x04\x4b\x70\x46\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x70\x46\x4e\x1b\x5c"; + return "\x04\x4b\x70\x46\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x70\x46\x4f\x1b\x5c"; + return "\x04\x4b\x70\x46\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x70\x46\x50\x1b\x5c"; + return "\x04\x4b\x70\x46\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x70\x46\x51\x1b\x5c"; + return "\x04\x4b\x70\x46\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x70\x46\x52\x1b\x5c"; + return "\x04\x4b\x70\x46\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x70\x46\x53\x1b\x5c"; + return "\x04\x4b\x70\x46\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x70\x46\x54\x1b\x5c"; + return "\x04\x4b\x70\x46\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x70\x46\x55\x1b\x5c"; + return "\x04\x4b\x70\x46\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x70\x46\x56\x1b\x5c"; + return "\x04\x4b\x70\x46\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x70\x46\x57\x1b\x5c"; + return "\x04\x4b\x70\x46\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x70\x46\x58\x1b\x5c"; + return "\x04\x4b\x70\x46\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x70\x46\x59\x1b\x5c"; + return "\x04\x4b\x70\x46\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x70\x46\x5a\x1b\x5c"; + return "\x04\x4b\x70\x46\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x70\x46\x61\x1b\x5c"; + return "\x04\x4b\x70\x46\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x70\x46\x62\x1b\x5c"; + return "\x04\x4b\x70\x46\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x70\x46\x63\x1b\x5c"; + return "\x04\x4b\x70\x46\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x70\x46\x64\x1b\x5c"; + return "\x04\x4b\x70\x46\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x70\x46\x65\x1b\x5c"; + return "\x04\x4b\x70\x46\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x70\x46\x66\x1b\x5c"; + return "\x04\x4b\x70\x46\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x70\x46\x67\x1b\x5c"; + return "\x04\x4b\x70\x46\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x70\x46\x68\x1b\x5c"; + return "\x04\x4b\x70\x46\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x70\x46\x69\x1b\x5c"; + return "\x04\x4b\x70\x46\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x70\x46\x6a\x1b\x5c"; + return "\x04\x4b\x70\x46\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x70\x46\x6b\x1b\x5c"; + return "\x04\x4b\x70\x46\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x70\x46\x6c\x1b\x5c"; + return "\x04\x4b\x70\x46\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x70\x46\x6d\x1b\x5c"; + return "\x04\x4b\x70\x46\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x70\x46\x6e\x1b\x5c"; + return "\x04\x4b\x70\x46\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x70\x46\x6f\x1b\x5c"; + return "\x04\x4b\x70\x46\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x70\x46\x70\x1b\x5c"; + return "\x04\x4b\x70\x46\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x70\x46\x71\x1b\x5c"; + return "\x04\x4b\x70\x46\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x70\x46\x72\x1b\x5c"; + return "\x04\x4b\x70\x46\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x46\x73\x1b\x5c"; + return "\x04\x4b\x70\x46\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x70\x46\x74\x1b\x5c"; + return "\x04\x4b\x70\x46\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x46\x75\x1b\x5c"; + return "\x04\x4b\x70\x46\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x70\x46\x76\x1b\x5c"; + return "\x04\x4b\x70\x46\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x70\x46\x77\x1b\x5c"; + return "\x04\x4b\x70\x46\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x70\x46\x78\x1b\x5c"; + return "\x04\x4b\x70\x46\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x70\x46\x79\x1b\x5c"; + return "\x04\x4b\x70\x46\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x70\x46\x7a\x1b\x5c"; + return "\x04\x4b\x70\x46\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x70\x46\x30\x1b\x5c"; + return "\x04\x4b\x70\x46\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x70\x46\x31\x1b\x5c"; + return "\x04\x4b\x70\x46\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x70\x46\x32\x1b\x5c"; + return "\x04\x4b\x70\x46\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x70\x46\x33\x1b\x5c"; + return "\x04\x4b\x70\x46\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x70\x46\x34\x1b\x5c"; + return "\x04\x4b\x70\x46\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x70\x46\x35\x1b\x5c"; + return "\x04\x4b\x70\x46\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x70\x46\x36\x1b\x5c"; + return "\x04\x4b\x70\x46\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x70\x46\x37\x1b\x5c"; + return "\x04\x4b\x70\x46\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x70\x46\x38\x1b\x5c"; + return "\x04\x4b\x70\x46\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x70\x46\x39\x1b\x5c"; + return "\x04\x4b\x70\x46\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x70\x46\x2e\x1b\x5c"; + return "\x04\x4b\x70\x46\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x70\x46\x2d\x1b\x5c"; + return "\x04\x4b\x70\x46\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x70\x46\x3a\x1b\x5c"; + return "\x04\x4b\x70\x46\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x70\x46\x2b\x1b\x5c"; + return "\x04\x4b\x70\x46\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x70\x46\x3d\x1b\x5c"; + return "\x04\x4b\x70\x46\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x70\x46\x5e\x1b\x5c"; + return "\x04\x4b\x70\x46\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x70\x46\x21\x1b\x5c"; + return "\x04\x4b\x70\x46\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x70\x46\x2f\x1b\x5c"; + return "\x04\x4b\x70\x46\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x70\x46\x2a\x1b\x5c"; + return "\x04\x4b\x70\x46\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x70\x46\x3f\x1b\x5c"; + return "\x04\x4b\x70\x46\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x70\x46\x26\x1b\x5c"; + return "\x04\x4b\x70\x46\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x70\x46\x3c\x1b\x5c"; + return "\x04\x4b\x70\x46\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x70\x46\x3e\x1b\x5c"; + return "\x04\x4b\x70\x46\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x70\x46\x28\x1b\x5c"; + return "\x04\x4b\x70\x46\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x70\x46\x29\x1b\x5c"; + return "\x04\x4b\x70\x46\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x70\x46\x5b\x1b\x5c"; + return "\x04\x4b\x70\x46\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x70\x46\x5d\x1b\x5c"; + return "\x04\x4b\x70\x46\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x70\x46\x7b\x1b\x5c"; + return "\x04\x4b\x70\x46\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x70\x46\x7d\x1b\x5c"; + return "\x04\x4b\x70\x46\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x70\x46\x40\x1b\x5c"; + return "\x04\x4b\x70\x46\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x70\x46\x25\x1b\x5c"; + return "\x04\x4b\x70\x46\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x70\x46\x24\x1b\x5c"; + return "\x04\x4b\x70\x46\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x70\x46\x23\x1b\x5c"; + return "\x04\x4b\x70\x46\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x70\x46\x42\x41\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x70\x46\x42\x42\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x70\x46\x42\x43\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x70\x46\x42\x44\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x70\x46\x42\x45\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x70\x46\x42\x46\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x70\x46\x42\x47\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x70\x46\x42\x48\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x70\x46\x42\x49\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x70\x46\x42\x4a\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x70\x46\x42\x4b\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x70\x46\x42\x4c\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x70\x46\x42\x4d\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x70\x46\x42\x4e\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x70\x46\x42\x4f\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x70\x46\x42\x50\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x70\x46\x42\x51\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x70\x46\x42\x52\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x70\x46\x42\x53\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x70\x46\x42\x54\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x70\x46\x42\x55\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x70\x46\x42\x56\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x70\x46\x42\x57\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x70\x46\x42\x58\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x70\x46\x42\x59\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x70\x46\x42\x5a\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x46\x42\x61\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x46\x42\x62\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x70\x46\x42\x63\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x70\x46\x42\x64\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x46\x42\x65\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x46\x42\x66\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x70\x46\x42\x67\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x70\x46\x42\x68\x1b\x5c"; + return "\x05\x4b\x70\x46\x42\x68"; } // end switch(key) case 0x4: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x70\x43\x41\x1b\x5c"; + return "\x04\x4b\x70\x43\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x70\x43\x42\x1b\x5c"; + return "\x04\x4b\x70\x43\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x70\x43\x43\x1b\x5c"; + return "\x04\x4b\x70\x43\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x70\x43\x44\x1b\x5c"; + return "\x04\x4b\x70\x43\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x70\x43\x45\x1b\x5c"; + return "\x04\x4b\x70\x43\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x70\x43\x46\x1b\x5c"; + return "\x04\x4b\x70\x43\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x70\x43\x47\x1b\x5c"; + return "\x04\x4b\x70\x43\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x70\x43\x48\x1b\x5c"; + return "\x04\x4b\x70\x43\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x70\x43\x49\x1b\x5c"; + return "\x04\x4b\x70\x43\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x70\x43\x4a\x1b\x5c"; + return "\x04\x4b\x70\x43\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x70\x43\x4b\x1b\x5c"; + return "\x04\x4b\x70\x43\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x70\x43\x4c\x1b\x5c"; + return "\x04\x4b\x70\x43\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x70\x43\x4d\x1b\x5c"; + return "\x04\x4b\x70\x43\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x70\x43\x4e\x1b\x5c"; + return "\x04\x4b\x70\x43\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x70\x43\x4f\x1b\x5c"; + return "\x04\x4b\x70\x43\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x70\x43\x50\x1b\x5c"; + return "\x04\x4b\x70\x43\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x70\x43\x51\x1b\x5c"; + return "\x04\x4b\x70\x43\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x70\x43\x52\x1b\x5c"; + return "\x04\x4b\x70\x43\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x70\x43\x53\x1b\x5c"; + return "\x04\x4b\x70\x43\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x70\x43\x54\x1b\x5c"; + return "\x04\x4b\x70\x43\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x70\x43\x55\x1b\x5c"; + return "\x04\x4b\x70\x43\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x70\x43\x56\x1b\x5c"; + return "\x04\x4b\x70\x43\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x70\x43\x57\x1b\x5c"; + return "\x04\x4b\x70\x43\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x70\x43\x58\x1b\x5c"; + return "\x04\x4b\x70\x43\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x70\x43\x59\x1b\x5c"; + return "\x04\x4b\x70\x43\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x70\x43\x5a\x1b\x5c"; + return "\x04\x4b\x70\x43\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x70\x43\x61\x1b\x5c"; + return "\x04\x4b\x70\x43\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x70\x43\x62\x1b\x5c"; + return "\x04\x4b\x70\x43\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x70\x43\x63\x1b\x5c"; + return "\x04\x4b\x70\x43\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x70\x43\x64\x1b\x5c"; + return "\x04\x4b\x70\x43\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x70\x43\x65\x1b\x5c"; + return "\x04\x4b\x70\x43\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x70\x43\x66\x1b\x5c"; + return "\x04\x4b\x70\x43\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x70\x43\x67\x1b\x5c"; + return "\x04\x4b\x70\x43\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x70\x43\x68\x1b\x5c"; + return "\x04\x4b\x70\x43\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x70\x43\x69\x1b\x5c"; + return "\x04\x4b\x70\x43\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x70\x43\x6a\x1b\x5c"; + return "\x04\x4b\x70\x43\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x70\x43\x6b\x1b\x5c"; + return "\x04\x4b\x70\x43\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x70\x43\x6c\x1b\x5c"; + return "\x04\x4b\x70\x43\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x70\x43\x6d\x1b\x5c"; + return "\x04\x4b\x70\x43\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x70\x43\x6e\x1b\x5c"; + return "\x04\x4b\x70\x43\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x70\x43\x6f\x1b\x5c"; + return "\x04\x4b\x70\x43\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x70\x43\x70\x1b\x5c"; + return "\x04\x4b\x70\x43\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x70\x43\x71\x1b\x5c"; + return "\x04\x4b\x70\x43\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x70\x43\x72\x1b\x5c"; + return "\x04\x4b\x70\x43\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x43\x73\x1b\x5c"; + return "\x04\x4b\x70\x43\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x70\x43\x74\x1b\x5c"; + return "\x04\x4b\x70\x43\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x43\x75\x1b\x5c"; + return "\x04\x4b\x70\x43\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x70\x43\x76\x1b\x5c"; + return "\x04\x4b\x70\x43\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x70\x43\x77\x1b\x5c"; + return "\x04\x4b\x70\x43\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x70\x43\x78\x1b\x5c"; + return "\x04\x4b\x70\x43\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x70\x43\x79\x1b\x5c"; + return "\x04\x4b\x70\x43\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x70\x43\x7a\x1b\x5c"; + return "\x04\x4b\x70\x43\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x70\x43\x30\x1b\x5c"; + return "\x04\x4b\x70\x43\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x70\x43\x31\x1b\x5c"; + return "\x04\x4b\x70\x43\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x70\x43\x32\x1b\x5c"; + return "\x04\x4b\x70\x43\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x70\x43\x33\x1b\x5c"; + return "\x04\x4b\x70\x43\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x70\x43\x34\x1b\x5c"; + return "\x04\x4b\x70\x43\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x70\x43\x35\x1b\x5c"; + return "\x04\x4b\x70\x43\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x70\x43\x36\x1b\x5c"; + return "\x04\x4b\x70\x43\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x70\x43\x37\x1b\x5c"; + return "\x04\x4b\x70\x43\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x70\x43\x38\x1b\x5c"; + return "\x04\x4b\x70\x43\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x70\x43\x39\x1b\x5c"; + return "\x04\x4b\x70\x43\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x70\x43\x2e\x1b\x5c"; + return "\x04\x4b\x70\x43\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x70\x43\x2d\x1b\x5c"; + return "\x04\x4b\x70\x43\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x70\x43\x3a\x1b\x5c"; + return "\x04\x4b\x70\x43\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x70\x43\x2b\x1b\x5c"; + return "\x04\x4b\x70\x43\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x70\x43\x3d\x1b\x5c"; + return "\x04\x4b\x70\x43\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x70\x43\x5e\x1b\x5c"; + return "\x04\x4b\x70\x43\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x70\x43\x21\x1b\x5c"; + return "\x04\x4b\x70\x43\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x70\x43\x2f\x1b\x5c"; + return "\x04\x4b\x70\x43\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x70\x43\x2a\x1b\x5c"; + return "\x04\x4b\x70\x43\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x70\x43\x3f\x1b\x5c"; + return "\x04\x4b\x70\x43\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x70\x43\x26\x1b\x5c"; + return "\x04\x4b\x70\x43\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x70\x43\x3c\x1b\x5c"; + return "\x04\x4b\x70\x43\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x70\x43\x3e\x1b\x5c"; + return "\x04\x4b\x70\x43\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x70\x43\x28\x1b\x5c"; + return "\x04\x4b\x70\x43\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x70\x43\x29\x1b\x5c"; + return "\x04\x4b\x70\x43\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x70\x43\x5b\x1b\x5c"; + return "\x04\x4b\x70\x43\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x70\x43\x5d\x1b\x5c"; + return "\x04\x4b\x70\x43\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x70\x43\x7b\x1b\x5c"; + return "\x04\x4b\x70\x43\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x70\x43\x7d\x1b\x5c"; + return "\x04\x4b\x70\x43\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x70\x43\x40\x1b\x5c"; + return "\x04\x4b\x70\x43\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x70\x43\x25\x1b\x5c"; + return "\x04\x4b\x70\x43\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x70\x43\x24\x1b\x5c"; + return "\x04\x4b\x70\x43\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x70\x43\x23\x1b\x5c"; + return "\x04\x4b\x70\x43\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x70\x43\x42\x41\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x70\x43\x42\x42\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x70\x43\x42\x43\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x70\x43\x42\x44\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x70\x43\x42\x45\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x70\x43\x42\x46\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x70\x43\x42\x47\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x70\x43\x42\x48\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x70\x43\x42\x49\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x70\x43\x42\x4a\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x70\x43\x42\x4b\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x70\x43\x42\x4c\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x70\x43\x42\x4d\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x70\x43\x42\x4e\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x70\x43\x42\x4f\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x70\x43\x42\x50\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x70\x43\x42\x51\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x70\x43\x42\x52\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x70\x43\x42\x53\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x70\x43\x42\x54\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x70\x43\x42\x55\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x70\x43\x42\x56\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x70\x43\x42\x57\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x70\x43\x42\x58\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x70\x43\x42\x59\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x70\x43\x42\x5a\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x43\x42\x61\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x43\x42\x62\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x70\x43\x42\x63\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x70\x43\x42\x64\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x43\x42\x65\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x43\x42\x66\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x70\x43\x42\x67\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x70\x43\x42\x68\x1b\x5c"; + return "\x05\x4b\x70\x43\x42\x68"; } // end switch(key) case 0x5: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x70\x44\x41\x1b\x5c"; + return "\x04\x4b\x70\x44\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x70\x44\x42\x1b\x5c"; + return "\x04\x4b\x70\x44\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x70\x44\x43\x1b\x5c"; + return "\x04\x4b\x70\x44\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x70\x44\x44\x1b\x5c"; + return "\x04\x4b\x70\x44\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x70\x44\x45\x1b\x5c"; + return "\x04\x4b\x70\x44\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x70\x44\x46\x1b\x5c"; + return "\x04\x4b\x70\x44\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x70\x44\x47\x1b\x5c"; + return "\x04\x4b\x70\x44\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x70\x44\x48\x1b\x5c"; + return "\x04\x4b\x70\x44\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x70\x44\x49\x1b\x5c"; + return "\x04\x4b\x70\x44\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x70\x44\x4a\x1b\x5c"; + return "\x04\x4b\x70\x44\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x70\x44\x4b\x1b\x5c"; + return "\x04\x4b\x70\x44\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x70\x44\x4c\x1b\x5c"; + return "\x04\x4b\x70\x44\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x70\x44\x4d\x1b\x5c"; + return "\x04\x4b\x70\x44\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x70\x44\x4e\x1b\x5c"; + return "\x04\x4b\x70\x44\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x70\x44\x4f\x1b\x5c"; + return "\x04\x4b\x70\x44\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x70\x44\x50\x1b\x5c"; + return "\x04\x4b\x70\x44\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x70\x44\x51\x1b\x5c"; + return "\x04\x4b\x70\x44\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x70\x44\x52\x1b\x5c"; + return "\x04\x4b\x70\x44\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x70\x44\x53\x1b\x5c"; + return "\x04\x4b\x70\x44\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x70\x44\x54\x1b\x5c"; + return "\x04\x4b\x70\x44\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x70\x44\x55\x1b\x5c"; + return "\x04\x4b\x70\x44\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x70\x44\x56\x1b\x5c"; + return "\x04\x4b\x70\x44\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x70\x44\x57\x1b\x5c"; + return "\x04\x4b\x70\x44\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x70\x44\x58\x1b\x5c"; + return "\x04\x4b\x70\x44\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x70\x44\x59\x1b\x5c"; + return "\x04\x4b\x70\x44\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x70\x44\x5a\x1b\x5c"; + return "\x04\x4b\x70\x44\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x70\x44\x61\x1b\x5c"; + return "\x04\x4b\x70\x44\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x70\x44\x62\x1b\x5c"; + return "\x04\x4b\x70\x44\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x70\x44\x63\x1b\x5c"; + return "\x04\x4b\x70\x44\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x70\x44\x64\x1b\x5c"; + return "\x04\x4b\x70\x44\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x70\x44\x65\x1b\x5c"; + return "\x04\x4b\x70\x44\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x70\x44\x66\x1b\x5c"; + return "\x04\x4b\x70\x44\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x70\x44\x67\x1b\x5c"; + return "\x04\x4b\x70\x44\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x70\x44\x68\x1b\x5c"; + return "\x04\x4b\x70\x44\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x70\x44\x69\x1b\x5c"; + return "\x04\x4b\x70\x44\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x70\x44\x6a\x1b\x5c"; + return "\x04\x4b\x70\x44\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x70\x44\x6b\x1b\x5c"; + return "\x04\x4b\x70\x44\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x70\x44\x6c\x1b\x5c"; + return "\x04\x4b\x70\x44\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x70\x44\x6d\x1b\x5c"; + return "\x04\x4b\x70\x44\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x70\x44\x6e\x1b\x5c"; + return "\x04\x4b\x70\x44\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x70\x44\x6f\x1b\x5c"; + return "\x04\x4b\x70\x44\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x70\x44\x70\x1b\x5c"; + return "\x04\x4b\x70\x44\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x70\x44\x71\x1b\x5c"; + return "\x04\x4b\x70\x44\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x70\x44\x72\x1b\x5c"; + return "\x04\x4b\x70\x44\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x44\x73\x1b\x5c"; + return "\x04\x4b\x70\x44\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x70\x44\x74\x1b\x5c"; + return "\x04\x4b\x70\x44\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x44\x75\x1b\x5c"; + return "\x04\x4b\x70\x44\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x70\x44\x76\x1b\x5c"; + return "\x04\x4b\x70\x44\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x70\x44\x77\x1b\x5c"; + return "\x04\x4b\x70\x44\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x70\x44\x78\x1b\x5c"; + return "\x04\x4b\x70\x44\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x70\x44\x79\x1b\x5c"; + return "\x04\x4b\x70\x44\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x70\x44\x7a\x1b\x5c"; + return "\x04\x4b\x70\x44\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x70\x44\x30\x1b\x5c"; + return "\x04\x4b\x70\x44\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x70\x44\x31\x1b\x5c"; + return "\x04\x4b\x70\x44\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x70\x44\x32\x1b\x5c"; + return "\x04\x4b\x70\x44\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x70\x44\x33\x1b\x5c"; + return "\x04\x4b\x70\x44\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x70\x44\x34\x1b\x5c"; + return "\x04\x4b\x70\x44\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x70\x44\x35\x1b\x5c"; + return "\x04\x4b\x70\x44\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x70\x44\x36\x1b\x5c"; + return "\x04\x4b\x70\x44\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x70\x44\x37\x1b\x5c"; + return "\x04\x4b\x70\x44\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x70\x44\x38\x1b\x5c"; + return "\x04\x4b\x70\x44\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x70\x44\x39\x1b\x5c"; + return "\x04\x4b\x70\x44\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x70\x44\x2e\x1b\x5c"; + return "\x04\x4b\x70\x44\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x70\x44\x2d\x1b\x5c"; + return "\x04\x4b\x70\x44\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x70\x44\x3a\x1b\x5c"; + return "\x04\x4b\x70\x44\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x70\x44\x2b\x1b\x5c"; + return "\x04\x4b\x70\x44\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x70\x44\x3d\x1b\x5c"; + return "\x04\x4b\x70\x44\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x70\x44\x5e\x1b\x5c"; + return "\x04\x4b\x70\x44\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x70\x44\x21\x1b\x5c"; + return "\x04\x4b\x70\x44\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x70\x44\x2f\x1b\x5c"; + return "\x04\x4b\x70\x44\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x70\x44\x2a\x1b\x5c"; + return "\x04\x4b\x70\x44\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x70\x44\x3f\x1b\x5c"; + return "\x04\x4b\x70\x44\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x70\x44\x26\x1b\x5c"; + return "\x04\x4b\x70\x44\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x70\x44\x3c\x1b\x5c"; + return "\x04\x4b\x70\x44\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x70\x44\x3e\x1b\x5c"; + return "\x04\x4b\x70\x44\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x70\x44\x28\x1b\x5c"; + return "\x04\x4b\x70\x44\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x70\x44\x29\x1b\x5c"; + return "\x04\x4b\x70\x44\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x70\x44\x5b\x1b\x5c"; + return "\x04\x4b\x70\x44\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x70\x44\x5d\x1b\x5c"; + return "\x04\x4b\x70\x44\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x70\x44\x7b\x1b\x5c"; + return "\x04\x4b\x70\x44\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x70\x44\x7d\x1b\x5c"; + return "\x04\x4b\x70\x44\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x70\x44\x40\x1b\x5c"; + return "\x04\x4b\x70\x44\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x70\x44\x25\x1b\x5c"; + return "\x04\x4b\x70\x44\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x70\x44\x24\x1b\x5c"; + return "\x04\x4b\x70\x44\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x70\x44\x23\x1b\x5c"; + return "\x04\x4b\x70\x44\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x70\x44\x42\x41\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x70\x44\x42\x42\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x70\x44\x42\x43\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x70\x44\x42\x44\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x70\x44\x42\x45\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x70\x44\x42\x46\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x70\x44\x42\x47\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x70\x44\x42\x48\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x70\x44\x42\x49\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x70\x44\x42\x4a\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x70\x44\x42\x4b\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x70\x44\x42\x4c\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x70\x44\x42\x4d\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x70\x44\x42\x4e\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x70\x44\x42\x4f\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x70\x44\x42\x50\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x70\x44\x42\x51\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x70\x44\x42\x52\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x70\x44\x42\x53\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x70\x44\x42\x54\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x70\x44\x42\x55\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x70\x44\x42\x56\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x70\x44\x42\x57\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x70\x44\x42\x58\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x70\x44\x42\x59\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x70\x44\x42\x5a\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x44\x42\x61\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x44\x42\x62\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x70\x44\x42\x63\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x70\x44\x42\x64\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x44\x42\x65\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x44\x42\x66\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x70\x44\x42\x67\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x70\x44\x42\x68\x1b\x5c"; + return "\x05\x4b\x70\x44\x42\x68"; } // end switch(key) case 0x6: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x70\x47\x41\x1b\x5c"; + return "\x04\x4b\x70\x47\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x70\x47\x42\x1b\x5c"; + return "\x04\x4b\x70\x47\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x70\x47\x43\x1b\x5c"; + return "\x04\x4b\x70\x47\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x70\x47\x44\x1b\x5c"; + return "\x04\x4b\x70\x47\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x70\x47\x45\x1b\x5c"; + return "\x04\x4b\x70\x47\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x70\x47\x46\x1b\x5c"; + return "\x04\x4b\x70\x47\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x70\x47\x47\x1b\x5c"; + return "\x04\x4b\x70\x47\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x70\x47\x48\x1b\x5c"; + return "\x04\x4b\x70\x47\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x70\x47\x49\x1b\x5c"; + return "\x04\x4b\x70\x47\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x70\x47\x4a\x1b\x5c"; + return "\x04\x4b\x70\x47\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x70\x47\x4b\x1b\x5c"; + return "\x04\x4b\x70\x47\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x70\x47\x4c\x1b\x5c"; + return "\x04\x4b\x70\x47\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x70\x47\x4d\x1b\x5c"; + return "\x04\x4b\x70\x47\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x70\x47\x4e\x1b\x5c"; + return "\x04\x4b\x70\x47\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x70\x47\x4f\x1b\x5c"; + return "\x04\x4b\x70\x47\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x70\x47\x50\x1b\x5c"; + return "\x04\x4b\x70\x47\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x70\x47\x51\x1b\x5c"; + return "\x04\x4b\x70\x47\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x70\x47\x52\x1b\x5c"; + return "\x04\x4b\x70\x47\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x70\x47\x53\x1b\x5c"; + return "\x04\x4b\x70\x47\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x70\x47\x54\x1b\x5c"; + return "\x04\x4b\x70\x47\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x70\x47\x55\x1b\x5c"; + return "\x04\x4b\x70\x47\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x70\x47\x56\x1b\x5c"; + return "\x04\x4b\x70\x47\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x70\x47\x57\x1b\x5c"; + return "\x04\x4b\x70\x47\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x70\x47\x58\x1b\x5c"; + return "\x04\x4b\x70\x47\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x70\x47\x59\x1b\x5c"; + return "\x04\x4b\x70\x47\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x70\x47\x5a\x1b\x5c"; + return "\x04\x4b\x70\x47\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x70\x47\x61\x1b\x5c"; + return "\x04\x4b\x70\x47\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x70\x47\x62\x1b\x5c"; + return "\x04\x4b\x70\x47\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x70\x47\x63\x1b\x5c"; + return "\x04\x4b\x70\x47\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x70\x47\x64\x1b\x5c"; + return "\x04\x4b\x70\x47\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x70\x47\x65\x1b\x5c"; + return "\x04\x4b\x70\x47\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x70\x47\x66\x1b\x5c"; + return "\x04\x4b\x70\x47\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x70\x47\x67\x1b\x5c"; + return "\x04\x4b\x70\x47\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x70\x47\x68\x1b\x5c"; + return "\x04\x4b\x70\x47\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x70\x47\x69\x1b\x5c"; + return "\x04\x4b\x70\x47\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x70\x47\x6a\x1b\x5c"; + return "\x04\x4b\x70\x47\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x70\x47\x6b\x1b\x5c"; + return "\x04\x4b\x70\x47\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x70\x47\x6c\x1b\x5c"; + return "\x04\x4b\x70\x47\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x70\x47\x6d\x1b\x5c"; + return "\x04\x4b\x70\x47\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x70\x47\x6e\x1b\x5c"; + return "\x04\x4b\x70\x47\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x70\x47\x6f\x1b\x5c"; + return "\x04\x4b\x70\x47\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x70\x47\x70\x1b\x5c"; + return "\x04\x4b\x70\x47\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x70\x47\x71\x1b\x5c"; + return "\x04\x4b\x70\x47\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x70\x47\x72\x1b\x5c"; + return "\x04\x4b\x70\x47\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x47\x73\x1b\x5c"; + return "\x04\x4b\x70\x47\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x70\x47\x74\x1b\x5c"; + return "\x04\x4b\x70\x47\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x47\x75\x1b\x5c"; + return "\x04\x4b\x70\x47\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x70\x47\x76\x1b\x5c"; + return "\x04\x4b\x70\x47\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x70\x47\x77\x1b\x5c"; + return "\x04\x4b\x70\x47\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x70\x47\x78\x1b\x5c"; + return "\x04\x4b\x70\x47\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x70\x47\x79\x1b\x5c"; + return "\x04\x4b\x70\x47\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x70\x47\x7a\x1b\x5c"; + return "\x04\x4b\x70\x47\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x70\x47\x30\x1b\x5c"; + return "\x04\x4b\x70\x47\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x70\x47\x31\x1b\x5c"; + return "\x04\x4b\x70\x47\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x70\x47\x32\x1b\x5c"; + return "\x04\x4b\x70\x47\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x70\x47\x33\x1b\x5c"; + return "\x04\x4b\x70\x47\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x70\x47\x34\x1b\x5c"; + return "\x04\x4b\x70\x47\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x70\x47\x35\x1b\x5c"; + return "\x04\x4b\x70\x47\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x70\x47\x36\x1b\x5c"; + return "\x04\x4b\x70\x47\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x70\x47\x37\x1b\x5c"; + return "\x04\x4b\x70\x47\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x70\x47\x38\x1b\x5c"; + return "\x04\x4b\x70\x47\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x70\x47\x39\x1b\x5c"; + return "\x04\x4b\x70\x47\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x70\x47\x2e\x1b\x5c"; + return "\x04\x4b\x70\x47\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x70\x47\x2d\x1b\x5c"; + return "\x04\x4b\x70\x47\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x70\x47\x3a\x1b\x5c"; + return "\x04\x4b\x70\x47\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x70\x47\x2b\x1b\x5c"; + return "\x04\x4b\x70\x47\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x70\x47\x3d\x1b\x5c"; + return "\x04\x4b\x70\x47\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x70\x47\x5e\x1b\x5c"; + return "\x04\x4b\x70\x47\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x70\x47\x21\x1b\x5c"; + return "\x04\x4b\x70\x47\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x70\x47\x2f\x1b\x5c"; + return "\x04\x4b\x70\x47\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x70\x47\x2a\x1b\x5c"; + return "\x04\x4b\x70\x47\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x70\x47\x3f\x1b\x5c"; + return "\x04\x4b\x70\x47\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x70\x47\x26\x1b\x5c"; + return "\x04\x4b\x70\x47\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x70\x47\x3c\x1b\x5c"; + return "\x04\x4b\x70\x47\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x70\x47\x3e\x1b\x5c"; + return "\x04\x4b\x70\x47\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x70\x47\x28\x1b\x5c"; + return "\x04\x4b\x70\x47\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x70\x47\x29\x1b\x5c"; + return "\x04\x4b\x70\x47\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x70\x47\x5b\x1b\x5c"; + return "\x04\x4b\x70\x47\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x70\x47\x5d\x1b\x5c"; + return "\x04\x4b\x70\x47\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x70\x47\x7b\x1b\x5c"; + return "\x04\x4b\x70\x47\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x70\x47\x7d\x1b\x5c"; + return "\x04\x4b\x70\x47\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x70\x47\x40\x1b\x5c"; + return "\x04\x4b\x70\x47\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x70\x47\x25\x1b\x5c"; + return "\x04\x4b\x70\x47\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x70\x47\x24\x1b\x5c"; + return "\x04\x4b\x70\x47\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x70\x47\x23\x1b\x5c"; + return "\x04\x4b\x70\x47\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x70\x47\x42\x41\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x70\x47\x42\x42\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x70\x47\x42\x43\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x70\x47\x42\x44\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x70\x47\x42\x45\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x70\x47\x42\x46\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x70\x47\x42\x47\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x70\x47\x42\x48\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x70\x47\x42\x49\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x70\x47\x42\x4a\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x70\x47\x42\x4b\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x70\x47\x42\x4c\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x70\x47\x42\x4d\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x70\x47\x42\x4e\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x70\x47\x42\x4f\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x70\x47\x42\x50\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x70\x47\x42\x51\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x70\x47\x42\x52\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x70\x47\x42\x53\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x70\x47\x42\x54\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x70\x47\x42\x55\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x70\x47\x42\x56\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x70\x47\x42\x57\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x70\x47\x42\x58\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x70\x47\x42\x59\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x70\x47\x42\x5a\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x47\x42\x61\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x47\x42\x62\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x70\x47\x42\x63\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x70\x47\x42\x64\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x47\x42\x65\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x47\x42\x66\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x70\x47\x42\x67\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x70\x47\x42\x68\x1b\x5c"; + return "\x05\x4b\x70\x47\x42\x68"; } // end switch(key) case 0x7: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x70\x48\x41\x1b\x5c"; + return "\x04\x4b\x70\x48\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x70\x48\x42\x1b\x5c"; + return "\x04\x4b\x70\x48\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x70\x48\x43\x1b\x5c"; + return "\x04\x4b\x70\x48\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x70\x48\x44\x1b\x5c"; + return "\x04\x4b\x70\x48\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x70\x48\x45\x1b\x5c"; + return "\x04\x4b\x70\x48\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x70\x48\x46\x1b\x5c"; + return "\x04\x4b\x70\x48\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x70\x48\x47\x1b\x5c"; + return "\x04\x4b\x70\x48\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x70\x48\x48\x1b\x5c"; + return "\x04\x4b\x70\x48\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x70\x48\x49\x1b\x5c"; + return "\x04\x4b\x70\x48\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x70\x48\x4a\x1b\x5c"; + return "\x04\x4b\x70\x48\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x70\x48\x4b\x1b\x5c"; + return "\x04\x4b\x70\x48\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x70\x48\x4c\x1b\x5c"; + return "\x04\x4b\x70\x48\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x70\x48\x4d\x1b\x5c"; + return "\x04\x4b\x70\x48\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x70\x48\x4e\x1b\x5c"; + return "\x04\x4b\x70\x48\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x70\x48\x4f\x1b\x5c"; + return "\x04\x4b\x70\x48\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x70\x48\x50\x1b\x5c"; + return "\x04\x4b\x70\x48\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x70\x48\x51\x1b\x5c"; + return "\x04\x4b\x70\x48\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x70\x48\x52\x1b\x5c"; + return "\x04\x4b\x70\x48\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x70\x48\x53\x1b\x5c"; + return "\x04\x4b\x70\x48\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x70\x48\x54\x1b\x5c"; + return "\x04\x4b\x70\x48\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x70\x48\x55\x1b\x5c"; + return "\x04\x4b\x70\x48\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x70\x48\x56\x1b\x5c"; + return "\x04\x4b\x70\x48\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x70\x48\x57\x1b\x5c"; + return "\x04\x4b\x70\x48\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x70\x48\x58\x1b\x5c"; + return "\x04\x4b\x70\x48\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x70\x48\x59\x1b\x5c"; + return "\x04\x4b\x70\x48\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x70\x48\x5a\x1b\x5c"; + return "\x04\x4b\x70\x48\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x70\x48\x61\x1b\x5c"; + return "\x04\x4b\x70\x48\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x70\x48\x62\x1b\x5c"; + return "\x04\x4b\x70\x48\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x70\x48\x63\x1b\x5c"; + return "\x04\x4b\x70\x48\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x70\x48\x64\x1b\x5c"; + return "\x04\x4b\x70\x48\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x70\x48\x65\x1b\x5c"; + return "\x04\x4b\x70\x48\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x70\x48\x66\x1b\x5c"; + return "\x04\x4b\x70\x48\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x70\x48\x67\x1b\x5c"; + return "\x04\x4b\x70\x48\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x70\x48\x68\x1b\x5c"; + return "\x04\x4b\x70\x48\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x70\x48\x69\x1b\x5c"; + return "\x04\x4b\x70\x48\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x70\x48\x6a\x1b\x5c"; + return "\x04\x4b\x70\x48\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x70\x48\x6b\x1b\x5c"; + return "\x04\x4b\x70\x48\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x70\x48\x6c\x1b\x5c"; + return "\x04\x4b\x70\x48\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x70\x48\x6d\x1b\x5c"; + return "\x04\x4b\x70\x48\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x70\x48\x6e\x1b\x5c"; + return "\x04\x4b\x70\x48\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x70\x48\x6f\x1b\x5c"; + return "\x04\x4b\x70\x48\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x70\x48\x70\x1b\x5c"; + return "\x04\x4b\x70\x48\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x70\x48\x71\x1b\x5c"; + return "\x04\x4b\x70\x48\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x70\x48\x72\x1b\x5c"; + return "\x04\x4b\x70\x48\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x48\x73\x1b\x5c"; + return "\x04\x4b\x70\x48\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x70\x48\x74\x1b\x5c"; + return "\x04\x4b\x70\x48\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x48\x75\x1b\x5c"; + return "\x04\x4b\x70\x48\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x70\x48\x76\x1b\x5c"; + return "\x04\x4b\x70\x48\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x70\x48\x77\x1b\x5c"; + return "\x04\x4b\x70\x48\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x70\x48\x78\x1b\x5c"; + return "\x04\x4b\x70\x48\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x70\x48\x79\x1b\x5c"; + return "\x04\x4b\x70\x48\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x70\x48\x7a\x1b\x5c"; + return "\x04\x4b\x70\x48\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x70\x48\x30\x1b\x5c"; + return "\x04\x4b\x70\x48\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x70\x48\x31\x1b\x5c"; + return "\x04\x4b\x70\x48\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x70\x48\x32\x1b\x5c"; + return "\x04\x4b\x70\x48\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x70\x48\x33\x1b\x5c"; + return "\x04\x4b\x70\x48\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x70\x48\x34\x1b\x5c"; + return "\x04\x4b\x70\x48\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x70\x48\x35\x1b\x5c"; + return "\x04\x4b\x70\x48\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x70\x48\x36\x1b\x5c"; + return "\x04\x4b\x70\x48\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x70\x48\x37\x1b\x5c"; + return "\x04\x4b\x70\x48\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x70\x48\x38\x1b\x5c"; + return "\x04\x4b\x70\x48\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x70\x48\x39\x1b\x5c"; + return "\x04\x4b\x70\x48\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x70\x48\x2e\x1b\x5c"; + return "\x04\x4b\x70\x48\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x70\x48\x2d\x1b\x5c"; + return "\x04\x4b\x70\x48\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x70\x48\x3a\x1b\x5c"; + return "\x04\x4b\x70\x48\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x70\x48\x2b\x1b\x5c"; + return "\x04\x4b\x70\x48\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x70\x48\x3d\x1b\x5c"; + return "\x04\x4b\x70\x48\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x70\x48\x5e\x1b\x5c"; + return "\x04\x4b\x70\x48\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x70\x48\x21\x1b\x5c"; + return "\x04\x4b\x70\x48\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x70\x48\x2f\x1b\x5c"; + return "\x04\x4b\x70\x48\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x70\x48\x2a\x1b\x5c"; + return "\x04\x4b\x70\x48\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x70\x48\x3f\x1b\x5c"; + return "\x04\x4b\x70\x48\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x70\x48\x26\x1b\x5c"; + return "\x04\x4b\x70\x48\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x70\x48\x3c\x1b\x5c"; + return "\x04\x4b\x70\x48\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x70\x48\x3e\x1b\x5c"; + return "\x04\x4b\x70\x48\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x70\x48\x28\x1b\x5c"; + return "\x04\x4b\x70\x48\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x70\x48\x29\x1b\x5c"; + return "\x04\x4b\x70\x48\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x70\x48\x5b\x1b\x5c"; + return "\x04\x4b\x70\x48\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x70\x48\x5d\x1b\x5c"; + return "\x04\x4b\x70\x48\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x70\x48\x7b\x1b\x5c"; + return "\x04\x4b\x70\x48\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x70\x48\x7d\x1b\x5c"; + return "\x04\x4b\x70\x48\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x70\x48\x40\x1b\x5c"; + return "\x04\x4b\x70\x48\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x70\x48\x25\x1b\x5c"; + return "\x04\x4b\x70\x48\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x70\x48\x24\x1b\x5c"; + return "\x04\x4b\x70\x48\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x70\x48\x23\x1b\x5c"; + return "\x04\x4b\x70\x48\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x70\x48\x42\x41\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x70\x48\x42\x42\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x70\x48\x42\x43\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x70\x48\x42\x44\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x70\x48\x42\x45\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x70\x48\x42\x46\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x70\x48\x42\x47\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x70\x48\x42\x48\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x70\x48\x42\x49\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x70\x48\x42\x4a\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x70\x48\x42\x4b\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x70\x48\x42\x4c\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x70\x48\x42\x4d\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x70\x48\x42\x4e\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x70\x48\x42\x4f\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x70\x48\x42\x50\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x70\x48\x42\x51\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x70\x48\x42\x52\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x70\x48\x42\x53\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x70\x48\x42\x54\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x70\x48\x42\x55\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x70\x48\x42\x56\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x70\x48\x42\x57\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x70\x48\x42\x58\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x70\x48\x42\x59\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x70\x48\x42\x5a\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x48\x42\x61\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x48\x42\x62\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x70\x48\x42\x63\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x70\x48\x42\x64\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x48\x42\x65\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x48\x42\x66\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x70\x48\x42\x67\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x70\x48\x42\x68\x1b\x5c"; + return "\x05\x4b\x70\x48\x42\x68"; } // end switch(key) case 0x8: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x70\x49\x41\x1b\x5c"; + return "\x04\x4b\x70\x49\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x70\x49\x42\x1b\x5c"; + return "\x04\x4b\x70\x49\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x70\x49\x43\x1b\x5c"; + return "\x04\x4b\x70\x49\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x70\x49\x44\x1b\x5c"; + return "\x04\x4b\x70\x49\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x70\x49\x45\x1b\x5c"; + return "\x04\x4b\x70\x49\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x70\x49\x46\x1b\x5c"; + return "\x04\x4b\x70\x49\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x70\x49\x47\x1b\x5c"; + return "\x04\x4b\x70\x49\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x70\x49\x48\x1b\x5c"; + return "\x04\x4b\x70\x49\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x70\x49\x49\x1b\x5c"; + return "\x04\x4b\x70\x49\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x70\x49\x4a\x1b\x5c"; + return "\x04\x4b\x70\x49\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x70\x49\x4b\x1b\x5c"; + return "\x04\x4b\x70\x49\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x70\x49\x4c\x1b\x5c"; + return "\x04\x4b\x70\x49\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x70\x49\x4d\x1b\x5c"; + return "\x04\x4b\x70\x49\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x70\x49\x4e\x1b\x5c"; + return "\x04\x4b\x70\x49\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x70\x49\x4f\x1b\x5c"; + return "\x04\x4b\x70\x49\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x70\x49\x50\x1b\x5c"; + return "\x04\x4b\x70\x49\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x70\x49\x51\x1b\x5c"; + return "\x04\x4b\x70\x49\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x70\x49\x52\x1b\x5c"; + return "\x04\x4b\x70\x49\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x70\x49\x53\x1b\x5c"; + return "\x04\x4b\x70\x49\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x70\x49\x54\x1b\x5c"; + return "\x04\x4b\x70\x49\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x70\x49\x55\x1b\x5c"; + return "\x04\x4b\x70\x49\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x70\x49\x56\x1b\x5c"; + return "\x04\x4b\x70\x49\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x70\x49\x57\x1b\x5c"; + return "\x04\x4b\x70\x49\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x70\x49\x58\x1b\x5c"; + return "\x04\x4b\x70\x49\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x70\x49\x59\x1b\x5c"; + return "\x04\x4b\x70\x49\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x70\x49\x5a\x1b\x5c"; + return "\x04\x4b\x70\x49\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x70\x49\x61\x1b\x5c"; + return "\x04\x4b\x70\x49\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x70\x49\x62\x1b\x5c"; + return "\x04\x4b\x70\x49\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x70\x49\x63\x1b\x5c"; + return "\x04\x4b\x70\x49\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x70\x49\x64\x1b\x5c"; + return "\x04\x4b\x70\x49\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x70\x49\x65\x1b\x5c"; + return "\x04\x4b\x70\x49\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x70\x49\x66\x1b\x5c"; + return "\x04\x4b\x70\x49\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x70\x49\x67\x1b\x5c"; + return "\x04\x4b\x70\x49\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x70\x49\x68\x1b\x5c"; + return "\x04\x4b\x70\x49\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x70\x49\x69\x1b\x5c"; + return "\x04\x4b\x70\x49\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x70\x49\x6a\x1b\x5c"; + return "\x04\x4b\x70\x49\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x70\x49\x6b\x1b\x5c"; + return "\x04\x4b\x70\x49\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x70\x49\x6c\x1b\x5c"; + return "\x04\x4b\x70\x49\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x70\x49\x6d\x1b\x5c"; + return "\x04\x4b\x70\x49\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x70\x49\x6e\x1b\x5c"; + return "\x04\x4b\x70\x49\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x70\x49\x6f\x1b\x5c"; + return "\x04\x4b\x70\x49\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x70\x49\x70\x1b\x5c"; + return "\x04\x4b\x70\x49\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x70\x49\x71\x1b\x5c"; + return "\x04\x4b\x70\x49\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x70\x49\x72\x1b\x5c"; + return "\x04\x4b\x70\x49\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x49\x73\x1b\x5c"; + return "\x04\x4b\x70\x49\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x70\x49\x74\x1b\x5c"; + return "\x04\x4b\x70\x49\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x49\x75\x1b\x5c"; + return "\x04\x4b\x70\x49\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x70\x49\x76\x1b\x5c"; + return "\x04\x4b\x70\x49\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x70\x49\x77\x1b\x5c"; + return "\x04\x4b\x70\x49\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x70\x49\x78\x1b\x5c"; + return "\x04\x4b\x70\x49\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x70\x49\x79\x1b\x5c"; + return "\x04\x4b\x70\x49\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x70\x49\x7a\x1b\x5c"; + return "\x04\x4b\x70\x49\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x70\x49\x30\x1b\x5c"; + return "\x04\x4b\x70\x49\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x70\x49\x31\x1b\x5c"; + return "\x04\x4b\x70\x49\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x70\x49\x32\x1b\x5c"; + return "\x04\x4b\x70\x49\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x70\x49\x33\x1b\x5c"; + return "\x04\x4b\x70\x49\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x70\x49\x34\x1b\x5c"; + return "\x04\x4b\x70\x49\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x70\x49\x35\x1b\x5c"; + return "\x04\x4b\x70\x49\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x70\x49\x36\x1b\x5c"; + return "\x04\x4b\x70\x49\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x70\x49\x37\x1b\x5c"; + return "\x04\x4b\x70\x49\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x70\x49\x38\x1b\x5c"; + return "\x04\x4b\x70\x49\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x70\x49\x39\x1b\x5c"; + return "\x04\x4b\x70\x49\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x70\x49\x2e\x1b\x5c"; + return "\x04\x4b\x70\x49\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x70\x49\x2d\x1b\x5c"; + return "\x04\x4b\x70\x49\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x70\x49\x3a\x1b\x5c"; + return "\x04\x4b\x70\x49\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x70\x49\x2b\x1b\x5c"; + return "\x04\x4b\x70\x49\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x70\x49\x3d\x1b\x5c"; + return "\x04\x4b\x70\x49\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x70\x49\x5e\x1b\x5c"; + return "\x04\x4b\x70\x49\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x70\x49\x21\x1b\x5c"; + return "\x04\x4b\x70\x49\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x70\x49\x2f\x1b\x5c"; + return "\x04\x4b\x70\x49\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x70\x49\x2a\x1b\x5c"; + return "\x04\x4b\x70\x49\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x70\x49\x3f\x1b\x5c"; + return "\x04\x4b\x70\x49\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x70\x49\x26\x1b\x5c"; + return "\x04\x4b\x70\x49\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x70\x49\x3c\x1b\x5c"; + return "\x04\x4b\x70\x49\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x70\x49\x3e\x1b\x5c"; + return "\x04\x4b\x70\x49\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x70\x49\x28\x1b\x5c"; + return "\x04\x4b\x70\x49\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x70\x49\x29\x1b\x5c"; + return "\x04\x4b\x70\x49\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x70\x49\x5b\x1b\x5c"; + return "\x04\x4b\x70\x49\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x70\x49\x5d\x1b\x5c"; + return "\x04\x4b\x70\x49\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x70\x49\x7b\x1b\x5c"; + return "\x04\x4b\x70\x49\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x70\x49\x7d\x1b\x5c"; + return "\x04\x4b\x70\x49\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x70\x49\x40\x1b\x5c"; + return "\x04\x4b\x70\x49\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x70\x49\x25\x1b\x5c"; + return "\x04\x4b\x70\x49\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x70\x49\x24\x1b\x5c"; + return "\x04\x4b\x70\x49\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x70\x49\x23\x1b\x5c"; + return "\x04\x4b\x70\x49\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x70\x49\x42\x41\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x70\x49\x42\x42\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x70\x49\x42\x43\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x70\x49\x42\x44\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x70\x49\x42\x45\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x70\x49\x42\x46\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x70\x49\x42\x47\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x70\x49\x42\x48\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x70\x49\x42\x49\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x70\x49\x42\x4a\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x70\x49\x42\x4b\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x70\x49\x42\x4c\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x70\x49\x42\x4d\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x70\x49\x42\x4e\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x70\x49\x42\x4f\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x70\x49\x42\x50\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x70\x49\x42\x51\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x70\x49\x42\x52\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x70\x49\x42\x53\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x70\x49\x42\x54\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x70\x49\x42\x55\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x70\x49\x42\x56\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x70\x49\x42\x57\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x70\x49\x42\x58\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x70\x49\x42\x59\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x70\x49\x42\x5a\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x49\x42\x61\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x49\x42\x62\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x70\x49\x42\x63\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x70\x49\x42\x64\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x49\x42\x65\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x49\x42\x66\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x70\x49\x42\x67\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x70\x49\x42\x68\x1b\x5c"; + return "\x05\x4b\x70\x49\x42\x68"; } // end switch(key) case 0x9: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x70\x4a\x41\x1b\x5c"; + return "\x04\x4b\x70\x4a\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x70\x4a\x42\x1b\x5c"; + return "\x04\x4b\x70\x4a\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x70\x4a\x43\x1b\x5c"; + return "\x04\x4b\x70\x4a\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x70\x4a\x44\x1b\x5c"; + return "\x04\x4b\x70\x4a\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x70\x4a\x45\x1b\x5c"; + return "\x04\x4b\x70\x4a\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x70\x4a\x46\x1b\x5c"; + return "\x04\x4b\x70\x4a\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x70\x4a\x47\x1b\x5c"; + return "\x04\x4b\x70\x4a\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x70\x4a\x48\x1b\x5c"; + return "\x04\x4b\x70\x4a\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x70\x4a\x49\x1b\x5c"; + return "\x04\x4b\x70\x4a\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x70\x4a\x4a\x1b\x5c"; + return "\x04\x4b\x70\x4a\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x70\x4a\x4b\x1b\x5c"; + return "\x04\x4b\x70\x4a\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x70\x4a\x4c\x1b\x5c"; + return "\x04\x4b\x70\x4a\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x70\x4a\x4d\x1b\x5c"; + return "\x04\x4b\x70\x4a\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x70\x4a\x4e\x1b\x5c"; + return "\x04\x4b\x70\x4a\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x70\x4a\x4f\x1b\x5c"; + return "\x04\x4b\x70\x4a\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x70\x4a\x50\x1b\x5c"; + return "\x04\x4b\x70\x4a\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x70\x4a\x51\x1b\x5c"; + return "\x04\x4b\x70\x4a\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x70\x4a\x52\x1b\x5c"; + return "\x04\x4b\x70\x4a\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x70\x4a\x53\x1b\x5c"; + return "\x04\x4b\x70\x4a\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x70\x4a\x54\x1b\x5c"; + return "\x04\x4b\x70\x4a\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x70\x4a\x55\x1b\x5c"; + return "\x04\x4b\x70\x4a\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x70\x4a\x56\x1b\x5c"; + return "\x04\x4b\x70\x4a\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x70\x4a\x57\x1b\x5c"; + return "\x04\x4b\x70\x4a\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x70\x4a\x58\x1b\x5c"; + return "\x04\x4b\x70\x4a\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x70\x4a\x59\x1b\x5c"; + return "\x04\x4b\x70\x4a\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x70\x4a\x5a\x1b\x5c"; + return "\x04\x4b\x70\x4a\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x70\x4a\x61\x1b\x5c"; + return "\x04\x4b\x70\x4a\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x70\x4a\x62\x1b\x5c"; + return "\x04\x4b\x70\x4a\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x70\x4a\x63\x1b\x5c"; + return "\x04\x4b\x70\x4a\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x70\x4a\x64\x1b\x5c"; + return "\x04\x4b\x70\x4a\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x70\x4a\x65\x1b\x5c"; + return "\x04\x4b\x70\x4a\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x70\x4a\x66\x1b\x5c"; + return "\x04\x4b\x70\x4a\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x70\x4a\x67\x1b\x5c"; + return "\x04\x4b\x70\x4a\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x70\x4a\x68\x1b\x5c"; + return "\x04\x4b\x70\x4a\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x70\x4a\x69\x1b\x5c"; + return "\x04\x4b\x70\x4a\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x70\x4a\x6a\x1b\x5c"; + return "\x04\x4b\x70\x4a\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x70\x4a\x6b\x1b\x5c"; + return "\x04\x4b\x70\x4a\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x70\x4a\x6c\x1b\x5c"; + return "\x04\x4b\x70\x4a\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x70\x4a\x6d\x1b\x5c"; + return "\x04\x4b\x70\x4a\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x70\x4a\x6e\x1b\x5c"; + return "\x04\x4b\x70\x4a\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x70\x4a\x6f\x1b\x5c"; + return "\x04\x4b\x70\x4a\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x70\x4a\x70\x1b\x5c"; + return "\x04\x4b\x70\x4a\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x70\x4a\x71\x1b\x5c"; + return "\x04\x4b\x70\x4a\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x70\x4a\x72\x1b\x5c"; + return "\x04\x4b\x70\x4a\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x4a\x73\x1b\x5c"; + return "\x04\x4b\x70\x4a\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x70\x4a\x74\x1b\x5c"; + return "\x04\x4b\x70\x4a\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x4a\x75\x1b\x5c"; + return "\x04\x4b\x70\x4a\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x70\x4a\x76\x1b\x5c"; + return "\x04\x4b\x70\x4a\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x70\x4a\x77\x1b\x5c"; + return "\x04\x4b\x70\x4a\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x70\x4a\x78\x1b\x5c"; + return "\x04\x4b\x70\x4a\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x70\x4a\x79\x1b\x5c"; + return "\x04\x4b\x70\x4a\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x70\x4a\x7a\x1b\x5c"; + return "\x04\x4b\x70\x4a\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x70\x4a\x30\x1b\x5c"; + return "\x04\x4b\x70\x4a\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x70\x4a\x31\x1b\x5c"; + return "\x04\x4b\x70\x4a\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x70\x4a\x32\x1b\x5c"; + return "\x04\x4b\x70\x4a\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x70\x4a\x33\x1b\x5c"; + return "\x04\x4b\x70\x4a\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x70\x4a\x34\x1b\x5c"; + return "\x04\x4b\x70\x4a\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x70\x4a\x35\x1b\x5c"; + return "\x04\x4b\x70\x4a\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x70\x4a\x36\x1b\x5c"; + return "\x04\x4b\x70\x4a\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x70\x4a\x37\x1b\x5c"; + return "\x04\x4b\x70\x4a\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x70\x4a\x38\x1b\x5c"; + return "\x04\x4b\x70\x4a\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x70\x4a\x39\x1b\x5c"; + return "\x04\x4b\x70\x4a\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x70\x4a\x2e\x1b\x5c"; + return "\x04\x4b\x70\x4a\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x70\x4a\x2d\x1b\x5c"; + return "\x04\x4b\x70\x4a\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x70\x4a\x3a\x1b\x5c"; + return "\x04\x4b\x70\x4a\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x70\x4a\x2b\x1b\x5c"; + return "\x04\x4b\x70\x4a\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x70\x4a\x3d\x1b\x5c"; + return "\x04\x4b\x70\x4a\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x70\x4a\x5e\x1b\x5c"; + return "\x04\x4b\x70\x4a\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x70\x4a\x21\x1b\x5c"; + return "\x04\x4b\x70\x4a\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x70\x4a\x2f\x1b\x5c"; + return "\x04\x4b\x70\x4a\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x70\x4a\x2a\x1b\x5c"; + return "\x04\x4b\x70\x4a\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x70\x4a\x3f\x1b\x5c"; + return "\x04\x4b\x70\x4a\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x70\x4a\x26\x1b\x5c"; + return "\x04\x4b\x70\x4a\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x70\x4a\x3c\x1b\x5c"; + return "\x04\x4b\x70\x4a\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x70\x4a\x3e\x1b\x5c"; + return "\x04\x4b\x70\x4a\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x70\x4a\x28\x1b\x5c"; + return "\x04\x4b\x70\x4a\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x70\x4a\x29\x1b\x5c"; + return "\x04\x4b\x70\x4a\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x70\x4a\x5b\x1b\x5c"; + return "\x04\x4b\x70\x4a\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x70\x4a\x5d\x1b\x5c"; + return "\x04\x4b\x70\x4a\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x70\x4a\x7b\x1b\x5c"; + return "\x04\x4b\x70\x4a\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x70\x4a\x7d\x1b\x5c"; + return "\x04\x4b\x70\x4a\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x70\x4a\x40\x1b\x5c"; + return "\x04\x4b\x70\x4a\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x70\x4a\x25\x1b\x5c"; + return "\x04\x4b\x70\x4a\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x70\x4a\x24\x1b\x5c"; + return "\x04\x4b\x70\x4a\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x70\x4a\x23\x1b\x5c"; + return "\x04\x4b\x70\x4a\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x41\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x42\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x43\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x44\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x45\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x46\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x47\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x48\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x49\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x4a\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x4b\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x4c\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x4d\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x4e\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x4f\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x50\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x51\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x52\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x53\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x54\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x55\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x56\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x57\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x58\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x59\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x5a\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x61\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x62\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x63\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x64\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x65\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x66\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x67\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x70\x4a\x42\x68\x1b\x5c"; + return "\x05\x4b\x70\x4a\x42\x68"; } // end switch(key) case 0xa: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x70\x4d\x41\x1b\x5c"; + return "\x04\x4b\x70\x4d\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x70\x4d\x42\x1b\x5c"; + return "\x04\x4b\x70\x4d\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x70\x4d\x43\x1b\x5c"; + return "\x04\x4b\x70\x4d\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x70\x4d\x44\x1b\x5c"; + return "\x04\x4b\x70\x4d\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x70\x4d\x45\x1b\x5c"; + return "\x04\x4b\x70\x4d\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x70\x4d\x46\x1b\x5c"; + return "\x04\x4b\x70\x4d\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x70\x4d\x47\x1b\x5c"; + return "\x04\x4b\x70\x4d\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x70\x4d\x48\x1b\x5c"; + return "\x04\x4b\x70\x4d\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x70\x4d\x49\x1b\x5c"; + return "\x04\x4b\x70\x4d\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x70\x4d\x4a\x1b\x5c"; + return "\x04\x4b\x70\x4d\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x70\x4d\x4b\x1b\x5c"; + return "\x04\x4b\x70\x4d\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x70\x4d\x4c\x1b\x5c"; + return "\x04\x4b\x70\x4d\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x70\x4d\x4d\x1b\x5c"; + return "\x04\x4b\x70\x4d\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x70\x4d\x4e\x1b\x5c"; + return "\x04\x4b\x70\x4d\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x70\x4d\x4f\x1b\x5c"; + return "\x04\x4b\x70\x4d\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x70\x4d\x50\x1b\x5c"; + return "\x04\x4b\x70\x4d\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x70\x4d\x51\x1b\x5c"; + return "\x04\x4b\x70\x4d\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x70\x4d\x52\x1b\x5c"; + return "\x04\x4b\x70\x4d\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x70\x4d\x53\x1b\x5c"; + return "\x04\x4b\x70\x4d\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x70\x4d\x54\x1b\x5c"; + return "\x04\x4b\x70\x4d\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x70\x4d\x55\x1b\x5c"; + return "\x04\x4b\x70\x4d\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x70\x4d\x56\x1b\x5c"; + return "\x04\x4b\x70\x4d\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x70\x4d\x57\x1b\x5c"; + return "\x04\x4b\x70\x4d\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x70\x4d\x58\x1b\x5c"; + return "\x04\x4b\x70\x4d\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x70\x4d\x59\x1b\x5c"; + return "\x04\x4b\x70\x4d\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x70\x4d\x5a\x1b\x5c"; + return "\x04\x4b\x70\x4d\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x70\x4d\x61\x1b\x5c"; + return "\x04\x4b\x70\x4d\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x70\x4d\x62\x1b\x5c"; + return "\x04\x4b\x70\x4d\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x70\x4d\x63\x1b\x5c"; + return "\x04\x4b\x70\x4d\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x70\x4d\x64\x1b\x5c"; + return "\x04\x4b\x70\x4d\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x70\x4d\x65\x1b\x5c"; + return "\x04\x4b\x70\x4d\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x70\x4d\x66\x1b\x5c"; + return "\x04\x4b\x70\x4d\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x70\x4d\x67\x1b\x5c"; + return "\x04\x4b\x70\x4d\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x70\x4d\x68\x1b\x5c"; + return "\x04\x4b\x70\x4d\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x70\x4d\x69\x1b\x5c"; + return "\x04\x4b\x70\x4d\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x70\x4d\x6a\x1b\x5c"; + return "\x04\x4b\x70\x4d\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x70\x4d\x6b\x1b\x5c"; + return "\x04\x4b\x70\x4d\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x70\x4d\x6c\x1b\x5c"; + return "\x04\x4b\x70\x4d\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x70\x4d\x6d\x1b\x5c"; + return "\x04\x4b\x70\x4d\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x70\x4d\x6e\x1b\x5c"; + return "\x04\x4b\x70\x4d\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x70\x4d\x6f\x1b\x5c"; + return "\x04\x4b\x70\x4d\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x70\x4d\x70\x1b\x5c"; + return "\x04\x4b\x70\x4d\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x70\x4d\x71\x1b\x5c"; + return "\x04\x4b\x70\x4d\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x70\x4d\x72\x1b\x5c"; + return "\x04\x4b\x70\x4d\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x4d\x73\x1b\x5c"; + return "\x04\x4b\x70\x4d\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x70\x4d\x74\x1b\x5c"; + return "\x04\x4b\x70\x4d\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x4d\x75\x1b\x5c"; + return "\x04\x4b\x70\x4d\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x70\x4d\x76\x1b\x5c"; + return "\x04\x4b\x70\x4d\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x70\x4d\x77\x1b\x5c"; + return "\x04\x4b\x70\x4d\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x70\x4d\x78\x1b\x5c"; + return "\x04\x4b\x70\x4d\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x70\x4d\x79\x1b\x5c"; + return "\x04\x4b\x70\x4d\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x70\x4d\x7a\x1b\x5c"; + return "\x04\x4b\x70\x4d\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x70\x4d\x30\x1b\x5c"; + return "\x04\x4b\x70\x4d\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x70\x4d\x31\x1b\x5c"; + return "\x04\x4b\x70\x4d\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x70\x4d\x32\x1b\x5c"; + return "\x04\x4b\x70\x4d\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x70\x4d\x33\x1b\x5c"; + return "\x04\x4b\x70\x4d\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x70\x4d\x34\x1b\x5c"; + return "\x04\x4b\x70\x4d\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x70\x4d\x35\x1b\x5c"; + return "\x04\x4b\x70\x4d\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x70\x4d\x36\x1b\x5c"; + return "\x04\x4b\x70\x4d\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x70\x4d\x37\x1b\x5c"; + return "\x04\x4b\x70\x4d\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x70\x4d\x38\x1b\x5c"; + return "\x04\x4b\x70\x4d\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x70\x4d\x39\x1b\x5c"; + return "\x04\x4b\x70\x4d\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x70\x4d\x2e\x1b\x5c"; + return "\x04\x4b\x70\x4d\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x70\x4d\x2d\x1b\x5c"; + return "\x04\x4b\x70\x4d\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x70\x4d\x3a\x1b\x5c"; + return "\x04\x4b\x70\x4d\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x70\x4d\x2b\x1b\x5c"; + return "\x04\x4b\x70\x4d\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x70\x4d\x3d\x1b\x5c"; + return "\x04\x4b\x70\x4d\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x70\x4d\x5e\x1b\x5c"; + return "\x04\x4b\x70\x4d\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x70\x4d\x21\x1b\x5c"; + return "\x04\x4b\x70\x4d\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x70\x4d\x2f\x1b\x5c"; + return "\x04\x4b\x70\x4d\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x70\x4d\x2a\x1b\x5c"; + return "\x04\x4b\x70\x4d\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x70\x4d\x3f\x1b\x5c"; + return "\x04\x4b\x70\x4d\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x70\x4d\x26\x1b\x5c"; + return "\x04\x4b\x70\x4d\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x70\x4d\x3c\x1b\x5c"; + return "\x04\x4b\x70\x4d\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x70\x4d\x3e\x1b\x5c"; + return "\x04\x4b\x70\x4d\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x70\x4d\x28\x1b\x5c"; + return "\x04\x4b\x70\x4d\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x70\x4d\x29\x1b\x5c"; + return "\x04\x4b\x70\x4d\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x70\x4d\x5b\x1b\x5c"; + return "\x04\x4b\x70\x4d\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x70\x4d\x5d\x1b\x5c"; + return "\x04\x4b\x70\x4d\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x70\x4d\x7b\x1b\x5c"; + return "\x04\x4b\x70\x4d\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x70\x4d\x7d\x1b\x5c"; + return "\x04\x4b\x70\x4d\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x70\x4d\x40\x1b\x5c"; + return "\x04\x4b\x70\x4d\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x70\x4d\x25\x1b\x5c"; + return "\x04\x4b\x70\x4d\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x70\x4d\x24\x1b\x5c"; + return "\x04\x4b\x70\x4d\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x70\x4d\x23\x1b\x5c"; + return "\x04\x4b\x70\x4d\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x41\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x42\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x43\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x44\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x45\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x46\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x47\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x48\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x49\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x4a\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x4b\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x4c\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x4d\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x4e\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x4f\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x50\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x51\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x52\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x53\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x54\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x55\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x56\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x57\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x58\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x59\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x5a\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x61\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x62\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x63\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x64\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x65\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x66\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x67\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x70\x4d\x42\x68\x1b\x5c"; + return "\x05\x4b\x70\x4d\x42\x68"; } // end switch(key) case 0xb: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x70\x4e\x41\x1b\x5c"; + return "\x04\x4b\x70\x4e\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x70\x4e\x42\x1b\x5c"; + return "\x04\x4b\x70\x4e\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x70\x4e\x43\x1b\x5c"; + return "\x04\x4b\x70\x4e\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x70\x4e\x44\x1b\x5c"; + return "\x04\x4b\x70\x4e\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x70\x4e\x45\x1b\x5c"; + return "\x04\x4b\x70\x4e\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x70\x4e\x46\x1b\x5c"; + return "\x04\x4b\x70\x4e\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x70\x4e\x47\x1b\x5c"; + return "\x04\x4b\x70\x4e\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x70\x4e\x48\x1b\x5c"; + return "\x04\x4b\x70\x4e\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x70\x4e\x49\x1b\x5c"; + return "\x04\x4b\x70\x4e\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x70\x4e\x4a\x1b\x5c"; + return "\x04\x4b\x70\x4e\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x70\x4e\x4b\x1b\x5c"; + return "\x04\x4b\x70\x4e\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x70\x4e\x4c\x1b\x5c"; + return "\x04\x4b\x70\x4e\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x70\x4e\x4d\x1b\x5c"; + return "\x04\x4b\x70\x4e\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x70\x4e\x4e\x1b\x5c"; + return "\x04\x4b\x70\x4e\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x70\x4e\x4f\x1b\x5c"; + return "\x04\x4b\x70\x4e\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x70\x4e\x50\x1b\x5c"; + return "\x04\x4b\x70\x4e\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x70\x4e\x51\x1b\x5c"; + return "\x04\x4b\x70\x4e\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x70\x4e\x52\x1b\x5c"; + return "\x04\x4b\x70\x4e\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x70\x4e\x53\x1b\x5c"; + return "\x04\x4b\x70\x4e\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x70\x4e\x54\x1b\x5c"; + return "\x04\x4b\x70\x4e\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x70\x4e\x55\x1b\x5c"; + return "\x04\x4b\x70\x4e\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x70\x4e\x56\x1b\x5c"; + return "\x04\x4b\x70\x4e\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x70\x4e\x57\x1b\x5c"; + return "\x04\x4b\x70\x4e\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x70\x4e\x58\x1b\x5c"; + return "\x04\x4b\x70\x4e\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x70\x4e\x59\x1b\x5c"; + return "\x04\x4b\x70\x4e\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x70\x4e\x5a\x1b\x5c"; + return "\x04\x4b\x70\x4e\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x70\x4e\x61\x1b\x5c"; + return "\x04\x4b\x70\x4e\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x70\x4e\x62\x1b\x5c"; + return "\x04\x4b\x70\x4e\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x70\x4e\x63\x1b\x5c"; + return "\x04\x4b\x70\x4e\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x70\x4e\x64\x1b\x5c"; + return "\x04\x4b\x70\x4e\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x70\x4e\x65\x1b\x5c"; + return "\x04\x4b\x70\x4e\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x70\x4e\x66\x1b\x5c"; + return "\x04\x4b\x70\x4e\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x70\x4e\x67\x1b\x5c"; + return "\x04\x4b\x70\x4e\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x70\x4e\x68\x1b\x5c"; + return "\x04\x4b\x70\x4e\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x70\x4e\x69\x1b\x5c"; + return "\x04\x4b\x70\x4e\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x70\x4e\x6a\x1b\x5c"; + return "\x04\x4b\x70\x4e\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x70\x4e\x6b\x1b\x5c"; + return "\x04\x4b\x70\x4e\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x70\x4e\x6c\x1b\x5c"; + return "\x04\x4b\x70\x4e\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x70\x4e\x6d\x1b\x5c"; + return "\x04\x4b\x70\x4e\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x70\x4e\x6e\x1b\x5c"; + return "\x04\x4b\x70\x4e\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x70\x4e\x6f\x1b\x5c"; + return "\x04\x4b\x70\x4e\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x70\x4e\x70\x1b\x5c"; + return "\x04\x4b\x70\x4e\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x70\x4e\x71\x1b\x5c"; + return "\x04\x4b\x70\x4e\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x70\x4e\x72\x1b\x5c"; + return "\x04\x4b\x70\x4e\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x4e\x73\x1b\x5c"; + return "\x04\x4b\x70\x4e\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x70\x4e\x74\x1b\x5c"; + return "\x04\x4b\x70\x4e\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x4e\x75\x1b\x5c"; + return "\x04\x4b\x70\x4e\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x70\x4e\x76\x1b\x5c"; + return "\x04\x4b\x70\x4e\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x70\x4e\x77\x1b\x5c"; + return "\x04\x4b\x70\x4e\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x70\x4e\x78\x1b\x5c"; + return "\x04\x4b\x70\x4e\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x70\x4e\x79\x1b\x5c"; + return "\x04\x4b\x70\x4e\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x70\x4e\x7a\x1b\x5c"; + return "\x04\x4b\x70\x4e\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x70\x4e\x30\x1b\x5c"; + return "\x04\x4b\x70\x4e\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x70\x4e\x31\x1b\x5c"; + return "\x04\x4b\x70\x4e\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x70\x4e\x32\x1b\x5c"; + return "\x04\x4b\x70\x4e\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x70\x4e\x33\x1b\x5c"; + return "\x04\x4b\x70\x4e\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x70\x4e\x34\x1b\x5c"; + return "\x04\x4b\x70\x4e\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x70\x4e\x35\x1b\x5c"; + return "\x04\x4b\x70\x4e\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x70\x4e\x36\x1b\x5c"; + return "\x04\x4b\x70\x4e\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x70\x4e\x37\x1b\x5c"; + return "\x04\x4b\x70\x4e\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x70\x4e\x38\x1b\x5c"; + return "\x04\x4b\x70\x4e\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x70\x4e\x39\x1b\x5c"; + return "\x04\x4b\x70\x4e\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x70\x4e\x2e\x1b\x5c"; + return "\x04\x4b\x70\x4e\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x70\x4e\x2d\x1b\x5c"; + return "\x04\x4b\x70\x4e\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x70\x4e\x3a\x1b\x5c"; + return "\x04\x4b\x70\x4e\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x70\x4e\x2b\x1b\x5c"; + return "\x04\x4b\x70\x4e\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x70\x4e\x3d\x1b\x5c"; + return "\x04\x4b\x70\x4e\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x70\x4e\x5e\x1b\x5c"; + return "\x04\x4b\x70\x4e\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x70\x4e\x21\x1b\x5c"; + return "\x04\x4b\x70\x4e\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x70\x4e\x2f\x1b\x5c"; + return "\x04\x4b\x70\x4e\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x70\x4e\x2a\x1b\x5c"; + return "\x04\x4b\x70\x4e\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x70\x4e\x3f\x1b\x5c"; + return "\x04\x4b\x70\x4e\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x70\x4e\x26\x1b\x5c"; + return "\x04\x4b\x70\x4e\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x70\x4e\x3c\x1b\x5c"; + return "\x04\x4b\x70\x4e\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x70\x4e\x3e\x1b\x5c"; + return "\x04\x4b\x70\x4e\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x70\x4e\x28\x1b\x5c"; + return "\x04\x4b\x70\x4e\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x70\x4e\x29\x1b\x5c"; + return "\x04\x4b\x70\x4e\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x70\x4e\x5b\x1b\x5c"; + return "\x04\x4b\x70\x4e\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x70\x4e\x5d\x1b\x5c"; + return "\x04\x4b\x70\x4e\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x70\x4e\x7b\x1b\x5c"; + return "\x04\x4b\x70\x4e\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x70\x4e\x7d\x1b\x5c"; + return "\x04\x4b\x70\x4e\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x70\x4e\x40\x1b\x5c"; + return "\x04\x4b\x70\x4e\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x70\x4e\x25\x1b\x5c"; + return "\x04\x4b\x70\x4e\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x70\x4e\x24\x1b\x5c"; + return "\x04\x4b\x70\x4e\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x70\x4e\x23\x1b\x5c"; + return "\x04\x4b\x70\x4e\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x41\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x42\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x43\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x44\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x45\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x46\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x47\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x48\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x49\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x4a\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x4b\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x4c\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x4d\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x4e\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x4f\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x50\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x51\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x52\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x53\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x54\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x55\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x56\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x57\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x58\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x59\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x5a\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x61\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x62\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x63\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x64\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x65\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x66\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x67\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x70\x4e\x42\x68\x1b\x5c"; + return "\x05\x4b\x70\x4e\x42\x68"; } // end switch(key) case 0xc: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x70\x4b\x41\x1b\x5c"; + return "\x04\x4b\x70\x4b\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x70\x4b\x42\x1b\x5c"; + return "\x04\x4b\x70\x4b\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x70\x4b\x43\x1b\x5c"; + return "\x04\x4b\x70\x4b\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x70\x4b\x44\x1b\x5c"; + return "\x04\x4b\x70\x4b\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x70\x4b\x45\x1b\x5c"; + return "\x04\x4b\x70\x4b\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x70\x4b\x46\x1b\x5c"; + return "\x04\x4b\x70\x4b\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x70\x4b\x47\x1b\x5c"; + return "\x04\x4b\x70\x4b\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x70\x4b\x48\x1b\x5c"; + return "\x04\x4b\x70\x4b\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x70\x4b\x49\x1b\x5c"; + return "\x04\x4b\x70\x4b\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x70\x4b\x4a\x1b\x5c"; + return "\x04\x4b\x70\x4b\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x70\x4b\x4b\x1b\x5c"; + return "\x04\x4b\x70\x4b\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x70\x4b\x4c\x1b\x5c"; + return "\x04\x4b\x70\x4b\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x70\x4b\x4d\x1b\x5c"; + return "\x04\x4b\x70\x4b\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x70\x4b\x4e\x1b\x5c"; + return "\x04\x4b\x70\x4b\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x70\x4b\x4f\x1b\x5c"; + return "\x04\x4b\x70\x4b\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x70\x4b\x50\x1b\x5c"; + return "\x04\x4b\x70\x4b\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x70\x4b\x51\x1b\x5c"; + return "\x04\x4b\x70\x4b\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x70\x4b\x52\x1b\x5c"; + return "\x04\x4b\x70\x4b\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x70\x4b\x53\x1b\x5c"; + return "\x04\x4b\x70\x4b\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x70\x4b\x54\x1b\x5c"; + return "\x04\x4b\x70\x4b\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x70\x4b\x55\x1b\x5c"; + return "\x04\x4b\x70\x4b\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x70\x4b\x56\x1b\x5c"; + return "\x04\x4b\x70\x4b\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x70\x4b\x57\x1b\x5c"; + return "\x04\x4b\x70\x4b\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x70\x4b\x58\x1b\x5c"; + return "\x04\x4b\x70\x4b\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x70\x4b\x59\x1b\x5c"; + return "\x04\x4b\x70\x4b\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x70\x4b\x5a\x1b\x5c"; + return "\x04\x4b\x70\x4b\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x70\x4b\x61\x1b\x5c"; + return "\x04\x4b\x70\x4b\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x70\x4b\x62\x1b\x5c"; + return "\x04\x4b\x70\x4b\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x70\x4b\x63\x1b\x5c"; + return "\x04\x4b\x70\x4b\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x70\x4b\x64\x1b\x5c"; + return "\x04\x4b\x70\x4b\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x70\x4b\x65\x1b\x5c"; + return "\x04\x4b\x70\x4b\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x70\x4b\x66\x1b\x5c"; + return "\x04\x4b\x70\x4b\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x70\x4b\x67\x1b\x5c"; + return "\x04\x4b\x70\x4b\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x70\x4b\x68\x1b\x5c"; + return "\x04\x4b\x70\x4b\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x70\x4b\x69\x1b\x5c"; + return "\x04\x4b\x70\x4b\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x70\x4b\x6a\x1b\x5c"; + return "\x04\x4b\x70\x4b\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x70\x4b\x6b\x1b\x5c"; + return "\x04\x4b\x70\x4b\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x70\x4b\x6c\x1b\x5c"; + return "\x04\x4b\x70\x4b\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x70\x4b\x6d\x1b\x5c"; + return "\x04\x4b\x70\x4b\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x70\x4b\x6e\x1b\x5c"; + return "\x04\x4b\x70\x4b\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x70\x4b\x6f\x1b\x5c"; + return "\x04\x4b\x70\x4b\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x70\x4b\x70\x1b\x5c"; + return "\x04\x4b\x70\x4b\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x70\x4b\x71\x1b\x5c"; + return "\x04\x4b\x70\x4b\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x70\x4b\x72\x1b\x5c"; + return "\x04\x4b\x70\x4b\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x4b\x73\x1b\x5c"; + return "\x04\x4b\x70\x4b\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x70\x4b\x74\x1b\x5c"; + return "\x04\x4b\x70\x4b\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x4b\x75\x1b\x5c"; + return "\x04\x4b\x70\x4b\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x70\x4b\x76\x1b\x5c"; + return "\x04\x4b\x70\x4b\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x70\x4b\x77\x1b\x5c"; + return "\x04\x4b\x70\x4b\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x70\x4b\x78\x1b\x5c"; + return "\x04\x4b\x70\x4b\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x70\x4b\x79\x1b\x5c"; + return "\x04\x4b\x70\x4b\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x70\x4b\x7a\x1b\x5c"; + return "\x04\x4b\x70\x4b\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x70\x4b\x30\x1b\x5c"; + return "\x04\x4b\x70\x4b\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x70\x4b\x31\x1b\x5c"; + return "\x04\x4b\x70\x4b\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x70\x4b\x32\x1b\x5c"; + return "\x04\x4b\x70\x4b\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x70\x4b\x33\x1b\x5c"; + return "\x04\x4b\x70\x4b\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x70\x4b\x34\x1b\x5c"; + return "\x04\x4b\x70\x4b\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x70\x4b\x35\x1b\x5c"; + return "\x04\x4b\x70\x4b\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x70\x4b\x36\x1b\x5c"; + return "\x04\x4b\x70\x4b\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x70\x4b\x37\x1b\x5c"; + return "\x04\x4b\x70\x4b\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x70\x4b\x38\x1b\x5c"; + return "\x04\x4b\x70\x4b\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x70\x4b\x39\x1b\x5c"; + return "\x04\x4b\x70\x4b\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x70\x4b\x2e\x1b\x5c"; + return "\x04\x4b\x70\x4b\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x70\x4b\x2d\x1b\x5c"; + return "\x04\x4b\x70\x4b\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x70\x4b\x3a\x1b\x5c"; + return "\x04\x4b\x70\x4b\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x70\x4b\x2b\x1b\x5c"; + return "\x04\x4b\x70\x4b\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x70\x4b\x3d\x1b\x5c"; + return "\x04\x4b\x70\x4b\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x70\x4b\x5e\x1b\x5c"; + return "\x04\x4b\x70\x4b\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x70\x4b\x21\x1b\x5c"; + return "\x04\x4b\x70\x4b\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x70\x4b\x2f\x1b\x5c"; + return "\x04\x4b\x70\x4b\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x70\x4b\x2a\x1b\x5c"; + return "\x04\x4b\x70\x4b\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x70\x4b\x3f\x1b\x5c"; + return "\x04\x4b\x70\x4b\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x70\x4b\x26\x1b\x5c"; + return "\x04\x4b\x70\x4b\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x70\x4b\x3c\x1b\x5c"; + return "\x04\x4b\x70\x4b\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x70\x4b\x3e\x1b\x5c"; + return "\x04\x4b\x70\x4b\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x70\x4b\x28\x1b\x5c"; + return "\x04\x4b\x70\x4b\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x70\x4b\x29\x1b\x5c"; + return "\x04\x4b\x70\x4b\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x70\x4b\x5b\x1b\x5c"; + return "\x04\x4b\x70\x4b\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x70\x4b\x5d\x1b\x5c"; + return "\x04\x4b\x70\x4b\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x70\x4b\x7b\x1b\x5c"; + return "\x04\x4b\x70\x4b\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x70\x4b\x7d\x1b\x5c"; + return "\x04\x4b\x70\x4b\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x70\x4b\x40\x1b\x5c"; + return "\x04\x4b\x70\x4b\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x70\x4b\x25\x1b\x5c"; + return "\x04\x4b\x70\x4b\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x70\x4b\x24\x1b\x5c"; + return "\x04\x4b\x70\x4b\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x70\x4b\x23\x1b\x5c"; + return "\x04\x4b\x70\x4b\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x41\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x42\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x43\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x44\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x45\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x46\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x47\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x48\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x49\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x4a\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x4b\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x4c\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x4d\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x4e\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x4f\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x50\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x51\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x52\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x53\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x54\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x55\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x56\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x57\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x58\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x59\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x5a\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x61\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x62\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x63\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x64\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x65\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x66\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x67\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x70\x4b\x42\x68\x1b\x5c"; + return "\x05\x4b\x70\x4b\x42\x68"; } // end switch(key) case 0xd: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x70\x4c\x41\x1b\x5c"; + return "\x04\x4b\x70\x4c\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x70\x4c\x42\x1b\x5c"; + return "\x04\x4b\x70\x4c\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x70\x4c\x43\x1b\x5c"; + return "\x04\x4b\x70\x4c\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x70\x4c\x44\x1b\x5c"; + return "\x04\x4b\x70\x4c\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x70\x4c\x45\x1b\x5c"; + return "\x04\x4b\x70\x4c\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x70\x4c\x46\x1b\x5c"; + return "\x04\x4b\x70\x4c\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x70\x4c\x47\x1b\x5c"; + return "\x04\x4b\x70\x4c\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x70\x4c\x48\x1b\x5c"; + return "\x04\x4b\x70\x4c\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x70\x4c\x49\x1b\x5c"; + return "\x04\x4b\x70\x4c\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x70\x4c\x4a\x1b\x5c"; + return "\x04\x4b\x70\x4c\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x70\x4c\x4b\x1b\x5c"; + return "\x04\x4b\x70\x4c\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x70\x4c\x4c\x1b\x5c"; + return "\x04\x4b\x70\x4c\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x70\x4c\x4d\x1b\x5c"; + return "\x04\x4b\x70\x4c\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x70\x4c\x4e\x1b\x5c"; + return "\x04\x4b\x70\x4c\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x70\x4c\x4f\x1b\x5c"; + return "\x04\x4b\x70\x4c\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x70\x4c\x50\x1b\x5c"; + return "\x04\x4b\x70\x4c\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x70\x4c\x51\x1b\x5c"; + return "\x04\x4b\x70\x4c\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x70\x4c\x52\x1b\x5c"; + return "\x04\x4b\x70\x4c\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x70\x4c\x53\x1b\x5c"; + return "\x04\x4b\x70\x4c\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x70\x4c\x54\x1b\x5c"; + return "\x04\x4b\x70\x4c\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x70\x4c\x55\x1b\x5c"; + return "\x04\x4b\x70\x4c\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x70\x4c\x56\x1b\x5c"; + return "\x04\x4b\x70\x4c\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x70\x4c\x57\x1b\x5c"; + return "\x04\x4b\x70\x4c\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x70\x4c\x58\x1b\x5c"; + return "\x04\x4b\x70\x4c\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x70\x4c\x59\x1b\x5c"; + return "\x04\x4b\x70\x4c\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x70\x4c\x5a\x1b\x5c"; + return "\x04\x4b\x70\x4c\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x70\x4c\x61\x1b\x5c"; + return "\x04\x4b\x70\x4c\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x70\x4c\x62\x1b\x5c"; + return "\x04\x4b\x70\x4c\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x70\x4c\x63\x1b\x5c"; + return "\x04\x4b\x70\x4c\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x70\x4c\x64\x1b\x5c"; + return "\x04\x4b\x70\x4c\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x70\x4c\x65\x1b\x5c"; + return "\x04\x4b\x70\x4c\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x70\x4c\x66\x1b\x5c"; + return "\x04\x4b\x70\x4c\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x70\x4c\x67\x1b\x5c"; + return "\x04\x4b\x70\x4c\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x70\x4c\x68\x1b\x5c"; + return "\x04\x4b\x70\x4c\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x70\x4c\x69\x1b\x5c"; + return "\x04\x4b\x70\x4c\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x70\x4c\x6a\x1b\x5c"; + return "\x04\x4b\x70\x4c\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x70\x4c\x6b\x1b\x5c"; + return "\x04\x4b\x70\x4c\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x70\x4c\x6c\x1b\x5c"; + return "\x04\x4b\x70\x4c\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x70\x4c\x6d\x1b\x5c"; + return "\x04\x4b\x70\x4c\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x70\x4c\x6e\x1b\x5c"; + return "\x04\x4b\x70\x4c\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x70\x4c\x6f\x1b\x5c"; + return "\x04\x4b\x70\x4c\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x70\x4c\x70\x1b\x5c"; + return "\x04\x4b\x70\x4c\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x70\x4c\x71\x1b\x5c"; + return "\x04\x4b\x70\x4c\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x70\x4c\x72\x1b\x5c"; + return "\x04\x4b\x70\x4c\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x4c\x73\x1b\x5c"; + return "\x04\x4b\x70\x4c\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x70\x4c\x74\x1b\x5c"; + return "\x04\x4b\x70\x4c\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x4c\x75\x1b\x5c"; + return "\x04\x4b\x70\x4c\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x70\x4c\x76\x1b\x5c"; + return "\x04\x4b\x70\x4c\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x70\x4c\x77\x1b\x5c"; + return "\x04\x4b\x70\x4c\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x70\x4c\x78\x1b\x5c"; + return "\x04\x4b\x70\x4c\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x70\x4c\x79\x1b\x5c"; + return "\x04\x4b\x70\x4c\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x70\x4c\x7a\x1b\x5c"; + return "\x04\x4b\x70\x4c\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x70\x4c\x30\x1b\x5c"; + return "\x04\x4b\x70\x4c\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x70\x4c\x31\x1b\x5c"; + return "\x04\x4b\x70\x4c\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x70\x4c\x32\x1b\x5c"; + return "\x04\x4b\x70\x4c\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x70\x4c\x33\x1b\x5c"; + return "\x04\x4b\x70\x4c\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x70\x4c\x34\x1b\x5c"; + return "\x04\x4b\x70\x4c\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x70\x4c\x35\x1b\x5c"; + return "\x04\x4b\x70\x4c\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x70\x4c\x36\x1b\x5c"; + return "\x04\x4b\x70\x4c\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x70\x4c\x37\x1b\x5c"; + return "\x04\x4b\x70\x4c\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x70\x4c\x38\x1b\x5c"; + return "\x04\x4b\x70\x4c\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x70\x4c\x39\x1b\x5c"; + return "\x04\x4b\x70\x4c\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x70\x4c\x2e\x1b\x5c"; + return "\x04\x4b\x70\x4c\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x70\x4c\x2d\x1b\x5c"; + return "\x04\x4b\x70\x4c\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x70\x4c\x3a\x1b\x5c"; + return "\x04\x4b\x70\x4c\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x70\x4c\x2b\x1b\x5c"; + return "\x04\x4b\x70\x4c\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x70\x4c\x3d\x1b\x5c"; + return "\x04\x4b\x70\x4c\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x70\x4c\x5e\x1b\x5c"; + return "\x04\x4b\x70\x4c\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x70\x4c\x21\x1b\x5c"; + return "\x04\x4b\x70\x4c\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x70\x4c\x2f\x1b\x5c"; + return "\x04\x4b\x70\x4c\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x70\x4c\x2a\x1b\x5c"; + return "\x04\x4b\x70\x4c\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x70\x4c\x3f\x1b\x5c"; + return "\x04\x4b\x70\x4c\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x70\x4c\x26\x1b\x5c"; + return "\x04\x4b\x70\x4c\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x70\x4c\x3c\x1b\x5c"; + return "\x04\x4b\x70\x4c\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x70\x4c\x3e\x1b\x5c"; + return "\x04\x4b\x70\x4c\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x70\x4c\x28\x1b\x5c"; + return "\x04\x4b\x70\x4c\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x70\x4c\x29\x1b\x5c"; + return "\x04\x4b\x70\x4c\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x70\x4c\x5b\x1b\x5c"; + return "\x04\x4b\x70\x4c\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x70\x4c\x5d\x1b\x5c"; + return "\x04\x4b\x70\x4c\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x70\x4c\x7b\x1b\x5c"; + return "\x04\x4b\x70\x4c\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x70\x4c\x7d\x1b\x5c"; + return "\x04\x4b\x70\x4c\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x70\x4c\x40\x1b\x5c"; + return "\x04\x4b\x70\x4c\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x70\x4c\x25\x1b\x5c"; + return "\x04\x4b\x70\x4c\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x70\x4c\x24\x1b\x5c"; + return "\x04\x4b\x70\x4c\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x70\x4c\x23\x1b\x5c"; + return "\x04\x4b\x70\x4c\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x41\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x42\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x43\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x44\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x45\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x46\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x47\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x48\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x49\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x4a\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x4b\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x4c\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x4d\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x4e\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x4f\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x50\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x51\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x52\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x53\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x54\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x55\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x56\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x57\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x58\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x59\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x5a\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x61\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x62\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x63\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x64\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x65\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x66\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x67\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x70\x4c\x42\x68\x1b\x5c"; + return "\x05\x4b\x70\x4c\x42\x68"; } // end switch(key) case 0xe: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x70\x4f\x41\x1b\x5c"; + return "\x04\x4b\x70\x4f\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x70\x4f\x42\x1b\x5c"; + return "\x04\x4b\x70\x4f\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x70\x4f\x43\x1b\x5c"; + return "\x04\x4b\x70\x4f\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x70\x4f\x44\x1b\x5c"; + return "\x04\x4b\x70\x4f\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x70\x4f\x45\x1b\x5c"; + return "\x04\x4b\x70\x4f\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x70\x4f\x46\x1b\x5c"; + return "\x04\x4b\x70\x4f\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x70\x4f\x47\x1b\x5c"; + return "\x04\x4b\x70\x4f\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x70\x4f\x48\x1b\x5c"; + return "\x04\x4b\x70\x4f\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x70\x4f\x49\x1b\x5c"; + return "\x04\x4b\x70\x4f\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x70\x4f\x4a\x1b\x5c"; + return "\x04\x4b\x70\x4f\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x70\x4f\x4b\x1b\x5c"; + return "\x04\x4b\x70\x4f\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x70\x4f\x4c\x1b\x5c"; + return "\x04\x4b\x70\x4f\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x70\x4f\x4d\x1b\x5c"; + return "\x04\x4b\x70\x4f\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x70\x4f\x4e\x1b\x5c"; + return "\x04\x4b\x70\x4f\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x70\x4f\x4f\x1b\x5c"; + return "\x04\x4b\x70\x4f\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x70\x4f\x50\x1b\x5c"; + return "\x04\x4b\x70\x4f\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x70\x4f\x51\x1b\x5c"; + return "\x04\x4b\x70\x4f\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x70\x4f\x52\x1b\x5c"; + return "\x04\x4b\x70\x4f\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x70\x4f\x53\x1b\x5c"; + return "\x04\x4b\x70\x4f\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x70\x4f\x54\x1b\x5c"; + return "\x04\x4b\x70\x4f\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x70\x4f\x55\x1b\x5c"; + return "\x04\x4b\x70\x4f\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x70\x4f\x56\x1b\x5c"; + return "\x04\x4b\x70\x4f\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x70\x4f\x57\x1b\x5c"; + return "\x04\x4b\x70\x4f\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x70\x4f\x58\x1b\x5c"; + return "\x04\x4b\x70\x4f\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x70\x4f\x59\x1b\x5c"; + return "\x04\x4b\x70\x4f\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x70\x4f\x5a\x1b\x5c"; + return "\x04\x4b\x70\x4f\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x70\x4f\x61\x1b\x5c"; + return "\x04\x4b\x70\x4f\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x70\x4f\x62\x1b\x5c"; + return "\x04\x4b\x70\x4f\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x70\x4f\x63\x1b\x5c"; + return "\x04\x4b\x70\x4f\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x70\x4f\x64\x1b\x5c"; + return "\x04\x4b\x70\x4f\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x70\x4f\x65\x1b\x5c"; + return "\x04\x4b\x70\x4f\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x70\x4f\x66\x1b\x5c"; + return "\x04\x4b\x70\x4f\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x70\x4f\x67\x1b\x5c"; + return "\x04\x4b\x70\x4f\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x70\x4f\x68\x1b\x5c"; + return "\x04\x4b\x70\x4f\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x70\x4f\x69\x1b\x5c"; + return "\x04\x4b\x70\x4f\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x70\x4f\x6a\x1b\x5c"; + return "\x04\x4b\x70\x4f\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x70\x4f\x6b\x1b\x5c"; + return "\x04\x4b\x70\x4f\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x70\x4f\x6c\x1b\x5c"; + return "\x04\x4b\x70\x4f\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x70\x4f\x6d\x1b\x5c"; + return "\x04\x4b\x70\x4f\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x70\x4f\x6e\x1b\x5c"; + return "\x04\x4b\x70\x4f\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x70\x4f\x6f\x1b\x5c"; + return "\x04\x4b\x70\x4f\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x70\x4f\x70\x1b\x5c"; + return "\x04\x4b\x70\x4f\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x70\x4f\x71\x1b\x5c"; + return "\x04\x4b\x70\x4f\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x70\x4f\x72\x1b\x5c"; + return "\x04\x4b\x70\x4f\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x4f\x73\x1b\x5c"; + return "\x04\x4b\x70\x4f\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x70\x4f\x74\x1b\x5c"; + return "\x04\x4b\x70\x4f\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x4f\x75\x1b\x5c"; + return "\x04\x4b\x70\x4f\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x70\x4f\x76\x1b\x5c"; + return "\x04\x4b\x70\x4f\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x70\x4f\x77\x1b\x5c"; + return "\x04\x4b\x70\x4f\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x70\x4f\x78\x1b\x5c"; + return "\x04\x4b\x70\x4f\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x70\x4f\x79\x1b\x5c"; + return "\x04\x4b\x70\x4f\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x70\x4f\x7a\x1b\x5c"; + return "\x04\x4b\x70\x4f\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x70\x4f\x30\x1b\x5c"; + return "\x04\x4b\x70\x4f\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x70\x4f\x31\x1b\x5c"; + return "\x04\x4b\x70\x4f\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x70\x4f\x32\x1b\x5c"; + return "\x04\x4b\x70\x4f\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x70\x4f\x33\x1b\x5c"; + return "\x04\x4b\x70\x4f\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x70\x4f\x34\x1b\x5c"; + return "\x04\x4b\x70\x4f\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x70\x4f\x35\x1b\x5c"; + return "\x04\x4b\x70\x4f\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x70\x4f\x36\x1b\x5c"; + return "\x04\x4b\x70\x4f\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x70\x4f\x37\x1b\x5c"; + return "\x04\x4b\x70\x4f\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x70\x4f\x38\x1b\x5c"; + return "\x04\x4b\x70\x4f\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x70\x4f\x39\x1b\x5c"; + return "\x04\x4b\x70\x4f\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x70\x4f\x2e\x1b\x5c"; + return "\x04\x4b\x70\x4f\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x70\x4f\x2d\x1b\x5c"; + return "\x04\x4b\x70\x4f\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x70\x4f\x3a\x1b\x5c"; + return "\x04\x4b\x70\x4f\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x70\x4f\x2b\x1b\x5c"; + return "\x04\x4b\x70\x4f\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x70\x4f\x3d\x1b\x5c"; + return "\x04\x4b\x70\x4f\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x70\x4f\x5e\x1b\x5c"; + return "\x04\x4b\x70\x4f\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x70\x4f\x21\x1b\x5c"; + return "\x04\x4b\x70\x4f\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x70\x4f\x2f\x1b\x5c"; + return "\x04\x4b\x70\x4f\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x70\x4f\x2a\x1b\x5c"; + return "\x04\x4b\x70\x4f\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x70\x4f\x3f\x1b\x5c"; + return "\x04\x4b\x70\x4f\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x70\x4f\x26\x1b\x5c"; + return "\x04\x4b\x70\x4f\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x70\x4f\x3c\x1b\x5c"; + return "\x04\x4b\x70\x4f\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x70\x4f\x3e\x1b\x5c"; + return "\x04\x4b\x70\x4f\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x70\x4f\x28\x1b\x5c"; + return "\x04\x4b\x70\x4f\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x70\x4f\x29\x1b\x5c"; + return "\x04\x4b\x70\x4f\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x70\x4f\x5b\x1b\x5c"; + return "\x04\x4b\x70\x4f\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x70\x4f\x5d\x1b\x5c"; + return "\x04\x4b\x70\x4f\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x70\x4f\x7b\x1b\x5c"; + return "\x04\x4b\x70\x4f\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x70\x4f\x7d\x1b\x5c"; + return "\x04\x4b\x70\x4f\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x70\x4f\x40\x1b\x5c"; + return "\x04\x4b\x70\x4f\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x70\x4f\x25\x1b\x5c"; + return "\x04\x4b\x70\x4f\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x70\x4f\x24\x1b\x5c"; + return "\x04\x4b\x70\x4f\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x70\x4f\x23\x1b\x5c"; + return "\x04\x4b\x70\x4f\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x41\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x42\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x43\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x44\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x45\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x46\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x47\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x48\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x49\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x4a\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x4b\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x4c\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x4d\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x4e\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x4f\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x50\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x51\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x52\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x53\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x54\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x55\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x56\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x57\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x58\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x59\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x5a\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x61\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x62\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x63\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x64\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x65\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x66\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x67\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x70\x4f\x42\x68\x1b\x5c"; + return "\x05\x4b\x70\x4f\x42\x68"; } // end switch(key) case 0xf: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x70\x50\x41\x1b\x5c"; + return "\x04\x4b\x70\x50\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x70\x50\x42\x1b\x5c"; + return "\x04\x4b\x70\x50\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x70\x50\x43\x1b\x5c"; + return "\x04\x4b\x70\x50\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x70\x50\x44\x1b\x5c"; + return "\x04\x4b\x70\x50\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x70\x50\x45\x1b\x5c"; + return "\x04\x4b\x70\x50\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x70\x50\x46\x1b\x5c"; + return "\x04\x4b\x70\x50\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x70\x50\x47\x1b\x5c"; + return "\x04\x4b\x70\x50\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x70\x50\x48\x1b\x5c"; + return "\x04\x4b\x70\x50\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x70\x50\x49\x1b\x5c"; + return "\x04\x4b\x70\x50\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x70\x50\x4a\x1b\x5c"; + return "\x04\x4b\x70\x50\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x70\x50\x4b\x1b\x5c"; + return "\x04\x4b\x70\x50\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x70\x50\x4c\x1b\x5c"; + return "\x04\x4b\x70\x50\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x70\x50\x4d\x1b\x5c"; + return "\x04\x4b\x70\x50\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x70\x50\x4e\x1b\x5c"; + return "\x04\x4b\x70\x50\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x70\x50\x4f\x1b\x5c"; + return "\x04\x4b\x70\x50\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x70\x50\x50\x1b\x5c"; + return "\x04\x4b\x70\x50\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x70\x50\x51\x1b\x5c"; + return "\x04\x4b\x70\x50\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x70\x50\x52\x1b\x5c"; + return "\x04\x4b\x70\x50\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x70\x50\x53\x1b\x5c"; + return "\x04\x4b\x70\x50\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x70\x50\x54\x1b\x5c"; + return "\x04\x4b\x70\x50\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x70\x50\x55\x1b\x5c"; + return "\x04\x4b\x70\x50\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x70\x50\x56\x1b\x5c"; + return "\x04\x4b\x70\x50\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x70\x50\x57\x1b\x5c"; + return "\x04\x4b\x70\x50\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x70\x50\x58\x1b\x5c"; + return "\x04\x4b\x70\x50\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x70\x50\x59\x1b\x5c"; + return "\x04\x4b\x70\x50\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x70\x50\x5a\x1b\x5c"; + return "\x04\x4b\x70\x50\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x70\x50\x61\x1b\x5c"; + return "\x04\x4b\x70\x50\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x70\x50\x62\x1b\x5c"; + return "\x04\x4b\x70\x50\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x70\x50\x63\x1b\x5c"; + return "\x04\x4b\x70\x50\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x70\x50\x64\x1b\x5c"; + return "\x04\x4b\x70\x50\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x70\x50\x65\x1b\x5c"; + return "\x04\x4b\x70\x50\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x70\x50\x66\x1b\x5c"; + return "\x04\x4b\x70\x50\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x70\x50\x67\x1b\x5c"; + return "\x04\x4b\x70\x50\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x70\x50\x68\x1b\x5c"; + return "\x04\x4b\x70\x50\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x70\x50\x69\x1b\x5c"; + return "\x04\x4b\x70\x50\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x70\x50\x6a\x1b\x5c"; + return "\x04\x4b\x70\x50\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x70\x50\x6b\x1b\x5c"; + return "\x04\x4b\x70\x50\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x70\x50\x6c\x1b\x5c"; + return "\x04\x4b\x70\x50\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x70\x50\x6d\x1b\x5c"; + return "\x04\x4b\x70\x50\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x70\x50\x6e\x1b\x5c"; + return "\x04\x4b\x70\x50\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x70\x50\x6f\x1b\x5c"; + return "\x04\x4b\x70\x50\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x70\x50\x70\x1b\x5c"; + return "\x04\x4b\x70\x50\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x70\x50\x71\x1b\x5c"; + return "\x04\x4b\x70\x50\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x70\x50\x72\x1b\x5c"; + return "\x04\x4b\x70\x50\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x50\x73\x1b\x5c"; + return "\x04\x4b\x70\x50\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x70\x50\x74\x1b\x5c"; + return "\x04\x4b\x70\x50\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x70\x50\x75\x1b\x5c"; + return "\x04\x4b\x70\x50\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x70\x50\x76\x1b\x5c"; + return "\x04\x4b\x70\x50\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x70\x50\x77\x1b\x5c"; + return "\x04\x4b\x70\x50\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x70\x50\x78\x1b\x5c"; + return "\x04\x4b\x70\x50\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x70\x50\x79\x1b\x5c"; + return "\x04\x4b\x70\x50\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x70\x50\x7a\x1b\x5c"; + return "\x04\x4b\x70\x50\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x70\x50\x30\x1b\x5c"; + return "\x04\x4b\x70\x50\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x70\x50\x31\x1b\x5c"; + return "\x04\x4b\x70\x50\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x70\x50\x32\x1b\x5c"; + return "\x04\x4b\x70\x50\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x70\x50\x33\x1b\x5c"; + return "\x04\x4b\x70\x50\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x70\x50\x34\x1b\x5c"; + return "\x04\x4b\x70\x50\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x70\x50\x35\x1b\x5c"; + return "\x04\x4b\x70\x50\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x70\x50\x36\x1b\x5c"; + return "\x04\x4b\x70\x50\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x70\x50\x37\x1b\x5c"; + return "\x04\x4b\x70\x50\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x70\x50\x38\x1b\x5c"; + return "\x04\x4b\x70\x50\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x70\x50\x39\x1b\x5c"; + return "\x04\x4b\x70\x50\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x70\x50\x2e\x1b\x5c"; + return "\x04\x4b\x70\x50\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x70\x50\x2d\x1b\x5c"; + return "\x04\x4b\x70\x50\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x70\x50\x3a\x1b\x5c"; + return "\x04\x4b\x70\x50\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x70\x50\x2b\x1b\x5c"; + return "\x04\x4b\x70\x50\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x70\x50\x3d\x1b\x5c"; + return "\x04\x4b\x70\x50\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x70\x50\x5e\x1b\x5c"; + return "\x04\x4b\x70\x50\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x70\x50\x21\x1b\x5c"; + return "\x04\x4b\x70\x50\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x70\x50\x2f\x1b\x5c"; + return "\x04\x4b\x70\x50\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x70\x50\x2a\x1b\x5c"; + return "\x04\x4b\x70\x50\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x70\x50\x3f\x1b\x5c"; + return "\x04\x4b\x70\x50\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x70\x50\x26\x1b\x5c"; + return "\x04\x4b\x70\x50\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x70\x50\x3c\x1b\x5c"; + return "\x04\x4b\x70\x50\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x70\x50\x3e\x1b\x5c"; + return "\x04\x4b\x70\x50\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x70\x50\x28\x1b\x5c"; + return "\x04\x4b\x70\x50\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x70\x50\x29\x1b\x5c"; + return "\x04\x4b\x70\x50\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x70\x50\x5b\x1b\x5c"; + return "\x04\x4b\x70\x50\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x70\x50\x5d\x1b\x5c"; + return "\x04\x4b\x70\x50\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x70\x50\x7b\x1b\x5c"; + return "\x04\x4b\x70\x50\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x70\x50\x7d\x1b\x5c"; + return "\x04\x4b\x70\x50\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x70\x50\x40\x1b\x5c"; + return "\x04\x4b\x70\x50\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x70\x50\x25\x1b\x5c"; + return "\x04\x4b\x70\x50\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x70\x50\x24\x1b\x5c"; + return "\x04\x4b\x70\x50\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x70\x50\x23\x1b\x5c"; + return "\x04\x4b\x70\x50\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x70\x50\x42\x41\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x70\x50\x42\x42\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x70\x50\x42\x43\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x70\x50\x42\x44\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x70\x50\x42\x45\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x70\x50\x42\x46\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x70\x50\x42\x47\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x70\x50\x42\x48\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x70\x50\x42\x49\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x70\x50\x42\x4a\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x70\x50\x42\x4b\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x70\x50\x42\x4c\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x70\x50\x42\x4d\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x70\x50\x42\x4e\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x70\x50\x42\x4f\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x70\x50\x42\x50\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x70\x50\x42\x51\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x70\x50\x42\x52\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x70\x50\x42\x53\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x70\x50\x42\x54\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x70\x50\x42\x55\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x70\x50\x42\x56\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x70\x50\x42\x57\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x70\x50\x42\x58\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x70\x50\x42\x59\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x70\x50\x42\x5a\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x50\x42\x61\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x50\x42\x62\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x70\x50\x42\x63\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x70\x50\x42\x64\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x70\x50\x42\x65\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x70\x50\x42\x66\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x70\x50\x42\x67\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x70\x50\x42\x68\x1b\x5c"; + return "\x05\x4b\x70\x50\x42\x68"; } // end switch(key) } // end switch(mods) @@ -12829,3762 +12829,3762 @@ key_lookup(uint8_t key, KeyboardMode mode, uint8_t mods, uint8_t action) { case 0x0: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x74\x41\x41\x1b\x5c"; + return "\x04\x4b\x74\x41\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x74\x41\x42\x1b\x5c"; + return "\x04\x4b\x74\x41\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x74\x41\x43\x1b\x5c"; + return "\x04\x4b\x74\x41\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x74\x41\x44\x1b\x5c"; + return "\x04\x4b\x74\x41\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x74\x41\x45\x1b\x5c"; + return "\x04\x4b\x74\x41\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x74\x41\x46\x1b\x5c"; + return "\x04\x4b\x74\x41\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x74\x41\x47\x1b\x5c"; + return "\x04\x4b\x74\x41\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x74\x41\x48\x1b\x5c"; + return "\x04\x4b\x74\x41\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x74\x41\x49\x1b\x5c"; + return "\x04\x4b\x74\x41\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x74\x41\x4a\x1b\x5c"; + return "\x04\x4b\x74\x41\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x74\x41\x4b\x1b\x5c"; + return "\x04\x4b\x74\x41\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x74\x41\x4c\x1b\x5c"; + return "\x04\x4b\x74\x41\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x74\x41\x4d\x1b\x5c"; + return "\x04\x4b\x74\x41\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x74\x41\x4e\x1b\x5c"; + return "\x04\x4b\x74\x41\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x74\x41\x4f\x1b\x5c"; + return "\x04\x4b\x74\x41\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x74\x41\x50\x1b\x5c"; + return "\x04\x4b\x74\x41\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x74\x41\x51\x1b\x5c"; + return "\x04\x4b\x74\x41\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x74\x41\x52\x1b\x5c"; + return "\x04\x4b\x74\x41\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x74\x41\x53\x1b\x5c"; + return "\x04\x4b\x74\x41\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x74\x41\x54\x1b\x5c"; + return "\x04\x4b\x74\x41\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x74\x41\x55\x1b\x5c"; + return "\x04\x4b\x74\x41\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x74\x41\x56\x1b\x5c"; + return "\x04\x4b\x74\x41\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x74\x41\x57\x1b\x5c"; + return "\x04\x4b\x74\x41\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x74\x41\x58\x1b\x5c"; + return "\x04\x4b\x74\x41\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x74\x41\x59\x1b\x5c"; + return "\x04\x4b\x74\x41\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x74\x41\x5a\x1b\x5c"; + return "\x04\x4b\x74\x41\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x74\x41\x61\x1b\x5c"; + return "\x04\x4b\x74\x41\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x74\x41\x62\x1b\x5c"; + return "\x04\x4b\x74\x41\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x74\x41\x63\x1b\x5c"; + return "\x04\x4b\x74\x41\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x74\x41\x64\x1b\x5c"; + return "\x04\x4b\x74\x41\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x74\x41\x65\x1b\x5c"; + return "\x04\x4b\x74\x41\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x74\x41\x66\x1b\x5c"; + return "\x04\x4b\x74\x41\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x74\x41\x67\x1b\x5c"; + return "\x04\x4b\x74\x41\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x74\x41\x68\x1b\x5c"; + return "\x04\x4b\x74\x41\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x74\x41\x69\x1b\x5c"; + return "\x04\x4b\x74\x41\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x74\x41\x6a\x1b\x5c"; + return "\x04\x4b\x74\x41\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x74\x41\x6b\x1b\x5c"; + return "\x04\x4b\x74\x41\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x74\x41\x6c\x1b\x5c"; + return "\x04\x4b\x74\x41\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x74\x41\x6d\x1b\x5c"; + return "\x04\x4b\x74\x41\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x74\x41\x6e\x1b\x5c"; + return "\x04\x4b\x74\x41\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x74\x41\x6f\x1b\x5c"; + return "\x04\x4b\x74\x41\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x74\x41\x70\x1b\x5c"; + return "\x04\x4b\x74\x41\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x74\x41\x71\x1b\x5c"; + return "\x04\x4b\x74\x41\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x74\x41\x72\x1b\x5c"; + return "\x04\x4b\x74\x41\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x41\x73\x1b\x5c"; + return "\x04\x4b\x74\x41\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x74\x41\x74\x1b\x5c"; + return "\x04\x4b\x74\x41\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x41\x75\x1b\x5c"; + return "\x04\x4b\x74\x41\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x74\x41\x76\x1b\x5c"; + return "\x04\x4b\x74\x41\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x74\x41\x77\x1b\x5c"; + return "\x04\x4b\x74\x41\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x74\x41\x78\x1b\x5c"; + return "\x04\x4b\x74\x41\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x74\x41\x79\x1b\x5c"; + return "\x04\x4b\x74\x41\x79"; case 51: // ENTER return "\x01\x0d"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x74\x41\x30\x1b\x5c"; + return "\x04\x4b\x74\x41\x30"; case 53: // BACKSPACE return "\x01\x7f"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x74\x41\x32\x1b\x5c"; + return "\x04\x4b\x74\x41\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x74\x41\x33\x1b\x5c"; + return "\x04\x4b\x74\x41\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x74\x41\x34\x1b\x5c"; + return "\x04\x4b\x74\x41\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x74\x41\x35\x1b\x5c"; + return "\x04\x4b\x74\x41\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x74\x41\x36\x1b\x5c"; + return "\x04\x4b\x74\x41\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x74\x41\x37\x1b\x5c"; + return "\x04\x4b\x74\x41\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x74\x41\x38\x1b\x5c"; + return "\x04\x4b\x74\x41\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x74\x41\x39\x1b\x5c"; + return "\x04\x4b\x74\x41\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x74\x41\x2e\x1b\x5c"; + return "\x04\x4b\x74\x41\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x74\x41\x2d\x1b\x5c"; + return "\x04\x4b\x74\x41\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x74\x41\x3a\x1b\x5c"; + return "\x04\x4b\x74\x41\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x74\x41\x2b\x1b\x5c"; + return "\x04\x4b\x74\x41\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x74\x41\x3d\x1b\x5c"; + return "\x04\x4b\x74\x41\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x74\x41\x5e\x1b\x5c"; + return "\x04\x4b\x74\x41\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x74\x41\x21\x1b\x5c"; + return "\x04\x4b\x74\x41\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x74\x41\x2f\x1b\x5c"; + return "\x04\x4b\x74\x41\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x74\x41\x2a\x1b\x5c"; + return "\x04\x4b\x74\x41\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x74\x41\x3f\x1b\x5c"; + return "\x04\x4b\x74\x41\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x74\x41\x26\x1b\x5c"; + return "\x04\x4b\x74\x41\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x74\x41\x3c\x1b\x5c"; + return "\x04\x4b\x74\x41\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x74\x41\x3e\x1b\x5c"; + return "\x04\x4b\x74\x41\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x74\x41\x28\x1b\x5c"; + return "\x04\x4b\x74\x41\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x74\x41\x29\x1b\x5c"; + return "\x04\x4b\x74\x41\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x74\x41\x5b\x1b\x5c"; + return "\x04\x4b\x74\x41\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x74\x41\x5d\x1b\x5c"; + return "\x04\x4b\x74\x41\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x74\x41\x7b\x1b\x5c"; + return "\x04\x4b\x74\x41\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x74\x41\x7d\x1b\x5c"; + return "\x04\x4b\x74\x41\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x74\x41\x40\x1b\x5c"; + return "\x04\x4b\x74\x41\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x74\x41\x25\x1b\x5c"; + return "\x04\x4b\x74\x41\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x74\x41\x24\x1b\x5c"; + return "\x04\x4b\x74\x41\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x74\x41\x23\x1b\x5c"; + return "\x04\x4b\x74\x41\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x74\x41\x42\x41\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x74\x41\x42\x42\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x74\x41\x42\x43\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x74\x41\x42\x44\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x74\x41\x42\x45\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x74\x41\x42\x46\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x74\x41\x42\x47\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x74\x41\x42\x48\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x74\x41\x42\x49\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x74\x41\x42\x4a\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x74\x41\x42\x4b\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x74\x41\x42\x4c\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x74\x41\x42\x4d\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x74\x41\x42\x4e\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x74\x41\x42\x4f\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x74\x41\x42\x50\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x74\x41\x42\x51\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x74\x41\x42\x52\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x74\x41\x42\x53\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x74\x41\x42\x54\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x74\x41\x42\x55\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x74\x41\x42\x56\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x74\x41\x42\x57\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x74\x41\x42\x58\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x74\x41\x42\x59\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x74\x41\x42\x5a\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x41\x42\x61\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x41\x42\x62\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x74\x41\x42\x63\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x74\x41\x42\x64\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x41\x42\x65\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x41\x42\x66\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x74\x41\x42\x67\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x74\x41\x42\x68\x1b\x5c"; + return "\x05\x4b\x74\x41\x42\x68"; } // end switch(key) case 0x1: switch(key & 0x7f) { default: return NULL; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x74\x42\x77\x1b\x5c"; + return "\x04\x4b\x74\x42\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x74\x42\x78\x1b\x5c"; + return "\x04\x4b\x74\x42\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x74\x42\x79\x1b\x5c"; + return "\x04\x4b\x74\x42\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x74\x42\x7a\x1b\x5c"; + return "\x04\x4b\x74\x42\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x74\x42\x30\x1b\x5c"; + return "\x04\x4b\x74\x42\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x74\x42\x31\x1b\x5c"; + return "\x04\x4b\x74\x42\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x74\x42\x32\x1b\x5c"; + return "\x04\x4b\x74\x42\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x74\x42\x33\x1b\x5c"; + return "\x04\x4b\x74\x42\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x74\x42\x34\x1b\x5c"; + return "\x04\x4b\x74\x42\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x74\x42\x35\x1b\x5c"; + return "\x04\x4b\x74\x42\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x74\x42\x36\x1b\x5c"; + return "\x04\x4b\x74\x42\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x74\x42\x37\x1b\x5c"; + return "\x04\x4b\x74\x42\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x74\x42\x38\x1b\x5c"; + return "\x04\x4b\x74\x42\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x74\x42\x39\x1b\x5c"; + return "\x04\x4b\x74\x42\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x74\x42\x2e\x1b\x5c"; + return "\x04\x4b\x74\x42\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x74\x42\x2d\x1b\x5c"; + return "\x04\x4b\x74\x42\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x74\x42\x3a\x1b\x5c"; + return "\x04\x4b\x74\x42\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x74\x42\x2b\x1b\x5c"; + return "\x04\x4b\x74\x42\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x74\x42\x3d\x1b\x5c"; + return "\x04\x4b\x74\x42\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x74\x42\x5e\x1b\x5c"; + return "\x04\x4b\x74\x42\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x74\x42\x21\x1b\x5c"; + return "\x04\x4b\x74\x42\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x74\x42\x2f\x1b\x5c"; + return "\x04\x4b\x74\x42\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x74\x42\x2a\x1b\x5c"; + return "\x04\x4b\x74\x42\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x74\x42\x3f\x1b\x5c"; + return "\x04\x4b\x74\x42\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x74\x42\x26\x1b\x5c"; + return "\x04\x4b\x74\x42\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x74\x42\x3c\x1b\x5c"; + return "\x04\x4b\x74\x42\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x74\x42\x3e\x1b\x5c"; + return "\x04\x4b\x74\x42\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x74\x42\x28\x1b\x5c"; + return "\x04\x4b\x74\x42\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x74\x42\x29\x1b\x5c"; + return "\x04\x4b\x74\x42\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x74\x42\x5b\x1b\x5c"; + return "\x04\x4b\x74\x42\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x74\x42\x5d\x1b\x5c"; + return "\x04\x4b\x74\x42\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x74\x42\x7b\x1b\x5c"; + return "\x04\x4b\x74\x42\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x74\x42\x7d\x1b\x5c"; + return "\x04\x4b\x74\x42\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x74\x42\x40\x1b\x5c"; + return "\x04\x4b\x74\x42\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x74\x42\x25\x1b\x5c"; + return "\x04\x4b\x74\x42\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x74\x42\x24\x1b\x5c"; + return "\x04\x4b\x74\x42\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x74\x42\x23\x1b\x5c"; + return "\x04\x4b\x74\x42\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x74\x42\x42\x41\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x74\x42\x42\x42\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x74\x42\x42\x43\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x74\x42\x42\x44\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x74\x42\x42\x45\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x74\x42\x42\x46\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x74\x42\x42\x47\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x74\x42\x42\x48\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x74\x42\x42\x49\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x74\x42\x42\x4a\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x74\x42\x42\x4b\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x74\x42\x42\x4c\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x74\x42\x42\x4d\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x74\x42\x42\x4e\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x74\x42\x42\x4f\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x74\x42\x42\x50\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x74\x42\x42\x51\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x74\x42\x42\x52\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x74\x42\x42\x53\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x74\x42\x42\x54\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x74\x42\x42\x55\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x74\x42\x42\x56\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x74\x42\x42\x57\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x74\x42\x42\x58\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x74\x42\x42\x59\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x74\x42\x42\x5a\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x42\x42\x61\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x42\x42\x62\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x74\x42\x42\x63\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x74\x42\x42\x64\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x42\x42\x65\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x42\x42\x66\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x74\x42\x42\x67\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x74\x42\x42\x68\x1b\x5c"; + return "\x05\x4b\x74\x42\x42\x68"; } // end switch(key) case 0x2: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x74\x45\x41\x1b\x5c"; + return "\x04\x4b\x74\x45\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x74\x45\x42\x1b\x5c"; + return "\x04\x4b\x74\x45\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x74\x45\x43\x1b\x5c"; + return "\x04\x4b\x74\x45\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x74\x45\x44\x1b\x5c"; + return "\x04\x4b\x74\x45\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x74\x45\x45\x1b\x5c"; + return "\x04\x4b\x74\x45\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x74\x45\x46\x1b\x5c"; + return "\x04\x4b\x74\x45\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x74\x45\x47\x1b\x5c"; + return "\x04\x4b\x74\x45\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x74\x45\x48\x1b\x5c"; + return "\x04\x4b\x74\x45\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x74\x45\x49\x1b\x5c"; + return "\x04\x4b\x74\x45\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x74\x45\x4a\x1b\x5c"; + return "\x04\x4b\x74\x45\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x74\x45\x4b\x1b\x5c"; + return "\x04\x4b\x74\x45\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x74\x45\x4c\x1b\x5c"; + return "\x04\x4b\x74\x45\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x74\x45\x4d\x1b\x5c"; + return "\x04\x4b\x74\x45\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x74\x45\x4e\x1b\x5c"; + return "\x04\x4b\x74\x45\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x74\x45\x4f\x1b\x5c"; + return "\x04\x4b\x74\x45\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x74\x45\x50\x1b\x5c"; + return "\x04\x4b\x74\x45\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x74\x45\x51\x1b\x5c"; + return "\x04\x4b\x74\x45\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x74\x45\x52\x1b\x5c"; + return "\x04\x4b\x74\x45\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x74\x45\x53\x1b\x5c"; + return "\x04\x4b\x74\x45\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x74\x45\x54\x1b\x5c"; + return "\x04\x4b\x74\x45\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x74\x45\x55\x1b\x5c"; + return "\x04\x4b\x74\x45\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x74\x45\x56\x1b\x5c"; + return "\x04\x4b\x74\x45\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x74\x45\x57\x1b\x5c"; + return "\x04\x4b\x74\x45\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x74\x45\x58\x1b\x5c"; + return "\x04\x4b\x74\x45\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x74\x45\x59\x1b\x5c"; + return "\x04\x4b\x74\x45\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x74\x45\x5a\x1b\x5c"; + return "\x04\x4b\x74\x45\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x74\x45\x61\x1b\x5c"; + return "\x04\x4b\x74\x45\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x74\x45\x62\x1b\x5c"; + return "\x04\x4b\x74\x45\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x74\x45\x63\x1b\x5c"; + return "\x04\x4b\x74\x45\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x74\x45\x64\x1b\x5c"; + return "\x04\x4b\x74\x45\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x74\x45\x65\x1b\x5c"; + return "\x04\x4b\x74\x45\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x74\x45\x66\x1b\x5c"; + return "\x04\x4b\x74\x45\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x74\x45\x67\x1b\x5c"; + return "\x04\x4b\x74\x45\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x74\x45\x68\x1b\x5c"; + return "\x04\x4b\x74\x45\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x74\x45\x69\x1b\x5c"; + return "\x04\x4b\x74\x45\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x74\x45\x6a\x1b\x5c"; + return "\x04\x4b\x74\x45\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x74\x45\x6b\x1b\x5c"; + return "\x04\x4b\x74\x45\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x74\x45\x6c\x1b\x5c"; + return "\x04\x4b\x74\x45\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x74\x45\x6d\x1b\x5c"; + return "\x04\x4b\x74\x45\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x74\x45\x6e\x1b\x5c"; + return "\x04\x4b\x74\x45\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x74\x45\x6f\x1b\x5c"; + return "\x04\x4b\x74\x45\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x74\x45\x70\x1b\x5c"; + return "\x04\x4b\x74\x45\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x74\x45\x71\x1b\x5c"; + return "\x04\x4b\x74\x45\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x74\x45\x72\x1b\x5c"; + return "\x04\x4b\x74\x45\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x45\x73\x1b\x5c"; + return "\x04\x4b\x74\x45\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x74\x45\x74\x1b\x5c"; + return "\x04\x4b\x74\x45\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x45\x75\x1b\x5c"; + return "\x04\x4b\x74\x45\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x74\x45\x76\x1b\x5c"; + return "\x04\x4b\x74\x45\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x74\x45\x77\x1b\x5c"; + return "\x04\x4b\x74\x45\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x74\x45\x78\x1b\x5c"; + return "\x04\x4b\x74\x45\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x74\x45\x79\x1b\x5c"; + return "\x04\x4b\x74\x45\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x74\x45\x7a\x1b\x5c"; + return "\x04\x4b\x74\x45\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x74\x45\x30\x1b\x5c"; + return "\x04\x4b\x74\x45\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x74\x45\x31\x1b\x5c"; + return "\x04\x4b\x74\x45\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x74\x45\x32\x1b\x5c"; + return "\x04\x4b\x74\x45\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x74\x45\x33\x1b\x5c"; + return "\x04\x4b\x74\x45\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x74\x45\x34\x1b\x5c"; + return "\x04\x4b\x74\x45\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x74\x45\x35\x1b\x5c"; + return "\x04\x4b\x74\x45\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x74\x45\x36\x1b\x5c"; + return "\x04\x4b\x74\x45\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x74\x45\x37\x1b\x5c"; + return "\x04\x4b\x74\x45\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x74\x45\x38\x1b\x5c"; + return "\x04\x4b\x74\x45\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x74\x45\x39\x1b\x5c"; + return "\x04\x4b\x74\x45\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x74\x45\x2e\x1b\x5c"; + return "\x04\x4b\x74\x45\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x74\x45\x2d\x1b\x5c"; + return "\x04\x4b\x74\x45\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x74\x45\x3a\x1b\x5c"; + return "\x04\x4b\x74\x45\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x74\x45\x2b\x1b\x5c"; + return "\x04\x4b\x74\x45\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x74\x45\x3d\x1b\x5c"; + return "\x04\x4b\x74\x45\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x74\x45\x5e\x1b\x5c"; + return "\x04\x4b\x74\x45\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x74\x45\x21\x1b\x5c"; + return "\x04\x4b\x74\x45\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x74\x45\x2f\x1b\x5c"; + return "\x04\x4b\x74\x45\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x74\x45\x2a\x1b\x5c"; + return "\x04\x4b\x74\x45\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x74\x45\x3f\x1b\x5c"; + return "\x04\x4b\x74\x45\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x74\x45\x26\x1b\x5c"; + return "\x04\x4b\x74\x45\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x74\x45\x3c\x1b\x5c"; + return "\x04\x4b\x74\x45\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x74\x45\x3e\x1b\x5c"; + return "\x04\x4b\x74\x45\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x74\x45\x28\x1b\x5c"; + return "\x04\x4b\x74\x45\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x74\x45\x29\x1b\x5c"; + return "\x04\x4b\x74\x45\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x74\x45\x5b\x1b\x5c"; + return "\x04\x4b\x74\x45\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x74\x45\x5d\x1b\x5c"; + return "\x04\x4b\x74\x45\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x74\x45\x7b\x1b\x5c"; + return "\x04\x4b\x74\x45\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x74\x45\x7d\x1b\x5c"; + return "\x04\x4b\x74\x45\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x74\x45\x40\x1b\x5c"; + return "\x04\x4b\x74\x45\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x74\x45\x25\x1b\x5c"; + return "\x04\x4b\x74\x45\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x74\x45\x24\x1b\x5c"; + return "\x04\x4b\x74\x45\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x74\x45\x23\x1b\x5c"; + return "\x04\x4b\x74\x45\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x74\x45\x42\x41\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x74\x45\x42\x42\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x74\x45\x42\x43\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x74\x45\x42\x44\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x74\x45\x42\x45\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x74\x45\x42\x46\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x74\x45\x42\x47\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x74\x45\x42\x48\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x74\x45\x42\x49\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x74\x45\x42\x4a\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x74\x45\x42\x4b\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x74\x45\x42\x4c\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x74\x45\x42\x4d\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x74\x45\x42\x4e\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x74\x45\x42\x4f\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x74\x45\x42\x50\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x74\x45\x42\x51\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x74\x45\x42\x52\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x74\x45\x42\x53\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x74\x45\x42\x54\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x74\x45\x42\x55\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x74\x45\x42\x56\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x74\x45\x42\x57\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x74\x45\x42\x58\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x74\x45\x42\x59\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x74\x45\x42\x5a\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x45\x42\x61\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x45\x42\x62\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x74\x45\x42\x63\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x74\x45\x42\x64\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x45\x42\x65\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x45\x42\x66\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x74\x45\x42\x67\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x74\x45\x42\x68\x1b\x5c"; + return "\x05\x4b\x74\x45\x42\x68"; } // end switch(key) case 0x3: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x74\x46\x41\x1b\x5c"; + return "\x04\x4b\x74\x46\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x74\x46\x42\x1b\x5c"; + return "\x04\x4b\x74\x46\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x74\x46\x43\x1b\x5c"; + return "\x04\x4b\x74\x46\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x74\x46\x44\x1b\x5c"; + return "\x04\x4b\x74\x46\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x74\x46\x45\x1b\x5c"; + return "\x04\x4b\x74\x46\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x74\x46\x46\x1b\x5c"; + return "\x04\x4b\x74\x46\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x74\x46\x47\x1b\x5c"; + return "\x04\x4b\x74\x46\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x74\x46\x48\x1b\x5c"; + return "\x04\x4b\x74\x46\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x74\x46\x49\x1b\x5c"; + return "\x04\x4b\x74\x46\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x74\x46\x4a\x1b\x5c"; + return "\x04\x4b\x74\x46\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x74\x46\x4b\x1b\x5c"; + return "\x04\x4b\x74\x46\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x74\x46\x4c\x1b\x5c"; + return "\x04\x4b\x74\x46\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x74\x46\x4d\x1b\x5c"; + return "\x04\x4b\x74\x46\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x74\x46\x4e\x1b\x5c"; + return "\x04\x4b\x74\x46\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x74\x46\x4f\x1b\x5c"; + return "\x04\x4b\x74\x46\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x74\x46\x50\x1b\x5c"; + return "\x04\x4b\x74\x46\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x74\x46\x51\x1b\x5c"; + return "\x04\x4b\x74\x46\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x74\x46\x52\x1b\x5c"; + return "\x04\x4b\x74\x46\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x74\x46\x53\x1b\x5c"; + return "\x04\x4b\x74\x46\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x74\x46\x54\x1b\x5c"; + return "\x04\x4b\x74\x46\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x74\x46\x55\x1b\x5c"; + return "\x04\x4b\x74\x46\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x74\x46\x56\x1b\x5c"; + return "\x04\x4b\x74\x46\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x74\x46\x57\x1b\x5c"; + return "\x04\x4b\x74\x46\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x74\x46\x58\x1b\x5c"; + return "\x04\x4b\x74\x46\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x74\x46\x59\x1b\x5c"; + return "\x04\x4b\x74\x46\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x74\x46\x5a\x1b\x5c"; + return "\x04\x4b\x74\x46\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x74\x46\x61\x1b\x5c"; + return "\x04\x4b\x74\x46\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x74\x46\x62\x1b\x5c"; + return "\x04\x4b\x74\x46\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x74\x46\x63\x1b\x5c"; + return "\x04\x4b\x74\x46\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x74\x46\x64\x1b\x5c"; + return "\x04\x4b\x74\x46\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x74\x46\x65\x1b\x5c"; + return "\x04\x4b\x74\x46\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x74\x46\x66\x1b\x5c"; + return "\x04\x4b\x74\x46\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x74\x46\x67\x1b\x5c"; + return "\x04\x4b\x74\x46\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x74\x46\x68\x1b\x5c"; + return "\x04\x4b\x74\x46\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x74\x46\x69\x1b\x5c"; + return "\x04\x4b\x74\x46\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x74\x46\x6a\x1b\x5c"; + return "\x04\x4b\x74\x46\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x74\x46\x6b\x1b\x5c"; + return "\x04\x4b\x74\x46\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x74\x46\x6c\x1b\x5c"; + return "\x04\x4b\x74\x46\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x74\x46\x6d\x1b\x5c"; + return "\x04\x4b\x74\x46\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x74\x46\x6e\x1b\x5c"; + return "\x04\x4b\x74\x46\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x74\x46\x6f\x1b\x5c"; + return "\x04\x4b\x74\x46\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x74\x46\x70\x1b\x5c"; + return "\x04\x4b\x74\x46\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x74\x46\x71\x1b\x5c"; + return "\x04\x4b\x74\x46\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x74\x46\x72\x1b\x5c"; + return "\x04\x4b\x74\x46\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x46\x73\x1b\x5c"; + return "\x04\x4b\x74\x46\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x74\x46\x74\x1b\x5c"; + return "\x04\x4b\x74\x46\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x46\x75\x1b\x5c"; + return "\x04\x4b\x74\x46\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x74\x46\x76\x1b\x5c"; + return "\x04\x4b\x74\x46\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x74\x46\x77\x1b\x5c"; + return "\x04\x4b\x74\x46\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x74\x46\x78\x1b\x5c"; + return "\x04\x4b\x74\x46\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x74\x46\x79\x1b\x5c"; + return "\x04\x4b\x74\x46\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x74\x46\x7a\x1b\x5c"; + return "\x04\x4b\x74\x46\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x74\x46\x30\x1b\x5c"; + return "\x04\x4b\x74\x46\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x74\x46\x31\x1b\x5c"; + return "\x04\x4b\x74\x46\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x74\x46\x32\x1b\x5c"; + return "\x04\x4b\x74\x46\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x74\x46\x33\x1b\x5c"; + return "\x04\x4b\x74\x46\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x74\x46\x34\x1b\x5c"; + return "\x04\x4b\x74\x46\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x74\x46\x35\x1b\x5c"; + return "\x04\x4b\x74\x46\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x74\x46\x36\x1b\x5c"; + return "\x04\x4b\x74\x46\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x74\x46\x37\x1b\x5c"; + return "\x04\x4b\x74\x46\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x74\x46\x38\x1b\x5c"; + return "\x04\x4b\x74\x46\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x74\x46\x39\x1b\x5c"; + return "\x04\x4b\x74\x46\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x74\x46\x2e\x1b\x5c"; + return "\x04\x4b\x74\x46\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x74\x46\x2d\x1b\x5c"; + return "\x04\x4b\x74\x46\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x74\x46\x3a\x1b\x5c"; + return "\x04\x4b\x74\x46\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x74\x46\x2b\x1b\x5c"; + return "\x04\x4b\x74\x46\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x74\x46\x3d\x1b\x5c"; + return "\x04\x4b\x74\x46\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x74\x46\x5e\x1b\x5c"; + return "\x04\x4b\x74\x46\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x74\x46\x21\x1b\x5c"; + return "\x04\x4b\x74\x46\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x74\x46\x2f\x1b\x5c"; + return "\x04\x4b\x74\x46\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x74\x46\x2a\x1b\x5c"; + return "\x04\x4b\x74\x46\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x74\x46\x3f\x1b\x5c"; + return "\x04\x4b\x74\x46\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x74\x46\x26\x1b\x5c"; + return "\x04\x4b\x74\x46\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x74\x46\x3c\x1b\x5c"; + return "\x04\x4b\x74\x46\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x74\x46\x3e\x1b\x5c"; + return "\x04\x4b\x74\x46\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x74\x46\x28\x1b\x5c"; + return "\x04\x4b\x74\x46\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x74\x46\x29\x1b\x5c"; + return "\x04\x4b\x74\x46\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x74\x46\x5b\x1b\x5c"; + return "\x04\x4b\x74\x46\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x74\x46\x5d\x1b\x5c"; + return "\x04\x4b\x74\x46\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x74\x46\x7b\x1b\x5c"; + return "\x04\x4b\x74\x46\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x74\x46\x7d\x1b\x5c"; + return "\x04\x4b\x74\x46\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x74\x46\x40\x1b\x5c"; + return "\x04\x4b\x74\x46\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x74\x46\x25\x1b\x5c"; + return "\x04\x4b\x74\x46\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x74\x46\x24\x1b\x5c"; + return "\x04\x4b\x74\x46\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x74\x46\x23\x1b\x5c"; + return "\x04\x4b\x74\x46\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x74\x46\x42\x41\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x74\x46\x42\x42\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x74\x46\x42\x43\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x74\x46\x42\x44\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x74\x46\x42\x45\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x74\x46\x42\x46\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x74\x46\x42\x47\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x74\x46\x42\x48\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x74\x46\x42\x49\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x74\x46\x42\x4a\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x74\x46\x42\x4b\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x74\x46\x42\x4c\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x74\x46\x42\x4d\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x74\x46\x42\x4e\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x74\x46\x42\x4f\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x74\x46\x42\x50\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x74\x46\x42\x51\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x74\x46\x42\x52\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x74\x46\x42\x53\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x74\x46\x42\x54\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x74\x46\x42\x55\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x74\x46\x42\x56\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x74\x46\x42\x57\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x74\x46\x42\x58\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x74\x46\x42\x59\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x74\x46\x42\x5a\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x46\x42\x61\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x46\x42\x62\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x74\x46\x42\x63\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x74\x46\x42\x64\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x46\x42\x65\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x46\x42\x66\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x74\x46\x42\x67\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x74\x46\x42\x68\x1b\x5c"; + return "\x05\x4b\x74\x46\x42\x68"; } // end switch(key) case 0x4: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x74\x43\x41\x1b\x5c"; + return "\x04\x4b\x74\x43\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x74\x43\x42\x1b\x5c"; + return "\x04\x4b\x74\x43\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x74\x43\x43\x1b\x5c"; + return "\x04\x4b\x74\x43\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x74\x43\x44\x1b\x5c"; + return "\x04\x4b\x74\x43\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x74\x43\x45\x1b\x5c"; + return "\x04\x4b\x74\x43\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x74\x43\x46\x1b\x5c"; + return "\x04\x4b\x74\x43\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x74\x43\x47\x1b\x5c"; + return "\x04\x4b\x74\x43\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x74\x43\x48\x1b\x5c"; + return "\x04\x4b\x74\x43\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x74\x43\x49\x1b\x5c"; + return "\x04\x4b\x74\x43\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x74\x43\x4a\x1b\x5c"; + return "\x04\x4b\x74\x43\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x74\x43\x4b\x1b\x5c"; + return "\x04\x4b\x74\x43\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x74\x43\x4c\x1b\x5c"; + return "\x04\x4b\x74\x43\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x74\x43\x4d\x1b\x5c"; + return "\x04\x4b\x74\x43\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x74\x43\x4e\x1b\x5c"; + return "\x04\x4b\x74\x43\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x74\x43\x4f\x1b\x5c"; + return "\x04\x4b\x74\x43\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x74\x43\x50\x1b\x5c"; + return "\x04\x4b\x74\x43\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x74\x43\x51\x1b\x5c"; + return "\x04\x4b\x74\x43\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x74\x43\x52\x1b\x5c"; + return "\x04\x4b\x74\x43\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x74\x43\x53\x1b\x5c"; + return "\x04\x4b\x74\x43\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x74\x43\x54\x1b\x5c"; + return "\x04\x4b\x74\x43\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x74\x43\x55\x1b\x5c"; + return "\x04\x4b\x74\x43\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x74\x43\x56\x1b\x5c"; + return "\x04\x4b\x74\x43\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x74\x43\x57\x1b\x5c"; + return "\x04\x4b\x74\x43\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x74\x43\x58\x1b\x5c"; + return "\x04\x4b\x74\x43\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x74\x43\x59\x1b\x5c"; + return "\x04\x4b\x74\x43\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x74\x43\x5a\x1b\x5c"; + return "\x04\x4b\x74\x43\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x74\x43\x61\x1b\x5c"; + return "\x04\x4b\x74\x43\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x74\x43\x62\x1b\x5c"; + return "\x04\x4b\x74\x43\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x74\x43\x63\x1b\x5c"; + return "\x04\x4b\x74\x43\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x74\x43\x64\x1b\x5c"; + return "\x04\x4b\x74\x43\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x74\x43\x65\x1b\x5c"; + return "\x04\x4b\x74\x43\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x74\x43\x66\x1b\x5c"; + return "\x04\x4b\x74\x43\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x74\x43\x67\x1b\x5c"; + return "\x04\x4b\x74\x43\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x74\x43\x68\x1b\x5c"; + return "\x04\x4b\x74\x43\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x74\x43\x69\x1b\x5c"; + return "\x04\x4b\x74\x43\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x74\x43\x6a\x1b\x5c"; + return "\x04\x4b\x74\x43\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x74\x43\x6b\x1b\x5c"; + return "\x04\x4b\x74\x43\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x74\x43\x6c\x1b\x5c"; + return "\x04\x4b\x74\x43\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x74\x43\x6d\x1b\x5c"; + return "\x04\x4b\x74\x43\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x74\x43\x6e\x1b\x5c"; + return "\x04\x4b\x74\x43\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x74\x43\x6f\x1b\x5c"; + return "\x04\x4b\x74\x43\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x74\x43\x70\x1b\x5c"; + return "\x04\x4b\x74\x43\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x74\x43\x71\x1b\x5c"; + return "\x04\x4b\x74\x43\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x74\x43\x72\x1b\x5c"; + return "\x04\x4b\x74\x43\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x43\x73\x1b\x5c"; + return "\x04\x4b\x74\x43\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x74\x43\x74\x1b\x5c"; + return "\x04\x4b\x74\x43\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x43\x75\x1b\x5c"; + return "\x04\x4b\x74\x43\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x74\x43\x76\x1b\x5c"; + return "\x04\x4b\x74\x43\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x74\x43\x77\x1b\x5c"; + return "\x04\x4b\x74\x43\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x74\x43\x78\x1b\x5c"; + return "\x04\x4b\x74\x43\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x74\x43\x79\x1b\x5c"; + return "\x04\x4b\x74\x43\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x74\x43\x7a\x1b\x5c"; + return "\x04\x4b\x74\x43\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x74\x43\x30\x1b\x5c"; + return "\x04\x4b\x74\x43\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x74\x43\x31\x1b\x5c"; + return "\x04\x4b\x74\x43\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x74\x43\x32\x1b\x5c"; + return "\x04\x4b\x74\x43\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x74\x43\x33\x1b\x5c"; + return "\x04\x4b\x74\x43\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x74\x43\x34\x1b\x5c"; + return "\x04\x4b\x74\x43\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x74\x43\x35\x1b\x5c"; + return "\x04\x4b\x74\x43\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x74\x43\x36\x1b\x5c"; + return "\x04\x4b\x74\x43\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x74\x43\x37\x1b\x5c"; + return "\x04\x4b\x74\x43\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x74\x43\x38\x1b\x5c"; + return "\x04\x4b\x74\x43\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x74\x43\x39\x1b\x5c"; + return "\x04\x4b\x74\x43\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x74\x43\x2e\x1b\x5c"; + return "\x04\x4b\x74\x43\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x74\x43\x2d\x1b\x5c"; + return "\x04\x4b\x74\x43\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x74\x43\x3a\x1b\x5c"; + return "\x04\x4b\x74\x43\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x74\x43\x2b\x1b\x5c"; + return "\x04\x4b\x74\x43\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x74\x43\x3d\x1b\x5c"; + return "\x04\x4b\x74\x43\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x74\x43\x5e\x1b\x5c"; + return "\x04\x4b\x74\x43\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x74\x43\x21\x1b\x5c"; + return "\x04\x4b\x74\x43\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x74\x43\x2f\x1b\x5c"; + return "\x04\x4b\x74\x43\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x74\x43\x2a\x1b\x5c"; + return "\x04\x4b\x74\x43\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x74\x43\x3f\x1b\x5c"; + return "\x04\x4b\x74\x43\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x74\x43\x26\x1b\x5c"; + return "\x04\x4b\x74\x43\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x74\x43\x3c\x1b\x5c"; + return "\x04\x4b\x74\x43\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x74\x43\x3e\x1b\x5c"; + return "\x04\x4b\x74\x43\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x74\x43\x28\x1b\x5c"; + return "\x04\x4b\x74\x43\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x74\x43\x29\x1b\x5c"; + return "\x04\x4b\x74\x43\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x74\x43\x5b\x1b\x5c"; + return "\x04\x4b\x74\x43\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x74\x43\x5d\x1b\x5c"; + return "\x04\x4b\x74\x43\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x74\x43\x7b\x1b\x5c"; + return "\x04\x4b\x74\x43\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x74\x43\x7d\x1b\x5c"; + return "\x04\x4b\x74\x43\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x74\x43\x40\x1b\x5c"; + return "\x04\x4b\x74\x43\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x74\x43\x25\x1b\x5c"; + return "\x04\x4b\x74\x43\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x74\x43\x24\x1b\x5c"; + return "\x04\x4b\x74\x43\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x74\x43\x23\x1b\x5c"; + return "\x04\x4b\x74\x43\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x74\x43\x42\x41\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x74\x43\x42\x42\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x74\x43\x42\x43\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x74\x43\x42\x44\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x74\x43\x42\x45\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x74\x43\x42\x46\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x74\x43\x42\x47\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x74\x43\x42\x48\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x74\x43\x42\x49\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x74\x43\x42\x4a\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x74\x43\x42\x4b\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x74\x43\x42\x4c\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x74\x43\x42\x4d\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x74\x43\x42\x4e\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x74\x43\x42\x4f\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x74\x43\x42\x50\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x74\x43\x42\x51\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x74\x43\x42\x52\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x74\x43\x42\x53\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x74\x43\x42\x54\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x74\x43\x42\x55\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x74\x43\x42\x56\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x74\x43\x42\x57\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x74\x43\x42\x58\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x74\x43\x42\x59\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x74\x43\x42\x5a\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x43\x42\x61\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x43\x42\x62\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x74\x43\x42\x63\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x74\x43\x42\x64\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x43\x42\x65\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x43\x42\x66\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x74\x43\x42\x67\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x74\x43\x42\x68\x1b\x5c"; + return "\x05\x4b\x74\x43\x42\x68"; } // end switch(key) case 0x5: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x74\x44\x41\x1b\x5c"; + return "\x04\x4b\x74\x44\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x74\x44\x42\x1b\x5c"; + return "\x04\x4b\x74\x44\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x74\x44\x43\x1b\x5c"; + return "\x04\x4b\x74\x44\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x74\x44\x44\x1b\x5c"; + return "\x04\x4b\x74\x44\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x74\x44\x45\x1b\x5c"; + return "\x04\x4b\x74\x44\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x74\x44\x46\x1b\x5c"; + return "\x04\x4b\x74\x44\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x74\x44\x47\x1b\x5c"; + return "\x04\x4b\x74\x44\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x74\x44\x48\x1b\x5c"; + return "\x04\x4b\x74\x44\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x74\x44\x49\x1b\x5c"; + return "\x04\x4b\x74\x44\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x74\x44\x4a\x1b\x5c"; + return "\x04\x4b\x74\x44\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x74\x44\x4b\x1b\x5c"; + return "\x04\x4b\x74\x44\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x74\x44\x4c\x1b\x5c"; + return "\x04\x4b\x74\x44\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x74\x44\x4d\x1b\x5c"; + return "\x04\x4b\x74\x44\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x74\x44\x4e\x1b\x5c"; + return "\x04\x4b\x74\x44\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x74\x44\x4f\x1b\x5c"; + return "\x04\x4b\x74\x44\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x74\x44\x50\x1b\x5c"; + return "\x04\x4b\x74\x44\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x74\x44\x51\x1b\x5c"; + return "\x04\x4b\x74\x44\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x74\x44\x52\x1b\x5c"; + return "\x04\x4b\x74\x44\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x74\x44\x53\x1b\x5c"; + return "\x04\x4b\x74\x44\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x74\x44\x54\x1b\x5c"; + return "\x04\x4b\x74\x44\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x74\x44\x55\x1b\x5c"; + return "\x04\x4b\x74\x44\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x74\x44\x56\x1b\x5c"; + return "\x04\x4b\x74\x44\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x74\x44\x57\x1b\x5c"; + return "\x04\x4b\x74\x44\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x74\x44\x58\x1b\x5c"; + return "\x04\x4b\x74\x44\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x74\x44\x59\x1b\x5c"; + return "\x04\x4b\x74\x44\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x74\x44\x5a\x1b\x5c"; + return "\x04\x4b\x74\x44\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x74\x44\x61\x1b\x5c"; + return "\x04\x4b\x74\x44\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x74\x44\x62\x1b\x5c"; + return "\x04\x4b\x74\x44\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x74\x44\x63\x1b\x5c"; + return "\x04\x4b\x74\x44\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x74\x44\x64\x1b\x5c"; + return "\x04\x4b\x74\x44\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x74\x44\x65\x1b\x5c"; + return "\x04\x4b\x74\x44\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x74\x44\x66\x1b\x5c"; + return "\x04\x4b\x74\x44\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x74\x44\x67\x1b\x5c"; + return "\x04\x4b\x74\x44\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x74\x44\x68\x1b\x5c"; + return "\x04\x4b\x74\x44\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x74\x44\x69\x1b\x5c"; + return "\x04\x4b\x74\x44\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x74\x44\x6a\x1b\x5c"; + return "\x04\x4b\x74\x44\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x74\x44\x6b\x1b\x5c"; + return "\x04\x4b\x74\x44\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x74\x44\x6c\x1b\x5c"; + return "\x04\x4b\x74\x44\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x74\x44\x6d\x1b\x5c"; + return "\x04\x4b\x74\x44\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x74\x44\x6e\x1b\x5c"; + return "\x04\x4b\x74\x44\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x74\x44\x6f\x1b\x5c"; + return "\x04\x4b\x74\x44\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x74\x44\x70\x1b\x5c"; + return "\x04\x4b\x74\x44\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x74\x44\x71\x1b\x5c"; + return "\x04\x4b\x74\x44\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x74\x44\x72\x1b\x5c"; + return "\x04\x4b\x74\x44\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x44\x73\x1b\x5c"; + return "\x04\x4b\x74\x44\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x74\x44\x74\x1b\x5c"; + return "\x04\x4b\x74\x44\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x44\x75\x1b\x5c"; + return "\x04\x4b\x74\x44\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x74\x44\x76\x1b\x5c"; + return "\x04\x4b\x74\x44\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x74\x44\x77\x1b\x5c"; + return "\x04\x4b\x74\x44\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x74\x44\x78\x1b\x5c"; + return "\x04\x4b\x74\x44\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x74\x44\x79\x1b\x5c"; + return "\x04\x4b\x74\x44\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x74\x44\x7a\x1b\x5c"; + return "\x04\x4b\x74\x44\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x74\x44\x30\x1b\x5c"; + return "\x04\x4b\x74\x44\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x74\x44\x31\x1b\x5c"; + return "\x04\x4b\x74\x44\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x74\x44\x32\x1b\x5c"; + return "\x04\x4b\x74\x44\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x74\x44\x33\x1b\x5c"; + return "\x04\x4b\x74\x44\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x74\x44\x34\x1b\x5c"; + return "\x04\x4b\x74\x44\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x74\x44\x35\x1b\x5c"; + return "\x04\x4b\x74\x44\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x74\x44\x36\x1b\x5c"; + return "\x04\x4b\x74\x44\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x74\x44\x37\x1b\x5c"; + return "\x04\x4b\x74\x44\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x74\x44\x38\x1b\x5c"; + return "\x04\x4b\x74\x44\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x74\x44\x39\x1b\x5c"; + return "\x04\x4b\x74\x44\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x74\x44\x2e\x1b\x5c"; + return "\x04\x4b\x74\x44\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x74\x44\x2d\x1b\x5c"; + return "\x04\x4b\x74\x44\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x74\x44\x3a\x1b\x5c"; + return "\x04\x4b\x74\x44\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x74\x44\x2b\x1b\x5c"; + return "\x04\x4b\x74\x44\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x74\x44\x3d\x1b\x5c"; + return "\x04\x4b\x74\x44\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x74\x44\x5e\x1b\x5c"; + return "\x04\x4b\x74\x44\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x74\x44\x21\x1b\x5c"; + return "\x04\x4b\x74\x44\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x74\x44\x2f\x1b\x5c"; + return "\x04\x4b\x74\x44\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x74\x44\x2a\x1b\x5c"; + return "\x04\x4b\x74\x44\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x74\x44\x3f\x1b\x5c"; + return "\x04\x4b\x74\x44\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x74\x44\x26\x1b\x5c"; + return "\x04\x4b\x74\x44\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x74\x44\x3c\x1b\x5c"; + return "\x04\x4b\x74\x44\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x74\x44\x3e\x1b\x5c"; + return "\x04\x4b\x74\x44\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x74\x44\x28\x1b\x5c"; + return "\x04\x4b\x74\x44\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x74\x44\x29\x1b\x5c"; + return "\x04\x4b\x74\x44\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x74\x44\x5b\x1b\x5c"; + return "\x04\x4b\x74\x44\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x74\x44\x5d\x1b\x5c"; + return "\x04\x4b\x74\x44\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x74\x44\x7b\x1b\x5c"; + return "\x04\x4b\x74\x44\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x74\x44\x7d\x1b\x5c"; + return "\x04\x4b\x74\x44\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x74\x44\x40\x1b\x5c"; + return "\x04\x4b\x74\x44\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x74\x44\x25\x1b\x5c"; + return "\x04\x4b\x74\x44\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x74\x44\x24\x1b\x5c"; + return "\x04\x4b\x74\x44\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x74\x44\x23\x1b\x5c"; + return "\x04\x4b\x74\x44\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x74\x44\x42\x41\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x74\x44\x42\x42\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x74\x44\x42\x43\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x74\x44\x42\x44\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x74\x44\x42\x45\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x74\x44\x42\x46\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x74\x44\x42\x47\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x74\x44\x42\x48\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x74\x44\x42\x49\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x74\x44\x42\x4a\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x74\x44\x42\x4b\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x74\x44\x42\x4c\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x74\x44\x42\x4d\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x74\x44\x42\x4e\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x74\x44\x42\x4f\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x74\x44\x42\x50\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x74\x44\x42\x51\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x74\x44\x42\x52\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x74\x44\x42\x53\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x74\x44\x42\x54\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x74\x44\x42\x55\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x74\x44\x42\x56\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x74\x44\x42\x57\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x74\x44\x42\x58\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x74\x44\x42\x59\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x74\x44\x42\x5a\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x44\x42\x61\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x44\x42\x62\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x74\x44\x42\x63\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x74\x44\x42\x64\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x44\x42\x65\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x44\x42\x66\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x74\x44\x42\x67\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x74\x44\x42\x68\x1b\x5c"; + return "\x05\x4b\x74\x44\x42\x68"; } // end switch(key) case 0x6: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x74\x47\x41\x1b\x5c"; + return "\x04\x4b\x74\x47\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x74\x47\x42\x1b\x5c"; + return "\x04\x4b\x74\x47\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x74\x47\x43\x1b\x5c"; + return "\x04\x4b\x74\x47\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x74\x47\x44\x1b\x5c"; + return "\x04\x4b\x74\x47\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x74\x47\x45\x1b\x5c"; + return "\x04\x4b\x74\x47\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x74\x47\x46\x1b\x5c"; + return "\x04\x4b\x74\x47\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x74\x47\x47\x1b\x5c"; + return "\x04\x4b\x74\x47\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x74\x47\x48\x1b\x5c"; + return "\x04\x4b\x74\x47\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x74\x47\x49\x1b\x5c"; + return "\x04\x4b\x74\x47\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x74\x47\x4a\x1b\x5c"; + return "\x04\x4b\x74\x47\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x74\x47\x4b\x1b\x5c"; + return "\x04\x4b\x74\x47\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x74\x47\x4c\x1b\x5c"; + return "\x04\x4b\x74\x47\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x74\x47\x4d\x1b\x5c"; + return "\x04\x4b\x74\x47\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x74\x47\x4e\x1b\x5c"; + return "\x04\x4b\x74\x47\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x74\x47\x4f\x1b\x5c"; + return "\x04\x4b\x74\x47\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x74\x47\x50\x1b\x5c"; + return "\x04\x4b\x74\x47\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x74\x47\x51\x1b\x5c"; + return "\x04\x4b\x74\x47\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x74\x47\x52\x1b\x5c"; + return "\x04\x4b\x74\x47\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x74\x47\x53\x1b\x5c"; + return "\x04\x4b\x74\x47\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x74\x47\x54\x1b\x5c"; + return "\x04\x4b\x74\x47\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x74\x47\x55\x1b\x5c"; + return "\x04\x4b\x74\x47\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x74\x47\x56\x1b\x5c"; + return "\x04\x4b\x74\x47\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x74\x47\x57\x1b\x5c"; + return "\x04\x4b\x74\x47\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x74\x47\x58\x1b\x5c"; + return "\x04\x4b\x74\x47\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x74\x47\x59\x1b\x5c"; + return "\x04\x4b\x74\x47\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x74\x47\x5a\x1b\x5c"; + return "\x04\x4b\x74\x47\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x74\x47\x61\x1b\x5c"; + return "\x04\x4b\x74\x47\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x74\x47\x62\x1b\x5c"; + return "\x04\x4b\x74\x47\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x74\x47\x63\x1b\x5c"; + return "\x04\x4b\x74\x47\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x74\x47\x64\x1b\x5c"; + return "\x04\x4b\x74\x47\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x74\x47\x65\x1b\x5c"; + return "\x04\x4b\x74\x47\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x74\x47\x66\x1b\x5c"; + return "\x04\x4b\x74\x47\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x74\x47\x67\x1b\x5c"; + return "\x04\x4b\x74\x47\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x74\x47\x68\x1b\x5c"; + return "\x04\x4b\x74\x47\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x74\x47\x69\x1b\x5c"; + return "\x04\x4b\x74\x47\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x74\x47\x6a\x1b\x5c"; + return "\x04\x4b\x74\x47\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x74\x47\x6b\x1b\x5c"; + return "\x04\x4b\x74\x47\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x74\x47\x6c\x1b\x5c"; + return "\x04\x4b\x74\x47\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x74\x47\x6d\x1b\x5c"; + return "\x04\x4b\x74\x47\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x74\x47\x6e\x1b\x5c"; + return "\x04\x4b\x74\x47\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x74\x47\x6f\x1b\x5c"; + return "\x04\x4b\x74\x47\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x74\x47\x70\x1b\x5c"; + return "\x04\x4b\x74\x47\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x74\x47\x71\x1b\x5c"; + return "\x04\x4b\x74\x47\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x74\x47\x72\x1b\x5c"; + return "\x04\x4b\x74\x47\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x47\x73\x1b\x5c"; + return "\x04\x4b\x74\x47\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x74\x47\x74\x1b\x5c"; + return "\x04\x4b\x74\x47\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x47\x75\x1b\x5c"; + return "\x04\x4b\x74\x47\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x74\x47\x76\x1b\x5c"; + return "\x04\x4b\x74\x47\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x74\x47\x77\x1b\x5c"; + return "\x04\x4b\x74\x47\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x74\x47\x78\x1b\x5c"; + return "\x04\x4b\x74\x47\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x74\x47\x79\x1b\x5c"; + return "\x04\x4b\x74\x47\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x74\x47\x7a\x1b\x5c"; + return "\x04\x4b\x74\x47\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x74\x47\x30\x1b\x5c"; + return "\x04\x4b\x74\x47\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x74\x47\x31\x1b\x5c"; + return "\x04\x4b\x74\x47\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x74\x47\x32\x1b\x5c"; + return "\x04\x4b\x74\x47\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x74\x47\x33\x1b\x5c"; + return "\x04\x4b\x74\x47\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x74\x47\x34\x1b\x5c"; + return "\x04\x4b\x74\x47\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x74\x47\x35\x1b\x5c"; + return "\x04\x4b\x74\x47\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x74\x47\x36\x1b\x5c"; + return "\x04\x4b\x74\x47\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x74\x47\x37\x1b\x5c"; + return "\x04\x4b\x74\x47\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x74\x47\x38\x1b\x5c"; + return "\x04\x4b\x74\x47\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x74\x47\x39\x1b\x5c"; + return "\x04\x4b\x74\x47\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x74\x47\x2e\x1b\x5c"; + return "\x04\x4b\x74\x47\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x74\x47\x2d\x1b\x5c"; + return "\x04\x4b\x74\x47\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x74\x47\x3a\x1b\x5c"; + return "\x04\x4b\x74\x47\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x74\x47\x2b\x1b\x5c"; + return "\x04\x4b\x74\x47\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x74\x47\x3d\x1b\x5c"; + return "\x04\x4b\x74\x47\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x74\x47\x5e\x1b\x5c"; + return "\x04\x4b\x74\x47\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x74\x47\x21\x1b\x5c"; + return "\x04\x4b\x74\x47\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x74\x47\x2f\x1b\x5c"; + return "\x04\x4b\x74\x47\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x74\x47\x2a\x1b\x5c"; + return "\x04\x4b\x74\x47\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x74\x47\x3f\x1b\x5c"; + return "\x04\x4b\x74\x47\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x74\x47\x26\x1b\x5c"; + return "\x04\x4b\x74\x47\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x74\x47\x3c\x1b\x5c"; + return "\x04\x4b\x74\x47\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x74\x47\x3e\x1b\x5c"; + return "\x04\x4b\x74\x47\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x74\x47\x28\x1b\x5c"; + return "\x04\x4b\x74\x47\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x74\x47\x29\x1b\x5c"; + return "\x04\x4b\x74\x47\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x74\x47\x5b\x1b\x5c"; + return "\x04\x4b\x74\x47\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x74\x47\x5d\x1b\x5c"; + return "\x04\x4b\x74\x47\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x74\x47\x7b\x1b\x5c"; + return "\x04\x4b\x74\x47\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x74\x47\x7d\x1b\x5c"; + return "\x04\x4b\x74\x47\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x74\x47\x40\x1b\x5c"; + return "\x04\x4b\x74\x47\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x74\x47\x25\x1b\x5c"; + return "\x04\x4b\x74\x47\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x74\x47\x24\x1b\x5c"; + return "\x04\x4b\x74\x47\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x74\x47\x23\x1b\x5c"; + return "\x04\x4b\x74\x47\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x74\x47\x42\x41\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x74\x47\x42\x42\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x74\x47\x42\x43\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x74\x47\x42\x44\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x74\x47\x42\x45\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x74\x47\x42\x46\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x74\x47\x42\x47\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x74\x47\x42\x48\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x74\x47\x42\x49\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x74\x47\x42\x4a\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x74\x47\x42\x4b\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x74\x47\x42\x4c\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x74\x47\x42\x4d\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x74\x47\x42\x4e\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x74\x47\x42\x4f\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x74\x47\x42\x50\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x74\x47\x42\x51\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x74\x47\x42\x52\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x74\x47\x42\x53\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x74\x47\x42\x54\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x74\x47\x42\x55\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x74\x47\x42\x56\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x74\x47\x42\x57\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x74\x47\x42\x58\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x74\x47\x42\x59\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x74\x47\x42\x5a\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x47\x42\x61\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x47\x42\x62\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x74\x47\x42\x63\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x74\x47\x42\x64\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x47\x42\x65\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x47\x42\x66\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x74\x47\x42\x67\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x74\x47\x42\x68\x1b\x5c"; + return "\x05\x4b\x74\x47\x42\x68"; } // end switch(key) case 0x7: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x74\x48\x41\x1b\x5c"; + return "\x04\x4b\x74\x48\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x74\x48\x42\x1b\x5c"; + return "\x04\x4b\x74\x48\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x74\x48\x43\x1b\x5c"; + return "\x04\x4b\x74\x48\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x74\x48\x44\x1b\x5c"; + return "\x04\x4b\x74\x48\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x74\x48\x45\x1b\x5c"; + return "\x04\x4b\x74\x48\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x74\x48\x46\x1b\x5c"; + return "\x04\x4b\x74\x48\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x74\x48\x47\x1b\x5c"; + return "\x04\x4b\x74\x48\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x74\x48\x48\x1b\x5c"; + return "\x04\x4b\x74\x48\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x74\x48\x49\x1b\x5c"; + return "\x04\x4b\x74\x48\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x74\x48\x4a\x1b\x5c"; + return "\x04\x4b\x74\x48\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x74\x48\x4b\x1b\x5c"; + return "\x04\x4b\x74\x48\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x74\x48\x4c\x1b\x5c"; + return "\x04\x4b\x74\x48\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x74\x48\x4d\x1b\x5c"; + return "\x04\x4b\x74\x48\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x74\x48\x4e\x1b\x5c"; + return "\x04\x4b\x74\x48\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x74\x48\x4f\x1b\x5c"; + return "\x04\x4b\x74\x48\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x74\x48\x50\x1b\x5c"; + return "\x04\x4b\x74\x48\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x74\x48\x51\x1b\x5c"; + return "\x04\x4b\x74\x48\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x74\x48\x52\x1b\x5c"; + return "\x04\x4b\x74\x48\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x74\x48\x53\x1b\x5c"; + return "\x04\x4b\x74\x48\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x74\x48\x54\x1b\x5c"; + return "\x04\x4b\x74\x48\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x74\x48\x55\x1b\x5c"; + return "\x04\x4b\x74\x48\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x74\x48\x56\x1b\x5c"; + return "\x04\x4b\x74\x48\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x74\x48\x57\x1b\x5c"; + return "\x04\x4b\x74\x48\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x74\x48\x58\x1b\x5c"; + return "\x04\x4b\x74\x48\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x74\x48\x59\x1b\x5c"; + return "\x04\x4b\x74\x48\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x74\x48\x5a\x1b\x5c"; + return "\x04\x4b\x74\x48\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x74\x48\x61\x1b\x5c"; + return "\x04\x4b\x74\x48\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x74\x48\x62\x1b\x5c"; + return "\x04\x4b\x74\x48\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x74\x48\x63\x1b\x5c"; + return "\x04\x4b\x74\x48\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x74\x48\x64\x1b\x5c"; + return "\x04\x4b\x74\x48\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x74\x48\x65\x1b\x5c"; + return "\x04\x4b\x74\x48\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x74\x48\x66\x1b\x5c"; + return "\x04\x4b\x74\x48\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x74\x48\x67\x1b\x5c"; + return "\x04\x4b\x74\x48\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x74\x48\x68\x1b\x5c"; + return "\x04\x4b\x74\x48\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x74\x48\x69\x1b\x5c"; + return "\x04\x4b\x74\x48\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x74\x48\x6a\x1b\x5c"; + return "\x04\x4b\x74\x48\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x74\x48\x6b\x1b\x5c"; + return "\x04\x4b\x74\x48\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x74\x48\x6c\x1b\x5c"; + return "\x04\x4b\x74\x48\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x74\x48\x6d\x1b\x5c"; + return "\x04\x4b\x74\x48\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x74\x48\x6e\x1b\x5c"; + return "\x04\x4b\x74\x48\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x74\x48\x6f\x1b\x5c"; + return "\x04\x4b\x74\x48\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x74\x48\x70\x1b\x5c"; + return "\x04\x4b\x74\x48\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x74\x48\x71\x1b\x5c"; + return "\x04\x4b\x74\x48\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x74\x48\x72\x1b\x5c"; + return "\x04\x4b\x74\x48\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x48\x73\x1b\x5c"; + return "\x04\x4b\x74\x48\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x74\x48\x74\x1b\x5c"; + return "\x04\x4b\x74\x48\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x48\x75\x1b\x5c"; + return "\x04\x4b\x74\x48\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x74\x48\x76\x1b\x5c"; + return "\x04\x4b\x74\x48\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x74\x48\x77\x1b\x5c"; + return "\x04\x4b\x74\x48\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x74\x48\x78\x1b\x5c"; + return "\x04\x4b\x74\x48\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x74\x48\x79\x1b\x5c"; + return "\x04\x4b\x74\x48\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x74\x48\x7a\x1b\x5c"; + return "\x04\x4b\x74\x48\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x74\x48\x30\x1b\x5c"; + return "\x04\x4b\x74\x48\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x74\x48\x31\x1b\x5c"; + return "\x04\x4b\x74\x48\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x74\x48\x32\x1b\x5c"; + return "\x04\x4b\x74\x48\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x74\x48\x33\x1b\x5c"; + return "\x04\x4b\x74\x48\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x74\x48\x34\x1b\x5c"; + return "\x04\x4b\x74\x48\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x74\x48\x35\x1b\x5c"; + return "\x04\x4b\x74\x48\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x74\x48\x36\x1b\x5c"; + return "\x04\x4b\x74\x48\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x74\x48\x37\x1b\x5c"; + return "\x04\x4b\x74\x48\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x74\x48\x38\x1b\x5c"; + return "\x04\x4b\x74\x48\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x74\x48\x39\x1b\x5c"; + return "\x04\x4b\x74\x48\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x74\x48\x2e\x1b\x5c"; + return "\x04\x4b\x74\x48\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x74\x48\x2d\x1b\x5c"; + return "\x04\x4b\x74\x48\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x74\x48\x3a\x1b\x5c"; + return "\x04\x4b\x74\x48\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x74\x48\x2b\x1b\x5c"; + return "\x04\x4b\x74\x48\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x74\x48\x3d\x1b\x5c"; + return "\x04\x4b\x74\x48\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x74\x48\x5e\x1b\x5c"; + return "\x04\x4b\x74\x48\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x74\x48\x21\x1b\x5c"; + return "\x04\x4b\x74\x48\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x74\x48\x2f\x1b\x5c"; + return "\x04\x4b\x74\x48\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x74\x48\x2a\x1b\x5c"; + return "\x04\x4b\x74\x48\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x74\x48\x3f\x1b\x5c"; + return "\x04\x4b\x74\x48\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x74\x48\x26\x1b\x5c"; + return "\x04\x4b\x74\x48\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x74\x48\x3c\x1b\x5c"; + return "\x04\x4b\x74\x48\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x74\x48\x3e\x1b\x5c"; + return "\x04\x4b\x74\x48\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x74\x48\x28\x1b\x5c"; + return "\x04\x4b\x74\x48\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x74\x48\x29\x1b\x5c"; + return "\x04\x4b\x74\x48\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x74\x48\x5b\x1b\x5c"; + return "\x04\x4b\x74\x48\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x74\x48\x5d\x1b\x5c"; + return "\x04\x4b\x74\x48\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x74\x48\x7b\x1b\x5c"; + return "\x04\x4b\x74\x48\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x74\x48\x7d\x1b\x5c"; + return "\x04\x4b\x74\x48\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x74\x48\x40\x1b\x5c"; + return "\x04\x4b\x74\x48\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x74\x48\x25\x1b\x5c"; + return "\x04\x4b\x74\x48\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x74\x48\x24\x1b\x5c"; + return "\x04\x4b\x74\x48\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x74\x48\x23\x1b\x5c"; + return "\x04\x4b\x74\x48\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x74\x48\x42\x41\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x74\x48\x42\x42\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x74\x48\x42\x43\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x74\x48\x42\x44\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x74\x48\x42\x45\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x74\x48\x42\x46\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x74\x48\x42\x47\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x74\x48\x42\x48\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x74\x48\x42\x49\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x74\x48\x42\x4a\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x74\x48\x42\x4b\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x74\x48\x42\x4c\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x74\x48\x42\x4d\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x74\x48\x42\x4e\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x74\x48\x42\x4f\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x74\x48\x42\x50\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x74\x48\x42\x51\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x74\x48\x42\x52\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x74\x48\x42\x53\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x74\x48\x42\x54\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x74\x48\x42\x55\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x74\x48\x42\x56\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x74\x48\x42\x57\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x74\x48\x42\x58\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x74\x48\x42\x59\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x74\x48\x42\x5a\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x48\x42\x61\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x48\x42\x62\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x74\x48\x42\x63\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x74\x48\x42\x64\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x48\x42\x65\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x48\x42\x66\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x74\x48\x42\x67\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x74\x48\x42\x68\x1b\x5c"; + return "\x05\x4b\x74\x48\x42\x68"; } // end switch(key) case 0x8: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x74\x49\x41\x1b\x5c"; + return "\x04\x4b\x74\x49\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x74\x49\x42\x1b\x5c"; + return "\x04\x4b\x74\x49\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x74\x49\x43\x1b\x5c"; + return "\x04\x4b\x74\x49\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x74\x49\x44\x1b\x5c"; + return "\x04\x4b\x74\x49\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x74\x49\x45\x1b\x5c"; + return "\x04\x4b\x74\x49\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x74\x49\x46\x1b\x5c"; + return "\x04\x4b\x74\x49\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x74\x49\x47\x1b\x5c"; + return "\x04\x4b\x74\x49\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x74\x49\x48\x1b\x5c"; + return "\x04\x4b\x74\x49\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x74\x49\x49\x1b\x5c"; + return "\x04\x4b\x74\x49\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x74\x49\x4a\x1b\x5c"; + return "\x04\x4b\x74\x49\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x74\x49\x4b\x1b\x5c"; + return "\x04\x4b\x74\x49\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x74\x49\x4c\x1b\x5c"; + return "\x04\x4b\x74\x49\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x74\x49\x4d\x1b\x5c"; + return "\x04\x4b\x74\x49\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x74\x49\x4e\x1b\x5c"; + return "\x04\x4b\x74\x49\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x74\x49\x4f\x1b\x5c"; + return "\x04\x4b\x74\x49\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x74\x49\x50\x1b\x5c"; + return "\x04\x4b\x74\x49\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x74\x49\x51\x1b\x5c"; + return "\x04\x4b\x74\x49\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x74\x49\x52\x1b\x5c"; + return "\x04\x4b\x74\x49\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x74\x49\x53\x1b\x5c"; + return "\x04\x4b\x74\x49\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x74\x49\x54\x1b\x5c"; + return "\x04\x4b\x74\x49\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x74\x49\x55\x1b\x5c"; + return "\x04\x4b\x74\x49\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x74\x49\x56\x1b\x5c"; + return "\x04\x4b\x74\x49\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x74\x49\x57\x1b\x5c"; + return "\x04\x4b\x74\x49\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x74\x49\x58\x1b\x5c"; + return "\x04\x4b\x74\x49\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x74\x49\x59\x1b\x5c"; + return "\x04\x4b\x74\x49\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x74\x49\x5a\x1b\x5c"; + return "\x04\x4b\x74\x49\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x74\x49\x61\x1b\x5c"; + return "\x04\x4b\x74\x49\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x74\x49\x62\x1b\x5c"; + return "\x04\x4b\x74\x49\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x74\x49\x63\x1b\x5c"; + return "\x04\x4b\x74\x49\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x74\x49\x64\x1b\x5c"; + return "\x04\x4b\x74\x49\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x74\x49\x65\x1b\x5c"; + return "\x04\x4b\x74\x49\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x74\x49\x66\x1b\x5c"; + return "\x04\x4b\x74\x49\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x74\x49\x67\x1b\x5c"; + return "\x04\x4b\x74\x49\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x74\x49\x68\x1b\x5c"; + return "\x04\x4b\x74\x49\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x74\x49\x69\x1b\x5c"; + return "\x04\x4b\x74\x49\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x74\x49\x6a\x1b\x5c"; + return "\x04\x4b\x74\x49\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x74\x49\x6b\x1b\x5c"; + return "\x04\x4b\x74\x49\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x74\x49\x6c\x1b\x5c"; + return "\x04\x4b\x74\x49\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x74\x49\x6d\x1b\x5c"; + return "\x04\x4b\x74\x49\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x74\x49\x6e\x1b\x5c"; + return "\x04\x4b\x74\x49\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x74\x49\x6f\x1b\x5c"; + return "\x04\x4b\x74\x49\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x74\x49\x70\x1b\x5c"; + return "\x04\x4b\x74\x49\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x74\x49\x71\x1b\x5c"; + return "\x04\x4b\x74\x49\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x74\x49\x72\x1b\x5c"; + return "\x04\x4b\x74\x49\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x49\x73\x1b\x5c"; + return "\x04\x4b\x74\x49\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x74\x49\x74\x1b\x5c"; + return "\x04\x4b\x74\x49\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x49\x75\x1b\x5c"; + return "\x04\x4b\x74\x49\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x74\x49\x76\x1b\x5c"; + return "\x04\x4b\x74\x49\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x74\x49\x77\x1b\x5c"; + return "\x04\x4b\x74\x49\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x74\x49\x78\x1b\x5c"; + return "\x04\x4b\x74\x49\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x74\x49\x79\x1b\x5c"; + return "\x04\x4b\x74\x49\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x74\x49\x7a\x1b\x5c"; + return "\x04\x4b\x74\x49\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x74\x49\x30\x1b\x5c"; + return "\x04\x4b\x74\x49\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x74\x49\x31\x1b\x5c"; + return "\x04\x4b\x74\x49\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x74\x49\x32\x1b\x5c"; + return "\x04\x4b\x74\x49\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x74\x49\x33\x1b\x5c"; + return "\x04\x4b\x74\x49\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x74\x49\x34\x1b\x5c"; + return "\x04\x4b\x74\x49\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x74\x49\x35\x1b\x5c"; + return "\x04\x4b\x74\x49\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x74\x49\x36\x1b\x5c"; + return "\x04\x4b\x74\x49\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x74\x49\x37\x1b\x5c"; + return "\x04\x4b\x74\x49\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x74\x49\x38\x1b\x5c"; + return "\x04\x4b\x74\x49\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x74\x49\x39\x1b\x5c"; + return "\x04\x4b\x74\x49\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x74\x49\x2e\x1b\x5c"; + return "\x04\x4b\x74\x49\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x74\x49\x2d\x1b\x5c"; + return "\x04\x4b\x74\x49\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x74\x49\x3a\x1b\x5c"; + return "\x04\x4b\x74\x49\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x74\x49\x2b\x1b\x5c"; + return "\x04\x4b\x74\x49\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x74\x49\x3d\x1b\x5c"; + return "\x04\x4b\x74\x49\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x74\x49\x5e\x1b\x5c"; + return "\x04\x4b\x74\x49\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x74\x49\x21\x1b\x5c"; + return "\x04\x4b\x74\x49\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x74\x49\x2f\x1b\x5c"; + return "\x04\x4b\x74\x49\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x74\x49\x2a\x1b\x5c"; + return "\x04\x4b\x74\x49\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x74\x49\x3f\x1b\x5c"; + return "\x04\x4b\x74\x49\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x74\x49\x26\x1b\x5c"; + return "\x04\x4b\x74\x49\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x74\x49\x3c\x1b\x5c"; + return "\x04\x4b\x74\x49\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x74\x49\x3e\x1b\x5c"; + return "\x04\x4b\x74\x49\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x74\x49\x28\x1b\x5c"; + return "\x04\x4b\x74\x49\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x74\x49\x29\x1b\x5c"; + return "\x04\x4b\x74\x49\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x74\x49\x5b\x1b\x5c"; + return "\x04\x4b\x74\x49\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x74\x49\x5d\x1b\x5c"; + return "\x04\x4b\x74\x49\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x74\x49\x7b\x1b\x5c"; + return "\x04\x4b\x74\x49\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x74\x49\x7d\x1b\x5c"; + return "\x04\x4b\x74\x49\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x74\x49\x40\x1b\x5c"; + return "\x04\x4b\x74\x49\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x74\x49\x25\x1b\x5c"; + return "\x04\x4b\x74\x49\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x74\x49\x24\x1b\x5c"; + return "\x04\x4b\x74\x49\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x74\x49\x23\x1b\x5c"; + return "\x04\x4b\x74\x49\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x74\x49\x42\x41\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x74\x49\x42\x42\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x74\x49\x42\x43\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x74\x49\x42\x44\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x74\x49\x42\x45\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x74\x49\x42\x46\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x74\x49\x42\x47\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x74\x49\x42\x48\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x74\x49\x42\x49\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x74\x49\x42\x4a\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x74\x49\x42\x4b\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x74\x49\x42\x4c\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x74\x49\x42\x4d\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x74\x49\x42\x4e\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x74\x49\x42\x4f\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x74\x49\x42\x50\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x74\x49\x42\x51\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x74\x49\x42\x52\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x74\x49\x42\x53\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x74\x49\x42\x54\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x74\x49\x42\x55\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x74\x49\x42\x56\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x74\x49\x42\x57\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x74\x49\x42\x58\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x74\x49\x42\x59\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x74\x49\x42\x5a\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x49\x42\x61\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x49\x42\x62\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x74\x49\x42\x63\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x74\x49\x42\x64\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x49\x42\x65\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x49\x42\x66\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x74\x49\x42\x67\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x74\x49\x42\x68\x1b\x5c"; + return "\x05\x4b\x74\x49\x42\x68"; } // end switch(key) case 0x9: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x74\x4a\x41\x1b\x5c"; + return "\x04\x4b\x74\x4a\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x74\x4a\x42\x1b\x5c"; + return "\x04\x4b\x74\x4a\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x74\x4a\x43\x1b\x5c"; + return "\x04\x4b\x74\x4a\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x74\x4a\x44\x1b\x5c"; + return "\x04\x4b\x74\x4a\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x74\x4a\x45\x1b\x5c"; + return "\x04\x4b\x74\x4a\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x74\x4a\x46\x1b\x5c"; + return "\x04\x4b\x74\x4a\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x74\x4a\x47\x1b\x5c"; + return "\x04\x4b\x74\x4a\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x74\x4a\x48\x1b\x5c"; + return "\x04\x4b\x74\x4a\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x74\x4a\x49\x1b\x5c"; + return "\x04\x4b\x74\x4a\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x74\x4a\x4a\x1b\x5c"; + return "\x04\x4b\x74\x4a\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x74\x4a\x4b\x1b\x5c"; + return "\x04\x4b\x74\x4a\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x74\x4a\x4c\x1b\x5c"; + return "\x04\x4b\x74\x4a\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x74\x4a\x4d\x1b\x5c"; + return "\x04\x4b\x74\x4a\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x74\x4a\x4e\x1b\x5c"; + return "\x04\x4b\x74\x4a\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x74\x4a\x4f\x1b\x5c"; + return "\x04\x4b\x74\x4a\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x74\x4a\x50\x1b\x5c"; + return "\x04\x4b\x74\x4a\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x74\x4a\x51\x1b\x5c"; + return "\x04\x4b\x74\x4a\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x74\x4a\x52\x1b\x5c"; + return "\x04\x4b\x74\x4a\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x74\x4a\x53\x1b\x5c"; + return "\x04\x4b\x74\x4a\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x74\x4a\x54\x1b\x5c"; + return "\x04\x4b\x74\x4a\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x74\x4a\x55\x1b\x5c"; + return "\x04\x4b\x74\x4a\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x74\x4a\x56\x1b\x5c"; + return "\x04\x4b\x74\x4a\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x74\x4a\x57\x1b\x5c"; + return "\x04\x4b\x74\x4a\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x74\x4a\x58\x1b\x5c"; + return "\x04\x4b\x74\x4a\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x74\x4a\x59\x1b\x5c"; + return "\x04\x4b\x74\x4a\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x74\x4a\x5a\x1b\x5c"; + return "\x04\x4b\x74\x4a\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x74\x4a\x61\x1b\x5c"; + return "\x04\x4b\x74\x4a\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x74\x4a\x62\x1b\x5c"; + return "\x04\x4b\x74\x4a\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x74\x4a\x63\x1b\x5c"; + return "\x04\x4b\x74\x4a\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x74\x4a\x64\x1b\x5c"; + return "\x04\x4b\x74\x4a\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x74\x4a\x65\x1b\x5c"; + return "\x04\x4b\x74\x4a\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x74\x4a\x66\x1b\x5c"; + return "\x04\x4b\x74\x4a\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x74\x4a\x67\x1b\x5c"; + return "\x04\x4b\x74\x4a\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x74\x4a\x68\x1b\x5c"; + return "\x04\x4b\x74\x4a\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x74\x4a\x69\x1b\x5c"; + return "\x04\x4b\x74\x4a\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x74\x4a\x6a\x1b\x5c"; + return "\x04\x4b\x74\x4a\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x74\x4a\x6b\x1b\x5c"; + return "\x04\x4b\x74\x4a\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x74\x4a\x6c\x1b\x5c"; + return "\x04\x4b\x74\x4a\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x74\x4a\x6d\x1b\x5c"; + return "\x04\x4b\x74\x4a\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x74\x4a\x6e\x1b\x5c"; + return "\x04\x4b\x74\x4a\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x74\x4a\x6f\x1b\x5c"; + return "\x04\x4b\x74\x4a\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x74\x4a\x70\x1b\x5c"; + return "\x04\x4b\x74\x4a\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x74\x4a\x71\x1b\x5c"; + return "\x04\x4b\x74\x4a\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x74\x4a\x72\x1b\x5c"; + return "\x04\x4b\x74\x4a\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x4a\x73\x1b\x5c"; + return "\x04\x4b\x74\x4a\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x74\x4a\x74\x1b\x5c"; + return "\x04\x4b\x74\x4a\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x4a\x75\x1b\x5c"; + return "\x04\x4b\x74\x4a\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x74\x4a\x76\x1b\x5c"; + return "\x04\x4b\x74\x4a\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x74\x4a\x77\x1b\x5c"; + return "\x04\x4b\x74\x4a\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x74\x4a\x78\x1b\x5c"; + return "\x04\x4b\x74\x4a\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x74\x4a\x79\x1b\x5c"; + return "\x04\x4b\x74\x4a\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x74\x4a\x7a\x1b\x5c"; + return "\x04\x4b\x74\x4a\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x74\x4a\x30\x1b\x5c"; + return "\x04\x4b\x74\x4a\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x74\x4a\x31\x1b\x5c"; + return "\x04\x4b\x74\x4a\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x74\x4a\x32\x1b\x5c"; + return "\x04\x4b\x74\x4a\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x74\x4a\x33\x1b\x5c"; + return "\x04\x4b\x74\x4a\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x74\x4a\x34\x1b\x5c"; + return "\x04\x4b\x74\x4a\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x74\x4a\x35\x1b\x5c"; + return "\x04\x4b\x74\x4a\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x74\x4a\x36\x1b\x5c"; + return "\x04\x4b\x74\x4a\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x74\x4a\x37\x1b\x5c"; + return "\x04\x4b\x74\x4a\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x74\x4a\x38\x1b\x5c"; + return "\x04\x4b\x74\x4a\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x74\x4a\x39\x1b\x5c"; + return "\x04\x4b\x74\x4a\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x74\x4a\x2e\x1b\x5c"; + return "\x04\x4b\x74\x4a\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x74\x4a\x2d\x1b\x5c"; + return "\x04\x4b\x74\x4a\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x74\x4a\x3a\x1b\x5c"; + return "\x04\x4b\x74\x4a\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x74\x4a\x2b\x1b\x5c"; + return "\x04\x4b\x74\x4a\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x74\x4a\x3d\x1b\x5c"; + return "\x04\x4b\x74\x4a\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x74\x4a\x5e\x1b\x5c"; + return "\x04\x4b\x74\x4a\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x74\x4a\x21\x1b\x5c"; + return "\x04\x4b\x74\x4a\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x74\x4a\x2f\x1b\x5c"; + return "\x04\x4b\x74\x4a\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x74\x4a\x2a\x1b\x5c"; + return "\x04\x4b\x74\x4a\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x74\x4a\x3f\x1b\x5c"; + return "\x04\x4b\x74\x4a\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x74\x4a\x26\x1b\x5c"; + return "\x04\x4b\x74\x4a\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x74\x4a\x3c\x1b\x5c"; + return "\x04\x4b\x74\x4a\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x74\x4a\x3e\x1b\x5c"; + return "\x04\x4b\x74\x4a\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x74\x4a\x28\x1b\x5c"; + return "\x04\x4b\x74\x4a\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x74\x4a\x29\x1b\x5c"; + return "\x04\x4b\x74\x4a\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x74\x4a\x5b\x1b\x5c"; + return "\x04\x4b\x74\x4a\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x74\x4a\x5d\x1b\x5c"; + return "\x04\x4b\x74\x4a\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x74\x4a\x7b\x1b\x5c"; + return "\x04\x4b\x74\x4a\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x74\x4a\x7d\x1b\x5c"; + return "\x04\x4b\x74\x4a\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x74\x4a\x40\x1b\x5c"; + return "\x04\x4b\x74\x4a\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x74\x4a\x25\x1b\x5c"; + return "\x04\x4b\x74\x4a\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x74\x4a\x24\x1b\x5c"; + return "\x04\x4b\x74\x4a\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x74\x4a\x23\x1b\x5c"; + return "\x04\x4b\x74\x4a\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x41\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x42\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x43\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x44\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x45\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x46\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x47\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x48\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x49\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x4a\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x4b\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x4c\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x4d\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x4e\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x4f\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x50\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x51\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x52\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x53\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x54\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x55\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x56\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x57\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x58\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x59\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x5a\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x61\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x62\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x63\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x64\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x65\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x66\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x67\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x74\x4a\x42\x68\x1b\x5c"; + return "\x05\x4b\x74\x4a\x42\x68"; } // end switch(key) case 0xa: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x74\x4d\x41\x1b\x5c"; + return "\x04\x4b\x74\x4d\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x74\x4d\x42\x1b\x5c"; + return "\x04\x4b\x74\x4d\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x74\x4d\x43\x1b\x5c"; + return "\x04\x4b\x74\x4d\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x74\x4d\x44\x1b\x5c"; + return "\x04\x4b\x74\x4d\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x74\x4d\x45\x1b\x5c"; + return "\x04\x4b\x74\x4d\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x74\x4d\x46\x1b\x5c"; + return "\x04\x4b\x74\x4d\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x74\x4d\x47\x1b\x5c"; + return "\x04\x4b\x74\x4d\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x74\x4d\x48\x1b\x5c"; + return "\x04\x4b\x74\x4d\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x74\x4d\x49\x1b\x5c"; + return "\x04\x4b\x74\x4d\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x74\x4d\x4a\x1b\x5c"; + return "\x04\x4b\x74\x4d\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x74\x4d\x4b\x1b\x5c"; + return "\x04\x4b\x74\x4d\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x74\x4d\x4c\x1b\x5c"; + return "\x04\x4b\x74\x4d\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x74\x4d\x4d\x1b\x5c"; + return "\x04\x4b\x74\x4d\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x74\x4d\x4e\x1b\x5c"; + return "\x04\x4b\x74\x4d\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x74\x4d\x4f\x1b\x5c"; + return "\x04\x4b\x74\x4d\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x74\x4d\x50\x1b\x5c"; + return "\x04\x4b\x74\x4d\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x74\x4d\x51\x1b\x5c"; + return "\x04\x4b\x74\x4d\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x74\x4d\x52\x1b\x5c"; + return "\x04\x4b\x74\x4d\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x74\x4d\x53\x1b\x5c"; + return "\x04\x4b\x74\x4d\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x74\x4d\x54\x1b\x5c"; + return "\x04\x4b\x74\x4d\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x74\x4d\x55\x1b\x5c"; + return "\x04\x4b\x74\x4d\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x74\x4d\x56\x1b\x5c"; + return "\x04\x4b\x74\x4d\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x74\x4d\x57\x1b\x5c"; + return "\x04\x4b\x74\x4d\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x74\x4d\x58\x1b\x5c"; + return "\x04\x4b\x74\x4d\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x74\x4d\x59\x1b\x5c"; + return "\x04\x4b\x74\x4d\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x74\x4d\x5a\x1b\x5c"; + return "\x04\x4b\x74\x4d\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x74\x4d\x61\x1b\x5c"; + return "\x04\x4b\x74\x4d\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x74\x4d\x62\x1b\x5c"; + return "\x04\x4b\x74\x4d\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x74\x4d\x63\x1b\x5c"; + return "\x04\x4b\x74\x4d\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x74\x4d\x64\x1b\x5c"; + return "\x04\x4b\x74\x4d\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x74\x4d\x65\x1b\x5c"; + return "\x04\x4b\x74\x4d\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x74\x4d\x66\x1b\x5c"; + return "\x04\x4b\x74\x4d\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x74\x4d\x67\x1b\x5c"; + return "\x04\x4b\x74\x4d\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x74\x4d\x68\x1b\x5c"; + return "\x04\x4b\x74\x4d\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x74\x4d\x69\x1b\x5c"; + return "\x04\x4b\x74\x4d\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x74\x4d\x6a\x1b\x5c"; + return "\x04\x4b\x74\x4d\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x74\x4d\x6b\x1b\x5c"; + return "\x04\x4b\x74\x4d\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x74\x4d\x6c\x1b\x5c"; + return "\x04\x4b\x74\x4d\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x74\x4d\x6d\x1b\x5c"; + return "\x04\x4b\x74\x4d\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x74\x4d\x6e\x1b\x5c"; + return "\x04\x4b\x74\x4d\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x74\x4d\x6f\x1b\x5c"; + return "\x04\x4b\x74\x4d\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x74\x4d\x70\x1b\x5c"; + return "\x04\x4b\x74\x4d\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x74\x4d\x71\x1b\x5c"; + return "\x04\x4b\x74\x4d\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x74\x4d\x72\x1b\x5c"; + return "\x04\x4b\x74\x4d\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x4d\x73\x1b\x5c"; + return "\x04\x4b\x74\x4d\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x74\x4d\x74\x1b\x5c"; + return "\x04\x4b\x74\x4d\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x4d\x75\x1b\x5c"; + return "\x04\x4b\x74\x4d\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x74\x4d\x76\x1b\x5c"; + return "\x04\x4b\x74\x4d\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x74\x4d\x77\x1b\x5c"; + return "\x04\x4b\x74\x4d\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x74\x4d\x78\x1b\x5c"; + return "\x04\x4b\x74\x4d\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x74\x4d\x79\x1b\x5c"; + return "\x04\x4b\x74\x4d\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x74\x4d\x7a\x1b\x5c"; + return "\x04\x4b\x74\x4d\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x74\x4d\x30\x1b\x5c"; + return "\x04\x4b\x74\x4d\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x74\x4d\x31\x1b\x5c"; + return "\x04\x4b\x74\x4d\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x74\x4d\x32\x1b\x5c"; + return "\x04\x4b\x74\x4d\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x74\x4d\x33\x1b\x5c"; + return "\x04\x4b\x74\x4d\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x74\x4d\x34\x1b\x5c"; + return "\x04\x4b\x74\x4d\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x74\x4d\x35\x1b\x5c"; + return "\x04\x4b\x74\x4d\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x74\x4d\x36\x1b\x5c"; + return "\x04\x4b\x74\x4d\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x74\x4d\x37\x1b\x5c"; + return "\x04\x4b\x74\x4d\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x74\x4d\x38\x1b\x5c"; + return "\x04\x4b\x74\x4d\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x74\x4d\x39\x1b\x5c"; + return "\x04\x4b\x74\x4d\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x74\x4d\x2e\x1b\x5c"; + return "\x04\x4b\x74\x4d\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x74\x4d\x2d\x1b\x5c"; + return "\x04\x4b\x74\x4d\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x74\x4d\x3a\x1b\x5c"; + return "\x04\x4b\x74\x4d\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x74\x4d\x2b\x1b\x5c"; + return "\x04\x4b\x74\x4d\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x74\x4d\x3d\x1b\x5c"; + return "\x04\x4b\x74\x4d\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x74\x4d\x5e\x1b\x5c"; + return "\x04\x4b\x74\x4d\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x74\x4d\x21\x1b\x5c"; + return "\x04\x4b\x74\x4d\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x74\x4d\x2f\x1b\x5c"; + return "\x04\x4b\x74\x4d\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x74\x4d\x2a\x1b\x5c"; + return "\x04\x4b\x74\x4d\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x74\x4d\x3f\x1b\x5c"; + return "\x04\x4b\x74\x4d\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x74\x4d\x26\x1b\x5c"; + return "\x04\x4b\x74\x4d\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x74\x4d\x3c\x1b\x5c"; + return "\x04\x4b\x74\x4d\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x74\x4d\x3e\x1b\x5c"; + return "\x04\x4b\x74\x4d\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x74\x4d\x28\x1b\x5c"; + return "\x04\x4b\x74\x4d\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x74\x4d\x29\x1b\x5c"; + return "\x04\x4b\x74\x4d\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x74\x4d\x5b\x1b\x5c"; + return "\x04\x4b\x74\x4d\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x74\x4d\x5d\x1b\x5c"; + return "\x04\x4b\x74\x4d\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x74\x4d\x7b\x1b\x5c"; + return "\x04\x4b\x74\x4d\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x74\x4d\x7d\x1b\x5c"; + return "\x04\x4b\x74\x4d\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x74\x4d\x40\x1b\x5c"; + return "\x04\x4b\x74\x4d\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x74\x4d\x25\x1b\x5c"; + return "\x04\x4b\x74\x4d\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x74\x4d\x24\x1b\x5c"; + return "\x04\x4b\x74\x4d\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x74\x4d\x23\x1b\x5c"; + return "\x04\x4b\x74\x4d\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x41\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x42\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x43\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x44\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x45\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x46\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x47\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x48\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x49\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x4a\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x4b\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x4c\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x4d\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x4e\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x4f\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x50\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x51\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x52\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x53\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x54\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x55\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x56\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x57\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x58\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x59\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x5a\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x61\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x62\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x63\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x64\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x65\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x66\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x67\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x74\x4d\x42\x68\x1b\x5c"; + return "\x05\x4b\x74\x4d\x42\x68"; } // end switch(key) case 0xb: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x74\x4e\x41\x1b\x5c"; + return "\x04\x4b\x74\x4e\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x74\x4e\x42\x1b\x5c"; + return "\x04\x4b\x74\x4e\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x74\x4e\x43\x1b\x5c"; + return "\x04\x4b\x74\x4e\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x74\x4e\x44\x1b\x5c"; + return "\x04\x4b\x74\x4e\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x74\x4e\x45\x1b\x5c"; + return "\x04\x4b\x74\x4e\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x74\x4e\x46\x1b\x5c"; + return "\x04\x4b\x74\x4e\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x74\x4e\x47\x1b\x5c"; + return "\x04\x4b\x74\x4e\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x74\x4e\x48\x1b\x5c"; + return "\x04\x4b\x74\x4e\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x74\x4e\x49\x1b\x5c"; + return "\x04\x4b\x74\x4e\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x74\x4e\x4a\x1b\x5c"; + return "\x04\x4b\x74\x4e\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x74\x4e\x4b\x1b\x5c"; + return "\x04\x4b\x74\x4e\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x74\x4e\x4c\x1b\x5c"; + return "\x04\x4b\x74\x4e\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x74\x4e\x4d\x1b\x5c"; + return "\x04\x4b\x74\x4e\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x74\x4e\x4e\x1b\x5c"; + return "\x04\x4b\x74\x4e\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x74\x4e\x4f\x1b\x5c"; + return "\x04\x4b\x74\x4e\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x74\x4e\x50\x1b\x5c"; + return "\x04\x4b\x74\x4e\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x74\x4e\x51\x1b\x5c"; + return "\x04\x4b\x74\x4e\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x74\x4e\x52\x1b\x5c"; + return "\x04\x4b\x74\x4e\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x74\x4e\x53\x1b\x5c"; + return "\x04\x4b\x74\x4e\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x74\x4e\x54\x1b\x5c"; + return "\x04\x4b\x74\x4e\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x74\x4e\x55\x1b\x5c"; + return "\x04\x4b\x74\x4e\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x74\x4e\x56\x1b\x5c"; + return "\x04\x4b\x74\x4e\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x74\x4e\x57\x1b\x5c"; + return "\x04\x4b\x74\x4e\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x74\x4e\x58\x1b\x5c"; + return "\x04\x4b\x74\x4e\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x74\x4e\x59\x1b\x5c"; + return "\x04\x4b\x74\x4e\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x74\x4e\x5a\x1b\x5c"; + return "\x04\x4b\x74\x4e\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x74\x4e\x61\x1b\x5c"; + return "\x04\x4b\x74\x4e\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x74\x4e\x62\x1b\x5c"; + return "\x04\x4b\x74\x4e\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x74\x4e\x63\x1b\x5c"; + return "\x04\x4b\x74\x4e\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x74\x4e\x64\x1b\x5c"; + return "\x04\x4b\x74\x4e\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x74\x4e\x65\x1b\x5c"; + return "\x04\x4b\x74\x4e\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x74\x4e\x66\x1b\x5c"; + return "\x04\x4b\x74\x4e\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x74\x4e\x67\x1b\x5c"; + return "\x04\x4b\x74\x4e\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x74\x4e\x68\x1b\x5c"; + return "\x04\x4b\x74\x4e\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x74\x4e\x69\x1b\x5c"; + return "\x04\x4b\x74\x4e\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x74\x4e\x6a\x1b\x5c"; + return "\x04\x4b\x74\x4e\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x74\x4e\x6b\x1b\x5c"; + return "\x04\x4b\x74\x4e\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x74\x4e\x6c\x1b\x5c"; + return "\x04\x4b\x74\x4e\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x74\x4e\x6d\x1b\x5c"; + return "\x04\x4b\x74\x4e\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x74\x4e\x6e\x1b\x5c"; + return "\x04\x4b\x74\x4e\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x74\x4e\x6f\x1b\x5c"; + return "\x04\x4b\x74\x4e\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x74\x4e\x70\x1b\x5c"; + return "\x04\x4b\x74\x4e\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x74\x4e\x71\x1b\x5c"; + return "\x04\x4b\x74\x4e\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x74\x4e\x72\x1b\x5c"; + return "\x04\x4b\x74\x4e\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x4e\x73\x1b\x5c"; + return "\x04\x4b\x74\x4e\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x74\x4e\x74\x1b\x5c"; + return "\x04\x4b\x74\x4e\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x4e\x75\x1b\x5c"; + return "\x04\x4b\x74\x4e\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x74\x4e\x76\x1b\x5c"; + return "\x04\x4b\x74\x4e\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x74\x4e\x77\x1b\x5c"; + return "\x04\x4b\x74\x4e\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x74\x4e\x78\x1b\x5c"; + return "\x04\x4b\x74\x4e\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x74\x4e\x79\x1b\x5c"; + return "\x04\x4b\x74\x4e\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x74\x4e\x7a\x1b\x5c"; + return "\x04\x4b\x74\x4e\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x74\x4e\x30\x1b\x5c"; + return "\x04\x4b\x74\x4e\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x74\x4e\x31\x1b\x5c"; + return "\x04\x4b\x74\x4e\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x74\x4e\x32\x1b\x5c"; + return "\x04\x4b\x74\x4e\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x74\x4e\x33\x1b\x5c"; + return "\x04\x4b\x74\x4e\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x74\x4e\x34\x1b\x5c"; + return "\x04\x4b\x74\x4e\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x74\x4e\x35\x1b\x5c"; + return "\x04\x4b\x74\x4e\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x74\x4e\x36\x1b\x5c"; + return "\x04\x4b\x74\x4e\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x74\x4e\x37\x1b\x5c"; + return "\x04\x4b\x74\x4e\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x74\x4e\x38\x1b\x5c"; + return "\x04\x4b\x74\x4e\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x74\x4e\x39\x1b\x5c"; + return "\x04\x4b\x74\x4e\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x74\x4e\x2e\x1b\x5c"; + return "\x04\x4b\x74\x4e\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x74\x4e\x2d\x1b\x5c"; + return "\x04\x4b\x74\x4e\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x74\x4e\x3a\x1b\x5c"; + return "\x04\x4b\x74\x4e\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x74\x4e\x2b\x1b\x5c"; + return "\x04\x4b\x74\x4e\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x74\x4e\x3d\x1b\x5c"; + return "\x04\x4b\x74\x4e\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x74\x4e\x5e\x1b\x5c"; + return "\x04\x4b\x74\x4e\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x74\x4e\x21\x1b\x5c"; + return "\x04\x4b\x74\x4e\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x74\x4e\x2f\x1b\x5c"; + return "\x04\x4b\x74\x4e\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x74\x4e\x2a\x1b\x5c"; + return "\x04\x4b\x74\x4e\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x74\x4e\x3f\x1b\x5c"; + return "\x04\x4b\x74\x4e\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x74\x4e\x26\x1b\x5c"; + return "\x04\x4b\x74\x4e\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x74\x4e\x3c\x1b\x5c"; + return "\x04\x4b\x74\x4e\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x74\x4e\x3e\x1b\x5c"; + return "\x04\x4b\x74\x4e\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x74\x4e\x28\x1b\x5c"; + return "\x04\x4b\x74\x4e\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x74\x4e\x29\x1b\x5c"; + return "\x04\x4b\x74\x4e\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x74\x4e\x5b\x1b\x5c"; + return "\x04\x4b\x74\x4e\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x74\x4e\x5d\x1b\x5c"; + return "\x04\x4b\x74\x4e\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x74\x4e\x7b\x1b\x5c"; + return "\x04\x4b\x74\x4e\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x74\x4e\x7d\x1b\x5c"; + return "\x04\x4b\x74\x4e\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x74\x4e\x40\x1b\x5c"; + return "\x04\x4b\x74\x4e\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x74\x4e\x25\x1b\x5c"; + return "\x04\x4b\x74\x4e\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x74\x4e\x24\x1b\x5c"; + return "\x04\x4b\x74\x4e\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x74\x4e\x23\x1b\x5c"; + return "\x04\x4b\x74\x4e\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x41\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x42\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x43\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x44\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x45\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x46\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x47\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x48\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x49\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x4a\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x4b\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x4c\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x4d\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x4e\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x4f\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x50\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x51\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x52\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x53\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x54\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x55\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x56\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x57\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x58\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x59\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x5a\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x61\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x62\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x63\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x64\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x65\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x66\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x67\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x74\x4e\x42\x68\x1b\x5c"; + return "\x05\x4b\x74\x4e\x42\x68"; } // end switch(key) case 0xc: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x74\x4b\x41\x1b\x5c"; + return "\x04\x4b\x74\x4b\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x74\x4b\x42\x1b\x5c"; + return "\x04\x4b\x74\x4b\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x74\x4b\x43\x1b\x5c"; + return "\x04\x4b\x74\x4b\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x74\x4b\x44\x1b\x5c"; + return "\x04\x4b\x74\x4b\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x74\x4b\x45\x1b\x5c"; + return "\x04\x4b\x74\x4b\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x74\x4b\x46\x1b\x5c"; + return "\x04\x4b\x74\x4b\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x74\x4b\x47\x1b\x5c"; + return "\x04\x4b\x74\x4b\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x74\x4b\x48\x1b\x5c"; + return "\x04\x4b\x74\x4b\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x74\x4b\x49\x1b\x5c"; + return "\x04\x4b\x74\x4b\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x74\x4b\x4a\x1b\x5c"; + return "\x04\x4b\x74\x4b\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x74\x4b\x4b\x1b\x5c"; + return "\x04\x4b\x74\x4b\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x74\x4b\x4c\x1b\x5c"; + return "\x04\x4b\x74\x4b\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x74\x4b\x4d\x1b\x5c"; + return "\x04\x4b\x74\x4b\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x74\x4b\x4e\x1b\x5c"; + return "\x04\x4b\x74\x4b\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x74\x4b\x4f\x1b\x5c"; + return "\x04\x4b\x74\x4b\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x74\x4b\x50\x1b\x5c"; + return "\x04\x4b\x74\x4b\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x74\x4b\x51\x1b\x5c"; + return "\x04\x4b\x74\x4b\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x74\x4b\x52\x1b\x5c"; + return "\x04\x4b\x74\x4b\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x74\x4b\x53\x1b\x5c"; + return "\x04\x4b\x74\x4b\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x74\x4b\x54\x1b\x5c"; + return "\x04\x4b\x74\x4b\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x74\x4b\x55\x1b\x5c"; + return "\x04\x4b\x74\x4b\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x74\x4b\x56\x1b\x5c"; + return "\x04\x4b\x74\x4b\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x74\x4b\x57\x1b\x5c"; + return "\x04\x4b\x74\x4b\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x74\x4b\x58\x1b\x5c"; + return "\x04\x4b\x74\x4b\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x74\x4b\x59\x1b\x5c"; + return "\x04\x4b\x74\x4b\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x74\x4b\x5a\x1b\x5c"; + return "\x04\x4b\x74\x4b\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x74\x4b\x61\x1b\x5c"; + return "\x04\x4b\x74\x4b\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x74\x4b\x62\x1b\x5c"; + return "\x04\x4b\x74\x4b\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x74\x4b\x63\x1b\x5c"; + return "\x04\x4b\x74\x4b\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x74\x4b\x64\x1b\x5c"; + return "\x04\x4b\x74\x4b\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x74\x4b\x65\x1b\x5c"; + return "\x04\x4b\x74\x4b\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x74\x4b\x66\x1b\x5c"; + return "\x04\x4b\x74\x4b\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x74\x4b\x67\x1b\x5c"; + return "\x04\x4b\x74\x4b\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x74\x4b\x68\x1b\x5c"; + return "\x04\x4b\x74\x4b\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x74\x4b\x69\x1b\x5c"; + return "\x04\x4b\x74\x4b\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x74\x4b\x6a\x1b\x5c"; + return "\x04\x4b\x74\x4b\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x74\x4b\x6b\x1b\x5c"; + return "\x04\x4b\x74\x4b\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x74\x4b\x6c\x1b\x5c"; + return "\x04\x4b\x74\x4b\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x74\x4b\x6d\x1b\x5c"; + return "\x04\x4b\x74\x4b\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x74\x4b\x6e\x1b\x5c"; + return "\x04\x4b\x74\x4b\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x74\x4b\x6f\x1b\x5c"; + return "\x04\x4b\x74\x4b\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x74\x4b\x70\x1b\x5c"; + return "\x04\x4b\x74\x4b\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x74\x4b\x71\x1b\x5c"; + return "\x04\x4b\x74\x4b\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x74\x4b\x72\x1b\x5c"; + return "\x04\x4b\x74\x4b\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x4b\x73\x1b\x5c"; + return "\x04\x4b\x74\x4b\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x74\x4b\x74\x1b\x5c"; + return "\x04\x4b\x74\x4b\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x4b\x75\x1b\x5c"; + return "\x04\x4b\x74\x4b\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x74\x4b\x76\x1b\x5c"; + return "\x04\x4b\x74\x4b\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x74\x4b\x77\x1b\x5c"; + return "\x04\x4b\x74\x4b\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x74\x4b\x78\x1b\x5c"; + return "\x04\x4b\x74\x4b\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x74\x4b\x79\x1b\x5c"; + return "\x04\x4b\x74\x4b\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x74\x4b\x7a\x1b\x5c"; + return "\x04\x4b\x74\x4b\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x74\x4b\x30\x1b\x5c"; + return "\x04\x4b\x74\x4b\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x74\x4b\x31\x1b\x5c"; + return "\x04\x4b\x74\x4b\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x74\x4b\x32\x1b\x5c"; + return "\x04\x4b\x74\x4b\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x74\x4b\x33\x1b\x5c"; + return "\x04\x4b\x74\x4b\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x74\x4b\x34\x1b\x5c"; + return "\x04\x4b\x74\x4b\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x74\x4b\x35\x1b\x5c"; + return "\x04\x4b\x74\x4b\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x74\x4b\x36\x1b\x5c"; + return "\x04\x4b\x74\x4b\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x74\x4b\x37\x1b\x5c"; + return "\x04\x4b\x74\x4b\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x74\x4b\x38\x1b\x5c"; + return "\x04\x4b\x74\x4b\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x74\x4b\x39\x1b\x5c"; + return "\x04\x4b\x74\x4b\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x74\x4b\x2e\x1b\x5c"; + return "\x04\x4b\x74\x4b\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x74\x4b\x2d\x1b\x5c"; + return "\x04\x4b\x74\x4b\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x74\x4b\x3a\x1b\x5c"; + return "\x04\x4b\x74\x4b\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x74\x4b\x2b\x1b\x5c"; + return "\x04\x4b\x74\x4b\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x74\x4b\x3d\x1b\x5c"; + return "\x04\x4b\x74\x4b\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x74\x4b\x5e\x1b\x5c"; + return "\x04\x4b\x74\x4b\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x74\x4b\x21\x1b\x5c"; + return "\x04\x4b\x74\x4b\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x74\x4b\x2f\x1b\x5c"; + return "\x04\x4b\x74\x4b\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x74\x4b\x2a\x1b\x5c"; + return "\x04\x4b\x74\x4b\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x74\x4b\x3f\x1b\x5c"; + return "\x04\x4b\x74\x4b\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x74\x4b\x26\x1b\x5c"; + return "\x04\x4b\x74\x4b\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x74\x4b\x3c\x1b\x5c"; + return "\x04\x4b\x74\x4b\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x74\x4b\x3e\x1b\x5c"; + return "\x04\x4b\x74\x4b\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x74\x4b\x28\x1b\x5c"; + return "\x04\x4b\x74\x4b\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x74\x4b\x29\x1b\x5c"; + return "\x04\x4b\x74\x4b\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x74\x4b\x5b\x1b\x5c"; + return "\x04\x4b\x74\x4b\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x74\x4b\x5d\x1b\x5c"; + return "\x04\x4b\x74\x4b\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x74\x4b\x7b\x1b\x5c"; + return "\x04\x4b\x74\x4b\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x74\x4b\x7d\x1b\x5c"; + return "\x04\x4b\x74\x4b\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x74\x4b\x40\x1b\x5c"; + return "\x04\x4b\x74\x4b\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x74\x4b\x25\x1b\x5c"; + return "\x04\x4b\x74\x4b\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x74\x4b\x24\x1b\x5c"; + return "\x04\x4b\x74\x4b\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x74\x4b\x23\x1b\x5c"; + return "\x04\x4b\x74\x4b\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x41\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x42\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x43\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x44\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x45\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x46\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x47\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x48\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x49\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x4a\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x4b\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x4c\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x4d\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x4e\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x4f\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x50\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x51\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x52\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x53\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x54\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x55\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x56\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x57\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x58\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x59\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x5a\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x61\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x62\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x63\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x64\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x65\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x66\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x67\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x74\x4b\x42\x68\x1b\x5c"; + return "\x05\x4b\x74\x4b\x42\x68"; } // end switch(key) case 0xd: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x74\x4c\x41\x1b\x5c"; + return "\x04\x4b\x74\x4c\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x74\x4c\x42\x1b\x5c"; + return "\x04\x4b\x74\x4c\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x74\x4c\x43\x1b\x5c"; + return "\x04\x4b\x74\x4c\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x74\x4c\x44\x1b\x5c"; + return "\x04\x4b\x74\x4c\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x74\x4c\x45\x1b\x5c"; + return "\x04\x4b\x74\x4c\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x74\x4c\x46\x1b\x5c"; + return "\x04\x4b\x74\x4c\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x74\x4c\x47\x1b\x5c"; + return "\x04\x4b\x74\x4c\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x74\x4c\x48\x1b\x5c"; + return "\x04\x4b\x74\x4c\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x74\x4c\x49\x1b\x5c"; + return "\x04\x4b\x74\x4c\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x74\x4c\x4a\x1b\x5c"; + return "\x04\x4b\x74\x4c\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x74\x4c\x4b\x1b\x5c"; + return "\x04\x4b\x74\x4c\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x74\x4c\x4c\x1b\x5c"; + return "\x04\x4b\x74\x4c\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x74\x4c\x4d\x1b\x5c"; + return "\x04\x4b\x74\x4c\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x74\x4c\x4e\x1b\x5c"; + return "\x04\x4b\x74\x4c\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x74\x4c\x4f\x1b\x5c"; + return "\x04\x4b\x74\x4c\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x74\x4c\x50\x1b\x5c"; + return "\x04\x4b\x74\x4c\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x74\x4c\x51\x1b\x5c"; + return "\x04\x4b\x74\x4c\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x74\x4c\x52\x1b\x5c"; + return "\x04\x4b\x74\x4c\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x74\x4c\x53\x1b\x5c"; + return "\x04\x4b\x74\x4c\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x74\x4c\x54\x1b\x5c"; + return "\x04\x4b\x74\x4c\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x74\x4c\x55\x1b\x5c"; + return "\x04\x4b\x74\x4c\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x74\x4c\x56\x1b\x5c"; + return "\x04\x4b\x74\x4c\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x74\x4c\x57\x1b\x5c"; + return "\x04\x4b\x74\x4c\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x74\x4c\x58\x1b\x5c"; + return "\x04\x4b\x74\x4c\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x74\x4c\x59\x1b\x5c"; + return "\x04\x4b\x74\x4c\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x74\x4c\x5a\x1b\x5c"; + return "\x04\x4b\x74\x4c\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x74\x4c\x61\x1b\x5c"; + return "\x04\x4b\x74\x4c\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x74\x4c\x62\x1b\x5c"; + return "\x04\x4b\x74\x4c\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x74\x4c\x63\x1b\x5c"; + return "\x04\x4b\x74\x4c\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x74\x4c\x64\x1b\x5c"; + return "\x04\x4b\x74\x4c\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x74\x4c\x65\x1b\x5c"; + return "\x04\x4b\x74\x4c\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x74\x4c\x66\x1b\x5c"; + return "\x04\x4b\x74\x4c\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x74\x4c\x67\x1b\x5c"; + return "\x04\x4b\x74\x4c\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x74\x4c\x68\x1b\x5c"; + return "\x04\x4b\x74\x4c\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x74\x4c\x69\x1b\x5c"; + return "\x04\x4b\x74\x4c\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x74\x4c\x6a\x1b\x5c"; + return "\x04\x4b\x74\x4c\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x74\x4c\x6b\x1b\x5c"; + return "\x04\x4b\x74\x4c\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x74\x4c\x6c\x1b\x5c"; + return "\x04\x4b\x74\x4c\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x74\x4c\x6d\x1b\x5c"; + return "\x04\x4b\x74\x4c\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x74\x4c\x6e\x1b\x5c"; + return "\x04\x4b\x74\x4c\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x74\x4c\x6f\x1b\x5c"; + return "\x04\x4b\x74\x4c\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x74\x4c\x70\x1b\x5c"; + return "\x04\x4b\x74\x4c\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x74\x4c\x71\x1b\x5c"; + return "\x04\x4b\x74\x4c\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x74\x4c\x72\x1b\x5c"; + return "\x04\x4b\x74\x4c\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x4c\x73\x1b\x5c"; + return "\x04\x4b\x74\x4c\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x74\x4c\x74\x1b\x5c"; + return "\x04\x4b\x74\x4c\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x4c\x75\x1b\x5c"; + return "\x04\x4b\x74\x4c\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x74\x4c\x76\x1b\x5c"; + return "\x04\x4b\x74\x4c\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x74\x4c\x77\x1b\x5c"; + return "\x04\x4b\x74\x4c\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x74\x4c\x78\x1b\x5c"; + return "\x04\x4b\x74\x4c\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x74\x4c\x79\x1b\x5c"; + return "\x04\x4b\x74\x4c\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x74\x4c\x7a\x1b\x5c"; + return "\x04\x4b\x74\x4c\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x74\x4c\x30\x1b\x5c"; + return "\x04\x4b\x74\x4c\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x74\x4c\x31\x1b\x5c"; + return "\x04\x4b\x74\x4c\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x74\x4c\x32\x1b\x5c"; + return "\x04\x4b\x74\x4c\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x74\x4c\x33\x1b\x5c"; + return "\x04\x4b\x74\x4c\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x74\x4c\x34\x1b\x5c"; + return "\x04\x4b\x74\x4c\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x74\x4c\x35\x1b\x5c"; + return "\x04\x4b\x74\x4c\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x74\x4c\x36\x1b\x5c"; + return "\x04\x4b\x74\x4c\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x74\x4c\x37\x1b\x5c"; + return "\x04\x4b\x74\x4c\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x74\x4c\x38\x1b\x5c"; + return "\x04\x4b\x74\x4c\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x74\x4c\x39\x1b\x5c"; + return "\x04\x4b\x74\x4c\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x74\x4c\x2e\x1b\x5c"; + return "\x04\x4b\x74\x4c\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x74\x4c\x2d\x1b\x5c"; + return "\x04\x4b\x74\x4c\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x74\x4c\x3a\x1b\x5c"; + return "\x04\x4b\x74\x4c\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x74\x4c\x2b\x1b\x5c"; + return "\x04\x4b\x74\x4c\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x74\x4c\x3d\x1b\x5c"; + return "\x04\x4b\x74\x4c\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x74\x4c\x5e\x1b\x5c"; + return "\x04\x4b\x74\x4c\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x74\x4c\x21\x1b\x5c"; + return "\x04\x4b\x74\x4c\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x74\x4c\x2f\x1b\x5c"; + return "\x04\x4b\x74\x4c\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x74\x4c\x2a\x1b\x5c"; + return "\x04\x4b\x74\x4c\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x74\x4c\x3f\x1b\x5c"; + return "\x04\x4b\x74\x4c\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x74\x4c\x26\x1b\x5c"; + return "\x04\x4b\x74\x4c\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x74\x4c\x3c\x1b\x5c"; + return "\x04\x4b\x74\x4c\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x74\x4c\x3e\x1b\x5c"; + return "\x04\x4b\x74\x4c\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x74\x4c\x28\x1b\x5c"; + return "\x04\x4b\x74\x4c\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x74\x4c\x29\x1b\x5c"; + return "\x04\x4b\x74\x4c\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x74\x4c\x5b\x1b\x5c"; + return "\x04\x4b\x74\x4c\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x74\x4c\x5d\x1b\x5c"; + return "\x04\x4b\x74\x4c\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x74\x4c\x7b\x1b\x5c"; + return "\x04\x4b\x74\x4c\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x74\x4c\x7d\x1b\x5c"; + return "\x04\x4b\x74\x4c\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x74\x4c\x40\x1b\x5c"; + return "\x04\x4b\x74\x4c\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x74\x4c\x25\x1b\x5c"; + return "\x04\x4b\x74\x4c\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x74\x4c\x24\x1b\x5c"; + return "\x04\x4b\x74\x4c\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x74\x4c\x23\x1b\x5c"; + return "\x04\x4b\x74\x4c\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x41\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x42\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x43\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x44\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x45\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x46\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x47\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x48\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x49\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x4a\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x4b\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x4c\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x4d\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x4e\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x4f\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x50\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x51\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x52\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x53\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x54\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x55\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x56\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x57\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x58\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x59\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x5a\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x61\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x62\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x63\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x64\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x65\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x66\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x67\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x74\x4c\x42\x68\x1b\x5c"; + return "\x05\x4b\x74\x4c\x42\x68"; } // end switch(key) case 0xe: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x74\x4f\x41\x1b\x5c"; + return "\x04\x4b\x74\x4f\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x74\x4f\x42\x1b\x5c"; + return "\x04\x4b\x74\x4f\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x74\x4f\x43\x1b\x5c"; + return "\x04\x4b\x74\x4f\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x74\x4f\x44\x1b\x5c"; + return "\x04\x4b\x74\x4f\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x74\x4f\x45\x1b\x5c"; + return "\x04\x4b\x74\x4f\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x74\x4f\x46\x1b\x5c"; + return "\x04\x4b\x74\x4f\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x74\x4f\x47\x1b\x5c"; + return "\x04\x4b\x74\x4f\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x74\x4f\x48\x1b\x5c"; + return "\x04\x4b\x74\x4f\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x74\x4f\x49\x1b\x5c"; + return "\x04\x4b\x74\x4f\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x74\x4f\x4a\x1b\x5c"; + return "\x04\x4b\x74\x4f\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x74\x4f\x4b\x1b\x5c"; + return "\x04\x4b\x74\x4f\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x74\x4f\x4c\x1b\x5c"; + return "\x04\x4b\x74\x4f\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x74\x4f\x4d\x1b\x5c"; + return "\x04\x4b\x74\x4f\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x74\x4f\x4e\x1b\x5c"; + return "\x04\x4b\x74\x4f\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x74\x4f\x4f\x1b\x5c"; + return "\x04\x4b\x74\x4f\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x74\x4f\x50\x1b\x5c"; + return "\x04\x4b\x74\x4f\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x74\x4f\x51\x1b\x5c"; + return "\x04\x4b\x74\x4f\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x74\x4f\x52\x1b\x5c"; + return "\x04\x4b\x74\x4f\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x74\x4f\x53\x1b\x5c"; + return "\x04\x4b\x74\x4f\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x74\x4f\x54\x1b\x5c"; + return "\x04\x4b\x74\x4f\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x74\x4f\x55\x1b\x5c"; + return "\x04\x4b\x74\x4f\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x74\x4f\x56\x1b\x5c"; + return "\x04\x4b\x74\x4f\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x74\x4f\x57\x1b\x5c"; + return "\x04\x4b\x74\x4f\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x74\x4f\x58\x1b\x5c"; + return "\x04\x4b\x74\x4f\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x74\x4f\x59\x1b\x5c"; + return "\x04\x4b\x74\x4f\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x74\x4f\x5a\x1b\x5c"; + return "\x04\x4b\x74\x4f\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x74\x4f\x61\x1b\x5c"; + return "\x04\x4b\x74\x4f\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x74\x4f\x62\x1b\x5c"; + return "\x04\x4b\x74\x4f\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x74\x4f\x63\x1b\x5c"; + return "\x04\x4b\x74\x4f\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x74\x4f\x64\x1b\x5c"; + return "\x04\x4b\x74\x4f\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x74\x4f\x65\x1b\x5c"; + return "\x04\x4b\x74\x4f\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x74\x4f\x66\x1b\x5c"; + return "\x04\x4b\x74\x4f\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x74\x4f\x67\x1b\x5c"; + return "\x04\x4b\x74\x4f\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x74\x4f\x68\x1b\x5c"; + return "\x04\x4b\x74\x4f\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x74\x4f\x69\x1b\x5c"; + return "\x04\x4b\x74\x4f\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x74\x4f\x6a\x1b\x5c"; + return "\x04\x4b\x74\x4f\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x74\x4f\x6b\x1b\x5c"; + return "\x04\x4b\x74\x4f\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x74\x4f\x6c\x1b\x5c"; + return "\x04\x4b\x74\x4f\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x74\x4f\x6d\x1b\x5c"; + return "\x04\x4b\x74\x4f\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x74\x4f\x6e\x1b\x5c"; + return "\x04\x4b\x74\x4f\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x74\x4f\x6f\x1b\x5c"; + return "\x04\x4b\x74\x4f\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x74\x4f\x70\x1b\x5c"; + return "\x04\x4b\x74\x4f\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x74\x4f\x71\x1b\x5c"; + return "\x04\x4b\x74\x4f\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x74\x4f\x72\x1b\x5c"; + return "\x04\x4b\x74\x4f\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x4f\x73\x1b\x5c"; + return "\x04\x4b\x74\x4f\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x74\x4f\x74\x1b\x5c"; + return "\x04\x4b\x74\x4f\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x4f\x75\x1b\x5c"; + return "\x04\x4b\x74\x4f\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x74\x4f\x76\x1b\x5c"; + return "\x04\x4b\x74\x4f\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x74\x4f\x77\x1b\x5c"; + return "\x04\x4b\x74\x4f\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x74\x4f\x78\x1b\x5c"; + return "\x04\x4b\x74\x4f\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x74\x4f\x79\x1b\x5c"; + return "\x04\x4b\x74\x4f\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x74\x4f\x7a\x1b\x5c"; + return "\x04\x4b\x74\x4f\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x74\x4f\x30\x1b\x5c"; + return "\x04\x4b\x74\x4f\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x74\x4f\x31\x1b\x5c"; + return "\x04\x4b\x74\x4f\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x74\x4f\x32\x1b\x5c"; + return "\x04\x4b\x74\x4f\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x74\x4f\x33\x1b\x5c"; + return "\x04\x4b\x74\x4f\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x74\x4f\x34\x1b\x5c"; + return "\x04\x4b\x74\x4f\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x74\x4f\x35\x1b\x5c"; + return "\x04\x4b\x74\x4f\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x74\x4f\x36\x1b\x5c"; + return "\x04\x4b\x74\x4f\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x74\x4f\x37\x1b\x5c"; + return "\x04\x4b\x74\x4f\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x74\x4f\x38\x1b\x5c"; + return "\x04\x4b\x74\x4f\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x74\x4f\x39\x1b\x5c"; + return "\x04\x4b\x74\x4f\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x74\x4f\x2e\x1b\x5c"; + return "\x04\x4b\x74\x4f\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x74\x4f\x2d\x1b\x5c"; + return "\x04\x4b\x74\x4f\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x74\x4f\x3a\x1b\x5c"; + return "\x04\x4b\x74\x4f\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x74\x4f\x2b\x1b\x5c"; + return "\x04\x4b\x74\x4f\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x74\x4f\x3d\x1b\x5c"; + return "\x04\x4b\x74\x4f\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x74\x4f\x5e\x1b\x5c"; + return "\x04\x4b\x74\x4f\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x74\x4f\x21\x1b\x5c"; + return "\x04\x4b\x74\x4f\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x74\x4f\x2f\x1b\x5c"; + return "\x04\x4b\x74\x4f\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x74\x4f\x2a\x1b\x5c"; + return "\x04\x4b\x74\x4f\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x74\x4f\x3f\x1b\x5c"; + return "\x04\x4b\x74\x4f\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x74\x4f\x26\x1b\x5c"; + return "\x04\x4b\x74\x4f\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x74\x4f\x3c\x1b\x5c"; + return "\x04\x4b\x74\x4f\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x74\x4f\x3e\x1b\x5c"; + return "\x04\x4b\x74\x4f\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x74\x4f\x28\x1b\x5c"; + return "\x04\x4b\x74\x4f\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x74\x4f\x29\x1b\x5c"; + return "\x04\x4b\x74\x4f\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x74\x4f\x5b\x1b\x5c"; + return "\x04\x4b\x74\x4f\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x74\x4f\x5d\x1b\x5c"; + return "\x04\x4b\x74\x4f\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x74\x4f\x7b\x1b\x5c"; + return "\x04\x4b\x74\x4f\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x74\x4f\x7d\x1b\x5c"; + return "\x04\x4b\x74\x4f\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x74\x4f\x40\x1b\x5c"; + return "\x04\x4b\x74\x4f\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x74\x4f\x25\x1b\x5c"; + return "\x04\x4b\x74\x4f\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x74\x4f\x24\x1b\x5c"; + return "\x04\x4b\x74\x4f\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x74\x4f\x23\x1b\x5c"; + return "\x04\x4b\x74\x4f\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x41\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x42\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x43\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x44\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x45\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x46\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x47\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x48\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x49\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x4a\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x4b\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x4c\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x4d\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x4e\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x4f\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x50\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x51\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x52\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x53\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x54\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x55\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x56\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x57\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x58\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x59\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x5a\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x61\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x62\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x63\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x64\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x65\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x66\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x67\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x74\x4f\x42\x68\x1b\x5c"; + return "\x05\x4b\x74\x4f\x42\x68"; } // end switch(key) case 0xf: switch(key & 0x7f) { default: return NULL; case 0: // SPACE - return "\x08\x1b\x5f\x4b\x74\x50\x41\x1b\x5c"; + return "\x04\x4b\x74\x50\x41"; case 1: // APOSTROPHE - return "\x08\x1b\x5f\x4b\x74\x50\x42\x1b\x5c"; + return "\x04\x4b\x74\x50\x42"; case 2: // COMMA - return "\x08\x1b\x5f\x4b\x74\x50\x43\x1b\x5c"; + return "\x04\x4b\x74\x50\x43"; case 3: // MINUS - return "\x08\x1b\x5f\x4b\x74\x50\x44\x1b\x5c"; + return "\x04\x4b\x74\x50\x44"; case 4: // PERIOD - return "\x08\x1b\x5f\x4b\x74\x50\x45\x1b\x5c"; + return "\x04\x4b\x74\x50\x45"; case 5: // SLASH - return "\x08\x1b\x5f\x4b\x74\x50\x46\x1b\x5c"; + return "\x04\x4b\x74\x50\x46"; case 6: // 0 - return "\x08\x1b\x5f\x4b\x74\x50\x47\x1b\x5c"; + return "\x04\x4b\x74\x50\x47"; case 7: // 1 - return "\x08\x1b\x5f\x4b\x74\x50\x48\x1b\x5c"; + return "\x04\x4b\x74\x50\x48"; case 8: // 2 - return "\x08\x1b\x5f\x4b\x74\x50\x49\x1b\x5c"; + return "\x04\x4b\x74\x50\x49"; case 9: // 3 - return "\x08\x1b\x5f\x4b\x74\x50\x4a\x1b\x5c"; + return "\x04\x4b\x74\x50\x4a"; case 10: // 4 - return "\x08\x1b\x5f\x4b\x74\x50\x4b\x1b\x5c"; + return "\x04\x4b\x74\x50\x4b"; case 11: // 5 - return "\x08\x1b\x5f\x4b\x74\x50\x4c\x1b\x5c"; + return "\x04\x4b\x74\x50\x4c"; case 12: // 6 - return "\x08\x1b\x5f\x4b\x74\x50\x4d\x1b\x5c"; + return "\x04\x4b\x74\x50\x4d"; case 13: // 7 - return "\x08\x1b\x5f\x4b\x74\x50\x4e\x1b\x5c"; + return "\x04\x4b\x74\x50\x4e"; case 14: // 8 - return "\x08\x1b\x5f\x4b\x74\x50\x4f\x1b\x5c"; + return "\x04\x4b\x74\x50\x4f"; case 15: // 9 - return "\x08\x1b\x5f\x4b\x74\x50\x50\x1b\x5c"; + return "\x04\x4b\x74\x50\x50"; case 16: // SEMICOLON - return "\x08\x1b\x5f\x4b\x74\x50\x51\x1b\x5c"; + return "\x04\x4b\x74\x50\x51"; case 17: // EQUAL - return "\x08\x1b\x5f\x4b\x74\x50\x52\x1b\x5c"; + return "\x04\x4b\x74\x50\x52"; case 18: // A - return "\x08\x1b\x5f\x4b\x74\x50\x53\x1b\x5c"; + return "\x04\x4b\x74\x50\x53"; case 19: // B - return "\x08\x1b\x5f\x4b\x74\x50\x54\x1b\x5c"; + return "\x04\x4b\x74\x50\x54"; case 20: // C - return "\x08\x1b\x5f\x4b\x74\x50\x55\x1b\x5c"; + return "\x04\x4b\x74\x50\x55"; case 21: // D - return "\x08\x1b\x5f\x4b\x74\x50\x56\x1b\x5c"; + return "\x04\x4b\x74\x50\x56"; case 22: // E - return "\x08\x1b\x5f\x4b\x74\x50\x57\x1b\x5c"; + return "\x04\x4b\x74\x50\x57"; case 23: // F - return "\x08\x1b\x5f\x4b\x74\x50\x58\x1b\x5c"; + return "\x04\x4b\x74\x50\x58"; case 24: // G - return "\x08\x1b\x5f\x4b\x74\x50\x59\x1b\x5c"; + return "\x04\x4b\x74\x50\x59"; case 25: // H - return "\x08\x1b\x5f\x4b\x74\x50\x5a\x1b\x5c"; + return "\x04\x4b\x74\x50\x5a"; case 26: // I - return "\x08\x1b\x5f\x4b\x74\x50\x61\x1b\x5c"; + return "\x04\x4b\x74\x50\x61"; case 27: // J - return "\x08\x1b\x5f\x4b\x74\x50\x62\x1b\x5c"; + return "\x04\x4b\x74\x50\x62"; case 28: // K - return "\x08\x1b\x5f\x4b\x74\x50\x63\x1b\x5c"; + return "\x04\x4b\x74\x50\x63"; case 29: // L - return "\x08\x1b\x5f\x4b\x74\x50\x64\x1b\x5c"; + return "\x04\x4b\x74\x50\x64"; case 30: // M - return "\x08\x1b\x5f\x4b\x74\x50\x65\x1b\x5c"; + return "\x04\x4b\x74\x50\x65"; case 31: // N - return "\x08\x1b\x5f\x4b\x74\x50\x66\x1b\x5c"; + return "\x04\x4b\x74\x50\x66"; case 32: // O - return "\x08\x1b\x5f\x4b\x74\x50\x67\x1b\x5c"; + return "\x04\x4b\x74\x50\x67"; case 33: // P - return "\x08\x1b\x5f\x4b\x74\x50\x68\x1b\x5c"; + return "\x04\x4b\x74\x50\x68"; case 34: // Q - return "\x08\x1b\x5f\x4b\x74\x50\x69\x1b\x5c"; + return "\x04\x4b\x74\x50\x69"; case 35: // R - return "\x08\x1b\x5f\x4b\x74\x50\x6a\x1b\x5c"; + return "\x04\x4b\x74\x50\x6a"; case 36: // S - return "\x08\x1b\x5f\x4b\x74\x50\x6b\x1b\x5c"; + return "\x04\x4b\x74\x50\x6b"; case 37: // T - return "\x08\x1b\x5f\x4b\x74\x50\x6c\x1b\x5c"; + return "\x04\x4b\x74\x50\x6c"; case 38: // U - return "\x08\x1b\x5f\x4b\x74\x50\x6d\x1b\x5c"; + return "\x04\x4b\x74\x50\x6d"; case 39: // V - return "\x08\x1b\x5f\x4b\x74\x50\x6e\x1b\x5c"; + return "\x04\x4b\x74\x50\x6e"; case 40: // W - return "\x08\x1b\x5f\x4b\x74\x50\x6f\x1b\x5c"; + return "\x04\x4b\x74\x50\x6f"; case 41: // X - return "\x08\x1b\x5f\x4b\x74\x50\x70\x1b\x5c"; + return "\x04\x4b\x74\x50\x70"; case 42: // Y - return "\x08\x1b\x5f\x4b\x74\x50\x71\x1b\x5c"; + return "\x04\x4b\x74\x50\x71"; case 43: // Z - return "\x08\x1b\x5f\x4b\x74\x50\x72\x1b\x5c"; + return "\x04\x4b\x74\x50\x72"; case 44: // LEFT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x50\x73\x1b\x5c"; + return "\x04\x4b\x74\x50\x73"; case 45: // BACKSLASH - return "\x08\x1b\x5f\x4b\x74\x50\x74\x1b\x5c"; + return "\x04\x4b\x74\x50\x74"; case 46: // RIGHT_BRACKET - return "\x08\x1b\x5f\x4b\x74\x50\x75\x1b\x5c"; + return "\x04\x4b\x74\x50\x75"; case 47: // GRAVE_ACCENT - return "\x08\x1b\x5f\x4b\x74\x50\x76\x1b\x5c"; + return "\x04\x4b\x74\x50\x76"; case 48: // WORLD_1 - return "\x08\x1b\x5f\x4b\x74\x50\x77\x1b\x5c"; + return "\x04\x4b\x74\x50\x77"; case 49: // WORLD_2 - return "\x08\x1b\x5f\x4b\x74\x50\x78\x1b\x5c"; + return "\x04\x4b\x74\x50\x78"; case 50: // ESCAPE - return "\x08\x1b\x5f\x4b\x74\x50\x79\x1b\x5c"; + return "\x04\x4b\x74\x50\x79"; case 51: // ENTER - return "\x08\x1b\x5f\x4b\x74\x50\x7a\x1b\x5c"; + return "\x04\x4b\x74\x50\x7a"; case 52: // TAB - return "\x08\x1b\x5f\x4b\x74\x50\x30\x1b\x5c"; + return "\x04\x4b\x74\x50\x30"; case 53: // BACKSPACE - return "\x08\x1b\x5f\x4b\x74\x50\x31\x1b\x5c"; + return "\x04\x4b\x74\x50\x31"; case 54: // INSERT - return "\x08\x1b\x5f\x4b\x74\x50\x32\x1b\x5c"; + return "\x04\x4b\x74\x50\x32"; case 55: // DELETE - return "\x08\x1b\x5f\x4b\x74\x50\x33\x1b\x5c"; + return "\x04\x4b\x74\x50\x33"; case 56: // RIGHT - return "\x08\x1b\x5f\x4b\x74\x50\x34\x1b\x5c"; + return "\x04\x4b\x74\x50\x34"; case 57: // LEFT - return "\x08\x1b\x5f\x4b\x74\x50\x35\x1b\x5c"; + return "\x04\x4b\x74\x50\x35"; case 58: // DOWN - return "\x08\x1b\x5f\x4b\x74\x50\x36\x1b\x5c"; + return "\x04\x4b\x74\x50\x36"; case 59: // UP - return "\x08\x1b\x5f\x4b\x74\x50\x37\x1b\x5c"; + return "\x04\x4b\x74\x50\x37"; case 60: // PAGE_UP - return "\x08\x1b\x5f\x4b\x74\x50\x38\x1b\x5c"; + return "\x04\x4b\x74\x50\x38"; case 61: // PAGE_DOWN - return "\x08\x1b\x5f\x4b\x74\x50\x39\x1b\x5c"; + return "\x04\x4b\x74\x50\x39"; case 62: // HOME - return "\x08\x1b\x5f\x4b\x74\x50\x2e\x1b\x5c"; + return "\x04\x4b\x74\x50\x2e"; case 63: // END - return "\x08\x1b\x5f\x4b\x74\x50\x2d\x1b\x5c"; + return "\x04\x4b\x74\x50\x2d"; case 64: // CAPS_LOCK - return "\x08\x1b\x5f\x4b\x74\x50\x3a\x1b\x5c"; + return "\x04\x4b\x74\x50\x3a"; case 65: // SCROLL_LOCK - return "\x08\x1b\x5f\x4b\x74\x50\x2b\x1b\x5c"; + return "\x04\x4b\x74\x50\x2b"; case 66: // NUM_LOCK - return "\x08\x1b\x5f\x4b\x74\x50\x3d\x1b\x5c"; + return "\x04\x4b\x74\x50\x3d"; case 67: // PRINT_SCREEN - return "\x08\x1b\x5f\x4b\x74\x50\x5e\x1b\x5c"; + return "\x04\x4b\x74\x50\x5e"; case 68: // PAUSE - return "\x08\x1b\x5f\x4b\x74\x50\x21\x1b\x5c"; + return "\x04\x4b\x74\x50\x21"; case 69: // F1 - return "\x08\x1b\x5f\x4b\x74\x50\x2f\x1b\x5c"; + return "\x04\x4b\x74\x50\x2f"; case 70: // F2 - return "\x08\x1b\x5f\x4b\x74\x50\x2a\x1b\x5c"; + return "\x04\x4b\x74\x50\x2a"; case 71: // F3 - return "\x08\x1b\x5f\x4b\x74\x50\x3f\x1b\x5c"; + return "\x04\x4b\x74\x50\x3f"; case 72: // F4 - return "\x08\x1b\x5f\x4b\x74\x50\x26\x1b\x5c"; + return "\x04\x4b\x74\x50\x26"; case 73: // F5 - return "\x08\x1b\x5f\x4b\x74\x50\x3c\x1b\x5c"; + return "\x04\x4b\x74\x50\x3c"; case 74: // F6 - return "\x08\x1b\x5f\x4b\x74\x50\x3e\x1b\x5c"; + return "\x04\x4b\x74\x50\x3e"; case 75: // F7 - return "\x08\x1b\x5f\x4b\x74\x50\x28\x1b\x5c"; + return "\x04\x4b\x74\x50\x28"; case 76: // F8 - return "\x08\x1b\x5f\x4b\x74\x50\x29\x1b\x5c"; + return "\x04\x4b\x74\x50\x29"; case 77: // F9 - return "\x08\x1b\x5f\x4b\x74\x50\x5b\x1b\x5c"; + return "\x04\x4b\x74\x50\x5b"; case 78: // F10 - return "\x08\x1b\x5f\x4b\x74\x50\x5d\x1b\x5c"; + return "\x04\x4b\x74\x50\x5d"; case 79: // F11 - return "\x08\x1b\x5f\x4b\x74\x50\x7b\x1b\x5c"; + return "\x04\x4b\x74\x50\x7b"; case 80: // F12 - return "\x08\x1b\x5f\x4b\x74\x50\x7d\x1b\x5c"; + return "\x04\x4b\x74\x50\x7d"; case 81: // F13 - return "\x08\x1b\x5f\x4b\x74\x50\x40\x1b\x5c"; + return "\x04\x4b\x74\x50\x40"; case 82: // F14 - return "\x08\x1b\x5f\x4b\x74\x50\x25\x1b\x5c"; + return "\x04\x4b\x74\x50\x25"; case 83: // F15 - return "\x08\x1b\x5f\x4b\x74\x50\x24\x1b\x5c"; + return "\x04\x4b\x74\x50\x24"; case 84: // F16 - return "\x08\x1b\x5f\x4b\x74\x50\x23\x1b\x5c"; + return "\x04\x4b\x74\x50\x23"; case 85: // F17 - return "\x09\x1b\x5f\x4b\x74\x50\x42\x41\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x41"; case 86: // F18 - return "\x09\x1b\x5f\x4b\x74\x50\x42\x42\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x42"; case 87: // F19 - return "\x09\x1b\x5f\x4b\x74\x50\x42\x43\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x43"; case 88: // F20 - return "\x09\x1b\x5f\x4b\x74\x50\x42\x44\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x44"; case 89: // F21 - return "\x09\x1b\x5f\x4b\x74\x50\x42\x45\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x45"; case 90: // F22 - return "\x09\x1b\x5f\x4b\x74\x50\x42\x46\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x46"; case 91: // F23 - return "\x09\x1b\x5f\x4b\x74\x50\x42\x47\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x47"; case 92: // F24 - return "\x09\x1b\x5f\x4b\x74\x50\x42\x48\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x48"; case 93: // F25 - return "\x09\x1b\x5f\x4b\x74\x50\x42\x49\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x49"; case 94: // KP_0 - return "\x09\x1b\x5f\x4b\x74\x50\x42\x4a\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x4a"; case 95: // KP_1 - return "\x09\x1b\x5f\x4b\x74\x50\x42\x4b\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x4b"; case 96: // KP_2 - return "\x09\x1b\x5f\x4b\x74\x50\x42\x4c\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x4c"; case 97: // KP_3 - return "\x09\x1b\x5f\x4b\x74\x50\x42\x4d\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x4d"; case 98: // KP_4 - return "\x09\x1b\x5f\x4b\x74\x50\x42\x4e\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x4e"; case 99: // KP_5 - return "\x09\x1b\x5f\x4b\x74\x50\x42\x4f\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x4f"; case 100: // KP_6 - return "\x09\x1b\x5f\x4b\x74\x50\x42\x50\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x50"; case 101: // KP_7 - return "\x09\x1b\x5f\x4b\x74\x50\x42\x51\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x51"; case 102: // KP_8 - return "\x09\x1b\x5f\x4b\x74\x50\x42\x52\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x52"; case 103: // KP_9 - return "\x09\x1b\x5f\x4b\x74\x50\x42\x53\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x53"; case 104: // KP_DECIMAL - return "\x09\x1b\x5f\x4b\x74\x50\x42\x54\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x54"; case 105: // KP_DIVIDE - return "\x09\x1b\x5f\x4b\x74\x50\x42\x55\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x55"; case 106: // KP_MULTIPLY - return "\x09\x1b\x5f\x4b\x74\x50\x42\x56\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x56"; case 107: // KP_SUBTRACT - return "\x09\x1b\x5f\x4b\x74\x50\x42\x57\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x57"; case 108: // KP_ADD - return "\x09\x1b\x5f\x4b\x74\x50\x42\x58\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x58"; case 109: // KP_ENTER - return "\x09\x1b\x5f\x4b\x74\x50\x42\x59\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x59"; case 110: // KP_EQUAL - return "\x09\x1b\x5f\x4b\x74\x50\x42\x5a\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x5a"; case 111: // LEFT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x50\x42\x61\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x61"; case 112: // LEFT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x50\x42\x62\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x62"; case 113: // LEFT_ALT - return "\x09\x1b\x5f\x4b\x74\x50\x42\x63\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x63"; case 114: // LEFT_SUPER - return "\x09\x1b\x5f\x4b\x74\x50\x42\x64\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x64"; case 115: // RIGHT_SHIFT - return "\x09\x1b\x5f\x4b\x74\x50\x42\x65\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x65"; case 116: // RIGHT_CONTROL - return "\x09\x1b\x5f\x4b\x74\x50\x42\x66\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x66"; case 117: // RIGHT_ALT - return "\x09\x1b\x5f\x4b\x74\x50\x42\x67\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x67"; case 118: // RIGHT_SUPER - return "\x09\x1b\x5f\x4b\x74\x50\x42\x68\x1b\x5c"; + return "\x05\x4b\x74\x50\x42\x68"; } // end switch(key) } // end switch(mods) diff --git a/kitty/keys.py b/kitty/keys.py index 01cad4e36..32a59ca4d 100644 --- a/kitty/keys.py +++ b/kitty/keys.py @@ -144,7 +144,7 @@ def extended_key_event(key, mods, action): m |= 0x4 if mods & defines.GLFW_MOD_SUPER: m |= 0x8 - return '\033_K{}{}{}\033\\'.format( + return 'K{}{}{}'.format( action_map[action], base64_encode(m), name ).encode('ascii') diff --git a/kitty/modes.h b/kitty/modes.h index da9f65b72..b15ce81dd 100644 --- a/kitty/modes.h +++ b/kitty/modes.h @@ -73,8 +73,8 @@ // Bracketed paste mode // http://cirw.in/blog/bracketed-paste #define BRACKETED_PASTE (2004 << 5) -#define BRACKETED_PASTE_START "\033[200~" -#define BRACKETED_PASTE_END "\033[201~" +#define BRACKETED_PASTE_START "200~" +#define BRACKETED_PASTE_END "201~" // Styled underlines #define STYLED_UNDERLINES (2016 << 5) diff --git a/kitty/mouse.c b/kitty/mouse.c index 6c11a453b..a73c30be7 100644 --- a/kitty/mouse.c +++ b/kitty/mouse.c @@ -11,6 +11,7 @@ #include #include #include "glfw-wrapper.h" +#include "control-codes.h" static MouseShape mouse_cursor_shape = BEAM; typedef enum MouseActions { PRESS, RELEASE, DRAG, MOVE } MouseAction; @@ -41,7 +42,7 @@ button_map(int button) { static char mouse_event_buf[64]; -size_t +int encode_mouse_event(Window *w, int button, MouseAction action, int mods) { unsigned int x = w->mouse_cell_x + 1, y = w->mouse_cell_y + 1; // 1 based indexing unsigned int cb = 0; @@ -60,14 +61,14 @@ encode_mouse_event(Window *w, int button, MouseAction action, int mods) { if (mods & GLFW_MOD_CONTROL) cb |= CONTROL_INDICATOR; switch(screen->modes.mouse_tracking_protocol) { case SGR_PROTOCOL: - return snprintf(mouse_event_buf, sizeof(mouse_event_buf), "\033[<%d;%d;%d%s", cb, x, y, action == RELEASE ? "m" : "M"); + return snprintf(mouse_event_buf, sizeof(mouse_event_buf), "<%d;%d;%d%s", cb, x, y, action == RELEASE ? "m" : "M"); break; case URXVT_PROTOCOL: - return snprintf(mouse_event_buf, sizeof(mouse_event_buf), "\033[%d;%d;%dM", cb + 32, x, y); + return snprintf(mouse_event_buf, sizeof(mouse_event_buf), "%d;%d;%dM", cb + 32, x, y); break; case UTF8_PROTOCOL: - mouse_event_buf[0] = 033; mouse_event_buf[1] = '['; mouse_event_buf[2] = 'M'; mouse_event_buf[3] = cb + 32; - unsigned int sz = 4; + mouse_event_buf[0] = 'M'; mouse_event_buf[1] = cb + 32; + unsigned int sz = 2; sz += encode_utf8(x + 32, mouse_event_buf + sz); sz += encode_utf8(y + 32, mouse_event_buf + sz); return sz; @@ -75,8 +76,8 @@ encode_mouse_event(Window *w, int button, MouseAction action, int mods) { default: if (x > 223 || y > 223) return 0; else { - mouse_event_buf[0] = 033; mouse_event_buf[1] = '['; mouse_event_buf[2] = 'M'; mouse_event_buf[3] = cb + 32; mouse_event_buf[4] = x + 32; mouse_event_buf[5] = y + 32; - return 6; + mouse_event_buf[0] = 'M'; mouse_event_buf[1] = cb + 32; mouse_event_buf[2] = x + 32; mouse_event_buf[3] = y + 32; + return 4; } break; } @@ -190,8 +191,8 @@ HANDLER(handle_move_event) { } } else { if (!mouse_cell_changed) return; - size_t sz = encode_mouse_event(w, MAX(0, button), button >=0 ? DRAG : MOVE, 0); - if (sz) schedule_write_to_child(w->id, mouse_event_buf, sz); + int sz = encode_mouse_event(w, MAX(0, button), button >=0 ? DRAG : MOVE, 0); + if (sz > 0) { mouse_event_buf[sz] = 0; write_escape_code_to_child(screen, CSI, mouse_event_buf); } } } @@ -279,8 +280,8 @@ HANDLER(handle_button_event) { break; } } else { - size_t sz = encode_mouse_event(w, button, is_release ? RELEASE : PRESS, modifiers); - if (sz) schedule_write_to_child(w->id, mouse_event_buf, sz); + int sz = encode_mouse_event(w, button, is_release ? RELEASE : PRESS, modifiers); + if (sz > 0) { mouse_event_buf[sz] = 0; write_escape_code_to_child(screen, CSI, mouse_event_buf); } } } @@ -354,10 +355,10 @@ scroll_event(double UNUSED xoffset, double yoffset) { screen_history_scroll(screen, abs(s), upwards); } else { if (screen->modes.mouse_tracking_mode) { - size_t sz = encode_mouse_event(w, upwards ? GLFW_MOUSE_BUTTON_4 : GLFW_MOUSE_BUTTON_5, PRESS, 0); - if (sz) schedule_write_to_child(w->id, mouse_event_buf, sz); + int sz = encode_mouse_event(w, upwards ? GLFW_MOUSE_BUTTON_4 : GLFW_MOUSE_BUTTON_5, PRESS, 0); + if (sz > 0) { mouse_event_buf[sz] = 0; write_escape_code_to_child(screen, CSI, mouse_event_buf); } } else { - call_boss(send_fake_scroll, "IiO", window_idx, abs(s), upwards ? Py_True : Py_False); + fake_scroll(upwards); } } } diff --git a/kitty/parser.c b/kitty/parser.c index d9608bc74..2d2f6cc91 100644 --- a/kitty/parser.c +++ b/kitty/parser.c @@ -276,6 +276,16 @@ handle_esc_mode_char(Screen *screen, uint32_t ch, PyObject DUMP_UNUSED *dump_cal REPORT_ERROR("Unknown charset: 0x%x", ch); break; } break; + case ' ': + switch(ch) { + case 'F': + case 'G': + REPORT_COMMAND(screen_set_8bit_controls, ch == 'G'); + screen_set_8bit_controls(screen, ch == 'G'); + break; + } + REPORT_ERROR("Unhandled ESC SP escape code: 0x%x", ch); break; + break; default: REPORT_ERROR("Unhandled charset related escape code: 0x%x 0x%x", screen->parser_buf[0], ch); break; } diff --git a/kitty/screen.c b/kitty/screen.c index e89d01f51..5b095c2a6 100644 --- a/kitty/screen.c +++ b/kitty/screen.c @@ -19,6 +19,7 @@ #include "unicode-data.h" #include "modes.h" #include "wcwidth9.h" +#include "control-codes.h" static const ScreenModes empty_modes = {0, .mDECAWM=true, .mDECTCEM=true, .mDECARM=true}; static Selection EMPTY_SELECTION = {0}; @@ -104,9 +105,9 @@ screen_reset(Screen *self) { linebuf_clear(self->linebuf, BLANK_CHAR); grman_clear(self->grman); self->modes = empty_modes; -#define RC(name) self->color_profile->overridden.name = 0 - RC(default_fg); RC(default_bg); RC(cursor_color); RC(highlight_fg); RC(highlight_bg); -#undef RC +#define R(name) self->color_profile->overridden.name = 0 + R(default_fg); R(default_bg); R(cursor_color); R(highlight_fg); R(highlight_bg); +#undef R RESET_CHARSETS; self->margin_top = 0; self->margin_bottom = self->lines - 1; screen_normal_keypad_mode(self); @@ -355,13 +356,37 @@ write_to_child(Screen *self, const char *data, size_t sz) { if (self->test_child != Py_None) { PyObject *r = PyObject_CallMethod(self->test_child, "write", "y#", data, sz); if (r == NULL) PyErr_Print(); Py_CLEAR(r); } } -#define write_str_to_child(s) write_to_child(self, (s), sizeof((s)) - 1) +void +write_escape_code_to_child(Screen *self, unsigned char which, const char *data) { + static char buf[512]; + size_t sz; + switch(which) { + case DCS: + sz = snprintf(buf, sizeof(buf) - 1, "%s%s%s", self->modes.eight_bit_controls ? "\x90" : "\033P", data, self->modes.eight_bit_controls ? "\x9c" : "\033\\"); + break; + case CSI: + sz = snprintf(buf, sizeof(buf) - 1, "%s%s", self->modes.eight_bit_controls ? "\x9b" : "\033[", data); + break; + case OSC: + sz = snprintf(buf, sizeof(buf) - 1, "%s%s%s", self->modes.eight_bit_controls ? "\x9d" : "\033]", data, self->modes.eight_bit_controls ? "\x9c" : "\033\\"); + break; + case PM: + sz = snprintf(buf, sizeof(buf) - 1, "%s%s%s", self->modes.eight_bit_controls ? "\x9e" : "\033^", data, self->modes.eight_bit_controls ? "\x9c" : "\033\\"); + break; + case APC: + sz = snprintf(buf, sizeof(buf) - 1, "%s%s%s", self->modes.eight_bit_controls ? "\x9f" : "\033_", data, self->modes.eight_bit_controls ? "\x9c" : "\033\\"); + break; + default: + fatal("Unknown escape code to write: %u", which); + } + write_to_child(self, buf, sz); +} void screen_handle_graphics_command(Screen *self, const GraphicsCommand *cmd, const uint8_t *payload) { unsigned int x = self->cursor->x, y = self->cursor->y; const char *response = grman_handle_command(self->grman, cmd, payload, self->cursor, &self->is_dirty); - if (response != NULL) write_to_child(self, response, strlen(response)); + if (response != NULL) write_escape_code_to_child(self, APC, response); if (x != self->cursor->x || y != self->cursor->y) { if (self->cursor->x >= self->columns) { self->cursor->x = 0; self->cursor->y++; } if (self->cursor->y > self->margin_bottom) screen_scroll(self, self->cursor->y - self->margin_bottom); @@ -470,14 +495,20 @@ set_mode_from_const(Screen *self, unsigned int mode, bool val) { #undef MOUSE_MODE } -void screen_set_mode(Screen *self, unsigned int mode) { +void +screen_set_mode(Screen *self, unsigned int mode) { set_mode_from_const(self, mode, true); } -void screen_reset_mode(Screen *self, unsigned int mode) { +void +screen_reset_mode(Screen *self, unsigned int mode) { set_mode_from_const(self, mode, false); } +void +screen_set_8bit_controls(Screen *self, bool yes) { + self->modes.eight_bit_controls = yes; +} // }}} // Cursor {{{ @@ -944,10 +975,10 @@ report_device_attributes(Screen *self, unsigned int mode, char start_modifier) { if (mode == 0) { switch(start_modifier) { case 0: - write_str_to_child("\x1b[?62;c"); // VT-220 with no extra info + write_escape_code_to_child(self, CSI, "?62;c"); break; case '>': - write_str_to_child("\x1b[>1;" xstr(PRIMARY_VERSION) ";" xstr(SECONDARY_VERSION) "c"); // VT-220 + primary version + secondary version + write_escape_code_to_child(self, CSI, ">1;" xstr(PRIMARY_VERSION) ";" xstr(SECONDARY_VERSION) "c"); // VT-220 + primary version + secondary version break; } } @@ -958,10 +989,10 @@ report_device_status(Screen *self, unsigned int which, bool private) { // We dont implement the private device status codes, since I haven't come // across any programs that use them unsigned int x, y; - static char buf[50]; + static char buf[64]; switch(which) { case 5: // device status - write_str_to_child("\x1b[0n"); + write_escape_code_to_child(self, CSI, "0n"); break; case 6: // cursor position x = self->cursor->x; y = self->cursor->y; @@ -971,8 +1002,8 @@ report_device_status(Screen *self, unsigned int which, bool private) { } if (self->modes.mDECOM) y -= MAX(y, self->margin_top); // 1-based indexing - int sz = snprintf(buf, sizeof(buf) - 1, "\x1b[%s%u;%uR", (private ? "?": ""), y + 1, x + 1); - if (sz > 0) write_to_child(self, buf, sz); + int sz = snprintf(buf, sizeof(buf) - 1, "%s%u;%uR", (private ? "?": ""), y + 1, x + 1); + if (sz > 0) write_escape_code_to_child(self, CSI, buf); break; } } @@ -1002,8 +1033,8 @@ report_mode_status(Screen *self, unsigned int which, bool private) { case STYLED_UNDERLINES: ans = 3; break; } - int sz = snprintf(buf, sizeof(buf) - 1, "\x1b[%s%u;%u$y", (private ? "?" : ""), which, ans); - if (sz > 0) write_to_child(self, buf, sz); + int sz = snprintf(buf, sizeof(buf) - 1, "%s%u;%u$y", (private ? "?" : ""), which, ans); + if (sz > 0) write_escape_code_to_child(self, CSI, buf); } void @@ -1093,16 +1124,16 @@ screen_request_capabilities(Screen *self, char c, PyObject *q) { case CURSOR_BEAM: shape = self->cursor->blink ? 5 : 6; break; } - shape = snprintf(buf, sizeof(buf), "\033P1$r%d q\033\\", shape); + shape = snprintf(buf, sizeof(buf), "1$r%d q", shape); } else if (strcmp("m", query) == 0) { // SGR - shape = snprintf(buf, sizeof(buf), "\033P1$r%sm\033\\", cursor_as_sgr(self->cursor, &blank_cursor)); + shape = snprintf(buf, sizeof(buf), "1$r%sm", cursor_as_sgr(self->cursor, &blank_cursor)); } else if (strcmp("r", query) == 0) { - shape = snprintf(buf, sizeof(buf), "\033P1$r%u;%ur\033\\", self->margin_top + 1, self->margin_bottom + 1); + shape = snprintf(buf, sizeof(buf), "1$r%u;%ur", self->margin_top + 1, self->margin_bottom + 1); } else { - shape = snprintf(buf, sizeof(buf), "\033P0$r%s\033\\", query); + shape = snprintf(buf, sizeof(buf), "0$r%s", query); } - if (shape) write_to_child(self, buf, shape); + if (shape > 0) write_escape_code_to_child(self, DCS, buf); break; } } @@ -1523,6 +1554,23 @@ toggle_alt_screen(Screen *self) { Py_RETURN_NONE; } +static PyObject* +send_escape_code_to_child(Screen *self, PyObject *args) { + int code; + char *text; + if (!PyArg_ParseTuple(args, "is", &code, &text)) return NULL; + write_escape_code_to_child(self, code, text); + Py_RETURN_NONE; +} + +static PyObject* +paste(Screen *self, PyObject *bytes) { + if (self->modes.mBRACKETED_PASTE) write_escape_code_to_child(self, CSI, BRACKETED_PASTE_START); + write_to_child(self, PyBytes_AS_STRING(bytes), PyBytes_GET_SIZE(bytes)); + if (self->modes.mBRACKETED_PASTE) write_escape_code_to_child(self, CSI, BRACKETED_PASTE_END); + Py_RETURN_NONE; +} + WRAP2(cursor_position, 1, 1) #define COUNT_WRAP(name) WRAP1(name, 1) @@ -1580,8 +1628,10 @@ static PyMethodDef methods[] = { MND(rescale_images, METH_VARARGS) MND(text_for_selection, METH_NOARGS) MND(scroll, METH_VARARGS) + MND(send_escape_code_to_child, METH_VARARGS) MND(toggle_alt_screen, METH_NOARGS) MND(reset_callbacks, METH_NOARGS) + MND(paste, METH_O) {"select_graphic_rendition", (PyCFunction)_select_graphic_rendition, METH_VARARGS, ""}, {NULL} /* Sentinel */ diff --git a/kitty/screen.h b/kitty/screen.h index 8ab543e14..8af19e3a1 100644 --- a/kitty/screen.h +++ b/kitty/screen.h @@ -15,6 +15,7 @@ typedef struct { mBRACKETED_PASTE, mFOCUS_TRACKING, mEXTENDED_KEYBOARD; MouseTrackingMode mouse_tracking_mode; MouseTrackingProtocol mouse_tracking_protocol; + bool eight_bit_controls; // S8C1T } ScreenModes; typedef struct { @@ -66,6 +67,7 @@ void parse_worker_dump(Screen *screen, PyObject *dump_callback); void screen_align(Screen*); void screen_restore_cursor(Screen *); void screen_save_cursor(Screen *); +void write_escape_code_to_child(Screen *self, unsigned char which, const char *data); void screen_cursor_position(Screen*, unsigned int, unsigned int); void screen_cursor_back(Screen *self, unsigned int count/*=1*/, int move_direction/*=-1*/); void screen_erase_in_line(Screen *, unsigned int, bool); @@ -111,6 +113,7 @@ void set_dynamic_color(Screen *self, unsigned int code, PyObject*); void set_color_table_color(Screen *self, unsigned int code, PyObject*); uint32_t* translation_table(uint32_t which); void screen_request_capabilities(Screen *, char, PyObject *); +void screen_set_8bit_controls(Screen *, bool); void report_device_attributes(Screen *self, unsigned int UNUSED mode, char start_modifier); void select_graphic_rendition(Screen *self, unsigned int *params, unsigned int count); void report_device_status(Screen *self, unsigned int which, bool UNUSED); diff --git a/kitty/terminfo.py b/kitty/terminfo.py index 167f5b5f0..be9c6af64 100644 --- a/kitty/terminfo.py +++ b/kitty/terminfo.py @@ -452,6 +452,6 @@ def get_capabilities(query_string): if qname in string_capabilities and '%' not in val: val = key_as_bytes(qname).decode('ascii') ans.append(q + '=' + hexlify(str(val).encode('utf-8')).decode('ascii')) - return b'\033P1+r' + ';'.join(ans).encode('utf-8') + b'\033\\' + return '1+r' + ';'.join(ans) except Exception: - return b'\033P0+r' + query_string.encode('utf-8') + b'\033\\' + return '0+r' + query_string diff --git a/kitty/window.py b/kitty/window.py index b1cecd505..d70748a86 100644 --- a/kitty/window.py +++ b/kitty/window.py @@ -12,13 +12,12 @@ from .constants import ( ScreenGeometry, WindowGeometry, appname, get_boss, wakeup ) from .fast_data_types import ( - BLIT_PROGRAM, BRACKETED_PASTE_END, BRACKETED_PASTE_START, CELL_BG_PROGRAM, - CELL_FG_PROGRAM, CELL_PROGRAM, CELL_SPECIAL_PROGRAM, CURSOR_PROGRAM, - GRAPHICS_PREMULT_PROGRAM, GRAPHICS_PROGRAM, SCROLL_FULL, SCROLL_LINE, - SCROLL_PAGE, Screen, add_window, compile_program, glfw_post_empty_event, - init_cell_program, init_cursor_program, set_clipboard_string, - set_window_render_data, update_window_title, update_window_visibility, - viewport_for_window + BLIT_PROGRAM, CELL_BG_PROGRAM, CELL_FG_PROGRAM, CELL_PROGRAM, + CELL_SPECIAL_PROGRAM, CSI, CURSOR_PROGRAM, DCS, GRAPHICS_PREMULT_PROGRAM, + GRAPHICS_PROGRAM, OSC, SCROLL_FULL, SCROLL_LINE, SCROLL_PAGE, Screen, + add_window, compile_program, glfw_post_empty_event, init_cell_program, + init_cursor_program, set_clipboard_string, set_window_render_data, + update_window_title, update_window_visibility, viewport_for_window ) from .keys import keyboard_mode_name from .rgb import to_color @@ -171,10 +170,10 @@ class Window: def focus_changed(self, focused): if focused: if self.screen.focus_tracking_enabled: - self.write_to_child(b'\x1b[I') + self.screen.send_escape_code_to_child(CSI, 'I') else: if self.screen.focus_tracking_enabled: - self.write_to_child(b'\x1b[O') + self.screen.send_escape_code_to_child(CSI, 'O') def title_changed(self, new_title): if self.override_title is None: @@ -206,11 +205,11 @@ class Window: if dirtied: self.screen.mark_as_dirty() - def report_color(self, osc, r, g, b): + def report_color(self, code, r, g, b): r |= r << 8 g |= g << 8 b |= b << 8 - self.write_to_child('\033]{};rgb:{:04x}/{:04x}/{:04x}\033\\'.format(osc, r, g, b)) + self.screen.send_escape_code_to_child(OSC, '{};rgb:{:04x}/{:04x}/{:04x}'.format(code, r, g, b)) def set_dynamic_color(self, code, value): if isinstance(value, bytes): @@ -257,7 +256,7 @@ class Window: self.refresh() def request_capabilities(self, q): - self.write_to_child(get_capabilities(q)) + self.screen.send_escape_code_to_child(DCS, get_capabilities(q)) # }}} @@ -290,9 +289,8 @@ class Window: if isinstance(text, str): text = text.encode('utf-8') if self.screen.in_bracketed_paste_mode: - bpe = BRACKETED_PASTE_END.encode('ascii') - text = BRACKETED_PASTE_START.encode('ascii') + text.replace(bpe, b'') + bpe - self.write_to_child(text) + text = text.replace(b'\033[201~', b'') + self.screen.paste(text) def copy_to_clipboard(self): text = self.text_for_selection() diff --git a/kitty_tests/__init__.py b/kitty_tests/__init__.py index 4162f5239..306e51aee 100644 --- a/kitty_tests/__init__.py +++ b/kitty_tests/__init__.py @@ -29,7 +29,8 @@ class Callbacks: def request_capabilities(self, q): from kitty.terminfo import get_capabilities - self.write(get_capabilities(q)) + c = get_capabilities(q) + self.write(c.encode('ascii')) def use_utf8(self, on): self.iutf8 = on diff --git a/kitty_tests/parser.py b/kitty_tests/parser.py index 6f01fbba4..94bdfae06 100644 --- a/kitty_tests/parser.py +++ b/kitty_tests/parser.py @@ -198,7 +198,7 @@ class TestParser(BaseTest): q = hexlify(b'kind').decode('ascii') pb('a\033P+q{}\x9cbcde'.format(q), 'a', ('screen_request_capabilities', 43, q), 'bcde') self.ae(str(s.line(0)), 'abcde') - self.ae(c.wtcbuf, '\033P1+r{}={}\033\\'.format(q, '1b5b313b3242').encode('ascii')) + self.ae(c.wtcbuf, '1+r{}={}'.format(q, '1b5b313b3242').encode('ascii')) c.clear() pb('\033P$q q\033\\', ('screen_request_capabilities', ord('$'), ' q')) self.ae(c.wtcbuf, b'\033P1$r1 q\033\\')