From c8a9336160adcbb2f1a9990b58a83daeb3daf425 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 11 Jan 2021 11:12:49 +0530 Subject: [PATCH] Code to encode key events --- .gitattributes | 1 - count-lines-of-code | 1 - docs/key-encoding.rst | 128 - glfw/glfw3.h | 2 +- kitty/glfw-wrapper.h | 2 +- kitty/key_encoding.c | 224 + kitty/keys.c | 158 +- kitty/keys.h | 23420 +--------------------------------------- kitty/modes.h | 3 - kitty/screen.c | 7 +- kitty/screen.h | 3 +- 11 files changed, 286 insertions(+), 23663 deletions(-) delete mode 100644 docs/key-encoding.rst create mode 100644 kitty/key_encoding.c diff --git a/.gitattributes b/.gitattributes index 821cb0365..77e4acc1d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,6 +1,5 @@ kitty/wcwidth-std.h linguist-generated=true kitty/emoji.h linguist-generated=true -kitty/keys.h linguist-generated=true kitty/charsets.c linguist-generated=true kitty/key_encoding.py linguist-generated=true kitty/unicode-data.c linguist-generated=true diff --git a/count-lines-of-code b/count-lines-of-code index c1b2bc847..f14803a52 100755 --- a/count-lines-of-code +++ b/count-lines-of-code @@ -5,7 +5,6 @@ import subprocess files_to_exclude = '''\ kitty/wcwidth-std.h kitty/glfw.c -kitty/keys.h kitty/charsets.c kitty/unicode-data.c kitty/key_encoding.py diff --git a/docs/key-encoding.rst b/docs/key-encoding.rst deleted file mode 100644 index 4518f1d01..000000000 --- a/docs/key-encoding.rst +++ /dev/null @@ -1,128 +0,0 @@ -Key encoding for extended keyboard protocol -=============================================== - -See :ref:`extended-key-protocol` for more information and `this table in JSON -format `_. - -===================== ====================== -Name Encoded representation -0 ``G`` -1 ``H`` -2 ``I`` -3 ``J`` -4 ``K`` -5 ``L`` -6 ``M`` -7 ``N`` -8 ``O`` -9 ``P`` -A ``S`` -APOSTROPHE ``B`` -B ``T`` -BACKSLASH ``t`` -BACKSPACE ``1`` -C ``U`` -CAPS LOCK ``:`` -COMMA ``C`` -D ``V`` -DELETE ``3`` -DOWN ``6`` -E ``W`` -END ``-`` -ENTER ``z`` -EQUAL ``R`` -ESCAPE ``y`` -F ``X`` -F1 ``/`` -F10 ``]`` -F11 ``{`` -F12 ``}`` -F13 ``@`` -F14 ``%`` -F15 ``$`` -F16 ``#`` -F17 ``BA`` -F18 ``BB`` -F19 ``BC`` -F2 ``*`` -F20 ``BD`` -F21 ``BE`` -F22 ``BF`` -F23 ``BG`` -F24 ``BH`` -F25 ``BI`` -F3 ``?`` -F4 ``&`` -F5 ``<`` -F6 ``>`` -F7 ``(`` -F8 ``)`` -F9 ``[`` -G ``Y`` -GRAVE ACCENT ``v`` -H ``Z`` -HOME ``.`` -I ``a`` -INSERT ``2`` -J ``b`` -K ``c`` -KP 0 ``BJ`` -KP 1 ``BK`` -KP 2 ``BL`` -KP 3 ``BM`` -KP 4 ``BN`` -KP 5 ``BO`` -KP 6 ``BP`` -KP 7 ``BQ`` -KP 8 ``BR`` -KP 9 ``BS`` -KP ADD ``BX`` -KP DECIMAL ``BT`` -KP DIVIDE ``BU`` -KP ENTER ``BY`` -KP EQUAL ``BZ`` -KP MULTIPLY ``BV`` -KP SUBTRACT ``BW`` -L ``d`` -LEFT ``5`` -LEFT ALT ``Bc`` -LEFT BRACKET ``s`` -LEFT CONTROL ``Bb`` -LEFT SHIFT ``Ba`` -LEFT SUPER ``Bd`` -M ``e`` -MINUS ``D`` -N ``f`` -NUM LOCK ``=`` -O ``g`` -P ``h`` -PAGE DOWN ``9`` -PAGE UP ``8`` -PAUSE ``!`` -PERIOD ``E`` -PRINT SCREEN ``^`` -Q ``i`` -R ``j`` -RIGHT ``4`` -RIGHT ALT ``Bg`` -RIGHT BRACKET ``u`` -RIGHT CONTROL ``Bf`` -RIGHT SHIFT ``Be`` -RIGHT SUPER ``Bh`` -S ``k`` -SCROLL LOCK ``+`` -SEMICOLON ``Q`` -SLASH ``F`` -SPACE ``A`` -T ``l`` -TAB ``0`` -U ``m`` -UP ``7`` -V ``n`` -W ``o`` -WORLD 1 ``w`` -WORLD 2 ``x`` -X ``p`` -Y ``q`` -Z ``r`` -===================== ====================== diff --git a/glfw/glfw3.h b/glfw/glfw3.h index c2085c328..856a6e200 100644 --- a/glfw/glfw3.h +++ b/glfw/glfw3.h @@ -1379,7 +1379,7 @@ typedef enum { typedef struct GLFWkeyevent { // The [keyboard key](@ref keys) that was pressed or released. - uint32_t key; + uint32_t key, shifted_key, alternate_key; // The platform-specific identifier of the key. int native_key; diff --git a/kitty/glfw-wrapper.h b/kitty/glfw-wrapper.h index aaaf5e308..e5dd200f4 100644 --- a/kitty/glfw-wrapper.h +++ b/kitty/glfw-wrapper.h @@ -1117,7 +1117,7 @@ typedef enum { typedef struct GLFWkeyevent { // The [keyboard key](@ref keys) that was pressed or released. - uint32_t key; + uint32_t key, shifted_key, alternate_key; // The platform-specific identifier of the key. int native_key; diff --git a/kitty/key_encoding.c b/kitty/key_encoding.c new file mode 100644 index 000000000..7ea805b9e --- /dev/null +++ b/kitty/key_encoding.c @@ -0,0 +1,224 @@ +/* + * key_encoding.c + * Copyright (C) 2021 Kovid Goyal + * + * Distributed under terms of the GPL3 license. + */ + +#include "keys.h" +#include "charsets.h" + +typedef enum { SHIFT=1, ALT=2, CTRL=4, SUPER=8 } ModifierMasks; +typedef enum { PRESS = 0, REPEAT = 1, RELEASE = 2} KeyAction; +typedef struct { + uint32_t key, shifted_key, alternate_key; + struct { + bool shift, alt, ctrl, super; + unsigned value; + char encoded[4]; + } mods; + KeyAction action; + bool cursor_key_mode, disambiguate, report_all_event_types, report_alternate_key; + const char *text; + bool has_text; +} KeyEvent; + +typedef struct { + uint32_t key, shifted_key, alternate_key; + bool add_alternates, has_mods, add_actions; + char encoded_mods[4]; + KeyAction action; +} EncodingData; + + +static inline void +convert_glfw_mods(int mods, KeyEvent *ev) { + ev->mods.alt = (mods & GLFW_MOD_ALT) > 0, ev->mods.ctrl = (mods & GLFW_MOD_CONTROL) > 0, ev->mods.shift = (mods & GLFW_MOD_SHIFT) > 0, ev->mods.super = (mods & GLFW_MOD_SUPER) > 0; + ev->mods.value = ev->mods.shift ? SHIFT : 0; + if (ev->mods.alt) ev->mods.value |= ALT; + if (ev->mods.ctrl) ev->mods.value |= CTRL; + if (ev->mods.super) ev->mods.value |= SUPER; + snprintf(ev->mods.encoded, sizeof(ev->mods.encoded), "%u", ev->mods.value + 1); +} + + +static inline int +encode_csi_string(const char csi_trailer, const char *payload, char *output) { + return snprintf(output, KEY_BUFFER_SIZE, "\x1b[%s%c", payload, csi_trailer); +} + +static inline void +init_encoding_data(EncodingData *ans, const KeyEvent *ev) { + ans->add_actions = ev->report_all_event_types && ev->action != PRESS; + ans->has_mods = ev->mods.encoded[0] && ev->mods.encoded[0] != '1'; + ans->add_alternates = ev->report_alternate_key && (ev->shifted_key > 0 || ev->alternate_key > 0); + if (ans->add_alternates) { ans->shifted_key = ev->shifted_key; ans->alternate_key = ev->alternate_key; } + ans->key = ev->key; + memcpy(ans->encoded_mods, ev->mods.encoded, sizeof(ans->encoded_mods)); +} + +static inline int +serialize(const EncodingData *data, char *output, const char csi_trailer) { + int pos = 0; +#define P(fmt, ...) pos += snprintf(output + pos, KEY_BUFFER_SIZE - 2 - pos, fmt, __VA_ARGS__) + P("\x1b[%u", data->key); + if (data->add_alternates && (data->shifted_key || data->alternate_key)) { + P("%s", ":"); + if (data->shifted_key) P("%u", data->shifted_key); + if (data->alternate_key) P(":%u", data->alternate_key); + } + if (data->has_mods || data->add_actions) { + P(";%s", data->encoded_mods); + if (data->add_actions) P(":%u", data->action + 1); + } +#undef P + output[pos++] = csi_trailer; + output[pos] = 0; + return pos; +} + +static int +encode_function_key(const KeyEvent *ev, char *output) { +#define SIMPLE(val) return snprintf(output, KEY_BUFFER_SIZE, "%s", val); + char csi_trailer = 'u'; + uint32_t key_number = ev->key; + switch(key_number) { +#define S(x) case GLFW_FKEY_KP_##x: key_number = GLFW_FKEY_##x; break; + S(ENTER) S(HOME) S(END) S(INSERT) S(DELETE) S(PAGE_UP) S(PAGE_DOWN) +#undef S + } + + if (ev->cursor_key_mode && !ev->disambiguate && !ev->report_all_event_types) { + switch(key_number) { + case GLFW_FKEY_UP: SIMPLE("\x1bOA"); + case GLFW_FKEY_DOWN: SIMPLE("\x1bOB"); + case GLFW_FKEY_LEFT: SIMPLE("\x1bOD"); + case GLFW_FKEY_RIGHT: SIMPLE("\x1bOC"); + case GLFW_FKEY_HOME: SIMPLE("\x1bOH"); + case GLFW_FKEY_END: SIMPLE("\x1bOF"); + default: break; + } + } + if (!ev->mods.value) { + switch(key_number) { + case GLFW_FKEY_ENTER: SIMPLE("\r"); + case GLFW_FKEY_ESCAPE: { + if (ev->disambiguate) { return encode_csi_string('u', "27u", output); } + SIMPLE("\x1b"); + } + case GLFW_FKEY_BACKSPACE: SIMPLE("\x7f"); + case GLFW_FKEY_TAB: SIMPLE("\t"); + default: break; + } + } + if (key_number == GLFW_FKEY_TAB) { + if (ev->mods.value == SHIFT) return encode_csi_string('Z', "", output); + if (ev->mods.value == (CTRL | SHIFT)) return encode_csi_string('Z', "1;5", output); + if (ev->mods.value == ALT) SIMPLE("\x1b\t"); + } + if (ev->mods.value == ALT) { + switch(key_number) { + case GLFW_FKEY_TAB: SIMPLE("\x1b\t"); + case GLFW_FKEY_ENTER: SIMPLE("\x1b\r"); + case GLFW_FKEY_BACKSPACE: SIMPLE("\x1b\x7f"); + } + } +#undef SIMPLE + +#define S(number, trailer) key_number = number; csi_trailer = trailer; break + switch(key_number) { + case GLFW_FKEY_UP: S(1, 'A'); + case GLFW_FKEY_DOWN: S(1, 'B'); + case GLFW_FKEY_LEFT: S(1, 'C'); + case GLFW_FKEY_RIGHT: S(1, 'D'); + case GLFW_FKEY_HOME: S(1, 'H'); + case GLFW_FKEY_END: S(1, 'F'); + case GLFW_FKEY_F1: S(1, 'P'); + case GLFW_FKEY_F2: S(1, 'Q'); + case GLFW_FKEY_F3: S(1, 'R'); + case GLFW_FKEY_F4: S(1, 'S'); + case GLFW_FKEY_INSERT: S(2, '~'); + case GLFW_FKEY_DELETE: S(3, '~'); + case GLFW_FKEY_PAGE_UP: S(5, '~'); + case GLFW_FKEY_PAGE_DOWN: S(6, '~'); + case GLFW_FKEY_F5: S(15, '~'); + case GLFW_FKEY_F6: S(17, '~'); + case GLFW_FKEY_F7: S(18, '~'); + case GLFW_FKEY_F8: S(19, '~'); + case GLFW_FKEY_F9: S(20, '~'); + case GLFW_FKEY_F10: S(21, '~'); + case GLFW_FKEY_F11: S(23, '~'); + case GLFW_FKEY_F12: S(24, '~'); + default: break; + } +#undef S + EncodingData ed = {0}; + init_encoding_data(&ed, ev); + ed.add_alternates = false; + return serialize(&ed, output, csi_trailer); +} + +static int +encode_printable_ascii_key_legacy(const KeyEvent *ev, char *output) { + char shifted_key = 0; + + if ('a' <= ev->key && ev->key <= 'z') shifted_key = ev->key + ('A' - 'a'); + switch(ev->key) { +#define S(which, val) case which: shifted_key = val; break; + S('0', ')') S('9', '(') S('8', '*') S('7', '&') S('6', '^') S('5', '%') S('4', '$') S('3', '#') S('2', '@') S('1', '!') + S('`', '~') S('-', '_') S('=', '+') S('[', '{') S(']', '}') S('\\', '|') S(';', ':') S('\'', '"') S(',', '<') S('.', '>') S('/', '?') +#undef S + } + + if (!ev->mods.value) return snprintf(output, KEY_BUFFER_SIZE, "%c", (char)ev->key); + if (!ev->disambiguate) { + if ((ev->mods.value == ALT || ev->mods.value == (SHIFT | ALT))) + return snprintf(output, KEY_BUFFER_SIZE, "\x1b%c", (shifted_key && ev->mods.shift) ? shifted_key : (char)ev->key); + } + if (ev->mods.value == CTRL && (ev->key != 'i' && ev->key != 'm' && ev->key != '[' && ev->key != '@')) + return snprintf(output, KEY_BUFFER_SIZE, "%c", ev->key & 0x7f); + return 0; +} + +static int +encode_key(const KeyEvent *ev, char *output) { + if (!ev->report_all_event_types && ev->action == RELEASE) return 0; + if (GLFW_FKEY_FIRST <= ev->key && ev->key <= GLFW_FKEY_LAST) return encode_function_key(ev, output); + EncodingData ed = {0}; + init_encoding_data(&ed, ev); + bool simple_encoding_ok = !ed.add_actions && !ed.add_alternates; + + if (32 <= ev->key && ev->key <= 126 && simple_encoding_ok) { + int ret = encode_printable_ascii_key_legacy(ev, output); + if (ret > 0) return ret; + } + + if (simple_encoding_ok && !ed.has_mods) return encode_utf8(ev->key, output); + return serialize(&ed, output, 'u'); +} + +static inline bool +is_ascii_control_char(char c) { + return (0 <= c && c <= 31) || c == 127; +} + +int +encode_glfw_key_event(const GLFWkeyevent *e, const bool cursor_key_mode, const unsigned key_encoding_flags, char *output) { + KeyEvent ev = { + .key = e->key, .shifted_key = e->shifted_key, .alternate_key = e->alternate_key, + .text = e->text, + .cursor_key_mode = cursor_key_mode, + .disambiguate = key_encoding_flags & 1, + .report_all_event_types = key_encoding_flags & 2, + .report_alternate_key = key_encoding_flags & 4 + }; + ev.has_text = e->text && !is_ascii_control_char(e->text[0]); + switch (e->action) { + case GLFW_PRESS: ev.action = PRESS; break; + case GLFW_REPEAT: ev.action = REPEAT; break; + case GLFW_RELEASE: ev.action = RELEASE; break; + } + if (ev.has_text && (ev.action == PRESS || ev.action == REPEAT)) return SEND_TEXT_TO_CHILD; + convert_glfw_mods(e->mods, &ev); + return encode_key(&ev, output); +} diff --git a/kitty/keys.c b/kitty/keys.c index bf9e813b5..f47c67144 100644 --- a/kitty/keys.c +++ b/kitty/keys.c @@ -11,44 +11,6 @@ #include "glfw-wrapper.h" #include "control-codes.h" -static bool needs_special_handling[128 * 16] = {0}; - -const char* -key_to_bytes(int glfw_key, bool smkx, bool extended, int mods, int action) { - if ((action & 3) == 3) return NULL; - if ((unsigned)glfw_key >= sizeof(key_map)/sizeof(key_map[0]) || glfw_key < 0) return NULL; - uint16_t key = key_map[glfw_key]; - if (key == UINT8_MAX) return NULL; - KeyboardMode mode = extended ? EXTENDED : (smkx ? APPLICATION : NORMAL); - return key_lookup(key, mode, mods, action); -} - -#define SPECIAL_INDEX(key) ((key & 0x7f) | ( (mods & 0xF) << 7)) -#define IS_ALT_MODS(mods) (mods == GLFW_MOD_ALT || mods == (GLFW_MOD_ALT | GLFW_MOD_SHIFT)) - -typedef struct { int mods, native_key; } NativeKey; -static NativeKey *native_special_keys = NULL; -static size_t native_special_keys_capacity = 0, native_special_keys_count = 0; - -void -set_special_key_combo(int glfw_key, int mods, bool is_native) { - if (is_native) { - if (native_special_keys_count >= native_special_keys_capacity) { - native_special_keys_capacity = MAX(128u, 2 * native_special_keys_capacity); - native_special_keys = realloc(native_special_keys, sizeof(native_special_keys[0]) * native_special_keys_capacity); - if (native_special_keys == NULL) fatal("Out of memory"); - } - native_special_keys[native_special_keys_count].mods = mods; - native_special_keys[native_special_keys_count++].native_key = glfw_key; - } else { - uint16_t key = key_map[glfw_key]; - if (key != UINT8_MAX) { - key = SPECIAL_INDEX(key); - needs_special_handling[key] = true; - } - } -} - static inline Window* active_window(void) { Tab *t = global_state.callback_os_window->tabs + global_state.callback_os_window->active_tab; @@ -75,42 +37,6 @@ is_modifier_key(int key) { } } -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) { - if (*data == 1) schedule_write_to_child(w->id, 1, (data + 1), 1); - else write_escape_code_to_child(screen, APC, data + 1); - } else { - if (*data > 2 && data[1] == 0x1b && data[2] == '[') { // CSI code - write_escape_code_to_child(screen, CSI, data + 3); - } else schedule_write_to_child(w->id, 1, (data + 1), *data); - } - } -} - -static inline bool -is_ascii_control_char(char c) { - return c == 0 || (1 <= c && c <= 31) || c == 127; -} - -static inline bool -check_if_special(int key, int mods, int native_key) { - uint16_t qkey = (0 <= key && key < (ssize_t)arraysz(key_map)) ? key_map[key] : UINT8_MAX; - bool special = false; - if (qkey != UINT8_MAX) { - qkey = SPECIAL_INDEX(qkey); - special = needs_special_handling[qkey]; - } - for (size_t i = 0; !special && i < native_special_keys_count; i++) { - if (native_key == native_special_keys[i].native_key && mods == native_special_keys[i].mods) - special = true; - } - return special; -} - static inline void update_ime_position(OSWindow *os_window, Window* w, Screen *screen) { unsigned int cell_width = os_window->fonts_data->cell_width, cell_height = os_window->fonts_data->cell_height; @@ -120,12 +46,10 @@ update_ime_position(OSWindow *os_window, Window* w, Screen *screen) { glfwUpdateIMEState(global_state.callback_os_window->handle, 2, left, top, cell_width, cell_height); } -#define debug(...) if (OPT(debug_keyboard)) printf(__VA_ARGS__); - void on_key_input(GLFWkeyevent *ev) { Window *w = active_window(); - int action = ev->action, native_key = ev->native_key, key = ev->key, mods = ev->mods; + const int action = ev->action, native_key = ev->native_key, key = ev->key, mods = ev->mods; const char *text = ev->text ? ev->text : ""; debug("on_key_input: glfw key: %d native_code: 0x%x action: %s mods: 0x%x text: '%s' state: %d ", @@ -167,18 +91,15 @@ on_key_input(GLFWkeyevent *ev) { ) call_boss(process_sequence, "iiii", key, native_key, action, mods); return; } - bool has_text = text[0] && !is_ascii_control_char(text[0]); if (action == GLFW_PRESS || action == GLFW_REPEAT) { - if (check_if_special(key, mods, native_key)) { - PyObject *ret = PyObject_CallMethod(global_state.boss, "dispatch_special_key", "iiii", key, native_key, action, mods); - if (ret == NULL) { PyErr_Print(); } - else { - bool consumed = ret == Py_True; - Py_DECREF(ret); - if (consumed) { - debug("handled as shortcut\n"); - return; - } + PyObject *ret = PyObject_CallMethod(global_state.boss, "dispatch_possible_special_key", "iiii", key, native_key, action, mods); + if (ret == NULL) { PyErr_Print(); } + else { + bool consumed = ret == Py_True; + Py_DECREF(ret); + if (consumed) { + debug("handled as shortcut\n"); + return; } } } @@ -189,15 +110,14 @@ on_key_input(GLFWkeyevent *ev) { if (screen->scrolled_by && action == GLFW_PRESS && !is_modifier_key(key)) { screen_history_scroll(screen, SCROLL_FULL, false); // scroll back to bottom } - bool ok_to_send = action == GLFW_PRESS || action == GLFW_REPEAT || screen->modes.mEXTENDED_KEYBOARD; - if (ok_to_send) { - if (has_text) { - schedule_write_to_child(w->id, 1, text, strlen(text)); - debug("sent text to child\n"); - } else { - send_key_to_child(w, key, mods, action); - debug("sent key to child\n"); - } + char encoded_key[KEY_BUFFER_SIZE] = {0}; + int size = encode_glfw_key_event(ev, screen->modes.mDECCKM, screen->key_encoding_flags, encoded_key); + if (size == SEND_TEXT_TO_CHILD) { + schedule_write_to_child(w->id, 1, text, strlen(text)); + debug("sent text to child\n"); + } else if (size > 0) { + schedule_write_to_child(w->id, 1, encoded_key, size); + debug("sent key to child\n"); } else { debug("ignoring as keyboard mode does not allow %s events\n", action == GLFW_RELEASE ? "release" : "repeat"); } @@ -207,9 +127,16 @@ void fake_scroll(Window *w, int amount, bool upwards) { if (!w) return; int key = upwards ? GLFW_KEY_UP : GLFW_KEY_DOWN; + GLFWkeyevent ev = {.key = key }; + char encoded_key[KEY_BUFFER_SIZE] = {0}; + Screen *screen = w->render_data.screen; while (amount-- > 0) { - send_key_to_child(w, key, 0, GLFW_PRESS); - send_key_to_child(w, key, 0, GLFW_RELEASE); + ev.action = GLFW_PRESS; + int size = encode_glfw_key_event(&ev, screen->modes.mDECCKM, screen->key_encoding_flags, encoded_key); + if (size > 0) schedule_write_to_child(w->id, 1, encoded_key, size); + ev.action = GLFW_RELEASE; + size = encode_glfw_key_event(&ev, screen->modes.mDECCKM, screen->key_encoding_flags, encoded_key); + if (size > 0) schedule_write_to_child(w->id, 1, encoded_key, size); } } @@ -217,14 +144,6 @@ fake_scroll(Window *w, int amount, bool upwards) { #define PA(fmt, ...) if(!PyArg_ParseTuple(args, fmt, __VA_ARGS__)) return NULL; #define M(name, arg_type) {#name, (PyCFunction)py##name, arg_type, NULL} -PYWRAP1(key_to_bytes) { - int glfw_key, smkx, extended, mods, action; - PA("ippii", &glfw_key, &smkx, &extended, &mods, &action); - const char *ans = key_to_bytes(glfw_key, smkx & 1, extended & 1, mods, action); - if (ans == NULL) return Py_BuildValue("y#", "", 0); - return Py_BuildValue("y#", ans + 1, *ans); -} - PYWRAP1(key_for_native_key_name) { const char *name; int case_sensitive = 0; @@ -238,23 +157,28 @@ PYWRAP1(key_for_native_key_name) { Py_RETURN_NONE; } +static PyObject* +pyencode_key_for_tty(PyObject *self UNUSED, PyObject *args, PyObject *kw) { + char *kwds[] = {"key", "shifted_key", "alternate_key", "mods", "action", "text", "cursor_key_mode", "key_encoding_flags"}; + unsigned int key = 0, shifted_key = 0, alternate_key = 0, mods = 0, action = 0, key_encoding_flags = 0; + const char *text = NULL; + int cursor_key_mode = 0; + if (!PyArg_ParseTupleAndKeywords(args, kw, "IIIIIspI", kwds, &key, &shifted_key, &alternate_key, &mods, &action, &text, &cursor_key_mode, &key_encoding_flags)) return NULL; + GLFWkeyevent ev = { .key = key, .shifted_key = shifted_key, .alternate_key = alternate_key, .text = text, .action = action, .mods = mods }; + char output[KEY_BUFFER_SIZE+1] = {0}; + int num = encode_glfw_key_event(&ev, cursor_key_mode, key_encoding_flags, output); + if (num == SEND_TEXT_TO_CHILD) return PyUnicode_FromString(text); + return PyUnicode_FromString(output); +} + static PyMethodDef module_methods[] = { - M(key_to_bytes, METH_VARARGS), M(key_for_native_key_name, METH_VARARGS), + M(encode_key_for_tty, METH_VARARGS | METH_KEYWORDS), {0} }; -void -finalize(void) { - free(native_special_keys); -} - bool init_keys(PyObject *module) { if (PyModule_AddFunctions(module, module_methods) != 0) return false; - if (Py_AtExit(finalize) != 0) { - PyErr_SetString(PyExc_RuntimeError, "Failed to register the keys at exit handler"); - return false; - } return true; } diff --git a/kitty/keys.h b/kitty/keys.h index 758846b01..9a3a23158 100644 --- a/kitty/keys.h +++ b/kitty/keys.h @@ -1,23409 +1,19 @@ -// auto-generated from keys.py, do not edit! +/* + * keys.h + * Copyright (C) 2021 Kovid Goyal + * + * Distributed under terms of the GPL3 license. + */ + + #pragma once -#include -#include -#include +#include "data-types.h" +#include "glfw-wrapper.h" #include -// map glfw key numbers to 7-bit numbers for compact data storage -static const uint8_t key_map[349] = { -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -0, /* SPACE */ -1, /* EXCLAM */ -2, /* DOUBLE_QUOTE */ -3, /* NUMBER_SIGN */ -4, /* DOLLAR */ -UINT8_MAX, -5, /* AMPERSAND */ -6, /* APOSTROPHE */ -7, /* PARENTHESIS_LEFT */ -8, /* PARENTHESIS_RIGHT */ -UINT8_MAX, -9, /* PLUS */ -10, /* COMMA */ -11, /* MINUS */ -12, /* PERIOD */ -13, /* SLASH */ -14, /* 0 */ -15, /* 1 */ -16, /* 2 */ -17, /* 3 */ -18, /* 4 */ -19, /* 5 */ -20, /* 6 */ -21, /* 7 */ -22, /* 8 */ -23, /* 9 */ -24, /* COLON */ -25, /* SEMICOLON */ -26, /* LESS */ -27, /* EQUAL */ -28, /* GREATER */ -UINT8_MAX, -29, /* AT */ -30, /* A */ -31, /* B */ -32, /* C */ -33, /* D */ -34, /* E */ -35, /* F */ -36, /* G */ -37, /* H */ -38, /* I */ -39, /* J */ -40, /* K */ -41, /* L */ -42, /* M */ -43, /* N */ -44, /* O */ -45, /* P */ -46, /* Q */ -47, /* R */ -48, /* S */ -49, /* T */ -50, /* U */ -51, /* V */ -52, /* W */ -53, /* X */ -54, /* Y */ -55, /* Z */ -56, /* LEFT_BRACKET */ -57, /* BACKSLASH */ -58, /* RIGHT_BRACKET */ -59, /* CIRCUMFLEX */ -60, /* UNDERSCORE */ -61, /* GRAVE_ACCENT */ -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -62, /* WORLD_1 */ -63, /* WORLD_2 */ -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -64, /* PARAGRAPH */ -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -65, /* MASCULINE */ -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -66, /* A_GRAVE */ -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -67, /* A_DIAERESIS */ -68, /* A_RING */ -69, /* AE */ -70, /* C_CEDILLA */ -71, /* E_GRAVE */ -72, /* E_ACUTE */ -UINT8_MAX, -UINT8_MAX, -73, /* I_GRAVE */ -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -74, /* N_TILDE */ -75, /* O_GRAVE */ -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -76, /* O_DIAERESIS */ -UINT8_MAX, -77, /* O_SLASH */ -78, /* U_GRAVE */ -UINT8_MAX, -UINT8_MAX, -79, /* U_DIAERESIS */ -UINT8_MAX, -80, /* S_SHARP */ -81, /* CYRILLIC_A */ -82, /* CYRILLIC_BE */ -83, /* CYRILLIC_VE */ -84, /* CYRILLIC_GHE */ -85, /* CYRILLIC_DE */ -86, /* CYRILLIC_IE */ -87, /* CYRILLIC_ZHE */ -88, /* CYRILLIC_ZE */ -89, /* CYRILLIC_I */ -90, /* CYRILLIC_SHORT_I */ -91, /* CYRILLIC_KA */ -92, /* CYRILLIC_EL */ -93, /* CYRILLIC_EM */ -94, /* CYRILLIC_EN */ -95, /* CYRILLIC_O */ -96, /* CYRILLIC_PE */ -97, /* CYRILLIC_ER */ -98, /* CYRILLIC_ES */ -99, /* CYRILLIC_TE */ -100, /* CYRILLIC_U */ -101, /* CYRILLIC_EF */ -102, /* CYRILLIC_HA */ -103, /* CYRILLIC_TSE */ -104, /* CYRILLIC_CHE */ -105, /* CYRILLIC_SHA */ -106, /* CYRILLIC_SHCHA */ -107, /* CYRILLIC_HARD_SIGN */ -108, /* CYRILLIC_YERU */ -109, /* CYRILLIC_SOFT_SIGN */ -110, /* CYRILLIC_E */ -111, /* CYRILLIC_YU */ -112, /* CYRILLIC_YA */ -113, /* CYRILLIC_IO */ -114, /* ESCAPE */ -115, /* ENTER */ -116, /* TAB */ -117, /* BACKSPACE */ -118, /* INSERT */ -119, /* DELETE */ -120, /* RIGHT */ -121, /* LEFT */ -122, /* DOWN */ -123, /* UP */ -124, /* PAGE_UP */ -125, /* PAGE_DOWN */ -126, /* HOME */ -127, /* END */ -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -128, /* CAPS_LOCK */ -129, /* SCROLL_LOCK */ -130, /* NUM_LOCK */ -131, /* PRINT_SCREEN */ -132, /* PAUSE */ -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -133, /* F1 */ -134, /* F2 */ -135, /* F3 */ -136, /* F4 */ -137, /* F5 */ -138, /* F6 */ -139, /* F7 */ -140, /* F8 */ -141, /* F9 */ -142, /* F10 */ -143, /* F11 */ -144, /* F12 */ -145, /* F13 */ -146, /* F14 */ -147, /* F15 */ -148, /* F16 */ -149, /* F17 */ -150, /* F18 */ -151, /* F19 */ -152, /* F20 */ -153, /* F21 */ -154, /* F22 */ -155, /* F23 */ -156, /* F24 */ -157, /* F25 */ -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -158, /* KP_0 */ -159, /* KP_1 */ -160, /* KP_2 */ -161, /* KP_3 */ -162, /* KP_4 */ -163, /* KP_5 */ -164, /* KP_6 */ -165, /* KP_7 */ -166, /* KP_8 */ -167, /* KP_9 */ -168, /* KP_DECIMAL */ -169, /* KP_DIVIDE */ -170, /* KP_MULTIPLY */ -171, /* KP_SUBTRACT */ -172, /* KP_ADD */ -173, /* KP_ENTER */ -174, /* KP_EQUAL */ -UINT8_MAX, -UINT8_MAX, -UINT8_MAX, -175, /* LEFT_SHIFT */ -176, /* LEFT_CONTROL */ -177, /* LEFT_ALT */ -178, /* LEFT_SUPER */ -179, /* RIGHT_SHIFT */ -180, /* RIGHT_CONTROL */ -181, /* RIGHT_ALT */ -182, /* RIGHT_SUPER */ -183, /* MENU */ -}; -static inline const char* key_name(int key) { switch(key) { -case 32: return "SPACE"; -case 33: return "EXCLAM"; -case 34: return "DOUBLE_QUOTE"; -case 35: return "NUMBER_SIGN"; -case 36: return "DOLLAR"; -case 38: return "AMPERSAND"; -case 39: return "APOSTROPHE"; -case 40: return "PARENTHESIS_LEFT"; -case 41: return "PARENTHESIS_RIGHT"; -case 43: return "PLUS"; -case 44: return "COMMA"; -case 45: return "MINUS"; -case 46: return "PERIOD"; -case 47: return "SLASH"; -case 48: return "0"; -case 49: return "1"; -case 50: return "2"; -case 51: return "3"; -case 52: return "4"; -case 53: return "5"; -case 54: return "6"; -case 55: return "7"; -case 56: return "8"; -case 57: return "9"; -case 58: return "COLON"; -case 59: return "SEMICOLON"; -case 60: return "LESS"; -case 61: return "EQUAL"; -case 62: return "GREATER"; -case 64: return "AT"; -case 65: return "A"; -case 66: return "B"; -case 67: return "C"; -case 68: return "D"; -case 69: return "E"; -case 70: return "F"; -case 71: return "G"; -case 72: return "H"; -case 73: return "I"; -case 74: return "J"; -case 75: return "K"; -case 76: return "L"; -case 77: return "M"; -case 78: return "N"; -case 79: return "O"; -case 80: return "P"; -case 81: return "Q"; -case 82: return "R"; -case 83: return "S"; -case 84: return "T"; -case 85: return "U"; -case 86: return "V"; -case 87: return "W"; -case 88: return "X"; -case 89: return "Y"; -case 90: return "Z"; -case 91: return "LEFT_BRACKET"; -case 92: return "BACKSLASH"; -case 93: return "RIGHT_BRACKET"; -case 94: return "CIRCUMFLEX"; -case 95: return "UNDERSCORE"; -case 96: return "GRAVE_ACCENT"; -case 161: return "WORLD_1"; -case 162: return "WORLD_2"; -case 167: return "PARAGRAPH"; -case 186: return "MASCULINE"; -case 192: return "A_GRAVE"; -case 196: return "A_DIAERESIS"; -case 197: return "A_RING"; -case 198: return "AE"; -case 199: return "C_CEDILLA"; -case 200: return "E_GRAVE"; -case 201: return "E_ACUTE"; -case 204: return "I_GRAVE"; -case 209: return "N_TILDE"; -case 210: return "O_GRAVE"; -case 214: return "O_DIAERESIS"; -case 216: return "O_SLASH"; -case 217: return "U_GRAVE"; -case 220: return "U_DIAERESIS"; -case 222: return "S_SHARP"; -case 223: return "CYRILLIC_A"; -case 224: return "CYRILLIC_BE"; -case 225: return "CYRILLIC_VE"; -case 226: return "CYRILLIC_GHE"; -case 227: return "CYRILLIC_DE"; -case 228: return "CYRILLIC_IE"; -case 229: return "CYRILLIC_ZHE"; -case 230: return "CYRILLIC_ZE"; -case 231: return "CYRILLIC_I"; -case 232: return "CYRILLIC_SHORT_I"; -case 233: return "CYRILLIC_KA"; -case 234: return "CYRILLIC_EL"; -case 235: return "CYRILLIC_EM"; -case 236: return "CYRILLIC_EN"; -case 237: return "CYRILLIC_O"; -case 238: return "CYRILLIC_PE"; -case 239: return "CYRILLIC_ER"; -case 240: return "CYRILLIC_ES"; -case 241: return "CYRILLIC_TE"; -case 242: return "CYRILLIC_U"; -case 243: return "CYRILLIC_EF"; -case 244: return "CYRILLIC_HA"; -case 245: return "CYRILLIC_TSE"; -case 246: return "CYRILLIC_CHE"; -case 247: return "CYRILLIC_SHA"; -case 248: return "CYRILLIC_SHCHA"; -case 249: return "CYRILLIC_HARD_SIGN"; -case 250: return "CYRILLIC_YERU"; -case 251: return "CYRILLIC_SOFT_SIGN"; -case 252: return "CYRILLIC_E"; -case 253: return "CYRILLIC_YU"; -case 254: return "CYRILLIC_YA"; -case 255: return "CYRILLIC_IO"; -case 256: return "ESCAPE"; -case 257: return "ENTER"; -case 258: return "TAB"; -case 259: return "BACKSPACE"; -case 260: return "INSERT"; -case 261: return "DELETE"; -case 262: return "RIGHT"; -case 263: return "LEFT"; -case 264: return "DOWN"; -case 265: return "UP"; -case 266: return "PAGE_UP"; -case 267: return "PAGE_DOWN"; -case 268: return "HOME"; -case 269: return "END"; -case 280: return "CAPS_LOCK"; -case 281: return "SCROLL_LOCK"; -case 282: return "NUM_LOCK"; -case 283: return "PRINT_SCREEN"; -case 284: return "PAUSE"; -case 290: return "F1"; -case 291: return "F2"; -case 292: return "F3"; -case 293: return "F4"; -case 294: return "F5"; -case 295: return "F6"; -case 296: return "F7"; -case 297: return "F8"; -case 298: return "F9"; -case 299: return "F10"; -case 300: return "F11"; -case 301: return "F12"; -case 302: return "F13"; -case 303: return "F14"; -case 304: return "F15"; -case 305: return "F16"; -case 306: return "F17"; -case 307: return "F18"; -case 308: return "F19"; -case 309: return "F20"; -case 310: return "F21"; -case 311: return "F22"; -case 312: return "F23"; -case 313: return "F24"; -case 314: return "F25"; -case 320: return "KP_0"; -case 321: return "KP_1"; -case 322: return "KP_2"; -case 323: return "KP_3"; -case 324: return "KP_4"; -case 325: return "KP_5"; -case 326: return "KP_6"; -case 327: return "KP_7"; -case 328: return "KP_8"; -case 329: return "KP_9"; -case 330: return "KP_DECIMAL"; -case 331: return "KP_DIVIDE"; -case 332: return "KP_MULTIPLY"; -case 333: return "KP_SUBTRACT"; -case 334: return "KP_ADD"; -case 335: return "KP_ENTER"; -case 336: return "KP_EQUAL"; -case 340: return "LEFT_SHIFT"; -case 341: return "LEFT_CONTROL"; -case 342: return "LEFT_ALT"; -case 343: return "LEFT_SUPER"; -case 344: return "RIGHT_SHIFT"; -case 345: return "RIGHT_CONTROL"; -case 346: return "RIGHT_ALT"; -case 347: return "RIGHT_SUPER"; -case 348: return "MENU"; -default: return NULL; }} +#define KEY_BUFFER_SIZE 32 +#define SEND_TEXT_TO_CHILD INT_MIN +#define debug(...) if (OPT(debug_keyboard)) printf(__VA_ARGS__); -typedef enum { NORMAL, APPLICATION, EXTENDED } KeyboardMode; - -static inline const char* -key_lookup(uint8_t key, KeyboardMode mode, uint8_t mods, uint8_t action) { - switch(mode) { - case NORMAL: - switch(action & 3) { case 3: return NULL; - case 0: // RELEASE - return NULL; - - case 1: // PRESS - switch (mods & 0xf) { - case 0x0: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x5b\x43"; - case 121: // LEFT - return "\x03\x1b\x5b\x44"; - case 122: // DOWN - return "\x03\x1b\x5b\x42"; - case 123: // UP - return "\x03\x1b\x5b\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x5b\x48"; - case 127: // END - return "\x03\x1b\x5b\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0x1: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x03\x1b\x5b\x5a"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x32\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x32\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x32\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x32\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x32\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x32\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x32\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x32\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x32\x7e"; - } // end switch(key) - case 0x2: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x01\x00"; - case 6: // APOSTROPHE - return "\x01\x27"; - case 10: // COMMA - return "\x01\x2c"; - case 11: // MINUS - return "\x01\x2d"; - case 12: // PERIOD - return "\x01\x2e"; - case 13: // SLASH - return "\x01\x1f"; - case 14: // 0 - return "\x01\x30"; - case 15: // 1 - return "\x01\x31"; - case 16: // 2 - return "\x01\x00"; - case 17: // 3 - return "\x01\x1b"; - case 18: // 4 - return "\x01\x1c"; - case 19: // 5 - return "\x01\x1d"; - case 20: // 6 - return "\x01\x1e"; - case 21: // 7 - return "\x01\x1f"; - case 22: // 8 - return "\x01\x7f"; - case 23: // 9 - return "\x01\x39"; - case 25: // SEMICOLON - return "\x01\x3b"; - case 27: // EQUAL - return "\x01\x3d"; - case 30: // A - return "\x01\x01"; - case 31: // B - return "\x01\x02"; - case 32: // C - return "\x01\x03"; - case 33: // D - return "\x01\x04"; - case 34: // E - return "\x01\x05"; - case 35: // F - return "\x01\x06"; - case 36: // G - return "\x01\x07"; - case 37: // H - return "\x01\x08"; - case 38: // I - return "\x01\x09"; - case 39: // J - return "\x01\x0a"; - case 40: // K - return "\x01\x0b"; - case 41: // L - return "\x01\x0c"; - case 42: // M - return "\x01\x0d"; - case 43: // N - return "\x01\x0e"; - case 44: // O - return "\x01\x0f"; - case 45: // P - return "\x01\x10"; - case 46: // Q - return "\x01\x11"; - case 47: // R - return "\x01\x12"; - case 48: // S - return "\x01\x13"; - case 49: // T - return "\x01\x14"; - case 50: // U - return "\x01\x15"; - case 51: // V - return "\x01\x16"; - case 52: // W - return "\x01\x17"; - case 53: // X - return "\x01\x18"; - case 54: // Y - return "\x01\x19"; - case 55: // Z - return "\x01\x1a"; - case 56: // LEFT_BRACKET - return "\x01\x1b"; - case 57: // BACKSLASH - return "\x01\x1c"; - case 58: // RIGHT_BRACKET - return "\x01\x1d"; - case 59: // CIRCUMFLEX - return "\x01\x1e"; - case 60: // UNDERSCORE - return "\x01\x00"; - case 61: // GRAVE_ACCENT - return "\x01\x00"; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x08"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x35\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x35\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x35\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x35\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x35\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x35\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x35\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x35\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x35\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x35\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x35\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x35\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x35\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x35\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x35\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x35\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x35\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x35\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x35\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x35\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x35\x7e"; - } // end switch(key) - case 0x3: - switch(key & 0xff) { default: return NULL; - case 11: // MINUS - return "\x01\x1f"; - case 13: // SLASH - return "\x01\x7f"; - case 16: // 2 - return "\x01\x00"; - case 20: // 6 - return "\x01\x1e"; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x36\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x36\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x36\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x36\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x36\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x36\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x36\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x36\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x36\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x36\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x36\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x36\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x36\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x36\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x36\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x36\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x36\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x36\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x36\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x36\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x36\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x36\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x36\x7e"; - } // end switch(key) - case 0x4: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x02\x1b\x20"; - case 6: // APOSTROPHE - return "\x02\x1b\x27"; - case 10: // COMMA - return "\x02\x1b\x2c"; - case 11: // MINUS - return "\x02\x1b\x2d"; - case 12: // PERIOD - return "\x02\x1b\x2e"; - case 13: // SLASH - return "\x02\x1b\x2f"; - case 14: // 0 - return "\x02\x1b\x30"; - case 15: // 1 - return "\x02\x1b\x31"; - case 16: // 2 - return "\x02\x1b\x32"; - case 17: // 3 - return "\x02\x1b\x33"; - case 18: // 4 - return "\x02\x1b\x34"; - case 19: // 5 - return "\x02\x1b\x35"; - case 20: // 6 - return "\x02\x1b\x36"; - case 21: // 7 - return "\x02\x1b\x37"; - case 22: // 8 - return "\x02\x1b\x38"; - case 23: // 9 - return "\x02\x1b\x39"; - case 25: // SEMICOLON - return "\x02\x1b\x3b"; - case 27: // EQUAL - return "\x02\x1b\x3d"; - case 30: // A - return "\x02\x1b\x61"; - case 31: // B - return "\x02\x1b\x62"; - case 32: // C - return "\x02\x1b\x63"; - case 33: // D - return "\x02\x1b\x64"; - case 34: // E - return "\x02\x1b\x65"; - case 35: // F - return "\x02\x1b\x66"; - case 36: // G - return "\x02\x1b\x67"; - case 37: // H - return "\x02\x1b\x68"; - case 38: // I - return "\x02\x1b\x69"; - case 39: // J - return "\x02\x1b\x6a"; - case 40: // K - return "\x02\x1b\x6b"; - case 41: // L - return "\x02\x1b\x6c"; - case 42: // M - return "\x02\x1b\x6d"; - case 43: // N - return "\x02\x1b\x6e"; - case 44: // O - return "\x02\x1b\x6f"; - case 45: // P - return "\x02\x1b\x70"; - case 46: // Q - return "\x02\x1b\x71"; - case 47: // R - return "\x02\x1b\x72"; - case 48: // S - return "\x02\x1b\x73"; - case 49: // T - return "\x02\x1b\x74"; - case 50: // U - return "\x02\x1b\x75"; - case 51: // V - return "\x02\x1b\x76"; - case 52: // W - return "\x02\x1b\x77"; - case 53: // X - return "\x02\x1b\x78"; - case 54: // Y - return "\x02\x1b\x79"; - case 55: // Z - return "\x02\x1b\x7a"; - case 56: // LEFT_BRACKET - return "\x02\x1b\x5b"; - case 57: // BACKSLASH - return "\x02\x1b\x5c"; - case 58: // RIGHT_BRACKET - return "\x02\x1b\x5d"; - case 60: // UNDERSCORE - return "\x02\x1b\x5f"; - case 61: // GRAVE_ACCENT - return "\x02\x1b\x60"; - case 114: // ESCAPE - return "\x02\x1b\x1b"; - case 115: // ENTER - return "\x02\x1b\x0d"; - case 116: // TAB - return "\x02\x1b\x09"; - case 117: // BACKSPACE - return "\x02\x1b\x7f"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x33\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x33\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x33\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x33\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x33\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x33\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x33\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x33\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x33\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x33\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x33\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x33\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x33\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x33\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x33\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x33\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x33\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x33\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x33\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x33\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x33\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x33\x7e"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x33\x7e"; - } // end switch(key) - case 0x5: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x02\x1b\x20"; - case 6: // APOSTROPHE - return "\x02\x1b\x22"; - case 10: // COMMA - return "\x02\x1b\x3c"; - case 11: // MINUS - return "\x02\x1b\x5f"; - case 12: // PERIOD - return "\x02\x1b\x3e"; - case 13: // SLASH - return "\x02\x1b\x3f"; - case 14: // 0 - return "\x02\x1b\x29"; - case 15: // 1 - return "\x02\x1b\x21"; - case 16: // 2 - return "\x02\x1b\x40"; - case 17: // 3 - return "\x02\x1b\x23"; - case 18: // 4 - return "\x02\x1b\x24"; - case 19: // 5 - return "\x02\x1b\x25"; - case 20: // 6 - return "\x02\x1b\x5e"; - case 21: // 7 - return "\x02\x1b\x26"; - case 22: // 8 - return "\x02\x1b\x2a"; - case 23: // 9 - return "\x02\x1b\x28"; - case 25: // SEMICOLON - return "\x02\x1b\x3a"; - case 27: // EQUAL - return "\x02\x1b\x2b"; - case 30: // A - return "\x02\x1b\x41"; - case 31: // B - return "\x02\x1b\x42"; - case 32: // C - return "\x02\x1b\x43"; - case 33: // D - return "\x02\x1b\x44"; - case 34: // E - return "\x02\x1b\x45"; - case 35: // F - return "\x02\x1b\x46"; - case 36: // G - return "\x02\x1b\x47"; - case 37: // H - return "\x02\x1b\x48"; - case 38: // I - return "\x02\x1b\x49"; - case 39: // J - return "\x02\x1b\x4a"; - case 40: // K - return "\x02\x1b\x4b"; - case 41: // L - return "\x02\x1b\x4c"; - case 42: // M - return "\x02\x1b\x4d"; - case 43: // N - return "\x02\x1b\x4e"; - case 44: // O - return "\x02\x1b\x4f"; - case 45: // P - return "\x02\x1b\x50"; - case 46: // Q - return "\x02\x1b\x51"; - case 47: // R - return "\x02\x1b\x52"; - case 48: // S - return "\x02\x1b\x53"; - case 49: // T - return "\x02\x1b\x54"; - case 50: // U - return "\x02\x1b\x55"; - case 51: // V - return "\x02\x1b\x56"; - case 52: // W - return "\x02\x1b\x57"; - case 53: // X - return "\x02\x1b\x58"; - case 54: // Y - return "\x02\x1b\x59"; - case 55: // Z - return "\x02\x1b\x5a"; - case 56: // LEFT_BRACKET - return "\x02\x1b\x7b"; - case 57: // BACKSLASH - return "\x02\x1b\x7c"; - case 58: // RIGHT_BRACKET - return "\x02\x1b\x7d"; - case 60: // UNDERSCORE - return "\x02\x1b\x5f"; - case 61: // GRAVE_ACCENT - return "\x02\x1b\x7e"; - case 114: // ESCAPE - return "\x02\x1b\x1b"; - case 115: // ENTER - return "\x02\x1b\x0d"; - case 116: // TAB - return "\x03\x1b\x5b\x5a"; - case 117: // BACKSPACE - return "\x02\x1b\x7f"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x34\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x34\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x34\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x34\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x34\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x34\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x34\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x34\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x34\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x34\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x34\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x34\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x34\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x34\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x34\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x34\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x34\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x34\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x34\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x34\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x34\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x34\x7e"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x34\x7e"; - } // end switch(key) - case 0x6: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x02\x1b\x00"; - case 30: // A - return "\x02\x1b\x01"; - case 31: // B - return "\x02\x1b\x02"; - case 32: // C - return "\x02\x1b\x03"; - case 33: // D - return "\x02\x1b\x04"; - case 34: // E - return "\x02\x1b\x05"; - case 35: // F - return "\x02\x1b\x06"; - case 36: // G - return "\x02\x1b\x07"; - case 37: // H - return "\x02\x1b\x08"; - case 38: // I - return "\x02\x1b\x09"; - case 39: // J - return "\x02\x1b\x0a"; - case 40: // K - return "\x02\x1b\x0b"; - case 41: // L - return "\x02\x1b\x0c"; - case 42: // M - return "\x02\x1b\x0d"; - case 43: // N - return "\x02\x1b\x0e"; - case 44: // O - return "\x02\x1b\x0f"; - case 45: // P - return "\x02\x1b\x10"; - case 46: // Q - return "\x02\x1b\x11"; - case 47: // R - return "\x02\x1b\x12"; - case 48: // S - return "\x02\x1b\x13"; - case 49: // T - return "\x02\x1b\x14"; - case 50: // U - return "\x02\x1b\x15"; - case 51: // V - return "\x02\x1b\x16"; - case 52: // W - return "\x02\x1b\x17"; - case 53: // X - return "\x02\x1b\x18"; - case 54: // Y - return "\x02\x1b\x19"; - case 55: // Z - return "\x02\x1b\x1a"; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x37\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x37\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x37\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x37\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x37\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x37\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x37\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x37\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x37\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x37\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x37\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x37\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x37\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x37\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x37\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x37\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x37\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x37\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x37\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x37\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x37\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x37\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x37\x7e"; - } // end switch(key) - case 0x7: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x38\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x38\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x38\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x38\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x38\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x38\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x38\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x38\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x38\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x38\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x38\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x38\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x38\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x38\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x38\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x38\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x38\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x38\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x38\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x38\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x38\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x38\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x38\x7e"; - } // end switch(key) - case 0x8: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x5b\x43"; - case 121: // LEFT - return "\x03\x1b\x5b\x44"; - case 122: // DOWN - return "\x03\x1b\x5b\x42"; - case 123: // UP - return "\x03\x1b\x5b\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x5b\x48"; - case 127: // END - return "\x03\x1b\x5b\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0x9: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x5b\x43"; - case 121: // LEFT - return "\x03\x1b\x5b\x44"; - case 122: // DOWN - return "\x03\x1b\x5b\x42"; - case 123: // UP - return "\x03\x1b\x5b\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x5b\x48"; - case 127: // END - return "\x03\x1b\x5b\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xa: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x5b\x43"; - case 121: // LEFT - return "\x03\x1b\x5b\x44"; - case 122: // DOWN - return "\x03\x1b\x5b\x42"; - case 123: // UP - return "\x03\x1b\x5b\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x5b\x48"; - case 127: // END - return "\x03\x1b\x5b\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xb: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x5b\x43"; - case 121: // LEFT - return "\x03\x1b\x5b\x44"; - case 122: // DOWN - return "\x03\x1b\x5b\x42"; - case 123: // UP - return "\x03\x1b\x5b\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x5b\x48"; - case 127: // END - return "\x03\x1b\x5b\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xc: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x5b\x43"; - case 121: // LEFT - return "\x03\x1b\x5b\x44"; - case 122: // DOWN - return "\x03\x1b\x5b\x42"; - case 123: // UP - return "\x03\x1b\x5b\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x5b\x48"; - case 127: // END - return "\x03\x1b\x5b\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xd: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x5b\x43"; - case 121: // LEFT - return "\x03\x1b\x5b\x44"; - case 122: // DOWN - return "\x03\x1b\x5b\x42"; - case 123: // UP - return "\x03\x1b\x5b\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x5b\x48"; - case 127: // END - return "\x03\x1b\x5b\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xe: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x5b\x43"; - case 121: // LEFT - return "\x03\x1b\x5b\x44"; - case 122: // DOWN - return "\x03\x1b\x5b\x42"; - case 123: // UP - return "\x03\x1b\x5b\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x5b\x48"; - case 127: // END - return "\x03\x1b\x5b\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xf: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x5b\x43"; - case 121: // LEFT - return "\x03\x1b\x5b\x44"; - case 122: // DOWN - return "\x03\x1b\x5b\x42"; - case 123: // UP - return "\x03\x1b\x5b\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x5b\x48"; - case 127: // END - return "\x03\x1b\x5b\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - } // end switch(mods) - break; - - case 2: // REPEAT - switch (mods & 0xf) { - case 0x0: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x5b\x43"; - case 121: // LEFT - return "\x03\x1b\x5b\x44"; - case 122: // DOWN - return "\x03\x1b\x5b\x42"; - case 123: // UP - return "\x03\x1b\x5b\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x5b\x48"; - case 127: // END - return "\x03\x1b\x5b\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0x1: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x03\x1b\x5b\x5a"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x32\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x32\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x32\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x32\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x32\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x32\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x32\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x32\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x32\x7e"; - } // end switch(key) - case 0x2: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x01\x00"; - case 6: // APOSTROPHE - return "\x01\x27"; - case 10: // COMMA - return "\x01\x2c"; - case 11: // MINUS - return "\x01\x2d"; - case 12: // PERIOD - return "\x01\x2e"; - case 13: // SLASH - return "\x01\x1f"; - case 14: // 0 - return "\x01\x30"; - case 15: // 1 - return "\x01\x31"; - case 16: // 2 - return "\x01\x00"; - case 17: // 3 - return "\x01\x1b"; - case 18: // 4 - return "\x01\x1c"; - case 19: // 5 - return "\x01\x1d"; - case 20: // 6 - return "\x01\x1e"; - case 21: // 7 - return "\x01\x1f"; - case 22: // 8 - return "\x01\x7f"; - case 23: // 9 - return "\x01\x39"; - case 25: // SEMICOLON - return "\x01\x3b"; - case 27: // EQUAL - return "\x01\x3d"; - case 30: // A - return "\x01\x01"; - case 31: // B - return "\x01\x02"; - case 32: // C - return "\x01\x03"; - case 33: // D - return "\x01\x04"; - case 34: // E - return "\x01\x05"; - case 35: // F - return "\x01\x06"; - case 36: // G - return "\x01\x07"; - case 37: // H - return "\x01\x08"; - case 38: // I - return "\x01\x09"; - case 39: // J - return "\x01\x0a"; - case 40: // K - return "\x01\x0b"; - case 41: // L - return "\x01\x0c"; - case 42: // M - return "\x01\x0d"; - case 43: // N - return "\x01\x0e"; - case 44: // O - return "\x01\x0f"; - case 45: // P - return "\x01\x10"; - case 46: // Q - return "\x01\x11"; - case 47: // R - return "\x01\x12"; - case 48: // S - return "\x01\x13"; - case 49: // T - return "\x01\x14"; - case 50: // U - return "\x01\x15"; - case 51: // V - return "\x01\x16"; - case 52: // W - return "\x01\x17"; - case 53: // X - return "\x01\x18"; - case 54: // Y - return "\x01\x19"; - case 55: // Z - return "\x01\x1a"; - case 56: // LEFT_BRACKET - return "\x01\x1b"; - case 57: // BACKSLASH - return "\x01\x1c"; - case 58: // RIGHT_BRACKET - return "\x01\x1d"; - case 59: // CIRCUMFLEX - return "\x01\x1e"; - case 60: // UNDERSCORE - return "\x01\x00"; - case 61: // GRAVE_ACCENT - return "\x01\x00"; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x08"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x35\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x35\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x35\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x35\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x35\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x35\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x35\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x35\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x35\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x35\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x35\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x35\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x35\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x35\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x35\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x35\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x35\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x35\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x35\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x35\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x35\x7e"; - } // end switch(key) - case 0x3: - switch(key & 0xff) { default: return NULL; - case 11: // MINUS - return "\x01\x1f"; - case 13: // SLASH - return "\x01\x7f"; - case 16: // 2 - return "\x01\x00"; - case 20: // 6 - return "\x01\x1e"; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x36\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x36\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x36\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x36\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x36\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x36\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x36\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x36\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x36\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x36\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x36\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x36\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x36\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x36\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x36\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x36\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x36\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x36\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x36\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x36\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x36\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x36\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x36\x7e"; - } // end switch(key) - case 0x4: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x02\x1b\x20"; - case 6: // APOSTROPHE - return "\x02\x1b\x27"; - case 10: // COMMA - return "\x02\x1b\x2c"; - case 11: // MINUS - return "\x02\x1b\x2d"; - case 12: // PERIOD - return "\x02\x1b\x2e"; - case 13: // SLASH - return "\x02\x1b\x2f"; - case 14: // 0 - return "\x02\x1b\x30"; - case 15: // 1 - return "\x02\x1b\x31"; - case 16: // 2 - return "\x02\x1b\x32"; - case 17: // 3 - return "\x02\x1b\x33"; - case 18: // 4 - return "\x02\x1b\x34"; - case 19: // 5 - return "\x02\x1b\x35"; - case 20: // 6 - return "\x02\x1b\x36"; - case 21: // 7 - return "\x02\x1b\x37"; - case 22: // 8 - return "\x02\x1b\x38"; - case 23: // 9 - return "\x02\x1b\x39"; - case 25: // SEMICOLON - return "\x02\x1b\x3b"; - case 27: // EQUAL - return "\x02\x1b\x3d"; - case 30: // A - return "\x02\x1b\x61"; - case 31: // B - return "\x02\x1b\x62"; - case 32: // C - return "\x02\x1b\x63"; - case 33: // D - return "\x02\x1b\x64"; - case 34: // E - return "\x02\x1b\x65"; - case 35: // F - return "\x02\x1b\x66"; - case 36: // G - return "\x02\x1b\x67"; - case 37: // H - return "\x02\x1b\x68"; - case 38: // I - return "\x02\x1b\x69"; - case 39: // J - return "\x02\x1b\x6a"; - case 40: // K - return "\x02\x1b\x6b"; - case 41: // L - return "\x02\x1b\x6c"; - case 42: // M - return "\x02\x1b\x6d"; - case 43: // N - return "\x02\x1b\x6e"; - case 44: // O - return "\x02\x1b\x6f"; - case 45: // P - return "\x02\x1b\x70"; - case 46: // Q - return "\x02\x1b\x71"; - case 47: // R - return "\x02\x1b\x72"; - case 48: // S - return "\x02\x1b\x73"; - case 49: // T - return "\x02\x1b\x74"; - case 50: // U - return "\x02\x1b\x75"; - case 51: // V - return "\x02\x1b\x76"; - case 52: // W - return "\x02\x1b\x77"; - case 53: // X - return "\x02\x1b\x78"; - case 54: // Y - return "\x02\x1b\x79"; - case 55: // Z - return "\x02\x1b\x7a"; - case 56: // LEFT_BRACKET - return "\x02\x1b\x5b"; - case 57: // BACKSLASH - return "\x02\x1b\x5c"; - case 58: // RIGHT_BRACKET - return "\x02\x1b\x5d"; - case 60: // UNDERSCORE - return "\x02\x1b\x5f"; - case 61: // GRAVE_ACCENT - return "\x02\x1b\x60"; - case 114: // ESCAPE - return "\x02\x1b\x1b"; - case 115: // ENTER - return "\x02\x1b\x0d"; - case 116: // TAB - return "\x02\x1b\x09"; - case 117: // BACKSPACE - return "\x02\x1b\x7f"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x33\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x33\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x33\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x33\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x33\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x33\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x33\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x33\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x33\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x33\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x33\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x33\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x33\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x33\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x33\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x33\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x33\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x33\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x33\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x33\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x33\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x33\x7e"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x33\x7e"; - } // end switch(key) - case 0x5: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x02\x1b\x20"; - case 6: // APOSTROPHE - return "\x02\x1b\x22"; - case 10: // COMMA - return "\x02\x1b\x3c"; - case 11: // MINUS - return "\x02\x1b\x5f"; - case 12: // PERIOD - return "\x02\x1b\x3e"; - case 13: // SLASH - return "\x02\x1b\x3f"; - case 14: // 0 - return "\x02\x1b\x29"; - case 15: // 1 - return "\x02\x1b\x21"; - case 16: // 2 - return "\x02\x1b\x40"; - case 17: // 3 - return "\x02\x1b\x23"; - case 18: // 4 - return "\x02\x1b\x24"; - case 19: // 5 - return "\x02\x1b\x25"; - case 20: // 6 - return "\x02\x1b\x5e"; - case 21: // 7 - return "\x02\x1b\x26"; - case 22: // 8 - return "\x02\x1b\x2a"; - case 23: // 9 - return "\x02\x1b\x28"; - case 25: // SEMICOLON - return "\x02\x1b\x3a"; - case 27: // EQUAL - return "\x02\x1b\x2b"; - case 30: // A - return "\x02\x1b\x41"; - case 31: // B - return "\x02\x1b\x42"; - case 32: // C - return "\x02\x1b\x43"; - case 33: // D - return "\x02\x1b\x44"; - case 34: // E - return "\x02\x1b\x45"; - case 35: // F - return "\x02\x1b\x46"; - case 36: // G - return "\x02\x1b\x47"; - case 37: // H - return "\x02\x1b\x48"; - case 38: // I - return "\x02\x1b\x49"; - case 39: // J - return "\x02\x1b\x4a"; - case 40: // K - return "\x02\x1b\x4b"; - case 41: // L - return "\x02\x1b\x4c"; - case 42: // M - return "\x02\x1b\x4d"; - case 43: // N - return "\x02\x1b\x4e"; - case 44: // O - return "\x02\x1b\x4f"; - case 45: // P - return "\x02\x1b\x50"; - case 46: // Q - return "\x02\x1b\x51"; - case 47: // R - return "\x02\x1b\x52"; - case 48: // S - return "\x02\x1b\x53"; - case 49: // T - return "\x02\x1b\x54"; - case 50: // U - return "\x02\x1b\x55"; - case 51: // V - return "\x02\x1b\x56"; - case 52: // W - return "\x02\x1b\x57"; - case 53: // X - return "\x02\x1b\x58"; - case 54: // Y - return "\x02\x1b\x59"; - case 55: // Z - return "\x02\x1b\x5a"; - case 56: // LEFT_BRACKET - return "\x02\x1b\x7b"; - case 57: // BACKSLASH - return "\x02\x1b\x7c"; - case 58: // RIGHT_BRACKET - return "\x02\x1b\x7d"; - case 60: // UNDERSCORE - return "\x02\x1b\x5f"; - case 61: // GRAVE_ACCENT - return "\x02\x1b\x7e"; - case 114: // ESCAPE - return "\x02\x1b\x1b"; - case 115: // ENTER - return "\x02\x1b\x0d"; - case 116: // TAB - return "\x03\x1b\x5b\x5a"; - case 117: // BACKSPACE - return "\x02\x1b\x7f"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x34\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x34\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x34\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x34\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x34\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x34\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x34\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x34\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x34\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x34\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x34\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x34\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x34\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x34\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x34\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x34\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x34\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x34\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x34\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x34\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x34\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x34\x7e"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x34\x7e"; - } // end switch(key) - case 0x6: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x02\x1b\x00"; - case 30: // A - return "\x02\x1b\x01"; - case 31: // B - return "\x02\x1b\x02"; - case 32: // C - return "\x02\x1b\x03"; - case 33: // D - return "\x02\x1b\x04"; - case 34: // E - return "\x02\x1b\x05"; - case 35: // F - return "\x02\x1b\x06"; - case 36: // G - return "\x02\x1b\x07"; - case 37: // H - return "\x02\x1b\x08"; - case 38: // I - return "\x02\x1b\x09"; - case 39: // J - return "\x02\x1b\x0a"; - case 40: // K - return "\x02\x1b\x0b"; - case 41: // L - return "\x02\x1b\x0c"; - case 42: // M - return "\x02\x1b\x0d"; - case 43: // N - return "\x02\x1b\x0e"; - case 44: // O - return "\x02\x1b\x0f"; - case 45: // P - return "\x02\x1b\x10"; - case 46: // Q - return "\x02\x1b\x11"; - case 47: // R - return "\x02\x1b\x12"; - case 48: // S - return "\x02\x1b\x13"; - case 49: // T - return "\x02\x1b\x14"; - case 50: // U - return "\x02\x1b\x15"; - case 51: // V - return "\x02\x1b\x16"; - case 52: // W - return "\x02\x1b\x17"; - case 53: // X - return "\x02\x1b\x18"; - case 54: // Y - return "\x02\x1b\x19"; - case 55: // Z - return "\x02\x1b\x1a"; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x37\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x37\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x37\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x37\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x37\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x37\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x37\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x37\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x37\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x37\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x37\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x37\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x37\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x37\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x37\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x37\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x37\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x37\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x37\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x37\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x37\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x37\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x37\x7e"; - } // end switch(key) - case 0x7: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x38\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x38\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x38\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x38\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x38\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x38\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x38\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x38\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x38\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x38\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x38\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x38\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x38\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x38\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x38\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x38\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x38\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x38\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x38\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x38\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x38\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x38\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x38\x7e"; - } // end switch(key) - case 0x8: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x5b\x43"; - case 121: // LEFT - return "\x03\x1b\x5b\x44"; - case 122: // DOWN - return "\x03\x1b\x5b\x42"; - case 123: // UP - return "\x03\x1b\x5b\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x5b\x48"; - case 127: // END - return "\x03\x1b\x5b\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0x9: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x5b\x43"; - case 121: // LEFT - return "\x03\x1b\x5b\x44"; - case 122: // DOWN - return "\x03\x1b\x5b\x42"; - case 123: // UP - return "\x03\x1b\x5b\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x5b\x48"; - case 127: // END - return "\x03\x1b\x5b\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xa: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x5b\x43"; - case 121: // LEFT - return "\x03\x1b\x5b\x44"; - case 122: // DOWN - return "\x03\x1b\x5b\x42"; - case 123: // UP - return "\x03\x1b\x5b\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x5b\x48"; - case 127: // END - return "\x03\x1b\x5b\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xb: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x5b\x43"; - case 121: // LEFT - return "\x03\x1b\x5b\x44"; - case 122: // DOWN - return "\x03\x1b\x5b\x42"; - case 123: // UP - return "\x03\x1b\x5b\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x5b\x48"; - case 127: // END - return "\x03\x1b\x5b\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xc: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x5b\x43"; - case 121: // LEFT - return "\x03\x1b\x5b\x44"; - case 122: // DOWN - return "\x03\x1b\x5b\x42"; - case 123: // UP - return "\x03\x1b\x5b\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x5b\x48"; - case 127: // END - return "\x03\x1b\x5b\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xd: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x5b\x43"; - case 121: // LEFT - return "\x03\x1b\x5b\x44"; - case 122: // DOWN - return "\x03\x1b\x5b\x42"; - case 123: // UP - return "\x03\x1b\x5b\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x5b\x48"; - case 127: // END - return "\x03\x1b\x5b\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xe: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x5b\x43"; - case 121: // LEFT - return "\x03\x1b\x5b\x44"; - case 122: // DOWN - return "\x03\x1b\x5b\x42"; - case 123: // UP - return "\x03\x1b\x5b\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x5b\x48"; - case 127: // END - return "\x03\x1b\x5b\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xf: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x5b\x43"; - case 121: // LEFT - return "\x03\x1b\x5b\x44"; - case 122: // DOWN - return "\x03\x1b\x5b\x42"; - case 123: // UP - return "\x03\x1b\x5b\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x5b\x48"; - case 127: // END - return "\x03\x1b\x5b\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - } // end switch(mods) - break; - - } // end switch(action) in mode NORMAL - break; - - - case APPLICATION: - switch(action & 3) { case 3: return NULL; - case 0: // RELEASE - return NULL; - - case 1: // PRESS - switch (mods & 0xf) { - case 0x0: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x4f\x43"; - case 121: // LEFT - return "\x03\x1b\x4f\x44"; - case 122: // DOWN - return "\x03\x1b\x4f\x42"; - case 123: // UP - return "\x03\x1b\x4f\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x4f\x48"; - case 127: // END - return "\x03\x1b\x4f\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0x1: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x03\x1b\x5b\x5a"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x32\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x32\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x32\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x32\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x32\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x32\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x32\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x32\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x32\x7e"; - } // end switch(key) - case 0x2: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x01\x00"; - case 6: // APOSTROPHE - return "\x01\x27"; - case 10: // COMMA - return "\x01\x2c"; - case 11: // MINUS - return "\x01\x2d"; - case 12: // PERIOD - return "\x01\x2e"; - case 13: // SLASH - return "\x01\x1f"; - case 14: // 0 - return "\x01\x30"; - case 15: // 1 - return "\x01\x31"; - case 16: // 2 - return "\x01\x00"; - case 17: // 3 - return "\x01\x1b"; - case 18: // 4 - return "\x01\x1c"; - case 19: // 5 - return "\x01\x1d"; - case 20: // 6 - return "\x01\x1e"; - case 21: // 7 - return "\x01\x1f"; - case 22: // 8 - return "\x01\x7f"; - case 23: // 9 - return "\x01\x39"; - case 25: // SEMICOLON - return "\x01\x3b"; - case 27: // EQUAL - return "\x01\x3d"; - case 30: // A - return "\x01\x01"; - case 31: // B - return "\x01\x02"; - case 32: // C - return "\x01\x03"; - case 33: // D - return "\x01\x04"; - case 34: // E - return "\x01\x05"; - case 35: // F - return "\x01\x06"; - case 36: // G - return "\x01\x07"; - case 37: // H - return "\x01\x08"; - case 38: // I - return "\x01\x09"; - case 39: // J - return "\x01\x0a"; - case 40: // K - return "\x01\x0b"; - case 41: // L - return "\x01\x0c"; - case 42: // M - return "\x01\x0d"; - case 43: // N - return "\x01\x0e"; - case 44: // O - return "\x01\x0f"; - case 45: // P - return "\x01\x10"; - case 46: // Q - return "\x01\x11"; - case 47: // R - return "\x01\x12"; - case 48: // S - return "\x01\x13"; - case 49: // T - return "\x01\x14"; - case 50: // U - return "\x01\x15"; - case 51: // V - return "\x01\x16"; - case 52: // W - return "\x01\x17"; - case 53: // X - return "\x01\x18"; - case 54: // Y - return "\x01\x19"; - case 55: // Z - return "\x01\x1a"; - case 56: // LEFT_BRACKET - return "\x01\x1b"; - case 57: // BACKSLASH - return "\x01\x1c"; - case 58: // RIGHT_BRACKET - return "\x01\x1d"; - case 59: // CIRCUMFLEX - return "\x01\x1e"; - case 60: // UNDERSCORE - return "\x01\x00"; - case 61: // GRAVE_ACCENT - return "\x01\x00"; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x08"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x35\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x35\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x35\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x35\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x35\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x35\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x35\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x35\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x35\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x35\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x35\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x35\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x35\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x35\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x35\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x35\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x35\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x35\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x35\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x35\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x35\x7e"; - } // end switch(key) - case 0x3: - switch(key & 0xff) { default: return NULL; - case 11: // MINUS - return "\x01\x1f"; - case 13: // SLASH - return "\x01\x7f"; - case 16: // 2 - return "\x01\x00"; - case 20: // 6 - return "\x01\x1e"; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x36\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x36\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x36\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x36\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x36\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x36\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x36\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x36\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x36\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x36\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x36\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x36\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x36\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x36\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x36\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x36\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x36\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x36\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x36\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x36\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x36\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x36\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x36\x7e"; - } // end switch(key) - case 0x4: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x02\x1b\x20"; - case 6: // APOSTROPHE - return "\x02\x1b\x27"; - case 10: // COMMA - return "\x02\x1b\x2c"; - case 11: // MINUS - return "\x02\x1b\x2d"; - case 12: // PERIOD - return "\x02\x1b\x2e"; - case 13: // SLASH - return "\x02\x1b\x2f"; - case 14: // 0 - return "\x02\x1b\x30"; - case 15: // 1 - return "\x02\x1b\x31"; - case 16: // 2 - return "\x02\x1b\x32"; - case 17: // 3 - return "\x02\x1b\x33"; - case 18: // 4 - return "\x02\x1b\x34"; - case 19: // 5 - return "\x02\x1b\x35"; - case 20: // 6 - return "\x02\x1b\x36"; - case 21: // 7 - return "\x02\x1b\x37"; - case 22: // 8 - return "\x02\x1b\x38"; - case 23: // 9 - return "\x02\x1b\x39"; - case 25: // SEMICOLON - return "\x02\x1b\x3b"; - case 27: // EQUAL - return "\x02\x1b\x3d"; - case 30: // A - return "\x02\x1b\x61"; - case 31: // B - return "\x02\x1b\x62"; - case 32: // C - return "\x02\x1b\x63"; - case 33: // D - return "\x02\x1b\x64"; - case 34: // E - return "\x02\x1b\x65"; - case 35: // F - return "\x02\x1b\x66"; - case 36: // G - return "\x02\x1b\x67"; - case 37: // H - return "\x02\x1b\x68"; - case 38: // I - return "\x02\x1b\x69"; - case 39: // J - return "\x02\x1b\x6a"; - case 40: // K - return "\x02\x1b\x6b"; - case 41: // L - return "\x02\x1b\x6c"; - case 42: // M - return "\x02\x1b\x6d"; - case 43: // N - return "\x02\x1b\x6e"; - case 44: // O - return "\x02\x1b\x6f"; - case 45: // P - return "\x02\x1b\x70"; - case 46: // Q - return "\x02\x1b\x71"; - case 47: // R - return "\x02\x1b\x72"; - case 48: // S - return "\x02\x1b\x73"; - case 49: // T - return "\x02\x1b\x74"; - case 50: // U - return "\x02\x1b\x75"; - case 51: // V - return "\x02\x1b\x76"; - case 52: // W - return "\x02\x1b\x77"; - case 53: // X - return "\x02\x1b\x78"; - case 54: // Y - return "\x02\x1b\x79"; - case 55: // Z - return "\x02\x1b\x7a"; - case 56: // LEFT_BRACKET - return "\x02\x1b\x5b"; - case 57: // BACKSLASH - return "\x02\x1b\x5c"; - case 58: // RIGHT_BRACKET - return "\x02\x1b\x5d"; - case 60: // UNDERSCORE - return "\x02\x1b\x5f"; - case 61: // GRAVE_ACCENT - return "\x02\x1b\x60"; - case 114: // ESCAPE - return "\x02\x1b\x1b"; - case 115: // ENTER - return "\x02\x1b\x0d"; - case 116: // TAB - return "\x02\x1b\x09"; - case 117: // BACKSPACE - return "\x02\x1b\x7f"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x33\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x33\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x33\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x33\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x33\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x33\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x33\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x33\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x33\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x33\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x33\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x33\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x33\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x33\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x33\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x33\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x33\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x33\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x33\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x33\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x33\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x33\x7e"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x33\x7e"; - } // end switch(key) - case 0x5: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x02\x1b\x20"; - case 6: // APOSTROPHE - return "\x02\x1b\x22"; - case 10: // COMMA - return "\x02\x1b\x3c"; - case 11: // MINUS - return "\x02\x1b\x5f"; - case 12: // PERIOD - return "\x02\x1b\x3e"; - case 13: // SLASH - return "\x02\x1b\x3f"; - case 14: // 0 - return "\x02\x1b\x29"; - case 15: // 1 - return "\x02\x1b\x21"; - case 16: // 2 - return "\x02\x1b\x40"; - case 17: // 3 - return "\x02\x1b\x23"; - case 18: // 4 - return "\x02\x1b\x24"; - case 19: // 5 - return "\x02\x1b\x25"; - case 20: // 6 - return "\x02\x1b\x5e"; - case 21: // 7 - return "\x02\x1b\x26"; - case 22: // 8 - return "\x02\x1b\x2a"; - case 23: // 9 - return "\x02\x1b\x28"; - case 25: // SEMICOLON - return "\x02\x1b\x3a"; - case 27: // EQUAL - return "\x02\x1b\x2b"; - case 30: // A - return "\x02\x1b\x41"; - case 31: // B - return "\x02\x1b\x42"; - case 32: // C - return "\x02\x1b\x43"; - case 33: // D - return "\x02\x1b\x44"; - case 34: // E - return "\x02\x1b\x45"; - case 35: // F - return "\x02\x1b\x46"; - case 36: // G - return "\x02\x1b\x47"; - case 37: // H - return "\x02\x1b\x48"; - case 38: // I - return "\x02\x1b\x49"; - case 39: // J - return "\x02\x1b\x4a"; - case 40: // K - return "\x02\x1b\x4b"; - case 41: // L - return "\x02\x1b\x4c"; - case 42: // M - return "\x02\x1b\x4d"; - case 43: // N - return "\x02\x1b\x4e"; - case 44: // O - return "\x02\x1b\x4f"; - case 45: // P - return "\x02\x1b\x50"; - case 46: // Q - return "\x02\x1b\x51"; - case 47: // R - return "\x02\x1b\x52"; - case 48: // S - return "\x02\x1b\x53"; - case 49: // T - return "\x02\x1b\x54"; - case 50: // U - return "\x02\x1b\x55"; - case 51: // V - return "\x02\x1b\x56"; - case 52: // W - return "\x02\x1b\x57"; - case 53: // X - return "\x02\x1b\x58"; - case 54: // Y - return "\x02\x1b\x59"; - case 55: // Z - return "\x02\x1b\x5a"; - case 56: // LEFT_BRACKET - return "\x02\x1b\x7b"; - case 57: // BACKSLASH - return "\x02\x1b\x7c"; - case 58: // RIGHT_BRACKET - return "\x02\x1b\x7d"; - case 60: // UNDERSCORE - return "\x02\x1b\x5f"; - case 61: // GRAVE_ACCENT - return "\x02\x1b\x7e"; - case 114: // ESCAPE - return "\x02\x1b\x1b"; - case 115: // ENTER - return "\x02\x1b\x0d"; - case 116: // TAB - return "\x03\x1b\x5b\x5a"; - case 117: // BACKSPACE - return "\x02\x1b\x7f"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x34\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x34\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x34\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x34\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x34\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x34\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x34\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x34\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x34\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x34\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x34\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x34\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x34\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x34\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x34\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x34\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x34\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x34\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x34\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x34\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x34\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x34\x7e"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x34\x7e"; - } // end switch(key) - case 0x6: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x02\x1b\x00"; - case 30: // A - return "\x02\x1b\x01"; - case 31: // B - return "\x02\x1b\x02"; - case 32: // C - return "\x02\x1b\x03"; - case 33: // D - return "\x02\x1b\x04"; - case 34: // E - return "\x02\x1b\x05"; - case 35: // F - return "\x02\x1b\x06"; - case 36: // G - return "\x02\x1b\x07"; - case 37: // H - return "\x02\x1b\x08"; - case 38: // I - return "\x02\x1b\x09"; - case 39: // J - return "\x02\x1b\x0a"; - case 40: // K - return "\x02\x1b\x0b"; - case 41: // L - return "\x02\x1b\x0c"; - case 42: // M - return "\x02\x1b\x0d"; - case 43: // N - return "\x02\x1b\x0e"; - case 44: // O - return "\x02\x1b\x0f"; - case 45: // P - return "\x02\x1b\x10"; - case 46: // Q - return "\x02\x1b\x11"; - case 47: // R - return "\x02\x1b\x12"; - case 48: // S - return "\x02\x1b\x13"; - case 49: // T - return "\x02\x1b\x14"; - case 50: // U - return "\x02\x1b\x15"; - case 51: // V - return "\x02\x1b\x16"; - case 52: // W - return "\x02\x1b\x17"; - case 53: // X - return "\x02\x1b\x18"; - case 54: // Y - return "\x02\x1b\x19"; - case 55: // Z - return "\x02\x1b\x1a"; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x37\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x37\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x37\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x37\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x37\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x37\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x37\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x37\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x37\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x37\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x37\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x37\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x37\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x37\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x37\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x37\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x37\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x37\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x37\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x37\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x37\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x37\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x37\x7e"; - } // end switch(key) - case 0x7: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x38\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x38\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x38\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x38\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x38\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x38\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x38\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x38\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x38\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x38\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x38\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x38\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x38\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x38\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x38\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x38\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x38\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x38\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x38\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x38\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x38\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x38\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x38\x7e"; - } // end switch(key) - case 0x8: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x4f\x43"; - case 121: // LEFT - return "\x03\x1b\x4f\x44"; - case 122: // DOWN - return "\x03\x1b\x4f\x42"; - case 123: // UP - return "\x03\x1b\x4f\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x4f\x48"; - case 127: // END - return "\x03\x1b\x4f\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0x9: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x4f\x43"; - case 121: // LEFT - return "\x03\x1b\x4f\x44"; - case 122: // DOWN - return "\x03\x1b\x4f\x42"; - case 123: // UP - return "\x03\x1b\x4f\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x4f\x48"; - case 127: // END - return "\x03\x1b\x4f\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xa: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x4f\x43"; - case 121: // LEFT - return "\x03\x1b\x4f\x44"; - case 122: // DOWN - return "\x03\x1b\x4f\x42"; - case 123: // UP - return "\x03\x1b\x4f\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x4f\x48"; - case 127: // END - return "\x03\x1b\x4f\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xb: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x4f\x43"; - case 121: // LEFT - return "\x03\x1b\x4f\x44"; - case 122: // DOWN - return "\x03\x1b\x4f\x42"; - case 123: // UP - return "\x03\x1b\x4f\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x4f\x48"; - case 127: // END - return "\x03\x1b\x4f\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xc: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x4f\x43"; - case 121: // LEFT - return "\x03\x1b\x4f\x44"; - case 122: // DOWN - return "\x03\x1b\x4f\x42"; - case 123: // UP - return "\x03\x1b\x4f\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x4f\x48"; - case 127: // END - return "\x03\x1b\x4f\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xd: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x4f\x43"; - case 121: // LEFT - return "\x03\x1b\x4f\x44"; - case 122: // DOWN - return "\x03\x1b\x4f\x42"; - case 123: // UP - return "\x03\x1b\x4f\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x4f\x48"; - case 127: // END - return "\x03\x1b\x4f\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xe: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x4f\x43"; - case 121: // LEFT - return "\x03\x1b\x4f\x44"; - case 122: // DOWN - return "\x03\x1b\x4f\x42"; - case 123: // UP - return "\x03\x1b\x4f\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x4f\x48"; - case 127: // END - return "\x03\x1b\x4f\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xf: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x4f\x43"; - case 121: // LEFT - return "\x03\x1b\x4f\x44"; - case 122: // DOWN - return "\x03\x1b\x4f\x42"; - case 123: // UP - return "\x03\x1b\x4f\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x4f\x48"; - case 127: // END - return "\x03\x1b\x4f\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - } // end switch(mods) - break; - - case 2: // REPEAT - switch (mods & 0xf) { - case 0x0: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x4f\x43"; - case 121: // LEFT - return "\x03\x1b\x4f\x44"; - case 122: // DOWN - return "\x03\x1b\x4f\x42"; - case 123: // UP - return "\x03\x1b\x4f\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x4f\x48"; - case 127: // END - return "\x03\x1b\x4f\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0x1: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x03\x1b\x5b\x5a"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x32\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x32\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x32\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x32\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x32\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x32\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x32\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x32\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x32\x7e"; - } // end switch(key) - case 0x2: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x01\x00"; - case 6: // APOSTROPHE - return "\x01\x27"; - case 10: // COMMA - return "\x01\x2c"; - case 11: // MINUS - return "\x01\x2d"; - case 12: // PERIOD - return "\x01\x2e"; - case 13: // SLASH - return "\x01\x1f"; - case 14: // 0 - return "\x01\x30"; - case 15: // 1 - return "\x01\x31"; - case 16: // 2 - return "\x01\x00"; - case 17: // 3 - return "\x01\x1b"; - case 18: // 4 - return "\x01\x1c"; - case 19: // 5 - return "\x01\x1d"; - case 20: // 6 - return "\x01\x1e"; - case 21: // 7 - return "\x01\x1f"; - case 22: // 8 - return "\x01\x7f"; - case 23: // 9 - return "\x01\x39"; - case 25: // SEMICOLON - return "\x01\x3b"; - case 27: // EQUAL - return "\x01\x3d"; - case 30: // A - return "\x01\x01"; - case 31: // B - return "\x01\x02"; - case 32: // C - return "\x01\x03"; - case 33: // D - return "\x01\x04"; - case 34: // E - return "\x01\x05"; - case 35: // F - return "\x01\x06"; - case 36: // G - return "\x01\x07"; - case 37: // H - return "\x01\x08"; - case 38: // I - return "\x01\x09"; - case 39: // J - return "\x01\x0a"; - case 40: // K - return "\x01\x0b"; - case 41: // L - return "\x01\x0c"; - case 42: // M - return "\x01\x0d"; - case 43: // N - return "\x01\x0e"; - case 44: // O - return "\x01\x0f"; - case 45: // P - return "\x01\x10"; - case 46: // Q - return "\x01\x11"; - case 47: // R - return "\x01\x12"; - case 48: // S - return "\x01\x13"; - case 49: // T - return "\x01\x14"; - case 50: // U - return "\x01\x15"; - case 51: // V - return "\x01\x16"; - case 52: // W - return "\x01\x17"; - case 53: // X - return "\x01\x18"; - case 54: // Y - return "\x01\x19"; - case 55: // Z - return "\x01\x1a"; - case 56: // LEFT_BRACKET - return "\x01\x1b"; - case 57: // BACKSLASH - return "\x01\x1c"; - case 58: // RIGHT_BRACKET - return "\x01\x1d"; - case 59: // CIRCUMFLEX - return "\x01\x1e"; - case 60: // UNDERSCORE - return "\x01\x00"; - case 61: // GRAVE_ACCENT - return "\x01\x00"; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x08"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x35\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x35\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x35\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x35\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x35\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x35\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x35\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x35\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x35\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x35\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x35\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x35\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x35\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x35\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x35\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x35\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x35\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x35\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x35\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x35\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x35\x7e"; - } // end switch(key) - case 0x3: - switch(key & 0xff) { default: return NULL; - case 11: // MINUS - return "\x01\x1f"; - case 13: // SLASH - return "\x01\x7f"; - case 16: // 2 - return "\x01\x00"; - case 20: // 6 - return "\x01\x1e"; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x36\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x36\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x36\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x36\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x36\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x36\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x36\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x36\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x36\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x36\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x36\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x36\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x36\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x36\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x36\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x36\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x36\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x36\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x36\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x36\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x36\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x36\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x36\x7e"; - } // end switch(key) - case 0x4: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x02\x1b\x20"; - case 6: // APOSTROPHE - return "\x02\x1b\x27"; - case 10: // COMMA - return "\x02\x1b\x2c"; - case 11: // MINUS - return "\x02\x1b\x2d"; - case 12: // PERIOD - return "\x02\x1b\x2e"; - case 13: // SLASH - return "\x02\x1b\x2f"; - case 14: // 0 - return "\x02\x1b\x30"; - case 15: // 1 - return "\x02\x1b\x31"; - case 16: // 2 - return "\x02\x1b\x32"; - case 17: // 3 - return "\x02\x1b\x33"; - case 18: // 4 - return "\x02\x1b\x34"; - case 19: // 5 - return "\x02\x1b\x35"; - case 20: // 6 - return "\x02\x1b\x36"; - case 21: // 7 - return "\x02\x1b\x37"; - case 22: // 8 - return "\x02\x1b\x38"; - case 23: // 9 - return "\x02\x1b\x39"; - case 25: // SEMICOLON - return "\x02\x1b\x3b"; - case 27: // EQUAL - return "\x02\x1b\x3d"; - case 30: // A - return "\x02\x1b\x61"; - case 31: // B - return "\x02\x1b\x62"; - case 32: // C - return "\x02\x1b\x63"; - case 33: // D - return "\x02\x1b\x64"; - case 34: // E - return "\x02\x1b\x65"; - case 35: // F - return "\x02\x1b\x66"; - case 36: // G - return "\x02\x1b\x67"; - case 37: // H - return "\x02\x1b\x68"; - case 38: // I - return "\x02\x1b\x69"; - case 39: // J - return "\x02\x1b\x6a"; - case 40: // K - return "\x02\x1b\x6b"; - case 41: // L - return "\x02\x1b\x6c"; - case 42: // M - return "\x02\x1b\x6d"; - case 43: // N - return "\x02\x1b\x6e"; - case 44: // O - return "\x02\x1b\x6f"; - case 45: // P - return "\x02\x1b\x70"; - case 46: // Q - return "\x02\x1b\x71"; - case 47: // R - return "\x02\x1b\x72"; - case 48: // S - return "\x02\x1b\x73"; - case 49: // T - return "\x02\x1b\x74"; - case 50: // U - return "\x02\x1b\x75"; - case 51: // V - return "\x02\x1b\x76"; - case 52: // W - return "\x02\x1b\x77"; - case 53: // X - return "\x02\x1b\x78"; - case 54: // Y - return "\x02\x1b\x79"; - case 55: // Z - return "\x02\x1b\x7a"; - case 56: // LEFT_BRACKET - return "\x02\x1b\x5b"; - case 57: // BACKSLASH - return "\x02\x1b\x5c"; - case 58: // RIGHT_BRACKET - return "\x02\x1b\x5d"; - case 60: // UNDERSCORE - return "\x02\x1b\x5f"; - case 61: // GRAVE_ACCENT - return "\x02\x1b\x60"; - case 114: // ESCAPE - return "\x02\x1b\x1b"; - case 115: // ENTER - return "\x02\x1b\x0d"; - case 116: // TAB - return "\x02\x1b\x09"; - case 117: // BACKSPACE - return "\x02\x1b\x7f"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x33\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x33\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x33\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x33\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x33\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x33\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x33\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x33\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x33\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x33\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x33\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x33\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x33\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x33\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x33\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x33\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x33\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x33\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x33\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x33\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x33\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x33\x7e"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x33\x7e"; - } // end switch(key) - case 0x5: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x02\x1b\x20"; - case 6: // APOSTROPHE - return "\x02\x1b\x22"; - case 10: // COMMA - return "\x02\x1b\x3c"; - case 11: // MINUS - return "\x02\x1b\x5f"; - case 12: // PERIOD - return "\x02\x1b\x3e"; - case 13: // SLASH - return "\x02\x1b\x3f"; - case 14: // 0 - return "\x02\x1b\x29"; - case 15: // 1 - return "\x02\x1b\x21"; - case 16: // 2 - return "\x02\x1b\x40"; - case 17: // 3 - return "\x02\x1b\x23"; - case 18: // 4 - return "\x02\x1b\x24"; - case 19: // 5 - return "\x02\x1b\x25"; - case 20: // 6 - return "\x02\x1b\x5e"; - case 21: // 7 - return "\x02\x1b\x26"; - case 22: // 8 - return "\x02\x1b\x2a"; - case 23: // 9 - return "\x02\x1b\x28"; - case 25: // SEMICOLON - return "\x02\x1b\x3a"; - case 27: // EQUAL - return "\x02\x1b\x2b"; - case 30: // A - return "\x02\x1b\x41"; - case 31: // B - return "\x02\x1b\x42"; - case 32: // C - return "\x02\x1b\x43"; - case 33: // D - return "\x02\x1b\x44"; - case 34: // E - return "\x02\x1b\x45"; - case 35: // F - return "\x02\x1b\x46"; - case 36: // G - return "\x02\x1b\x47"; - case 37: // H - return "\x02\x1b\x48"; - case 38: // I - return "\x02\x1b\x49"; - case 39: // J - return "\x02\x1b\x4a"; - case 40: // K - return "\x02\x1b\x4b"; - case 41: // L - return "\x02\x1b\x4c"; - case 42: // M - return "\x02\x1b\x4d"; - case 43: // N - return "\x02\x1b\x4e"; - case 44: // O - return "\x02\x1b\x4f"; - case 45: // P - return "\x02\x1b\x50"; - case 46: // Q - return "\x02\x1b\x51"; - case 47: // R - return "\x02\x1b\x52"; - case 48: // S - return "\x02\x1b\x53"; - case 49: // T - return "\x02\x1b\x54"; - case 50: // U - return "\x02\x1b\x55"; - case 51: // V - return "\x02\x1b\x56"; - case 52: // W - return "\x02\x1b\x57"; - case 53: // X - return "\x02\x1b\x58"; - case 54: // Y - return "\x02\x1b\x59"; - case 55: // Z - return "\x02\x1b\x5a"; - case 56: // LEFT_BRACKET - return "\x02\x1b\x7b"; - case 57: // BACKSLASH - return "\x02\x1b\x7c"; - case 58: // RIGHT_BRACKET - return "\x02\x1b\x7d"; - case 60: // UNDERSCORE - return "\x02\x1b\x5f"; - case 61: // GRAVE_ACCENT - return "\x02\x1b\x7e"; - case 114: // ESCAPE - return "\x02\x1b\x1b"; - case 115: // ENTER - return "\x02\x1b\x0d"; - case 116: // TAB - return "\x03\x1b\x5b\x5a"; - case 117: // BACKSPACE - return "\x02\x1b\x7f"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x34\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x34\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x34\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x34\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x34\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x34\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x34\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x34\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x34\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x34\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x34\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x34\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x34\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x34\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x34\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x34\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x34\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x34\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x34\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x34\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x34\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x34\x7e"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x34\x7e"; - } // end switch(key) - case 0x6: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x02\x1b\x00"; - case 30: // A - return "\x02\x1b\x01"; - case 31: // B - return "\x02\x1b\x02"; - case 32: // C - return "\x02\x1b\x03"; - case 33: // D - return "\x02\x1b\x04"; - case 34: // E - return "\x02\x1b\x05"; - case 35: // F - return "\x02\x1b\x06"; - case 36: // G - return "\x02\x1b\x07"; - case 37: // H - return "\x02\x1b\x08"; - case 38: // I - return "\x02\x1b\x09"; - case 39: // J - return "\x02\x1b\x0a"; - case 40: // K - return "\x02\x1b\x0b"; - case 41: // L - return "\x02\x1b\x0c"; - case 42: // M - return "\x02\x1b\x0d"; - case 43: // N - return "\x02\x1b\x0e"; - case 44: // O - return "\x02\x1b\x0f"; - case 45: // P - return "\x02\x1b\x10"; - case 46: // Q - return "\x02\x1b\x11"; - case 47: // R - return "\x02\x1b\x12"; - case 48: // S - return "\x02\x1b\x13"; - case 49: // T - return "\x02\x1b\x14"; - case 50: // U - return "\x02\x1b\x15"; - case 51: // V - return "\x02\x1b\x16"; - case 52: // W - return "\x02\x1b\x17"; - case 53: // X - return "\x02\x1b\x18"; - case 54: // Y - return "\x02\x1b\x19"; - case 55: // Z - return "\x02\x1b\x1a"; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x37\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x37\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x37\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x37\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x37\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x37\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x37\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x37\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x37\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x37\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x37\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x37\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x37\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x37\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x37\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x37\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x37\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x37\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x37\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x37\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x37\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x37\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x37\x7e"; - } // end switch(key) - case 0x7: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x06\x1b\x5b\x32\x3b\x38\x7e"; - case 119: // DELETE - return "\x06\x1b\x5b\x33\x3b\x38\x7e"; - case 120: // RIGHT - return "\x06\x1b\x5b\x31\x3b\x38\x43"; - case 121: // LEFT - return "\x06\x1b\x5b\x31\x3b\x38\x44"; - case 122: // DOWN - return "\x06\x1b\x5b\x31\x3b\x38\x42"; - case 123: // UP - return "\x06\x1b\x5b\x31\x3b\x38\x41"; - case 124: // PAGE_UP - return "\x06\x1b\x5b\x35\x3b\x38\x7e"; - case 125: // PAGE_DOWN - return "\x06\x1b\x5b\x36\x3b\x38\x7e"; - case 126: // HOME - return "\x06\x1b\x5b\x31\x3b\x38\x48"; - case 127: // END - return "\x06\x1b\x5b\x31\x3b\x38\x46"; - case 133: // F1 - return "\x06\x1b\x5b\x31\x3b\x38\x50"; - case 134: // F2 - return "\x06\x1b\x5b\x31\x3b\x38\x51"; - case 135: // F3 - return "\x06\x1b\x5b\x31\x3b\x38\x52"; - case 136: // F4 - return "\x06\x1b\x5b\x31\x3b\x38\x53"; - case 137: // F5 - return "\x07\x1b\x5b\x31\x35\x3b\x38\x7e"; - case 138: // F6 - return "\x07\x1b\x5b\x31\x37\x3b\x38\x7e"; - case 139: // F7 - return "\x07\x1b\x5b\x31\x38\x3b\x38\x7e"; - case 140: // F8 - return "\x07\x1b\x5b\x31\x39\x3b\x38\x7e"; - case 141: // F9 - return "\x07\x1b\x5b\x32\x30\x3b\x38\x7e"; - case 142: // F10 - return "\x07\x1b\x5b\x32\x31\x3b\x38\x7e"; - case 143: // F11 - return "\x07\x1b\x5b\x32\x33\x3b\x38\x7e"; - case 144: // F12 - return "\x07\x1b\x5b\x32\x34\x3b\x38\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x07\x1b\x5b\x32\x39\x3b\x38\x7e"; - } // end switch(key) - case 0x8: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x4f\x43"; - case 121: // LEFT - return "\x03\x1b\x4f\x44"; - case 122: // DOWN - return "\x03\x1b\x4f\x42"; - case 123: // UP - return "\x03\x1b\x4f\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x4f\x48"; - case 127: // END - return "\x03\x1b\x4f\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0x9: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x4f\x43"; - case 121: // LEFT - return "\x03\x1b\x4f\x44"; - case 122: // DOWN - return "\x03\x1b\x4f\x42"; - case 123: // UP - return "\x03\x1b\x4f\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x4f\x48"; - case 127: // END - return "\x03\x1b\x4f\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xa: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x4f\x43"; - case 121: // LEFT - return "\x03\x1b\x4f\x44"; - case 122: // DOWN - return "\x03\x1b\x4f\x42"; - case 123: // UP - return "\x03\x1b\x4f\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x4f\x48"; - case 127: // END - return "\x03\x1b\x4f\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xb: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x4f\x43"; - case 121: // LEFT - return "\x03\x1b\x4f\x44"; - case 122: // DOWN - return "\x03\x1b\x4f\x42"; - case 123: // UP - return "\x03\x1b\x4f\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x4f\x48"; - case 127: // END - return "\x03\x1b\x4f\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xc: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x4f\x43"; - case 121: // LEFT - return "\x03\x1b\x4f\x44"; - case 122: // DOWN - return "\x03\x1b\x4f\x42"; - case 123: // UP - return "\x03\x1b\x4f\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x4f\x48"; - case 127: // END - return "\x03\x1b\x4f\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xd: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x4f\x43"; - case 121: // LEFT - return "\x03\x1b\x4f\x44"; - case 122: // DOWN - return "\x03\x1b\x4f\x42"; - case 123: // UP - return "\x03\x1b\x4f\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x4f\x48"; - case 127: // END - return "\x03\x1b\x4f\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xe: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x4f\x43"; - case 121: // LEFT - return "\x03\x1b\x4f\x44"; - case 122: // DOWN - return "\x03\x1b\x4f\x42"; - case 123: // UP - return "\x03\x1b\x4f\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x4f\x48"; - case 127: // END - return "\x03\x1b\x4f\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - case 0xf: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x01\x1b"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x01\x09"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x1b\x5b\x32\x7e"; - case 119: // DELETE - return "\x04\x1b\x5b\x33\x7e"; - case 120: // RIGHT - return "\x03\x1b\x4f\x43"; - case 121: // LEFT - return "\x03\x1b\x4f\x44"; - case 122: // DOWN - return "\x03\x1b\x4f\x42"; - case 123: // UP - return "\x03\x1b\x4f\x41"; - case 124: // PAGE_UP - return "\x04\x1b\x5b\x35\x7e"; - case 125: // PAGE_DOWN - return "\x04\x1b\x5b\x36\x7e"; - case 126: // HOME - return "\x03\x1b\x4f\x48"; - case 127: // END - return "\x03\x1b\x4f\x46"; - case 133: // F1 - return "\x03\x1b\x4f\x50"; - case 134: // F2 - return "\x03\x1b\x4f\x51"; - case 135: // F3 - return "\x03\x1b\x4f\x52"; - case 136: // F4 - return "\x03\x1b\x4f\x53"; - case 137: // F5 - return "\x05\x1b\x5b\x31\x35\x7e"; - case 138: // F6 - return "\x05\x1b\x5b\x31\x37\x7e"; - case 139: // F7 - return "\x05\x1b\x5b\x31\x38\x7e"; - case 140: // F8 - return "\x05\x1b\x5b\x31\x39\x7e"; - case 141: // F9 - return "\x05\x1b\x5b\x32\x30\x7e"; - case 142: // F10 - return "\x05\x1b\x5b\x32\x31\x7e"; - case 143: // F11 - return "\x05\x1b\x5b\x32\x33\x7e"; - case 144: // F12 - return "\x05\x1b\x5b\x32\x34\x7e"; - case 145: // F13 - return "\x06\x1b\x5b\x31\x3b\x32\x50"; - case 146: // F14 - return "\x06\x1b\x5b\x31\x3b\x32\x51"; - case 147: // F15 - return "\x06\x1b\x5b\x31\x3b\x32\x52"; - case 148: // F16 - return "\x06\x1b\x5b\x31\x3b\x32\x53"; - case 149: // F17 - return "\x07\x1b\x5b\x31\x35\x3b\x32\x7e"; - case 150: // F18 - return "\x07\x1b\x5b\x31\x37\x3b\x32\x7e"; - case 151: // F19 - return "\x07\x1b\x5b\x31\x38\x3b\x32\x7e"; - case 152: // F20 - return "\x07\x1b\x5b\x31\x39\x3b\x32\x7e"; - case 153: // F21 - return "\x07\x1b\x5b\x32\x30\x3b\x32\x7e"; - case 154: // F22 - return "\x07\x1b\x5b\x32\x31\x3b\x32\x7e"; - case 155: // F23 - return "\x07\x1b\x5b\x32\x33\x3b\x32\x7e"; - case 156: // F24 - return "\x07\x1b\x5b\x32\x34\x3b\x32\x7e"; - case 157: // F25 - return "\x06\x1b\x5b\x31\x3b\x35\x50"; - case 173: // KP_ENTER - return "\x01\x0d"; - case 183: // MENU - return "\x05\x1b\x5b\x32\x39\x7e"; - } // end switch(key) - } // end switch(mods) - break; - - } // end switch(action) in mode APPLICATION - break; - - - case EXTENDED: - switch(action & 3) { case 3: return NULL; - case 0: // RELEASE - switch (mods & 0xf) { - case 0x0: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x04\x4b\x72\x41\x79"; - case 116: // TAB - return "\x04\x4b\x72\x41\x30"; - case 118: // INSERT - return "\x04\x4b\x72\x41\x32"; - case 119: // DELETE - return "\x04\x4b\x72\x41\x33"; - case 120: // RIGHT - return "\x04\x4b\x72\x41\x34"; - case 121: // LEFT - return "\x04\x4b\x72\x41\x35"; - case 122: // DOWN - return "\x04\x4b\x72\x41\x36"; - case 123: // UP - return "\x04\x4b\x72\x41\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x72\x41\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x72\x41\x39"; - case 126: // HOME - return "\x04\x4b\x72\x41\x2e"; - case 127: // END - return "\x04\x4b\x72\x41\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x72\x41\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x72\x41\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x72\x41\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x72\x41\x5e"; - case 132: // PAUSE - return "\x04\x4b\x72\x41\x21"; - case 133: // F1 - return "\x04\x4b\x72\x41\x2f"; - case 134: // F2 - return "\x04\x4b\x72\x41\x2a"; - case 135: // F3 - return "\x04\x4b\x72\x41\x3f"; - case 136: // F4 - return "\x04\x4b\x72\x41\x26"; - case 137: // F5 - return "\x04\x4b\x72\x41\x3c"; - case 138: // F6 - return "\x04\x4b\x72\x41\x3e"; - case 139: // F7 - return "\x04\x4b\x72\x41\x28"; - case 140: // F8 - return "\x04\x4b\x72\x41\x29"; - case 141: // F9 - return "\x04\x4b\x72\x41\x5b"; - case 142: // F10 - return "\x04\x4b\x72\x41\x5d"; - case 143: // F11 - return "\x04\x4b\x72\x41\x7b"; - case 144: // F12 - return "\x04\x4b\x72\x41\x7d"; - case 145: // F13 - return "\x04\x4b\x72\x41\x40"; - case 146: // F14 - return "\x04\x4b\x72\x41\x25"; - case 147: // F15 - return "\x04\x4b\x72\x41\x24"; - case 148: // F16 - return "\x04\x4b\x72\x41\x23"; - case 149: // F17 - return "\x05\x4b\x72\x41\x42\x41"; - case 150: // F18 - return "\x05\x4b\x72\x41\x42\x42"; - case 151: // F19 - return "\x05\x4b\x72\x41\x42\x43"; - case 152: // F20 - return "\x05\x4b\x72\x41\x42\x44"; - case 153: // F21 - return "\x05\x4b\x72\x41\x42\x45"; - case 154: // F22 - return "\x05\x4b\x72\x41\x42\x46"; - case 155: // F23 - return "\x05\x4b\x72\x41\x42\x47"; - case 156: // F24 - return "\x05\x4b\x72\x41\x42\x48"; - case 157: // F25 - return "\x05\x4b\x72\x41\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x72\x41\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x72\x41\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x72\x41\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x72\x41\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x72\x41\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x72\x41\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x72\x41\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x72\x41\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x72\x41\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x72\x41\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x72\x41\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x72\x41\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x72\x41\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x72\x41\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x72\x41\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x72\x41\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x72\x41\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x72\x41\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x72\x41\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x72\x41\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x72\x41\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x72\x41\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x72\x41\x42\x68"; - } // end switch(key) - case 0x1: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x04\x4b\x72\x42\x79"; - case 115: // ENTER - return "\x04\x4b\x72\x42\x7a"; - case 116: // TAB - return "\x04\x4b\x72\x42\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x72\x42\x31"; - case 118: // INSERT - return "\x04\x4b\x72\x42\x32"; - case 119: // DELETE - return "\x04\x4b\x72\x42\x33"; - case 120: // RIGHT - return "\x04\x4b\x72\x42\x34"; - case 121: // LEFT - return "\x04\x4b\x72\x42\x35"; - case 122: // DOWN - return "\x04\x4b\x72\x42\x36"; - case 123: // UP - return "\x04\x4b\x72\x42\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x72\x42\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x72\x42\x39"; - case 126: // HOME - return "\x04\x4b\x72\x42\x2e"; - case 127: // END - return "\x04\x4b\x72\x42\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x72\x42\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x72\x42\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x72\x42\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x72\x42\x5e"; - case 132: // PAUSE - return "\x04\x4b\x72\x42\x21"; - case 133: // F1 - return "\x04\x4b\x72\x42\x2f"; - case 134: // F2 - return "\x04\x4b\x72\x42\x2a"; - case 135: // F3 - return "\x04\x4b\x72\x42\x3f"; - case 136: // F4 - return "\x04\x4b\x72\x42\x26"; - case 137: // F5 - return "\x04\x4b\x72\x42\x3c"; - case 138: // F6 - return "\x04\x4b\x72\x42\x3e"; - case 139: // F7 - return "\x04\x4b\x72\x42\x28"; - case 140: // F8 - return "\x04\x4b\x72\x42\x29"; - case 141: // F9 - return "\x04\x4b\x72\x42\x5b"; - case 142: // F10 - return "\x04\x4b\x72\x42\x5d"; - case 143: // F11 - return "\x04\x4b\x72\x42\x7b"; - case 144: // F12 - return "\x04\x4b\x72\x42\x7d"; - case 145: // F13 - return "\x04\x4b\x72\x42\x40"; - case 146: // F14 - return "\x04\x4b\x72\x42\x25"; - case 147: // F15 - return "\x04\x4b\x72\x42\x24"; - case 148: // F16 - return "\x04\x4b\x72\x42\x23"; - case 149: // F17 - return "\x05\x4b\x72\x42\x42\x41"; - case 150: // F18 - return "\x05\x4b\x72\x42\x42\x42"; - case 151: // F19 - return "\x05\x4b\x72\x42\x42\x43"; - case 152: // F20 - return "\x05\x4b\x72\x42\x42\x44"; - case 153: // F21 - return "\x05\x4b\x72\x42\x42\x45"; - case 154: // F22 - return "\x05\x4b\x72\x42\x42\x46"; - case 155: // F23 - return "\x05\x4b\x72\x42\x42\x47"; - case 156: // F24 - return "\x05\x4b\x72\x42\x42\x48"; - case 157: // F25 - return "\x05\x4b\x72\x42\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x72\x42\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x72\x42\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x72\x42\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x72\x42\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x72\x42\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x72\x42\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x72\x42\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x72\x42\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x72\x42\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x72\x42\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x72\x42\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x72\x42\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x72\x42\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x72\x42\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x72\x42\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x72\x42\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x72\x42\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x72\x42\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x72\x42\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x72\x42\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x72\x42\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x72\x42\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x72\x42\x42\x68"; - } // end switch(key) - case 0x2: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x72\x45\x41"; - case 1: // EXCLAM - return "\x05\x4b\x72\x45\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x72\x45\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x72\x45\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x72\x45\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x72\x45\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x72\x45\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x72\x45\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x72\x45\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x72\x45\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x72\x45\x43"; - case 11: // MINUS - return "\x04\x4b\x72\x45\x44"; - case 12: // PERIOD - return "\x04\x4b\x72\x45\x45"; - case 13: // SLASH - return "\x04\x4b\x72\x45\x46"; - case 14: // 0 - return "\x04\x4b\x72\x45\x47"; - case 15: // 1 - return "\x04\x4b\x72\x45\x48"; - case 16: // 2 - return "\x04\x4b\x72\x45\x49"; - case 17: // 3 - return "\x04\x4b\x72\x45\x4a"; - case 18: // 4 - return "\x04\x4b\x72\x45\x4b"; - case 19: // 5 - return "\x04\x4b\x72\x45\x4c"; - case 20: // 6 - return "\x04\x4b\x72\x45\x4d"; - case 21: // 7 - return "\x04\x4b\x72\x45\x4e"; - case 22: // 8 - return "\x04\x4b\x72\x45\x4f"; - case 23: // 9 - return "\x04\x4b\x72\x45\x50"; - case 24: // COLON - return "\x05\x4b\x72\x45\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x72\x45\x51"; - case 26: // LESS - return "\x05\x4b\x72\x45\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x72\x45\x52"; - case 28: // GREATER - return "\x05\x4b\x72\x45\x42\x75"; - case 29: // AT - return "\x05\x4b\x72\x45\x42\x76"; - case 30: // A - return "\x04\x4b\x72\x45\x53"; - case 31: // B - return "\x04\x4b\x72\x45\x54"; - case 32: // C - return "\x04\x4b\x72\x45\x55"; - case 33: // D - return "\x04\x4b\x72\x45\x56"; - case 34: // E - return "\x04\x4b\x72\x45\x57"; - case 35: // F - return "\x04\x4b\x72\x45\x58"; - case 36: // G - return "\x04\x4b\x72\x45\x59"; - case 37: // H - return "\x04\x4b\x72\x45\x5a"; - case 38: // I - return "\x04\x4b\x72\x45\x61"; - case 39: // J - return "\x04\x4b\x72\x45\x62"; - case 40: // K - return "\x04\x4b\x72\x45\x63"; - case 41: // L - return "\x04\x4b\x72\x45\x64"; - case 42: // M - return "\x04\x4b\x72\x45\x65"; - case 43: // N - return "\x04\x4b\x72\x45\x66"; - case 44: // O - return "\x04\x4b\x72\x45\x67"; - case 45: // P - return "\x04\x4b\x72\x45\x68"; - case 46: // Q - return "\x04\x4b\x72\x45\x69"; - case 47: // R - return "\x04\x4b\x72\x45\x6a"; - case 48: // S - return "\x04\x4b\x72\x45\x6b"; - case 49: // T - return "\x04\x4b\x72\x45\x6c"; - case 50: // U - return "\x04\x4b\x72\x45\x6d"; - case 51: // V - return "\x04\x4b\x72\x45\x6e"; - case 52: // W - return "\x04\x4b\x72\x45\x6f"; - case 53: // X - return "\x04\x4b\x72\x45\x70"; - case 54: // Y - return "\x04\x4b\x72\x45\x71"; - case 55: // Z - return "\x04\x4b\x72\x45\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x72\x45\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x72\x45\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x72\x45\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x72\x45\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x72\x45\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x72\x45\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x72\x45\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x72\x45\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x72\x45\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x72\x45\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x72\x45\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x72\x45\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x72\x45\x42\x30"; - case 69: // AE - return "\x05\x4b\x72\x45\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x72\x45\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x72\x45\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x72\x45\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x72\x45\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x72\x45\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x72\x45\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x72\x45\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x72\x45\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x72\x45\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x72\x45\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x72\x45\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x72\x45\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x72\x45\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x72\x45\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x72\x45\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x72\x45\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x72\x45\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x72\x45\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x72\x45\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x72\x45\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x72\x45\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x72\x45\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x72\x45\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x72\x45\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x72\x45\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x72\x45\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x72\x45\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x72\x45\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x72\x45\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x72\x45\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x72\x45\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x72\x45\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x72\x45\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x72\x45\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x72\x45\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x72\x45\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x72\x45\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x72\x45\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x72\x45\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x72\x45\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x72\x45\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x72\x45\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x72\x45\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x72\x45\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x72\x45\x79"; - case 115: // ENTER - return "\x04\x4b\x72\x45\x7a"; - case 116: // TAB - return "\x04\x4b\x72\x45\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x72\x45\x31"; - case 118: // INSERT - return "\x04\x4b\x72\x45\x32"; - case 119: // DELETE - return "\x04\x4b\x72\x45\x33"; - case 120: // RIGHT - return "\x04\x4b\x72\x45\x34"; - case 121: // LEFT - return "\x04\x4b\x72\x45\x35"; - case 122: // DOWN - return "\x04\x4b\x72\x45\x36"; - case 123: // UP - return "\x04\x4b\x72\x45\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x72\x45\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x72\x45\x39"; - case 126: // HOME - return "\x04\x4b\x72\x45\x2e"; - case 127: // END - return "\x04\x4b\x72\x45\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x72\x45\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x72\x45\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x72\x45\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x72\x45\x5e"; - case 132: // PAUSE - return "\x04\x4b\x72\x45\x21"; - case 133: // F1 - return "\x04\x4b\x72\x45\x2f"; - case 134: // F2 - return "\x04\x4b\x72\x45\x2a"; - case 135: // F3 - return "\x04\x4b\x72\x45\x3f"; - case 136: // F4 - return "\x04\x4b\x72\x45\x26"; - case 137: // F5 - return "\x04\x4b\x72\x45\x3c"; - case 138: // F6 - return "\x04\x4b\x72\x45\x3e"; - case 139: // F7 - return "\x04\x4b\x72\x45\x28"; - case 140: // F8 - return "\x04\x4b\x72\x45\x29"; - case 141: // F9 - return "\x04\x4b\x72\x45\x5b"; - case 142: // F10 - return "\x04\x4b\x72\x45\x5d"; - case 143: // F11 - return "\x04\x4b\x72\x45\x7b"; - case 144: // F12 - return "\x04\x4b\x72\x45\x7d"; - case 145: // F13 - return "\x04\x4b\x72\x45\x40"; - case 146: // F14 - return "\x04\x4b\x72\x45\x25"; - case 147: // F15 - return "\x04\x4b\x72\x45\x24"; - case 148: // F16 - return "\x04\x4b\x72\x45\x23"; - case 149: // F17 - return "\x05\x4b\x72\x45\x42\x41"; - case 150: // F18 - return "\x05\x4b\x72\x45\x42\x42"; - case 151: // F19 - return "\x05\x4b\x72\x45\x42\x43"; - case 152: // F20 - return "\x05\x4b\x72\x45\x42\x44"; - case 153: // F21 - return "\x05\x4b\x72\x45\x42\x45"; - case 154: // F22 - return "\x05\x4b\x72\x45\x42\x46"; - case 155: // F23 - return "\x05\x4b\x72\x45\x42\x47"; - case 156: // F24 - return "\x05\x4b\x72\x45\x42\x48"; - case 157: // F25 - return "\x05\x4b\x72\x45\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x72\x45\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x72\x45\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x72\x45\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x72\x45\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x72\x45\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x72\x45\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x72\x45\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x72\x45\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x72\x45\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x72\x45\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x72\x45\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x72\x45\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x72\x45\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x72\x45\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x72\x45\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x72\x45\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x72\x45\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x72\x45\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x72\x45\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x72\x45\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x72\x45\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x72\x45\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x72\x45\x42\x68"; - } // end switch(key) - case 0x3: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x72\x46\x41"; - case 1: // EXCLAM - return "\x05\x4b\x72\x46\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x72\x46\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x72\x46\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x72\x46\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x72\x46\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x72\x46\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x72\x46\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x72\x46\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x72\x46\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x72\x46\x43"; - case 11: // MINUS - return "\x04\x4b\x72\x46\x44"; - case 12: // PERIOD - return "\x04\x4b\x72\x46\x45"; - case 13: // SLASH - return "\x04\x4b\x72\x46\x46"; - case 14: // 0 - return "\x04\x4b\x72\x46\x47"; - case 15: // 1 - return "\x04\x4b\x72\x46\x48"; - case 16: // 2 - return "\x04\x4b\x72\x46\x49"; - case 17: // 3 - return "\x04\x4b\x72\x46\x4a"; - case 18: // 4 - return "\x04\x4b\x72\x46\x4b"; - case 19: // 5 - return "\x04\x4b\x72\x46\x4c"; - case 20: // 6 - return "\x04\x4b\x72\x46\x4d"; - case 21: // 7 - return "\x04\x4b\x72\x46\x4e"; - case 22: // 8 - return "\x04\x4b\x72\x46\x4f"; - case 23: // 9 - return "\x04\x4b\x72\x46\x50"; - case 24: // COLON - return "\x05\x4b\x72\x46\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x72\x46\x51"; - case 26: // LESS - return "\x05\x4b\x72\x46\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x72\x46\x52"; - case 28: // GREATER - return "\x05\x4b\x72\x46\x42\x75"; - case 29: // AT - return "\x05\x4b\x72\x46\x42\x76"; - case 30: // A - return "\x04\x4b\x72\x46\x53"; - case 31: // B - return "\x04\x4b\x72\x46\x54"; - case 32: // C - return "\x04\x4b\x72\x46\x55"; - case 33: // D - return "\x04\x4b\x72\x46\x56"; - case 34: // E - return "\x04\x4b\x72\x46\x57"; - case 35: // F - return "\x04\x4b\x72\x46\x58"; - case 36: // G - return "\x04\x4b\x72\x46\x59"; - case 37: // H - return "\x04\x4b\x72\x46\x5a"; - case 38: // I - return "\x04\x4b\x72\x46\x61"; - case 39: // J - return "\x04\x4b\x72\x46\x62"; - case 40: // K - return "\x04\x4b\x72\x46\x63"; - case 41: // L - return "\x04\x4b\x72\x46\x64"; - case 42: // M - return "\x04\x4b\x72\x46\x65"; - case 43: // N - return "\x04\x4b\x72\x46\x66"; - case 44: // O - return "\x04\x4b\x72\x46\x67"; - case 45: // P - return "\x04\x4b\x72\x46\x68"; - case 46: // Q - return "\x04\x4b\x72\x46\x69"; - case 47: // R - return "\x04\x4b\x72\x46\x6a"; - case 48: // S - return "\x04\x4b\x72\x46\x6b"; - case 49: // T - return "\x04\x4b\x72\x46\x6c"; - case 50: // U - return "\x04\x4b\x72\x46\x6d"; - case 51: // V - return "\x04\x4b\x72\x46\x6e"; - case 52: // W - return "\x04\x4b\x72\x46\x6f"; - case 53: // X - return "\x04\x4b\x72\x46\x70"; - case 54: // Y - return "\x04\x4b\x72\x46\x71"; - case 55: // Z - return "\x04\x4b\x72\x46\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x72\x46\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x72\x46\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x72\x46\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x72\x46\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x72\x46\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x72\x46\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x72\x46\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x72\x46\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x72\x46\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x72\x46\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x72\x46\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x72\x46\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x72\x46\x42\x30"; - case 69: // AE - return "\x05\x4b\x72\x46\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x72\x46\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x72\x46\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x72\x46\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x72\x46\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x72\x46\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x72\x46\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x72\x46\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x72\x46\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x72\x46\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x72\x46\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x72\x46\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x72\x46\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x72\x46\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x72\x46\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x72\x46\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x72\x46\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x72\x46\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x72\x46\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x72\x46\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x72\x46\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x72\x46\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x72\x46\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x72\x46\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x72\x46\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x72\x46\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x72\x46\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x72\x46\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x72\x46\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x72\x46\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x72\x46\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x72\x46\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x72\x46\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x72\x46\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x72\x46\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x72\x46\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x72\x46\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x72\x46\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x72\x46\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x72\x46\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x72\x46\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x72\x46\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x72\x46\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x72\x46\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x72\x46\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x72\x46\x79"; - case 115: // ENTER - return "\x04\x4b\x72\x46\x7a"; - case 116: // TAB - return "\x04\x4b\x72\x46\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x72\x46\x31"; - case 118: // INSERT - return "\x04\x4b\x72\x46\x32"; - case 119: // DELETE - return "\x04\x4b\x72\x46\x33"; - case 120: // RIGHT - return "\x04\x4b\x72\x46\x34"; - case 121: // LEFT - return "\x04\x4b\x72\x46\x35"; - case 122: // DOWN - return "\x04\x4b\x72\x46\x36"; - case 123: // UP - return "\x04\x4b\x72\x46\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x72\x46\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x72\x46\x39"; - case 126: // HOME - return "\x04\x4b\x72\x46\x2e"; - case 127: // END - return "\x04\x4b\x72\x46\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x72\x46\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x72\x46\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x72\x46\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x72\x46\x5e"; - case 132: // PAUSE - return "\x04\x4b\x72\x46\x21"; - case 133: // F1 - return "\x04\x4b\x72\x46\x2f"; - case 134: // F2 - return "\x04\x4b\x72\x46\x2a"; - case 135: // F3 - return "\x04\x4b\x72\x46\x3f"; - case 136: // F4 - return "\x04\x4b\x72\x46\x26"; - case 137: // F5 - return "\x04\x4b\x72\x46\x3c"; - case 138: // F6 - return "\x04\x4b\x72\x46\x3e"; - case 139: // F7 - return "\x04\x4b\x72\x46\x28"; - case 140: // F8 - return "\x04\x4b\x72\x46\x29"; - case 141: // F9 - return "\x04\x4b\x72\x46\x5b"; - case 142: // F10 - return "\x04\x4b\x72\x46\x5d"; - case 143: // F11 - return "\x04\x4b\x72\x46\x7b"; - case 144: // F12 - return "\x04\x4b\x72\x46\x7d"; - case 145: // F13 - return "\x04\x4b\x72\x46\x40"; - case 146: // F14 - return "\x04\x4b\x72\x46\x25"; - case 147: // F15 - return "\x04\x4b\x72\x46\x24"; - case 148: // F16 - return "\x04\x4b\x72\x46\x23"; - case 149: // F17 - return "\x05\x4b\x72\x46\x42\x41"; - case 150: // F18 - return "\x05\x4b\x72\x46\x42\x42"; - case 151: // F19 - return "\x05\x4b\x72\x46\x42\x43"; - case 152: // F20 - return "\x05\x4b\x72\x46\x42\x44"; - case 153: // F21 - return "\x05\x4b\x72\x46\x42\x45"; - case 154: // F22 - return "\x05\x4b\x72\x46\x42\x46"; - case 155: // F23 - return "\x05\x4b\x72\x46\x42\x47"; - case 156: // F24 - return "\x05\x4b\x72\x46\x42\x48"; - case 157: // F25 - return "\x05\x4b\x72\x46\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x72\x46\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x72\x46\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x72\x46\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x72\x46\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x72\x46\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x72\x46\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x72\x46\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x72\x46\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x72\x46\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x72\x46\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x72\x46\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x72\x46\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x72\x46\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x72\x46\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x72\x46\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x72\x46\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x72\x46\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x72\x46\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x72\x46\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x72\x46\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x72\x46\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x72\x46\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x72\x46\x42\x68"; - } // end switch(key) - case 0x4: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x72\x43\x41"; - case 1: // EXCLAM - return "\x05\x4b\x72\x43\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x72\x43\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x72\x43\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x72\x43\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x72\x43\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x72\x43\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x72\x43\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x72\x43\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x72\x43\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x72\x43\x43"; - case 11: // MINUS - return "\x04\x4b\x72\x43\x44"; - case 12: // PERIOD - return "\x04\x4b\x72\x43\x45"; - case 13: // SLASH - return "\x04\x4b\x72\x43\x46"; - case 14: // 0 - return "\x04\x4b\x72\x43\x47"; - case 15: // 1 - return "\x04\x4b\x72\x43\x48"; - case 16: // 2 - return "\x04\x4b\x72\x43\x49"; - case 17: // 3 - return "\x04\x4b\x72\x43\x4a"; - case 18: // 4 - return "\x04\x4b\x72\x43\x4b"; - case 19: // 5 - return "\x04\x4b\x72\x43\x4c"; - case 20: // 6 - return "\x04\x4b\x72\x43\x4d"; - case 21: // 7 - return "\x04\x4b\x72\x43\x4e"; - case 22: // 8 - return "\x04\x4b\x72\x43\x4f"; - case 23: // 9 - return "\x04\x4b\x72\x43\x50"; - case 24: // COLON - return "\x05\x4b\x72\x43\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x72\x43\x51"; - case 26: // LESS - return "\x05\x4b\x72\x43\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x72\x43\x52"; - case 28: // GREATER - return "\x05\x4b\x72\x43\x42\x75"; - case 29: // AT - return "\x05\x4b\x72\x43\x42\x76"; - case 30: // A - return "\x04\x4b\x72\x43\x53"; - case 31: // B - return "\x04\x4b\x72\x43\x54"; - case 32: // C - return "\x04\x4b\x72\x43\x55"; - case 33: // D - return "\x04\x4b\x72\x43\x56"; - case 34: // E - return "\x04\x4b\x72\x43\x57"; - case 35: // F - return "\x04\x4b\x72\x43\x58"; - case 36: // G - return "\x04\x4b\x72\x43\x59"; - case 37: // H - return "\x04\x4b\x72\x43\x5a"; - case 38: // I - return "\x04\x4b\x72\x43\x61"; - case 39: // J - return "\x04\x4b\x72\x43\x62"; - case 40: // K - return "\x04\x4b\x72\x43\x63"; - case 41: // L - return "\x04\x4b\x72\x43\x64"; - case 42: // M - return "\x04\x4b\x72\x43\x65"; - case 43: // N - return "\x04\x4b\x72\x43\x66"; - case 44: // O - return "\x04\x4b\x72\x43\x67"; - case 45: // P - return "\x04\x4b\x72\x43\x68"; - case 46: // Q - return "\x04\x4b\x72\x43\x69"; - case 47: // R - return "\x04\x4b\x72\x43\x6a"; - case 48: // S - return "\x04\x4b\x72\x43\x6b"; - case 49: // T - return "\x04\x4b\x72\x43\x6c"; - case 50: // U - return "\x04\x4b\x72\x43\x6d"; - case 51: // V - return "\x04\x4b\x72\x43\x6e"; - case 52: // W - return "\x04\x4b\x72\x43\x6f"; - case 53: // X - return "\x04\x4b\x72\x43\x70"; - case 54: // Y - return "\x04\x4b\x72\x43\x71"; - case 55: // Z - return "\x04\x4b\x72\x43\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x72\x43\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x72\x43\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x72\x43\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x72\x43\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x72\x43\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x72\x43\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x72\x43\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x72\x43\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x72\x43\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x72\x43\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x72\x43\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x72\x43\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x72\x43\x42\x30"; - case 69: // AE - return "\x05\x4b\x72\x43\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x72\x43\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x72\x43\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x72\x43\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x72\x43\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x72\x43\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x72\x43\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x72\x43\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x72\x43\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x72\x43\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x72\x43\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x72\x43\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x72\x43\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x72\x43\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x72\x43\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x72\x43\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x72\x43\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x72\x43\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x72\x43\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x72\x43\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x72\x43\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x72\x43\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x72\x43\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x72\x43\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x72\x43\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x72\x43\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x72\x43\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x72\x43\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x72\x43\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x72\x43\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x72\x43\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x72\x43\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x72\x43\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x72\x43\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x72\x43\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x72\x43\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x72\x43\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x72\x43\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x72\x43\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x72\x43\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x72\x43\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x72\x43\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x72\x43\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x72\x43\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x72\x43\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x72\x43\x79"; - case 115: // ENTER - return "\x04\x4b\x72\x43\x7a"; - case 116: // TAB - return "\x04\x4b\x72\x43\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x72\x43\x31"; - case 118: // INSERT - return "\x04\x4b\x72\x43\x32"; - case 119: // DELETE - return "\x04\x4b\x72\x43\x33"; - case 120: // RIGHT - return "\x04\x4b\x72\x43\x34"; - case 121: // LEFT - return "\x04\x4b\x72\x43\x35"; - case 122: // DOWN - return "\x04\x4b\x72\x43\x36"; - case 123: // UP - return "\x04\x4b\x72\x43\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x72\x43\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x72\x43\x39"; - case 126: // HOME - return "\x04\x4b\x72\x43\x2e"; - case 127: // END - return "\x04\x4b\x72\x43\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x72\x43\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x72\x43\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x72\x43\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x72\x43\x5e"; - case 132: // PAUSE - return "\x04\x4b\x72\x43\x21"; - case 133: // F1 - return "\x04\x4b\x72\x43\x2f"; - case 134: // F2 - return "\x04\x4b\x72\x43\x2a"; - case 135: // F3 - return "\x04\x4b\x72\x43\x3f"; - case 136: // F4 - return "\x04\x4b\x72\x43\x26"; - case 137: // F5 - return "\x04\x4b\x72\x43\x3c"; - case 138: // F6 - return "\x04\x4b\x72\x43\x3e"; - case 139: // F7 - return "\x04\x4b\x72\x43\x28"; - case 140: // F8 - return "\x04\x4b\x72\x43\x29"; - case 141: // F9 - return "\x04\x4b\x72\x43\x5b"; - case 142: // F10 - return "\x04\x4b\x72\x43\x5d"; - case 143: // F11 - return "\x04\x4b\x72\x43\x7b"; - case 144: // F12 - return "\x04\x4b\x72\x43\x7d"; - case 145: // F13 - return "\x04\x4b\x72\x43\x40"; - case 146: // F14 - return "\x04\x4b\x72\x43\x25"; - case 147: // F15 - return "\x04\x4b\x72\x43\x24"; - case 148: // F16 - return "\x04\x4b\x72\x43\x23"; - case 149: // F17 - return "\x05\x4b\x72\x43\x42\x41"; - case 150: // F18 - return "\x05\x4b\x72\x43\x42\x42"; - case 151: // F19 - return "\x05\x4b\x72\x43\x42\x43"; - case 152: // F20 - return "\x05\x4b\x72\x43\x42\x44"; - case 153: // F21 - return "\x05\x4b\x72\x43\x42\x45"; - case 154: // F22 - return "\x05\x4b\x72\x43\x42\x46"; - case 155: // F23 - return "\x05\x4b\x72\x43\x42\x47"; - case 156: // F24 - return "\x05\x4b\x72\x43\x42\x48"; - case 157: // F25 - return "\x05\x4b\x72\x43\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x72\x43\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x72\x43\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x72\x43\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x72\x43\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x72\x43\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x72\x43\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x72\x43\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x72\x43\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x72\x43\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x72\x43\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x72\x43\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x72\x43\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x72\x43\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x72\x43\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x72\x43\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x72\x43\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x72\x43\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x72\x43\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x72\x43\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x72\x43\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x72\x43\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x72\x43\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x72\x43\x42\x68"; - } // end switch(key) - case 0x5: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x72\x44\x41"; - case 1: // EXCLAM - return "\x05\x4b\x72\x44\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x72\x44\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x72\x44\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x72\x44\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x72\x44\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x72\x44\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x72\x44\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x72\x44\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x72\x44\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x72\x44\x43"; - case 11: // MINUS - return "\x04\x4b\x72\x44\x44"; - case 12: // PERIOD - return "\x04\x4b\x72\x44\x45"; - case 13: // SLASH - return "\x04\x4b\x72\x44\x46"; - case 14: // 0 - return "\x04\x4b\x72\x44\x47"; - case 15: // 1 - return "\x04\x4b\x72\x44\x48"; - case 16: // 2 - return "\x04\x4b\x72\x44\x49"; - case 17: // 3 - return "\x04\x4b\x72\x44\x4a"; - case 18: // 4 - return "\x04\x4b\x72\x44\x4b"; - case 19: // 5 - return "\x04\x4b\x72\x44\x4c"; - case 20: // 6 - return "\x04\x4b\x72\x44\x4d"; - case 21: // 7 - return "\x04\x4b\x72\x44\x4e"; - case 22: // 8 - return "\x04\x4b\x72\x44\x4f"; - case 23: // 9 - return "\x04\x4b\x72\x44\x50"; - case 24: // COLON - return "\x05\x4b\x72\x44\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x72\x44\x51"; - case 26: // LESS - return "\x05\x4b\x72\x44\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x72\x44\x52"; - case 28: // GREATER - return "\x05\x4b\x72\x44\x42\x75"; - case 29: // AT - return "\x05\x4b\x72\x44\x42\x76"; - case 30: // A - return "\x04\x4b\x72\x44\x53"; - case 31: // B - return "\x04\x4b\x72\x44\x54"; - case 32: // C - return "\x04\x4b\x72\x44\x55"; - case 33: // D - return "\x04\x4b\x72\x44\x56"; - case 34: // E - return "\x04\x4b\x72\x44\x57"; - case 35: // F - return "\x04\x4b\x72\x44\x58"; - case 36: // G - return "\x04\x4b\x72\x44\x59"; - case 37: // H - return "\x04\x4b\x72\x44\x5a"; - case 38: // I - return "\x04\x4b\x72\x44\x61"; - case 39: // J - return "\x04\x4b\x72\x44\x62"; - case 40: // K - return "\x04\x4b\x72\x44\x63"; - case 41: // L - return "\x04\x4b\x72\x44\x64"; - case 42: // M - return "\x04\x4b\x72\x44\x65"; - case 43: // N - return "\x04\x4b\x72\x44\x66"; - case 44: // O - return "\x04\x4b\x72\x44\x67"; - case 45: // P - return "\x04\x4b\x72\x44\x68"; - case 46: // Q - return "\x04\x4b\x72\x44\x69"; - case 47: // R - return "\x04\x4b\x72\x44\x6a"; - case 48: // S - return "\x04\x4b\x72\x44\x6b"; - case 49: // T - return "\x04\x4b\x72\x44\x6c"; - case 50: // U - return "\x04\x4b\x72\x44\x6d"; - case 51: // V - return "\x04\x4b\x72\x44\x6e"; - case 52: // W - return "\x04\x4b\x72\x44\x6f"; - case 53: // X - return "\x04\x4b\x72\x44\x70"; - case 54: // Y - return "\x04\x4b\x72\x44\x71"; - case 55: // Z - return "\x04\x4b\x72\x44\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x72\x44\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x72\x44\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x72\x44\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x72\x44\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x72\x44\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x72\x44\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x72\x44\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x72\x44\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x72\x44\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x72\x44\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x72\x44\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x72\x44\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x72\x44\x42\x30"; - case 69: // AE - return "\x05\x4b\x72\x44\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x72\x44\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x72\x44\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x72\x44\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x72\x44\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x72\x44\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x72\x44\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x72\x44\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x72\x44\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x72\x44\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x72\x44\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x72\x44\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x72\x44\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x72\x44\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x72\x44\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x72\x44\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x72\x44\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x72\x44\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x72\x44\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x72\x44\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x72\x44\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x72\x44\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x72\x44\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x72\x44\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x72\x44\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x72\x44\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x72\x44\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x72\x44\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x72\x44\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x72\x44\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x72\x44\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x72\x44\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x72\x44\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x72\x44\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x72\x44\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x72\x44\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x72\x44\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x72\x44\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x72\x44\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x72\x44\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x72\x44\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x72\x44\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x72\x44\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x72\x44\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x72\x44\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x72\x44\x79"; - case 115: // ENTER - return "\x04\x4b\x72\x44\x7a"; - case 116: // TAB - return "\x04\x4b\x72\x44\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x72\x44\x31"; - case 118: // INSERT - return "\x04\x4b\x72\x44\x32"; - case 119: // DELETE - return "\x04\x4b\x72\x44\x33"; - case 120: // RIGHT - return "\x04\x4b\x72\x44\x34"; - case 121: // LEFT - return "\x04\x4b\x72\x44\x35"; - case 122: // DOWN - return "\x04\x4b\x72\x44\x36"; - case 123: // UP - return "\x04\x4b\x72\x44\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x72\x44\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x72\x44\x39"; - case 126: // HOME - return "\x04\x4b\x72\x44\x2e"; - case 127: // END - return "\x04\x4b\x72\x44\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x72\x44\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x72\x44\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x72\x44\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x72\x44\x5e"; - case 132: // PAUSE - return "\x04\x4b\x72\x44\x21"; - case 133: // F1 - return "\x04\x4b\x72\x44\x2f"; - case 134: // F2 - return "\x04\x4b\x72\x44\x2a"; - case 135: // F3 - return "\x04\x4b\x72\x44\x3f"; - case 136: // F4 - return "\x04\x4b\x72\x44\x26"; - case 137: // F5 - return "\x04\x4b\x72\x44\x3c"; - case 138: // F6 - return "\x04\x4b\x72\x44\x3e"; - case 139: // F7 - return "\x04\x4b\x72\x44\x28"; - case 140: // F8 - return "\x04\x4b\x72\x44\x29"; - case 141: // F9 - return "\x04\x4b\x72\x44\x5b"; - case 142: // F10 - return "\x04\x4b\x72\x44\x5d"; - case 143: // F11 - return "\x04\x4b\x72\x44\x7b"; - case 144: // F12 - return "\x04\x4b\x72\x44\x7d"; - case 145: // F13 - return "\x04\x4b\x72\x44\x40"; - case 146: // F14 - return "\x04\x4b\x72\x44\x25"; - case 147: // F15 - return "\x04\x4b\x72\x44\x24"; - case 148: // F16 - return "\x04\x4b\x72\x44\x23"; - case 149: // F17 - return "\x05\x4b\x72\x44\x42\x41"; - case 150: // F18 - return "\x05\x4b\x72\x44\x42\x42"; - case 151: // F19 - return "\x05\x4b\x72\x44\x42\x43"; - case 152: // F20 - return "\x05\x4b\x72\x44\x42\x44"; - case 153: // F21 - return "\x05\x4b\x72\x44\x42\x45"; - case 154: // F22 - return "\x05\x4b\x72\x44\x42\x46"; - case 155: // F23 - return "\x05\x4b\x72\x44\x42\x47"; - case 156: // F24 - return "\x05\x4b\x72\x44\x42\x48"; - case 157: // F25 - return "\x05\x4b\x72\x44\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x72\x44\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x72\x44\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x72\x44\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x72\x44\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x72\x44\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x72\x44\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x72\x44\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x72\x44\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x72\x44\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x72\x44\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x72\x44\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x72\x44\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x72\x44\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x72\x44\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x72\x44\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x72\x44\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x72\x44\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x72\x44\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x72\x44\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x72\x44\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x72\x44\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x72\x44\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x72\x44\x42\x68"; - } // end switch(key) - case 0x6: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x72\x47\x41"; - case 1: // EXCLAM - return "\x05\x4b\x72\x47\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x72\x47\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x72\x47\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x72\x47\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x72\x47\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x72\x47\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x72\x47\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x72\x47\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x72\x47\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x72\x47\x43"; - case 11: // MINUS - return "\x04\x4b\x72\x47\x44"; - case 12: // PERIOD - return "\x04\x4b\x72\x47\x45"; - case 13: // SLASH - return "\x04\x4b\x72\x47\x46"; - case 14: // 0 - return "\x04\x4b\x72\x47\x47"; - case 15: // 1 - return "\x04\x4b\x72\x47\x48"; - case 16: // 2 - return "\x04\x4b\x72\x47\x49"; - case 17: // 3 - return "\x04\x4b\x72\x47\x4a"; - case 18: // 4 - return "\x04\x4b\x72\x47\x4b"; - case 19: // 5 - return "\x04\x4b\x72\x47\x4c"; - case 20: // 6 - return "\x04\x4b\x72\x47\x4d"; - case 21: // 7 - return "\x04\x4b\x72\x47\x4e"; - case 22: // 8 - return "\x04\x4b\x72\x47\x4f"; - case 23: // 9 - return "\x04\x4b\x72\x47\x50"; - case 24: // COLON - return "\x05\x4b\x72\x47\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x72\x47\x51"; - case 26: // LESS - return "\x05\x4b\x72\x47\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x72\x47\x52"; - case 28: // GREATER - return "\x05\x4b\x72\x47\x42\x75"; - case 29: // AT - return "\x05\x4b\x72\x47\x42\x76"; - case 30: // A - return "\x04\x4b\x72\x47\x53"; - case 31: // B - return "\x04\x4b\x72\x47\x54"; - case 32: // C - return "\x04\x4b\x72\x47\x55"; - case 33: // D - return "\x04\x4b\x72\x47\x56"; - case 34: // E - return "\x04\x4b\x72\x47\x57"; - case 35: // F - return "\x04\x4b\x72\x47\x58"; - case 36: // G - return "\x04\x4b\x72\x47\x59"; - case 37: // H - return "\x04\x4b\x72\x47\x5a"; - case 38: // I - return "\x04\x4b\x72\x47\x61"; - case 39: // J - return "\x04\x4b\x72\x47\x62"; - case 40: // K - return "\x04\x4b\x72\x47\x63"; - case 41: // L - return "\x04\x4b\x72\x47\x64"; - case 42: // M - return "\x04\x4b\x72\x47\x65"; - case 43: // N - return "\x04\x4b\x72\x47\x66"; - case 44: // O - return "\x04\x4b\x72\x47\x67"; - case 45: // P - return "\x04\x4b\x72\x47\x68"; - case 46: // Q - return "\x04\x4b\x72\x47\x69"; - case 47: // R - return "\x04\x4b\x72\x47\x6a"; - case 48: // S - return "\x04\x4b\x72\x47\x6b"; - case 49: // T - return "\x04\x4b\x72\x47\x6c"; - case 50: // U - return "\x04\x4b\x72\x47\x6d"; - case 51: // V - return "\x04\x4b\x72\x47\x6e"; - case 52: // W - return "\x04\x4b\x72\x47\x6f"; - case 53: // X - return "\x04\x4b\x72\x47\x70"; - case 54: // Y - return "\x04\x4b\x72\x47\x71"; - case 55: // Z - return "\x04\x4b\x72\x47\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x72\x47\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x72\x47\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x72\x47\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x72\x47\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x72\x47\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x72\x47\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x72\x47\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x72\x47\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x72\x47\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x72\x47\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x72\x47\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x72\x47\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x72\x47\x42\x30"; - case 69: // AE - return "\x05\x4b\x72\x47\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x72\x47\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x72\x47\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x72\x47\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x72\x47\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x72\x47\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x72\x47\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x72\x47\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x72\x47\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x72\x47\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x72\x47\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x72\x47\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x72\x47\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x72\x47\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x72\x47\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x72\x47\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x72\x47\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x72\x47\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x72\x47\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x72\x47\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x72\x47\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x72\x47\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x72\x47\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x72\x47\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x72\x47\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x72\x47\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x72\x47\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x72\x47\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x72\x47\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x72\x47\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x72\x47\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x72\x47\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x72\x47\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x72\x47\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x72\x47\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x72\x47\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x72\x47\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x72\x47\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x72\x47\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x72\x47\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x72\x47\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x72\x47\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x72\x47\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x72\x47\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x72\x47\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x72\x47\x79"; - case 115: // ENTER - return "\x04\x4b\x72\x47\x7a"; - case 116: // TAB - return "\x04\x4b\x72\x47\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x72\x47\x31"; - case 118: // INSERT - return "\x04\x4b\x72\x47\x32"; - case 119: // DELETE - return "\x04\x4b\x72\x47\x33"; - case 120: // RIGHT - return "\x04\x4b\x72\x47\x34"; - case 121: // LEFT - return "\x04\x4b\x72\x47\x35"; - case 122: // DOWN - return "\x04\x4b\x72\x47\x36"; - case 123: // UP - return "\x04\x4b\x72\x47\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x72\x47\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x72\x47\x39"; - case 126: // HOME - return "\x04\x4b\x72\x47\x2e"; - case 127: // END - return "\x04\x4b\x72\x47\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x72\x47\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x72\x47\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x72\x47\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x72\x47\x5e"; - case 132: // PAUSE - return "\x04\x4b\x72\x47\x21"; - case 133: // F1 - return "\x04\x4b\x72\x47\x2f"; - case 134: // F2 - return "\x04\x4b\x72\x47\x2a"; - case 135: // F3 - return "\x04\x4b\x72\x47\x3f"; - case 136: // F4 - return "\x04\x4b\x72\x47\x26"; - case 137: // F5 - return "\x04\x4b\x72\x47\x3c"; - case 138: // F6 - return "\x04\x4b\x72\x47\x3e"; - case 139: // F7 - return "\x04\x4b\x72\x47\x28"; - case 140: // F8 - return "\x04\x4b\x72\x47\x29"; - case 141: // F9 - return "\x04\x4b\x72\x47\x5b"; - case 142: // F10 - return "\x04\x4b\x72\x47\x5d"; - case 143: // F11 - return "\x04\x4b\x72\x47\x7b"; - case 144: // F12 - return "\x04\x4b\x72\x47\x7d"; - case 145: // F13 - return "\x04\x4b\x72\x47\x40"; - case 146: // F14 - return "\x04\x4b\x72\x47\x25"; - case 147: // F15 - return "\x04\x4b\x72\x47\x24"; - case 148: // F16 - return "\x04\x4b\x72\x47\x23"; - case 149: // F17 - return "\x05\x4b\x72\x47\x42\x41"; - case 150: // F18 - return "\x05\x4b\x72\x47\x42\x42"; - case 151: // F19 - return "\x05\x4b\x72\x47\x42\x43"; - case 152: // F20 - return "\x05\x4b\x72\x47\x42\x44"; - case 153: // F21 - return "\x05\x4b\x72\x47\x42\x45"; - case 154: // F22 - return "\x05\x4b\x72\x47\x42\x46"; - case 155: // F23 - return "\x05\x4b\x72\x47\x42\x47"; - case 156: // F24 - return "\x05\x4b\x72\x47\x42\x48"; - case 157: // F25 - return "\x05\x4b\x72\x47\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x72\x47\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x72\x47\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x72\x47\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x72\x47\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x72\x47\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x72\x47\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x72\x47\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x72\x47\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x72\x47\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x72\x47\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x72\x47\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x72\x47\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x72\x47\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x72\x47\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x72\x47\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x72\x47\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x72\x47\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x72\x47\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x72\x47\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x72\x47\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x72\x47\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x72\x47\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x72\x47\x42\x68"; - } // end switch(key) - case 0x7: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x72\x48\x41"; - case 1: // EXCLAM - return "\x05\x4b\x72\x48\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x72\x48\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x72\x48\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x72\x48\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x72\x48\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x72\x48\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x72\x48\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x72\x48\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x72\x48\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x72\x48\x43"; - case 11: // MINUS - return "\x04\x4b\x72\x48\x44"; - case 12: // PERIOD - return "\x04\x4b\x72\x48\x45"; - case 13: // SLASH - return "\x04\x4b\x72\x48\x46"; - case 14: // 0 - return "\x04\x4b\x72\x48\x47"; - case 15: // 1 - return "\x04\x4b\x72\x48\x48"; - case 16: // 2 - return "\x04\x4b\x72\x48\x49"; - case 17: // 3 - return "\x04\x4b\x72\x48\x4a"; - case 18: // 4 - return "\x04\x4b\x72\x48\x4b"; - case 19: // 5 - return "\x04\x4b\x72\x48\x4c"; - case 20: // 6 - return "\x04\x4b\x72\x48\x4d"; - case 21: // 7 - return "\x04\x4b\x72\x48\x4e"; - case 22: // 8 - return "\x04\x4b\x72\x48\x4f"; - case 23: // 9 - return "\x04\x4b\x72\x48\x50"; - case 24: // COLON - return "\x05\x4b\x72\x48\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x72\x48\x51"; - case 26: // LESS - return "\x05\x4b\x72\x48\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x72\x48\x52"; - case 28: // GREATER - return "\x05\x4b\x72\x48\x42\x75"; - case 29: // AT - return "\x05\x4b\x72\x48\x42\x76"; - case 30: // A - return "\x04\x4b\x72\x48\x53"; - case 31: // B - return "\x04\x4b\x72\x48\x54"; - case 32: // C - return "\x04\x4b\x72\x48\x55"; - case 33: // D - return "\x04\x4b\x72\x48\x56"; - case 34: // E - return "\x04\x4b\x72\x48\x57"; - case 35: // F - return "\x04\x4b\x72\x48\x58"; - case 36: // G - return "\x04\x4b\x72\x48\x59"; - case 37: // H - return "\x04\x4b\x72\x48\x5a"; - case 38: // I - return "\x04\x4b\x72\x48\x61"; - case 39: // J - return "\x04\x4b\x72\x48\x62"; - case 40: // K - return "\x04\x4b\x72\x48\x63"; - case 41: // L - return "\x04\x4b\x72\x48\x64"; - case 42: // M - return "\x04\x4b\x72\x48\x65"; - case 43: // N - return "\x04\x4b\x72\x48\x66"; - case 44: // O - return "\x04\x4b\x72\x48\x67"; - case 45: // P - return "\x04\x4b\x72\x48\x68"; - case 46: // Q - return "\x04\x4b\x72\x48\x69"; - case 47: // R - return "\x04\x4b\x72\x48\x6a"; - case 48: // S - return "\x04\x4b\x72\x48\x6b"; - case 49: // T - return "\x04\x4b\x72\x48\x6c"; - case 50: // U - return "\x04\x4b\x72\x48\x6d"; - case 51: // V - return "\x04\x4b\x72\x48\x6e"; - case 52: // W - return "\x04\x4b\x72\x48\x6f"; - case 53: // X - return "\x04\x4b\x72\x48\x70"; - case 54: // Y - return "\x04\x4b\x72\x48\x71"; - case 55: // Z - return "\x04\x4b\x72\x48\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x72\x48\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x72\x48\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x72\x48\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x72\x48\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x72\x48\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x72\x48\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x72\x48\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x72\x48\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x72\x48\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x72\x48\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x72\x48\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x72\x48\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x72\x48\x42\x30"; - case 69: // AE - return "\x05\x4b\x72\x48\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x72\x48\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x72\x48\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x72\x48\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x72\x48\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x72\x48\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x72\x48\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x72\x48\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x72\x48\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x72\x48\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x72\x48\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x72\x48\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x72\x48\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x72\x48\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x72\x48\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x72\x48\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x72\x48\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x72\x48\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x72\x48\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x72\x48\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x72\x48\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x72\x48\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x72\x48\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x72\x48\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x72\x48\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x72\x48\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x72\x48\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x72\x48\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x72\x48\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x72\x48\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x72\x48\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x72\x48\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x72\x48\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x72\x48\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x72\x48\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x72\x48\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x72\x48\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x72\x48\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x72\x48\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x72\x48\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x72\x48\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x72\x48\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x72\x48\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x72\x48\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x72\x48\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x72\x48\x79"; - case 115: // ENTER - return "\x04\x4b\x72\x48\x7a"; - case 116: // TAB - return "\x04\x4b\x72\x48\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x72\x48\x31"; - case 118: // INSERT - return "\x04\x4b\x72\x48\x32"; - case 119: // DELETE - return "\x04\x4b\x72\x48\x33"; - case 120: // RIGHT - return "\x04\x4b\x72\x48\x34"; - case 121: // LEFT - return "\x04\x4b\x72\x48\x35"; - case 122: // DOWN - return "\x04\x4b\x72\x48\x36"; - case 123: // UP - return "\x04\x4b\x72\x48\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x72\x48\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x72\x48\x39"; - case 126: // HOME - return "\x04\x4b\x72\x48\x2e"; - case 127: // END - return "\x04\x4b\x72\x48\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x72\x48\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x72\x48\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x72\x48\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x72\x48\x5e"; - case 132: // PAUSE - return "\x04\x4b\x72\x48\x21"; - case 133: // F1 - return "\x04\x4b\x72\x48\x2f"; - case 134: // F2 - return "\x04\x4b\x72\x48\x2a"; - case 135: // F3 - return "\x04\x4b\x72\x48\x3f"; - case 136: // F4 - return "\x04\x4b\x72\x48\x26"; - case 137: // F5 - return "\x04\x4b\x72\x48\x3c"; - case 138: // F6 - return "\x04\x4b\x72\x48\x3e"; - case 139: // F7 - return "\x04\x4b\x72\x48\x28"; - case 140: // F8 - return "\x04\x4b\x72\x48\x29"; - case 141: // F9 - return "\x04\x4b\x72\x48\x5b"; - case 142: // F10 - return "\x04\x4b\x72\x48\x5d"; - case 143: // F11 - return "\x04\x4b\x72\x48\x7b"; - case 144: // F12 - return "\x04\x4b\x72\x48\x7d"; - case 145: // F13 - return "\x04\x4b\x72\x48\x40"; - case 146: // F14 - return "\x04\x4b\x72\x48\x25"; - case 147: // F15 - return "\x04\x4b\x72\x48\x24"; - case 148: // F16 - return "\x04\x4b\x72\x48\x23"; - case 149: // F17 - return "\x05\x4b\x72\x48\x42\x41"; - case 150: // F18 - return "\x05\x4b\x72\x48\x42\x42"; - case 151: // F19 - return "\x05\x4b\x72\x48\x42\x43"; - case 152: // F20 - return "\x05\x4b\x72\x48\x42\x44"; - case 153: // F21 - return "\x05\x4b\x72\x48\x42\x45"; - case 154: // F22 - return "\x05\x4b\x72\x48\x42\x46"; - case 155: // F23 - return "\x05\x4b\x72\x48\x42\x47"; - case 156: // F24 - return "\x05\x4b\x72\x48\x42\x48"; - case 157: // F25 - return "\x05\x4b\x72\x48\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x72\x48\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x72\x48\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x72\x48\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x72\x48\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x72\x48\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x72\x48\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x72\x48\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x72\x48\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x72\x48\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x72\x48\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x72\x48\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x72\x48\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x72\x48\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x72\x48\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x72\x48\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x72\x48\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x72\x48\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x72\x48\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x72\x48\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x72\x48\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x72\x48\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x72\x48\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x72\x48\x42\x68"; - } // end switch(key) - case 0x8: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x72\x49\x41"; - case 1: // EXCLAM - return "\x05\x4b\x72\x49\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x72\x49\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x72\x49\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x72\x49\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x72\x49\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x72\x49\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x72\x49\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x72\x49\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x72\x49\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x72\x49\x43"; - case 11: // MINUS - return "\x04\x4b\x72\x49\x44"; - case 12: // PERIOD - return "\x04\x4b\x72\x49\x45"; - case 13: // SLASH - return "\x04\x4b\x72\x49\x46"; - case 14: // 0 - return "\x04\x4b\x72\x49\x47"; - case 15: // 1 - return "\x04\x4b\x72\x49\x48"; - case 16: // 2 - return "\x04\x4b\x72\x49\x49"; - case 17: // 3 - return "\x04\x4b\x72\x49\x4a"; - case 18: // 4 - return "\x04\x4b\x72\x49\x4b"; - case 19: // 5 - return "\x04\x4b\x72\x49\x4c"; - case 20: // 6 - return "\x04\x4b\x72\x49\x4d"; - case 21: // 7 - return "\x04\x4b\x72\x49\x4e"; - case 22: // 8 - return "\x04\x4b\x72\x49\x4f"; - case 23: // 9 - return "\x04\x4b\x72\x49\x50"; - case 24: // COLON - return "\x05\x4b\x72\x49\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x72\x49\x51"; - case 26: // LESS - return "\x05\x4b\x72\x49\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x72\x49\x52"; - case 28: // GREATER - return "\x05\x4b\x72\x49\x42\x75"; - case 29: // AT - return "\x05\x4b\x72\x49\x42\x76"; - case 30: // A - return "\x04\x4b\x72\x49\x53"; - case 31: // B - return "\x04\x4b\x72\x49\x54"; - case 32: // C - return "\x04\x4b\x72\x49\x55"; - case 33: // D - return "\x04\x4b\x72\x49\x56"; - case 34: // E - return "\x04\x4b\x72\x49\x57"; - case 35: // F - return "\x04\x4b\x72\x49\x58"; - case 36: // G - return "\x04\x4b\x72\x49\x59"; - case 37: // H - return "\x04\x4b\x72\x49\x5a"; - case 38: // I - return "\x04\x4b\x72\x49\x61"; - case 39: // J - return "\x04\x4b\x72\x49\x62"; - case 40: // K - return "\x04\x4b\x72\x49\x63"; - case 41: // L - return "\x04\x4b\x72\x49\x64"; - case 42: // M - return "\x04\x4b\x72\x49\x65"; - case 43: // N - return "\x04\x4b\x72\x49\x66"; - case 44: // O - return "\x04\x4b\x72\x49\x67"; - case 45: // P - return "\x04\x4b\x72\x49\x68"; - case 46: // Q - return "\x04\x4b\x72\x49\x69"; - case 47: // R - return "\x04\x4b\x72\x49\x6a"; - case 48: // S - return "\x04\x4b\x72\x49\x6b"; - case 49: // T - return "\x04\x4b\x72\x49\x6c"; - case 50: // U - return "\x04\x4b\x72\x49\x6d"; - case 51: // V - return "\x04\x4b\x72\x49\x6e"; - case 52: // W - return "\x04\x4b\x72\x49\x6f"; - case 53: // X - return "\x04\x4b\x72\x49\x70"; - case 54: // Y - return "\x04\x4b\x72\x49\x71"; - case 55: // Z - return "\x04\x4b\x72\x49\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x72\x49\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x72\x49\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x72\x49\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x72\x49\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x72\x49\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x72\x49\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x72\x49\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x72\x49\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x72\x49\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x72\x49\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x72\x49\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x72\x49\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x72\x49\x42\x30"; - case 69: // AE - return "\x05\x4b\x72\x49\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x72\x49\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x72\x49\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x72\x49\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x72\x49\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x72\x49\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x72\x49\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x72\x49\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x72\x49\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x72\x49\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x72\x49\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x72\x49\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x72\x49\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x72\x49\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x72\x49\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x72\x49\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x72\x49\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x72\x49\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x72\x49\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x72\x49\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x72\x49\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x72\x49\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x72\x49\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x72\x49\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x72\x49\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x72\x49\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x72\x49\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x72\x49\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x72\x49\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x72\x49\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x72\x49\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x72\x49\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x72\x49\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x72\x49\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x72\x49\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x72\x49\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x72\x49\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x72\x49\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x72\x49\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x72\x49\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x72\x49\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x72\x49\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x72\x49\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x72\x49\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x72\x49\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x72\x49\x79"; - case 115: // ENTER - return "\x04\x4b\x72\x49\x7a"; - case 116: // TAB - return "\x04\x4b\x72\x49\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x72\x49\x31"; - case 118: // INSERT - return "\x04\x4b\x72\x49\x32"; - case 119: // DELETE - return "\x04\x4b\x72\x49\x33"; - case 120: // RIGHT - return "\x04\x4b\x72\x49\x34"; - case 121: // LEFT - return "\x04\x4b\x72\x49\x35"; - case 122: // DOWN - return "\x04\x4b\x72\x49\x36"; - case 123: // UP - return "\x04\x4b\x72\x49\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x72\x49\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x72\x49\x39"; - case 126: // HOME - return "\x04\x4b\x72\x49\x2e"; - case 127: // END - return "\x04\x4b\x72\x49\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x72\x49\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x72\x49\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x72\x49\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x72\x49\x5e"; - case 132: // PAUSE - return "\x04\x4b\x72\x49\x21"; - case 133: // F1 - return "\x04\x4b\x72\x49\x2f"; - case 134: // F2 - return "\x04\x4b\x72\x49\x2a"; - case 135: // F3 - return "\x04\x4b\x72\x49\x3f"; - case 136: // F4 - return "\x04\x4b\x72\x49\x26"; - case 137: // F5 - return "\x04\x4b\x72\x49\x3c"; - case 138: // F6 - return "\x04\x4b\x72\x49\x3e"; - case 139: // F7 - return "\x04\x4b\x72\x49\x28"; - case 140: // F8 - return "\x04\x4b\x72\x49\x29"; - case 141: // F9 - return "\x04\x4b\x72\x49\x5b"; - case 142: // F10 - return "\x04\x4b\x72\x49\x5d"; - case 143: // F11 - return "\x04\x4b\x72\x49\x7b"; - case 144: // F12 - return "\x04\x4b\x72\x49\x7d"; - case 145: // F13 - return "\x04\x4b\x72\x49\x40"; - case 146: // F14 - return "\x04\x4b\x72\x49\x25"; - case 147: // F15 - return "\x04\x4b\x72\x49\x24"; - case 148: // F16 - return "\x04\x4b\x72\x49\x23"; - case 149: // F17 - return "\x05\x4b\x72\x49\x42\x41"; - case 150: // F18 - return "\x05\x4b\x72\x49\x42\x42"; - case 151: // F19 - return "\x05\x4b\x72\x49\x42\x43"; - case 152: // F20 - return "\x05\x4b\x72\x49\x42\x44"; - case 153: // F21 - return "\x05\x4b\x72\x49\x42\x45"; - case 154: // F22 - return "\x05\x4b\x72\x49\x42\x46"; - case 155: // F23 - return "\x05\x4b\x72\x49\x42\x47"; - case 156: // F24 - return "\x05\x4b\x72\x49\x42\x48"; - case 157: // F25 - return "\x05\x4b\x72\x49\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x72\x49\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x72\x49\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x72\x49\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x72\x49\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x72\x49\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x72\x49\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x72\x49\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x72\x49\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x72\x49\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x72\x49\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x72\x49\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x72\x49\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x72\x49\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x72\x49\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x72\x49\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x72\x49\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x72\x49\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x72\x49\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x72\x49\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x72\x49\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x72\x49\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x72\x49\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x72\x49\x42\x68"; - } // end switch(key) - case 0x9: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x72\x4a\x41"; - case 1: // EXCLAM - return "\x05\x4b\x72\x4a\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x72\x4a\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x72\x4a\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x72\x4a\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x72\x4a\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x72\x4a\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x72\x4a\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x72\x4a\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x72\x4a\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x72\x4a\x43"; - case 11: // MINUS - return "\x04\x4b\x72\x4a\x44"; - case 12: // PERIOD - return "\x04\x4b\x72\x4a\x45"; - case 13: // SLASH - return "\x04\x4b\x72\x4a\x46"; - case 14: // 0 - return "\x04\x4b\x72\x4a\x47"; - case 15: // 1 - return "\x04\x4b\x72\x4a\x48"; - case 16: // 2 - return "\x04\x4b\x72\x4a\x49"; - case 17: // 3 - return "\x04\x4b\x72\x4a\x4a"; - case 18: // 4 - return "\x04\x4b\x72\x4a\x4b"; - case 19: // 5 - return "\x04\x4b\x72\x4a\x4c"; - case 20: // 6 - return "\x04\x4b\x72\x4a\x4d"; - case 21: // 7 - return "\x04\x4b\x72\x4a\x4e"; - case 22: // 8 - return "\x04\x4b\x72\x4a\x4f"; - case 23: // 9 - return "\x04\x4b\x72\x4a\x50"; - case 24: // COLON - return "\x05\x4b\x72\x4a\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x72\x4a\x51"; - case 26: // LESS - return "\x05\x4b\x72\x4a\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x72\x4a\x52"; - case 28: // GREATER - return "\x05\x4b\x72\x4a\x42\x75"; - case 29: // AT - return "\x05\x4b\x72\x4a\x42\x76"; - case 30: // A - return "\x04\x4b\x72\x4a\x53"; - case 31: // B - return "\x04\x4b\x72\x4a\x54"; - case 32: // C - return "\x04\x4b\x72\x4a\x55"; - case 33: // D - return "\x04\x4b\x72\x4a\x56"; - case 34: // E - return "\x04\x4b\x72\x4a\x57"; - case 35: // F - return "\x04\x4b\x72\x4a\x58"; - case 36: // G - return "\x04\x4b\x72\x4a\x59"; - case 37: // H - return "\x04\x4b\x72\x4a\x5a"; - case 38: // I - return "\x04\x4b\x72\x4a\x61"; - case 39: // J - return "\x04\x4b\x72\x4a\x62"; - case 40: // K - return "\x04\x4b\x72\x4a\x63"; - case 41: // L - return "\x04\x4b\x72\x4a\x64"; - case 42: // M - return "\x04\x4b\x72\x4a\x65"; - case 43: // N - return "\x04\x4b\x72\x4a\x66"; - case 44: // O - return "\x04\x4b\x72\x4a\x67"; - case 45: // P - return "\x04\x4b\x72\x4a\x68"; - case 46: // Q - return "\x04\x4b\x72\x4a\x69"; - case 47: // R - return "\x04\x4b\x72\x4a\x6a"; - case 48: // S - return "\x04\x4b\x72\x4a\x6b"; - case 49: // T - return "\x04\x4b\x72\x4a\x6c"; - case 50: // U - return "\x04\x4b\x72\x4a\x6d"; - case 51: // V - return "\x04\x4b\x72\x4a\x6e"; - case 52: // W - return "\x04\x4b\x72\x4a\x6f"; - case 53: // X - return "\x04\x4b\x72\x4a\x70"; - case 54: // Y - return "\x04\x4b\x72\x4a\x71"; - case 55: // Z - return "\x04\x4b\x72\x4a\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x72\x4a\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x72\x4a\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x72\x4a\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x72\x4a\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x72\x4a\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x72\x4a\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x72\x4a\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x72\x4a\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x72\x4a\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x72\x4a\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x72\x4a\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x72\x4a\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x72\x4a\x42\x30"; - case 69: // AE - return "\x05\x4b\x72\x4a\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x72\x4a\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x72\x4a\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x72\x4a\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x72\x4a\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x72\x4a\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x72\x4a\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x72\x4a\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x72\x4a\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x72\x4a\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x72\x4a\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x72\x4a\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x72\x4a\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x72\x4a\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x72\x4a\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x72\x4a\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x72\x4a\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x72\x4a\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x72\x4a\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x72\x4a\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x72\x4a\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x72\x4a\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x72\x4a\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x72\x4a\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x72\x4a\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x72\x4a\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x72\x4a\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x72\x4a\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x72\x4a\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x72\x4a\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x72\x4a\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x72\x4a\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x72\x4a\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x72\x4a\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x72\x4a\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x72\x4a\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x72\x4a\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x72\x4a\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x72\x4a\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x72\x4a\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x72\x4a\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x72\x4a\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x72\x4a\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x72\x4a\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x72\x4a\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x72\x4a\x79"; - case 115: // ENTER - return "\x04\x4b\x72\x4a\x7a"; - case 116: // TAB - return "\x04\x4b\x72\x4a\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x72\x4a\x31"; - case 118: // INSERT - return "\x04\x4b\x72\x4a\x32"; - case 119: // DELETE - return "\x04\x4b\x72\x4a\x33"; - case 120: // RIGHT - return "\x04\x4b\x72\x4a\x34"; - case 121: // LEFT - return "\x04\x4b\x72\x4a\x35"; - case 122: // DOWN - return "\x04\x4b\x72\x4a\x36"; - case 123: // UP - return "\x04\x4b\x72\x4a\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x72\x4a\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x72\x4a\x39"; - case 126: // HOME - return "\x04\x4b\x72\x4a\x2e"; - case 127: // END - return "\x04\x4b\x72\x4a\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x72\x4a\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x72\x4a\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x72\x4a\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x72\x4a\x5e"; - case 132: // PAUSE - return "\x04\x4b\x72\x4a\x21"; - case 133: // F1 - return "\x04\x4b\x72\x4a\x2f"; - case 134: // F2 - return "\x04\x4b\x72\x4a\x2a"; - case 135: // F3 - return "\x04\x4b\x72\x4a\x3f"; - case 136: // F4 - return "\x04\x4b\x72\x4a\x26"; - case 137: // F5 - return "\x04\x4b\x72\x4a\x3c"; - case 138: // F6 - return "\x04\x4b\x72\x4a\x3e"; - case 139: // F7 - return "\x04\x4b\x72\x4a\x28"; - case 140: // F8 - return "\x04\x4b\x72\x4a\x29"; - case 141: // F9 - return "\x04\x4b\x72\x4a\x5b"; - case 142: // F10 - return "\x04\x4b\x72\x4a\x5d"; - case 143: // F11 - return "\x04\x4b\x72\x4a\x7b"; - case 144: // F12 - return "\x04\x4b\x72\x4a\x7d"; - case 145: // F13 - return "\x04\x4b\x72\x4a\x40"; - case 146: // F14 - return "\x04\x4b\x72\x4a\x25"; - case 147: // F15 - return "\x04\x4b\x72\x4a\x24"; - case 148: // F16 - return "\x04\x4b\x72\x4a\x23"; - case 149: // F17 - return "\x05\x4b\x72\x4a\x42\x41"; - case 150: // F18 - return "\x05\x4b\x72\x4a\x42\x42"; - case 151: // F19 - return "\x05\x4b\x72\x4a\x42\x43"; - case 152: // F20 - return "\x05\x4b\x72\x4a\x42\x44"; - case 153: // F21 - return "\x05\x4b\x72\x4a\x42\x45"; - case 154: // F22 - return "\x05\x4b\x72\x4a\x42\x46"; - case 155: // F23 - return "\x05\x4b\x72\x4a\x42\x47"; - case 156: // F24 - return "\x05\x4b\x72\x4a\x42\x48"; - case 157: // F25 - return "\x05\x4b\x72\x4a\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x72\x4a\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x72\x4a\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x72\x4a\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x72\x4a\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x72\x4a\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x72\x4a\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x72\x4a\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x72\x4a\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x72\x4a\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x72\x4a\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x72\x4a\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x72\x4a\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x72\x4a\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x72\x4a\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x72\x4a\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x72\x4a\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x72\x4a\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x72\x4a\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x72\x4a\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x72\x4a\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x72\x4a\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x72\x4a\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x72\x4a\x42\x68"; - } // end switch(key) - case 0xa: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x72\x4d\x41"; - case 1: // EXCLAM - return "\x05\x4b\x72\x4d\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x72\x4d\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x72\x4d\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x72\x4d\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x72\x4d\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x72\x4d\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x72\x4d\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x72\x4d\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x72\x4d\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x72\x4d\x43"; - case 11: // MINUS - return "\x04\x4b\x72\x4d\x44"; - case 12: // PERIOD - return "\x04\x4b\x72\x4d\x45"; - case 13: // SLASH - return "\x04\x4b\x72\x4d\x46"; - case 14: // 0 - return "\x04\x4b\x72\x4d\x47"; - case 15: // 1 - return "\x04\x4b\x72\x4d\x48"; - case 16: // 2 - return "\x04\x4b\x72\x4d\x49"; - case 17: // 3 - return "\x04\x4b\x72\x4d\x4a"; - case 18: // 4 - return "\x04\x4b\x72\x4d\x4b"; - case 19: // 5 - return "\x04\x4b\x72\x4d\x4c"; - case 20: // 6 - return "\x04\x4b\x72\x4d\x4d"; - case 21: // 7 - return "\x04\x4b\x72\x4d\x4e"; - case 22: // 8 - return "\x04\x4b\x72\x4d\x4f"; - case 23: // 9 - return "\x04\x4b\x72\x4d\x50"; - case 24: // COLON - return "\x05\x4b\x72\x4d\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x72\x4d\x51"; - case 26: // LESS - return "\x05\x4b\x72\x4d\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x72\x4d\x52"; - case 28: // GREATER - return "\x05\x4b\x72\x4d\x42\x75"; - case 29: // AT - return "\x05\x4b\x72\x4d\x42\x76"; - case 30: // A - return "\x04\x4b\x72\x4d\x53"; - case 31: // B - return "\x04\x4b\x72\x4d\x54"; - case 32: // C - return "\x04\x4b\x72\x4d\x55"; - case 33: // D - return "\x04\x4b\x72\x4d\x56"; - case 34: // E - return "\x04\x4b\x72\x4d\x57"; - case 35: // F - return "\x04\x4b\x72\x4d\x58"; - case 36: // G - return "\x04\x4b\x72\x4d\x59"; - case 37: // H - return "\x04\x4b\x72\x4d\x5a"; - case 38: // I - return "\x04\x4b\x72\x4d\x61"; - case 39: // J - return "\x04\x4b\x72\x4d\x62"; - case 40: // K - return "\x04\x4b\x72\x4d\x63"; - case 41: // L - return "\x04\x4b\x72\x4d\x64"; - case 42: // M - return "\x04\x4b\x72\x4d\x65"; - case 43: // N - return "\x04\x4b\x72\x4d\x66"; - case 44: // O - return "\x04\x4b\x72\x4d\x67"; - case 45: // P - return "\x04\x4b\x72\x4d\x68"; - case 46: // Q - return "\x04\x4b\x72\x4d\x69"; - case 47: // R - return "\x04\x4b\x72\x4d\x6a"; - case 48: // S - return "\x04\x4b\x72\x4d\x6b"; - case 49: // T - return "\x04\x4b\x72\x4d\x6c"; - case 50: // U - return "\x04\x4b\x72\x4d\x6d"; - case 51: // V - return "\x04\x4b\x72\x4d\x6e"; - case 52: // W - return "\x04\x4b\x72\x4d\x6f"; - case 53: // X - return "\x04\x4b\x72\x4d\x70"; - case 54: // Y - return "\x04\x4b\x72\x4d\x71"; - case 55: // Z - return "\x04\x4b\x72\x4d\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x72\x4d\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x72\x4d\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x72\x4d\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x72\x4d\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x72\x4d\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x72\x4d\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x72\x4d\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x72\x4d\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x72\x4d\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x72\x4d\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x72\x4d\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x72\x4d\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x72\x4d\x42\x30"; - case 69: // AE - return "\x05\x4b\x72\x4d\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x72\x4d\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x72\x4d\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x72\x4d\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x72\x4d\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x72\x4d\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x72\x4d\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x72\x4d\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x72\x4d\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x72\x4d\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x72\x4d\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x72\x4d\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x72\x4d\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x72\x4d\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x72\x4d\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x72\x4d\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x72\x4d\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x72\x4d\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x72\x4d\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x72\x4d\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x72\x4d\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x72\x4d\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x72\x4d\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x72\x4d\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x72\x4d\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x72\x4d\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x72\x4d\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x72\x4d\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x72\x4d\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x72\x4d\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x72\x4d\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x72\x4d\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x72\x4d\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x72\x4d\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x72\x4d\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x72\x4d\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x72\x4d\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x72\x4d\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x72\x4d\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x72\x4d\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x72\x4d\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x72\x4d\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x72\x4d\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x72\x4d\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x72\x4d\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x72\x4d\x79"; - case 115: // ENTER - return "\x04\x4b\x72\x4d\x7a"; - case 116: // TAB - return "\x04\x4b\x72\x4d\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x72\x4d\x31"; - case 118: // INSERT - return "\x04\x4b\x72\x4d\x32"; - case 119: // DELETE - return "\x04\x4b\x72\x4d\x33"; - case 120: // RIGHT - return "\x04\x4b\x72\x4d\x34"; - case 121: // LEFT - return "\x04\x4b\x72\x4d\x35"; - case 122: // DOWN - return "\x04\x4b\x72\x4d\x36"; - case 123: // UP - return "\x04\x4b\x72\x4d\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x72\x4d\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x72\x4d\x39"; - case 126: // HOME - return "\x04\x4b\x72\x4d\x2e"; - case 127: // END - return "\x04\x4b\x72\x4d\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x72\x4d\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x72\x4d\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x72\x4d\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x72\x4d\x5e"; - case 132: // PAUSE - return "\x04\x4b\x72\x4d\x21"; - case 133: // F1 - return "\x04\x4b\x72\x4d\x2f"; - case 134: // F2 - return "\x04\x4b\x72\x4d\x2a"; - case 135: // F3 - return "\x04\x4b\x72\x4d\x3f"; - case 136: // F4 - return "\x04\x4b\x72\x4d\x26"; - case 137: // F5 - return "\x04\x4b\x72\x4d\x3c"; - case 138: // F6 - return "\x04\x4b\x72\x4d\x3e"; - case 139: // F7 - return "\x04\x4b\x72\x4d\x28"; - case 140: // F8 - return "\x04\x4b\x72\x4d\x29"; - case 141: // F9 - return "\x04\x4b\x72\x4d\x5b"; - case 142: // F10 - return "\x04\x4b\x72\x4d\x5d"; - case 143: // F11 - return "\x04\x4b\x72\x4d\x7b"; - case 144: // F12 - return "\x04\x4b\x72\x4d\x7d"; - case 145: // F13 - return "\x04\x4b\x72\x4d\x40"; - case 146: // F14 - return "\x04\x4b\x72\x4d\x25"; - case 147: // F15 - return "\x04\x4b\x72\x4d\x24"; - case 148: // F16 - return "\x04\x4b\x72\x4d\x23"; - case 149: // F17 - return "\x05\x4b\x72\x4d\x42\x41"; - case 150: // F18 - return "\x05\x4b\x72\x4d\x42\x42"; - case 151: // F19 - return "\x05\x4b\x72\x4d\x42\x43"; - case 152: // F20 - return "\x05\x4b\x72\x4d\x42\x44"; - case 153: // F21 - return "\x05\x4b\x72\x4d\x42\x45"; - case 154: // F22 - return "\x05\x4b\x72\x4d\x42\x46"; - case 155: // F23 - return "\x05\x4b\x72\x4d\x42\x47"; - case 156: // F24 - return "\x05\x4b\x72\x4d\x42\x48"; - case 157: // F25 - return "\x05\x4b\x72\x4d\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x72\x4d\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x72\x4d\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x72\x4d\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x72\x4d\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x72\x4d\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x72\x4d\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x72\x4d\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x72\x4d\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x72\x4d\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x72\x4d\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x72\x4d\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x72\x4d\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x72\x4d\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x72\x4d\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x72\x4d\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x72\x4d\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x72\x4d\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x72\x4d\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x72\x4d\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x72\x4d\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x72\x4d\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x72\x4d\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x72\x4d\x42\x68"; - } // end switch(key) - case 0xb: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x72\x4e\x41"; - case 1: // EXCLAM - return "\x05\x4b\x72\x4e\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x72\x4e\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x72\x4e\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x72\x4e\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x72\x4e\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x72\x4e\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x72\x4e\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x72\x4e\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x72\x4e\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x72\x4e\x43"; - case 11: // MINUS - return "\x04\x4b\x72\x4e\x44"; - case 12: // PERIOD - return "\x04\x4b\x72\x4e\x45"; - case 13: // SLASH - return "\x04\x4b\x72\x4e\x46"; - case 14: // 0 - return "\x04\x4b\x72\x4e\x47"; - case 15: // 1 - return "\x04\x4b\x72\x4e\x48"; - case 16: // 2 - return "\x04\x4b\x72\x4e\x49"; - case 17: // 3 - return "\x04\x4b\x72\x4e\x4a"; - case 18: // 4 - return "\x04\x4b\x72\x4e\x4b"; - case 19: // 5 - return "\x04\x4b\x72\x4e\x4c"; - case 20: // 6 - return "\x04\x4b\x72\x4e\x4d"; - case 21: // 7 - return "\x04\x4b\x72\x4e\x4e"; - case 22: // 8 - return "\x04\x4b\x72\x4e\x4f"; - case 23: // 9 - return "\x04\x4b\x72\x4e\x50"; - case 24: // COLON - return "\x05\x4b\x72\x4e\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x72\x4e\x51"; - case 26: // LESS - return "\x05\x4b\x72\x4e\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x72\x4e\x52"; - case 28: // GREATER - return "\x05\x4b\x72\x4e\x42\x75"; - case 29: // AT - return "\x05\x4b\x72\x4e\x42\x76"; - case 30: // A - return "\x04\x4b\x72\x4e\x53"; - case 31: // B - return "\x04\x4b\x72\x4e\x54"; - case 32: // C - return "\x04\x4b\x72\x4e\x55"; - case 33: // D - return "\x04\x4b\x72\x4e\x56"; - case 34: // E - return "\x04\x4b\x72\x4e\x57"; - case 35: // F - return "\x04\x4b\x72\x4e\x58"; - case 36: // G - return "\x04\x4b\x72\x4e\x59"; - case 37: // H - return "\x04\x4b\x72\x4e\x5a"; - case 38: // I - return "\x04\x4b\x72\x4e\x61"; - case 39: // J - return "\x04\x4b\x72\x4e\x62"; - case 40: // K - return "\x04\x4b\x72\x4e\x63"; - case 41: // L - return "\x04\x4b\x72\x4e\x64"; - case 42: // M - return "\x04\x4b\x72\x4e\x65"; - case 43: // N - return "\x04\x4b\x72\x4e\x66"; - case 44: // O - return "\x04\x4b\x72\x4e\x67"; - case 45: // P - return "\x04\x4b\x72\x4e\x68"; - case 46: // Q - return "\x04\x4b\x72\x4e\x69"; - case 47: // R - return "\x04\x4b\x72\x4e\x6a"; - case 48: // S - return "\x04\x4b\x72\x4e\x6b"; - case 49: // T - return "\x04\x4b\x72\x4e\x6c"; - case 50: // U - return "\x04\x4b\x72\x4e\x6d"; - case 51: // V - return "\x04\x4b\x72\x4e\x6e"; - case 52: // W - return "\x04\x4b\x72\x4e\x6f"; - case 53: // X - return "\x04\x4b\x72\x4e\x70"; - case 54: // Y - return "\x04\x4b\x72\x4e\x71"; - case 55: // Z - return "\x04\x4b\x72\x4e\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x72\x4e\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x72\x4e\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x72\x4e\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x72\x4e\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x72\x4e\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x72\x4e\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x72\x4e\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x72\x4e\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x72\x4e\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x72\x4e\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x72\x4e\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x72\x4e\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x72\x4e\x42\x30"; - case 69: // AE - return "\x05\x4b\x72\x4e\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x72\x4e\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x72\x4e\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x72\x4e\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x72\x4e\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x72\x4e\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x72\x4e\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x72\x4e\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x72\x4e\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x72\x4e\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x72\x4e\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x72\x4e\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x72\x4e\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x72\x4e\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x72\x4e\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x72\x4e\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x72\x4e\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x72\x4e\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x72\x4e\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x72\x4e\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x72\x4e\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x72\x4e\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x72\x4e\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x72\x4e\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x72\x4e\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x72\x4e\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x72\x4e\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x72\x4e\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x72\x4e\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x72\x4e\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x72\x4e\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x72\x4e\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x72\x4e\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x72\x4e\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x72\x4e\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x72\x4e\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x72\x4e\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x72\x4e\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x72\x4e\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x72\x4e\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x72\x4e\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x72\x4e\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x72\x4e\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x72\x4e\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x72\x4e\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x72\x4e\x79"; - case 115: // ENTER - return "\x04\x4b\x72\x4e\x7a"; - case 116: // TAB - return "\x04\x4b\x72\x4e\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x72\x4e\x31"; - case 118: // INSERT - return "\x04\x4b\x72\x4e\x32"; - case 119: // DELETE - return "\x04\x4b\x72\x4e\x33"; - case 120: // RIGHT - return "\x04\x4b\x72\x4e\x34"; - case 121: // LEFT - return "\x04\x4b\x72\x4e\x35"; - case 122: // DOWN - return "\x04\x4b\x72\x4e\x36"; - case 123: // UP - return "\x04\x4b\x72\x4e\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x72\x4e\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x72\x4e\x39"; - case 126: // HOME - return "\x04\x4b\x72\x4e\x2e"; - case 127: // END - return "\x04\x4b\x72\x4e\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x72\x4e\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x72\x4e\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x72\x4e\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x72\x4e\x5e"; - case 132: // PAUSE - return "\x04\x4b\x72\x4e\x21"; - case 133: // F1 - return "\x04\x4b\x72\x4e\x2f"; - case 134: // F2 - return "\x04\x4b\x72\x4e\x2a"; - case 135: // F3 - return "\x04\x4b\x72\x4e\x3f"; - case 136: // F4 - return "\x04\x4b\x72\x4e\x26"; - case 137: // F5 - return "\x04\x4b\x72\x4e\x3c"; - case 138: // F6 - return "\x04\x4b\x72\x4e\x3e"; - case 139: // F7 - return "\x04\x4b\x72\x4e\x28"; - case 140: // F8 - return "\x04\x4b\x72\x4e\x29"; - case 141: // F9 - return "\x04\x4b\x72\x4e\x5b"; - case 142: // F10 - return "\x04\x4b\x72\x4e\x5d"; - case 143: // F11 - return "\x04\x4b\x72\x4e\x7b"; - case 144: // F12 - return "\x04\x4b\x72\x4e\x7d"; - case 145: // F13 - return "\x04\x4b\x72\x4e\x40"; - case 146: // F14 - return "\x04\x4b\x72\x4e\x25"; - case 147: // F15 - return "\x04\x4b\x72\x4e\x24"; - case 148: // F16 - return "\x04\x4b\x72\x4e\x23"; - case 149: // F17 - return "\x05\x4b\x72\x4e\x42\x41"; - case 150: // F18 - return "\x05\x4b\x72\x4e\x42\x42"; - case 151: // F19 - return "\x05\x4b\x72\x4e\x42\x43"; - case 152: // F20 - return "\x05\x4b\x72\x4e\x42\x44"; - case 153: // F21 - return "\x05\x4b\x72\x4e\x42\x45"; - case 154: // F22 - return "\x05\x4b\x72\x4e\x42\x46"; - case 155: // F23 - return "\x05\x4b\x72\x4e\x42\x47"; - case 156: // F24 - return "\x05\x4b\x72\x4e\x42\x48"; - case 157: // F25 - return "\x05\x4b\x72\x4e\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x72\x4e\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x72\x4e\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x72\x4e\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x72\x4e\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x72\x4e\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x72\x4e\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x72\x4e\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x72\x4e\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x72\x4e\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x72\x4e\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x72\x4e\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x72\x4e\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x72\x4e\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x72\x4e\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x72\x4e\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x72\x4e\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x72\x4e\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x72\x4e\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x72\x4e\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x72\x4e\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x72\x4e\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x72\x4e\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x72\x4e\x42\x68"; - } // end switch(key) - case 0xc: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x72\x4b\x41"; - case 1: // EXCLAM - return "\x05\x4b\x72\x4b\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x72\x4b\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x72\x4b\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x72\x4b\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x72\x4b\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x72\x4b\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x72\x4b\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x72\x4b\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x72\x4b\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x72\x4b\x43"; - case 11: // MINUS - return "\x04\x4b\x72\x4b\x44"; - case 12: // PERIOD - return "\x04\x4b\x72\x4b\x45"; - case 13: // SLASH - return "\x04\x4b\x72\x4b\x46"; - case 14: // 0 - return "\x04\x4b\x72\x4b\x47"; - case 15: // 1 - return "\x04\x4b\x72\x4b\x48"; - case 16: // 2 - return "\x04\x4b\x72\x4b\x49"; - case 17: // 3 - return "\x04\x4b\x72\x4b\x4a"; - case 18: // 4 - return "\x04\x4b\x72\x4b\x4b"; - case 19: // 5 - return "\x04\x4b\x72\x4b\x4c"; - case 20: // 6 - return "\x04\x4b\x72\x4b\x4d"; - case 21: // 7 - return "\x04\x4b\x72\x4b\x4e"; - case 22: // 8 - return "\x04\x4b\x72\x4b\x4f"; - case 23: // 9 - return "\x04\x4b\x72\x4b\x50"; - case 24: // COLON - return "\x05\x4b\x72\x4b\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x72\x4b\x51"; - case 26: // LESS - return "\x05\x4b\x72\x4b\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x72\x4b\x52"; - case 28: // GREATER - return "\x05\x4b\x72\x4b\x42\x75"; - case 29: // AT - return "\x05\x4b\x72\x4b\x42\x76"; - case 30: // A - return "\x04\x4b\x72\x4b\x53"; - case 31: // B - return "\x04\x4b\x72\x4b\x54"; - case 32: // C - return "\x04\x4b\x72\x4b\x55"; - case 33: // D - return "\x04\x4b\x72\x4b\x56"; - case 34: // E - return "\x04\x4b\x72\x4b\x57"; - case 35: // F - return "\x04\x4b\x72\x4b\x58"; - case 36: // G - return "\x04\x4b\x72\x4b\x59"; - case 37: // H - return "\x04\x4b\x72\x4b\x5a"; - case 38: // I - return "\x04\x4b\x72\x4b\x61"; - case 39: // J - return "\x04\x4b\x72\x4b\x62"; - case 40: // K - return "\x04\x4b\x72\x4b\x63"; - case 41: // L - return "\x04\x4b\x72\x4b\x64"; - case 42: // M - return "\x04\x4b\x72\x4b\x65"; - case 43: // N - return "\x04\x4b\x72\x4b\x66"; - case 44: // O - return "\x04\x4b\x72\x4b\x67"; - case 45: // P - return "\x04\x4b\x72\x4b\x68"; - case 46: // Q - return "\x04\x4b\x72\x4b\x69"; - case 47: // R - return "\x04\x4b\x72\x4b\x6a"; - case 48: // S - return "\x04\x4b\x72\x4b\x6b"; - case 49: // T - return "\x04\x4b\x72\x4b\x6c"; - case 50: // U - return "\x04\x4b\x72\x4b\x6d"; - case 51: // V - return "\x04\x4b\x72\x4b\x6e"; - case 52: // W - return "\x04\x4b\x72\x4b\x6f"; - case 53: // X - return "\x04\x4b\x72\x4b\x70"; - case 54: // Y - return "\x04\x4b\x72\x4b\x71"; - case 55: // Z - return "\x04\x4b\x72\x4b\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x72\x4b\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x72\x4b\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x72\x4b\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x72\x4b\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x72\x4b\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x72\x4b\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x72\x4b\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x72\x4b\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x72\x4b\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x72\x4b\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x72\x4b\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x72\x4b\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x72\x4b\x42\x30"; - case 69: // AE - return "\x05\x4b\x72\x4b\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x72\x4b\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x72\x4b\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x72\x4b\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x72\x4b\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x72\x4b\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x72\x4b\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x72\x4b\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x72\x4b\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x72\x4b\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x72\x4b\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x72\x4b\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x72\x4b\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x72\x4b\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x72\x4b\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x72\x4b\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x72\x4b\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x72\x4b\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x72\x4b\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x72\x4b\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x72\x4b\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x72\x4b\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x72\x4b\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x72\x4b\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x72\x4b\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x72\x4b\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x72\x4b\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x72\x4b\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x72\x4b\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x72\x4b\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x72\x4b\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x72\x4b\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x72\x4b\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x72\x4b\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x72\x4b\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x72\x4b\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x72\x4b\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x72\x4b\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x72\x4b\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x72\x4b\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x72\x4b\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x72\x4b\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x72\x4b\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x72\x4b\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x72\x4b\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x72\x4b\x79"; - case 115: // ENTER - return "\x04\x4b\x72\x4b\x7a"; - case 116: // TAB - return "\x04\x4b\x72\x4b\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x72\x4b\x31"; - case 118: // INSERT - return "\x04\x4b\x72\x4b\x32"; - case 119: // DELETE - return "\x04\x4b\x72\x4b\x33"; - case 120: // RIGHT - return "\x04\x4b\x72\x4b\x34"; - case 121: // LEFT - return "\x04\x4b\x72\x4b\x35"; - case 122: // DOWN - return "\x04\x4b\x72\x4b\x36"; - case 123: // UP - return "\x04\x4b\x72\x4b\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x72\x4b\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x72\x4b\x39"; - case 126: // HOME - return "\x04\x4b\x72\x4b\x2e"; - case 127: // END - return "\x04\x4b\x72\x4b\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x72\x4b\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x72\x4b\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x72\x4b\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x72\x4b\x5e"; - case 132: // PAUSE - return "\x04\x4b\x72\x4b\x21"; - case 133: // F1 - return "\x04\x4b\x72\x4b\x2f"; - case 134: // F2 - return "\x04\x4b\x72\x4b\x2a"; - case 135: // F3 - return "\x04\x4b\x72\x4b\x3f"; - case 136: // F4 - return "\x04\x4b\x72\x4b\x26"; - case 137: // F5 - return "\x04\x4b\x72\x4b\x3c"; - case 138: // F6 - return "\x04\x4b\x72\x4b\x3e"; - case 139: // F7 - return "\x04\x4b\x72\x4b\x28"; - case 140: // F8 - return "\x04\x4b\x72\x4b\x29"; - case 141: // F9 - return "\x04\x4b\x72\x4b\x5b"; - case 142: // F10 - return "\x04\x4b\x72\x4b\x5d"; - case 143: // F11 - return "\x04\x4b\x72\x4b\x7b"; - case 144: // F12 - return "\x04\x4b\x72\x4b\x7d"; - case 145: // F13 - return "\x04\x4b\x72\x4b\x40"; - case 146: // F14 - return "\x04\x4b\x72\x4b\x25"; - case 147: // F15 - return "\x04\x4b\x72\x4b\x24"; - case 148: // F16 - return "\x04\x4b\x72\x4b\x23"; - case 149: // F17 - return "\x05\x4b\x72\x4b\x42\x41"; - case 150: // F18 - return "\x05\x4b\x72\x4b\x42\x42"; - case 151: // F19 - return "\x05\x4b\x72\x4b\x42\x43"; - case 152: // F20 - return "\x05\x4b\x72\x4b\x42\x44"; - case 153: // F21 - return "\x05\x4b\x72\x4b\x42\x45"; - case 154: // F22 - return "\x05\x4b\x72\x4b\x42\x46"; - case 155: // F23 - return "\x05\x4b\x72\x4b\x42\x47"; - case 156: // F24 - return "\x05\x4b\x72\x4b\x42\x48"; - case 157: // F25 - return "\x05\x4b\x72\x4b\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x72\x4b\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x72\x4b\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x72\x4b\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x72\x4b\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x72\x4b\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x72\x4b\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x72\x4b\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x72\x4b\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x72\x4b\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x72\x4b\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x72\x4b\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x72\x4b\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x72\x4b\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x72\x4b\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x72\x4b\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x72\x4b\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x72\x4b\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x72\x4b\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x72\x4b\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x72\x4b\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x72\x4b\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x72\x4b\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x72\x4b\x42\x68"; - } // end switch(key) - case 0xd: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x72\x4c\x41"; - case 1: // EXCLAM - return "\x05\x4b\x72\x4c\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x72\x4c\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x72\x4c\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x72\x4c\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x72\x4c\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x72\x4c\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x72\x4c\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x72\x4c\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x72\x4c\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x72\x4c\x43"; - case 11: // MINUS - return "\x04\x4b\x72\x4c\x44"; - case 12: // PERIOD - return "\x04\x4b\x72\x4c\x45"; - case 13: // SLASH - return "\x04\x4b\x72\x4c\x46"; - case 14: // 0 - return "\x04\x4b\x72\x4c\x47"; - case 15: // 1 - return "\x04\x4b\x72\x4c\x48"; - case 16: // 2 - return "\x04\x4b\x72\x4c\x49"; - case 17: // 3 - return "\x04\x4b\x72\x4c\x4a"; - case 18: // 4 - return "\x04\x4b\x72\x4c\x4b"; - case 19: // 5 - return "\x04\x4b\x72\x4c\x4c"; - case 20: // 6 - return "\x04\x4b\x72\x4c\x4d"; - case 21: // 7 - return "\x04\x4b\x72\x4c\x4e"; - case 22: // 8 - return "\x04\x4b\x72\x4c\x4f"; - case 23: // 9 - return "\x04\x4b\x72\x4c\x50"; - case 24: // COLON - return "\x05\x4b\x72\x4c\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x72\x4c\x51"; - case 26: // LESS - return "\x05\x4b\x72\x4c\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x72\x4c\x52"; - case 28: // GREATER - return "\x05\x4b\x72\x4c\x42\x75"; - case 29: // AT - return "\x05\x4b\x72\x4c\x42\x76"; - case 30: // A - return "\x04\x4b\x72\x4c\x53"; - case 31: // B - return "\x04\x4b\x72\x4c\x54"; - case 32: // C - return "\x04\x4b\x72\x4c\x55"; - case 33: // D - return "\x04\x4b\x72\x4c\x56"; - case 34: // E - return "\x04\x4b\x72\x4c\x57"; - case 35: // F - return "\x04\x4b\x72\x4c\x58"; - case 36: // G - return "\x04\x4b\x72\x4c\x59"; - case 37: // H - return "\x04\x4b\x72\x4c\x5a"; - case 38: // I - return "\x04\x4b\x72\x4c\x61"; - case 39: // J - return "\x04\x4b\x72\x4c\x62"; - case 40: // K - return "\x04\x4b\x72\x4c\x63"; - case 41: // L - return "\x04\x4b\x72\x4c\x64"; - case 42: // M - return "\x04\x4b\x72\x4c\x65"; - case 43: // N - return "\x04\x4b\x72\x4c\x66"; - case 44: // O - return "\x04\x4b\x72\x4c\x67"; - case 45: // P - return "\x04\x4b\x72\x4c\x68"; - case 46: // Q - return "\x04\x4b\x72\x4c\x69"; - case 47: // R - return "\x04\x4b\x72\x4c\x6a"; - case 48: // S - return "\x04\x4b\x72\x4c\x6b"; - case 49: // T - return "\x04\x4b\x72\x4c\x6c"; - case 50: // U - return "\x04\x4b\x72\x4c\x6d"; - case 51: // V - return "\x04\x4b\x72\x4c\x6e"; - case 52: // W - return "\x04\x4b\x72\x4c\x6f"; - case 53: // X - return "\x04\x4b\x72\x4c\x70"; - case 54: // Y - return "\x04\x4b\x72\x4c\x71"; - case 55: // Z - return "\x04\x4b\x72\x4c\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x72\x4c\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x72\x4c\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x72\x4c\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x72\x4c\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x72\x4c\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x72\x4c\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x72\x4c\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x72\x4c\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x72\x4c\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x72\x4c\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x72\x4c\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x72\x4c\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x72\x4c\x42\x30"; - case 69: // AE - return "\x05\x4b\x72\x4c\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x72\x4c\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x72\x4c\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x72\x4c\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x72\x4c\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x72\x4c\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x72\x4c\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x72\x4c\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x72\x4c\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x72\x4c\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x72\x4c\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x72\x4c\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x72\x4c\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x72\x4c\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x72\x4c\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x72\x4c\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x72\x4c\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x72\x4c\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x72\x4c\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x72\x4c\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x72\x4c\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x72\x4c\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x72\x4c\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x72\x4c\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x72\x4c\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x72\x4c\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x72\x4c\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x72\x4c\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x72\x4c\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x72\x4c\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x72\x4c\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x72\x4c\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x72\x4c\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x72\x4c\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x72\x4c\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x72\x4c\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x72\x4c\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x72\x4c\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x72\x4c\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x72\x4c\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x72\x4c\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x72\x4c\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x72\x4c\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x72\x4c\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x72\x4c\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x72\x4c\x79"; - case 115: // ENTER - return "\x04\x4b\x72\x4c\x7a"; - case 116: // TAB - return "\x04\x4b\x72\x4c\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x72\x4c\x31"; - case 118: // INSERT - return "\x04\x4b\x72\x4c\x32"; - case 119: // DELETE - return "\x04\x4b\x72\x4c\x33"; - case 120: // RIGHT - return "\x04\x4b\x72\x4c\x34"; - case 121: // LEFT - return "\x04\x4b\x72\x4c\x35"; - case 122: // DOWN - return "\x04\x4b\x72\x4c\x36"; - case 123: // UP - return "\x04\x4b\x72\x4c\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x72\x4c\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x72\x4c\x39"; - case 126: // HOME - return "\x04\x4b\x72\x4c\x2e"; - case 127: // END - return "\x04\x4b\x72\x4c\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x72\x4c\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x72\x4c\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x72\x4c\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x72\x4c\x5e"; - case 132: // PAUSE - return "\x04\x4b\x72\x4c\x21"; - case 133: // F1 - return "\x04\x4b\x72\x4c\x2f"; - case 134: // F2 - return "\x04\x4b\x72\x4c\x2a"; - case 135: // F3 - return "\x04\x4b\x72\x4c\x3f"; - case 136: // F4 - return "\x04\x4b\x72\x4c\x26"; - case 137: // F5 - return "\x04\x4b\x72\x4c\x3c"; - case 138: // F6 - return "\x04\x4b\x72\x4c\x3e"; - case 139: // F7 - return "\x04\x4b\x72\x4c\x28"; - case 140: // F8 - return "\x04\x4b\x72\x4c\x29"; - case 141: // F9 - return "\x04\x4b\x72\x4c\x5b"; - case 142: // F10 - return "\x04\x4b\x72\x4c\x5d"; - case 143: // F11 - return "\x04\x4b\x72\x4c\x7b"; - case 144: // F12 - return "\x04\x4b\x72\x4c\x7d"; - case 145: // F13 - return "\x04\x4b\x72\x4c\x40"; - case 146: // F14 - return "\x04\x4b\x72\x4c\x25"; - case 147: // F15 - return "\x04\x4b\x72\x4c\x24"; - case 148: // F16 - return "\x04\x4b\x72\x4c\x23"; - case 149: // F17 - return "\x05\x4b\x72\x4c\x42\x41"; - case 150: // F18 - return "\x05\x4b\x72\x4c\x42\x42"; - case 151: // F19 - return "\x05\x4b\x72\x4c\x42\x43"; - case 152: // F20 - return "\x05\x4b\x72\x4c\x42\x44"; - case 153: // F21 - return "\x05\x4b\x72\x4c\x42\x45"; - case 154: // F22 - return "\x05\x4b\x72\x4c\x42\x46"; - case 155: // F23 - return "\x05\x4b\x72\x4c\x42\x47"; - case 156: // F24 - return "\x05\x4b\x72\x4c\x42\x48"; - case 157: // F25 - return "\x05\x4b\x72\x4c\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x72\x4c\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x72\x4c\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x72\x4c\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x72\x4c\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x72\x4c\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x72\x4c\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x72\x4c\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x72\x4c\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x72\x4c\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x72\x4c\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x72\x4c\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x72\x4c\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x72\x4c\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x72\x4c\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x72\x4c\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x72\x4c\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x72\x4c\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x72\x4c\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x72\x4c\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x72\x4c\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x72\x4c\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x72\x4c\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x72\x4c\x42\x68"; - } // end switch(key) - case 0xe: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x72\x4f\x41"; - case 1: // EXCLAM - return "\x05\x4b\x72\x4f\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x72\x4f\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x72\x4f\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x72\x4f\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x72\x4f\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x72\x4f\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x72\x4f\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x72\x4f\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x72\x4f\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x72\x4f\x43"; - case 11: // MINUS - return "\x04\x4b\x72\x4f\x44"; - case 12: // PERIOD - return "\x04\x4b\x72\x4f\x45"; - case 13: // SLASH - return "\x04\x4b\x72\x4f\x46"; - case 14: // 0 - return "\x04\x4b\x72\x4f\x47"; - case 15: // 1 - return "\x04\x4b\x72\x4f\x48"; - case 16: // 2 - return "\x04\x4b\x72\x4f\x49"; - case 17: // 3 - return "\x04\x4b\x72\x4f\x4a"; - case 18: // 4 - return "\x04\x4b\x72\x4f\x4b"; - case 19: // 5 - return "\x04\x4b\x72\x4f\x4c"; - case 20: // 6 - return "\x04\x4b\x72\x4f\x4d"; - case 21: // 7 - return "\x04\x4b\x72\x4f\x4e"; - case 22: // 8 - return "\x04\x4b\x72\x4f\x4f"; - case 23: // 9 - return "\x04\x4b\x72\x4f\x50"; - case 24: // COLON - return "\x05\x4b\x72\x4f\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x72\x4f\x51"; - case 26: // LESS - return "\x05\x4b\x72\x4f\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x72\x4f\x52"; - case 28: // GREATER - return "\x05\x4b\x72\x4f\x42\x75"; - case 29: // AT - return "\x05\x4b\x72\x4f\x42\x76"; - case 30: // A - return "\x04\x4b\x72\x4f\x53"; - case 31: // B - return "\x04\x4b\x72\x4f\x54"; - case 32: // C - return "\x04\x4b\x72\x4f\x55"; - case 33: // D - return "\x04\x4b\x72\x4f\x56"; - case 34: // E - return "\x04\x4b\x72\x4f\x57"; - case 35: // F - return "\x04\x4b\x72\x4f\x58"; - case 36: // G - return "\x04\x4b\x72\x4f\x59"; - case 37: // H - return "\x04\x4b\x72\x4f\x5a"; - case 38: // I - return "\x04\x4b\x72\x4f\x61"; - case 39: // J - return "\x04\x4b\x72\x4f\x62"; - case 40: // K - return "\x04\x4b\x72\x4f\x63"; - case 41: // L - return "\x04\x4b\x72\x4f\x64"; - case 42: // M - return "\x04\x4b\x72\x4f\x65"; - case 43: // N - return "\x04\x4b\x72\x4f\x66"; - case 44: // O - return "\x04\x4b\x72\x4f\x67"; - case 45: // P - return "\x04\x4b\x72\x4f\x68"; - case 46: // Q - return "\x04\x4b\x72\x4f\x69"; - case 47: // R - return "\x04\x4b\x72\x4f\x6a"; - case 48: // S - return "\x04\x4b\x72\x4f\x6b"; - case 49: // T - return "\x04\x4b\x72\x4f\x6c"; - case 50: // U - return "\x04\x4b\x72\x4f\x6d"; - case 51: // V - return "\x04\x4b\x72\x4f\x6e"; - case 52: // W - return "\x04\x4b\x72\x4f\x6f"; - case 53: // X - return "\x04\x4b\x72\x4f\x70"; - case 54: // Y - return "\x04\x4b\x72\x4f\x71"; - case 55: // Z - return "\x04\x4b\x72\x4f\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x72\x4f\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x72\x4f\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x72\x4f\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x72\x4f\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x72\x4f\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x72\x4f\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x72\x4f\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x72\x4f\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x72\x4f\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x72\x4f\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x72\x4f\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x72\x4f\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x72\x4f\x42\x30"; - case 69: // AE - return "\x05\x4b\x72\x4f\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x72\x4f\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x72\x4f\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x72\x4f\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x72\x4f\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x72\x4f\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x72\x4f\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x72\x4f\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x72\x4f\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x72\x4f\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x72\x4f\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x72\x4f\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x72\x4f\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x72\x4f\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x72\x4f\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x72\x4f\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x72\x4f\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x72\x4f\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x72\x4f\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x72\x4f\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x72\x4f\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x72\x4f\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x72\x4f\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x72\x4f\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x72\x4f\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x72\x4f\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x72\x4f\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x72\x4f\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x72\x4f\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x72\x4f\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x72\x4f\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x72\x4f\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x72\x4f\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x72\x4f\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x72\x4f\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x72\x4f\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x72\x4f\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x72\x4f\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x72\x4f\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x72\x4f\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x72\x4f\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x72\x4f\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x72\x4f\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x72\x4f\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x72\x4f\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x72\x4f\x79"; - case 115: // ENTER - return "\x04\x4b\x72\x4f\x7a"; - case 116: // TAB - return "\x04\x4b\x72\x4f\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x72\x4f\x31"; - case 118: // INSERT - return "\x04\x4b\x72\x4f\x32"; - case 119: // DELETE - return "\x04\x4b\x72\x4f\x33"; - case 120: // RIGHT - return "\x04\x4b\x72\x4f\x34"; - case 121: // LEFT - return "\x04\x4b\x72\x4f\x35"; - case 122: // DOWN - return "\x04\x4b\x72\x4f\x36"; - case 123: // UP - return "\x04\x4b\x72\x4f\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x72\x4f\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x72\x4f\x39"; - case 126: // HOME - return "\x04\x4b\x72\x4f\x2e"; - case 127: // END - return "\x04\x4b\x72\x4f\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x72\x4f\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x72\x4f\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x72\x4f\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x72\x4f\x5e"; - case 132: // PAUSE - return "\x04\x4b\x72\x4f\x21"; - case 133: // F1 - return "\x04\x4b\x72\x4f\x2f"; - case 134: // F2 - return "\x04\x4b\x72\x4f\x2a"; - case 135: // F3 - return "\x04\x4b\x72\x4f\x3f"; - case 136: // F4 - return "\x04\x4b\x72\x4f\x26"; - case 137: // F5 - return "\x04\x4b\x72\x4f\x3c"; - case 138: // F6 - return "\x04\x4b\x72\x4f\x3e"; - case 139: // F7 - return "\x04\x4b\x72\x4f\x28"; - case 140: // F8 - return "\x04\x4b\x72\x4f\x29"; - case 141: // F9 - return "\x04\x4b\x72\x4f\x5b"; - case 142: // F10 - return "\x04\x4b\x72\x4f\x5d"; - case 143: // F11 - return "\x04\x4b\x72\x4f\x7b"; - case 144: // F12 - return "\x04\x4b\x72\x4f\x7d"; - case 145: // F13 - return "\x04\x4b\x72\x4f\x40"; - case 146: // F14 - return "\x04\x4b\x72\x4f\x25"; - case 147: // F15 - return "\x04\x4b\x72\x4f\x24"; - case 148: // F16 - return "\x04\x4b\x72\x4f\x23"; - case 149: // F17 - return "\x05\x4b\x72\x4f\x42\x41"; - case 150: // F18 - return "\x05\x4b\x72\x4f\x42\x42"; - case 151: // F19 - return "\x05\x4b\x72\x4f\x42\x43"; - case 152: // F20 - return "\x05\x4b\x72\x4f\x42\x44"; - case 153: // F21 - return "\x05\x4b\x72\x4f\x42\x45"; - case 154: // F22 - return "\x05\x4b\x72\x4f\x42\x46"; - case 155: // F23 - return "\x05\x4b\x72\x4f\x42\x47"; - case 156: // F24 - return "\x05\x4b\x72\x4f\x42\x48"; - case 157: // F25 - return "\x05\x4b\x72\x4f\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x72\x4f\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x72\x4f\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x72\x4f\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x72\x4f\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x72\x4f\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x72\x4f\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x72\x4f\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x72\x4f\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x72\x4f\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x72\x4f\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x72\x4f\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x72\x4f\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x72\x4f\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x72\x4f\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x72\x4f\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x72\x4f\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x72\x4f\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x72\x4f\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x72\x4f\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x72\x4f\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x72\x4f\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x72\x4f\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x72\x4f\x42\x68"; - } // end switch(key) - case 0xf: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x72\x50\x41"; - case 1: // EXCLAM - return "\x05\x4b\x72\x50\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x72\x50\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x72\x50\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x72\x50\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x72\x50\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x72\x50\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x72\x50\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x72\x50\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x72\x50\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x72\x50\x43"; - case 11: // MINUS - return "\x04\x4b\x72\x50\x44"; - case 12: // PERIOD - return "\x04\x4b\x72\x50\x45"; - case 13: // SLASH - return "\x04\x4b\x72\x50\x46"; - case 14: // 0 - return "\x04\x4b\x72\x50\x47"; - case 15: // 1 - return "\x04\x4b\x72\x50\x48"; - case 16: // 2 - return "\x04\x4b\x72\x50\x49"; - case 17: // 3 - return "\x04\x4b\x72\x50\x4a"; - case 18: // 4 - return "\x04\x4b\x72\x50\x4b"; - case 19: // 5 - return "\x04\x4b\x72\x50\x4c"; - case 20: // 6 - return "\x04\x4b\x72\x50\x4d"; - case 21: // 7 - return "\x04\x4b\x72\x50\x4e"; - case 22: // 8 - return "\x04\x4b\x72\x50\x4f"; - case 23: // 9 - return "\x04\x4b\x72\x50\x50"; - case 24: // COLON - return "\x05\x4b\x72\x50\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x72\x50\x51"; - case 26: // LESS - return "\x05\x4b\x72\x50\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x72\x50\x52"; - case 28: // GREATER - return "\x05\x4b\x72\x50\x42\x75"; - case 29: // AT - return "\x05\x4b\x72\x50\x42\x76"; - case 30: // A - return "\x04\x4b\x72\x50\x53"; - case 31: // B - return "\x04\x4b\x72\x50\x54"; - case 32: // C - return "\x04\x4b\x72\x50\x55"; - case 33: // D - return "\x04\x4b\x72\x50\x56"; - case 34: // E - return "\x04\x4b\x72\x50\x57"; - case 35: // F - return "\x04\x4b\x72\x50\x58"; - case 36: // G - return "\x04\x4b\x72\x50\x59"; - case 37: // H - return "\x04\x4b\x72\x50\x5a"; - case 38: // I - return "\x04\x4b\x72\x50\x61"; - case 39: // J - return "\x04\x4b\x72\x50\x62"; - case 40: // K - return "\x04\x4b\x72\x50\x63"; - case 41: // L - return "\x04\x4b\x72\x50\x64"; - case 42: // M - return "\x04\x4b\x72\x50\x65"; - case 43: // N - return "\x04\x4b\x72\x50\x66"; - case 44: // O - return "\x04\x4b\x72\x50\x67"; - case 45: // P - return "\x04\x4b\x72\x50\x68"; - case 46: // Q - return "\x04\x4b\x72\x50\x69"; - case 47: // R - return "\x04\x4b\x72\x50\x6a"; - case 48: // S - return "\x04\x4b\x72\x50\x6b"; - case 49: // T - return "\x04\x4b\x72\x50\x6c"; - case 50: // U - return "\x04\x4b\x72\x50\x6d"; - case 51: // V - return "\x04\x4b\x72\x50\x6e"; - case 52: // W - return "\x04\x4b\x72\x50\x6f"; - case 53: // X - return "\x04\x4b\x72\x50\x70"; - case 54: // Y - return "\x04\x4b\x72\x50\x71"; - case 55: // Z - return "\x04\x4b\x72\x50\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x72\x50\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x72\x50\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x72\x50\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x72\x50\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x72\x50\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x72\x50\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x72\x50\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x72\x50\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x72\x50\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x72\x50\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x72\x50\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x72\x50\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x72\x50\x42\x30"; - case 69: // AE - return "\x05\x4b\x72\x50\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x72\x50\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x72\x50\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x72\x50\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x72\x50\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x72\x50\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x72\x50\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x72\x50\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x72\x50\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x72\x50\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x72\x50\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x72\x50\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x72\x50\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x72\x50\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x72\x50\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x72\x50\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x72\x50\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x72\x50\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x72\x50\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x72\x50\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x72\x50\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x72\x50\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x72\x50\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x72\x50\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x72\x50\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x72\x50\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x72\x50\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x72\x50\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x72\x50\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x72\x50\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x72\x50\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x72\x50\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x72\x50\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x72\x50\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x72\x50\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x72\x50\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x72\x50\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x72\x50\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x72\x50\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x72\x50\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x72\x50\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x72\x50\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x72\x50\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x72\x50\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x72\x50\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x72\x50\x79"; - case 115: // ENTER - return "\x04\x4b\x72\x50\x7a"; - case 116: // TAB - return "\x04\x4b\x72\x50\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x72\x50\x31"; - case 118: // INSERT - return "\x04\x4b\x72\x50\x32"; - case 119: // DELETE - return "\x04\x4b\x72\x50\x33"; - case 120: // RIGHT - return "\x04\x4b\x72\x50\x34"; - case 121: // LEFT - return "\x04\x4b\x72\x50\x35"; - case 122: // DOWN - return "\x04\x4b\x72\x50\x36"; - case 123: // UP - return "\x04\x4b\x72\x50\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x72\x50\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x72\x50\x39"; - case 126: // HOME - return "\x04\x4b\x72\x50\x2e"; - case 127: // END - return "\x04\x4b\x72\x50\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x72\x50\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x72\x50\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x72\x50\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x72\x50\x5e"; - case 132: // PAUSE - return "\x04\x4b\x72\x50\x21"; - case 133: // F1 - return "\x04\x4b\x72\x50\x2f"; - case 134: // F2 - return "\x04\x4b\x72\x50\x2a"; - case 135: // F3 - return "\x04\x4b\x72\x50\x3f"; - case 136: // F4 - return "\x04\x4b\x72\x50\x26"; - case 137: // F5 - return "\x04\x4b\x72\x50\x3c"; - case 138: // F6 - return "\x04\x4b\x72\x50\x3e"; - case 139: // F7 - return "\x04\x4b\x72\x50\x28"; - case 140: // F8 - return "\x04\x4b\x72\x50\x29"; - case 141: // F9 - return "\x04\x4b\x72\x50\x5b"; - case 142: // F10 - return "\x04\x4b\x72\x50\x5d"; - case 143: // F11 - return "\x04\x4b\x72\x50\x7b"; - case 144: // F12 - return "\x04\x4b\x72\x50\x7d"; - case 145: // F13 - return "\x04\x4b\x72\x50\x40"; - case 146: // F14 - return "\x04\x4b\x72\x50\x25"; - case 147: // F15 - return "\x04\x4b\x72\x50\x24"; - case 148: // F16 - return "\x04\x4b\x72\x50\x23"; - case 149: // F17 - return "\x05\x4b\x72\x50\x42\x41"; - case 150: // F18 - return "\x05\x4b\x72\x50\x42\x42"; - case 151: // F19 - return "\x05\x4b\x72\x50\x42\x43"; - case 152: // F20 - return "\x05\x4b\x72\x50\x42\x44"; - case 153: // F21 - return "\x05\x4b\x72\x50\x42\x45"; - case 154: // F22 - return "\x05\x4b\x72\x50\x42\x46"; - case 155: // F23 - return "\x05\x4b\x72\x50\x42\x47"; - case 156: // F24 - return "\x05\x4b\x72\x50\x42\x48"; - case 157: // F25 - return "\x05\x4b\x72\x50\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x72\x50\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x72\x50\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x72\x50\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x72\x50\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x72\x50\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x72\x50\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x72\x50\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x72\x50\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x72\x50\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x72\x50\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x72\x50\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x72\x50\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x72\x50\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x72\x50\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x72\x50\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x72\x50\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x72\x50\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x72\x50\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x72\x50\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x72\x50\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x72\x50\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x72\x50\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x72\x50\x42\x68"; - } // end switch(key) - } // end switch(mods) - break; - - case 1: // PRESS - switch (mods & 0xf) { - case 0x0: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x04\x4b\x70\x41\x79"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x04\x4b\x70\x41\x30"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x4b\x70\x41\x32"; - case 119: // DELETE - return "\x04\x4b\x70\x41\x33"; - case 120: // RIGHT - return "\x04\x4b\x70\x41\x34"; - case 121: // LEFT - return "\x04\x4b\x70\x41\x35"; - case 122: // DOWN - return "\x04\x4b\x70\x41\x36"; - case 123: // UP - return "\x04\x4b\x70\x41\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x70\x41\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x70\x41\x39"; - case 126: // HOME - return "\x04\x4b\x70\x41\x2e"; - case 127: // END - return "\x04\x4b\x70\x41\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x70\x41\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x70\x41\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x70\x41\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x70\x41\x5e"; - case 132: // PAUSE - return "\x04\x4b\x70\x41\x21"; - case 133: // F1 - return "\x04\x4b\x70\x41\x2f"; - case 134: // F2 - return "\x04\x4b\x70\x41\x2a"; - case 135: // F3 - return "\x04\x4b\x70\x41\x3f"; - case 136: // F4 - return "\x04\x4b\x70\x41\x26"; - case 137: // F5 - return "\x04\x4b\x70\x41\x3c"; - case 138: // F6 - return "\x04\x4b\x70\x41\x3e"; - case 139: // F7 - return "\x04\x4b\x70\x41\x28"; - case 140: // F8 - return "\x04\x4b\x70\x41\x29"; - case 141: // F9 - return "\x04\x4b\x70\x41\x5b"; - case 142: // F10 - return "\x04\x4b\x70\x41\x5d"; - case 143: // F11 - return "\x04\x4b\x70\x41\x7b"; - case 144: // F12 - return "\x04\x4b\x70\x41\x7d"; - case 145: // F13 - return "\x04\x4b\x70\x41\x40"; - case 146: // F14 - return "\x04\x4b\x70\x41\x25"; - case 147: // F15 - return "\x04\x4b\x70\x41\x24"; - case 148: // F16 - return "\x04\x4b\x70\x41\x23"; - case 149: // F17 - return "\x05\x4b\x70\x41\x42\x41"; - case 150: // F18 - return "\x05\x4b\x70\x41\x42\x42"; - case 151: // F19 - return "\x05\x4b\x70\x41\x42\x43"; - case 152: // F20 - return "\x05\x4b\x70\x41\x42\x44"; - case 153: // F21 - return "\x05\x4b\x70\x41\x42\x45"; - case 154: // F22 - return "\x05\x4b\x70\x41\x42\x46"; - case 155: // F23 - return "\x05\x4b\x70\x41\x42\x47"; - case 156: // F24 - return "\x05\x4b\x70\x41\x42\x48"; - case 157: // F25 - return "\x05\x4b\x70\x41\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x70\x41\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x70\x41\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x70\x41\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x70\x41\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x70\x41\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x70\x41\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x70\x41\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x70\x41\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x70\x41\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x70\x41\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x70\x41\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x70\x41\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x70\x41\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x70\x41\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x70\x41\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x70\x41\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x70\x41\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x70\x41\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x70\x41\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x70\x41\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x70\x41\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x70\x41\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x70\x41\x42\x68"; - } // end switch(key) - case 0x1: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x04\x4b\x70\x42\x79"; - case 115: // ENTER - return "\x04\x4b\x70\x42\x7a"; - case 116: // TAB - return "\x04\x4b\x70\x42\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x70\x42\x31"; - case 118: // INSERT - return "\x04\x4b\x70\x42\x32"; - case 119: // DELETE - return "\x04\x4b\x70\x42\x33"; - case 120: // RIGHT - return "\x04\x4b\x70\x42\x34"; - case 121: // LEFT - return "\x04\x4b\x70\x42\x35"; - case 122: // DOWN - return "\x04\x4b\x70\x42\x36"; - case 123: // UP - return "\x04\x4b\x70\x42\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x70\x42\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x70\x42\x39"; - case 126: // HOME - return "\x04\x4b\x70\x42\x2e"; - case 127: // END - return "\x04\x4b\x70\x42\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x70\x42\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x70\x42\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x70\x42\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x70\x42\x5e"; - case 132: // PAUSE - return "\x04\x4b\x70\x42\x21"; - case 133: // F1 - return "\x04\x4b\x70\x42\x2f"; - case 134: // F2 - return "\x04\x4b\x70\x42\x2a"; - case 135: // F3 - return "\x04\x4b\x70\x42\x3f"; - case 136: // F4 - return "\x04\x4b\x70\x42\x26"; - case 137: // F5 - return "\x04\x4b\x70\x42\x3c"; - case 138: // F6 - return "\x04\x4b\x70\x42\x3e"; - case 139: // F7 - return "\x04\x4b\x70\x42\x28"; - case 140: // F8 - return "\x04\x4b\x70\x42\x29"; - case 141: // F9 - return "\x04\x4b\x70\x42\x5b"; - case 142: // F10 - return "\x04\x4b\x70\x42\x5d"; - case 143: // F11 - return "\x04\x4b\x70\x42\x7b"; - case 144: // F12 - return "\x04\x4b\x70\x42\x7d"; - case 145: // F13 - return "\x04\x4b\x70\x42\x40"; - case 146: // F14 - return "\x04\x4b\x70\x42\x25"; - case 147: // F15 - return "\x04\x4b\x70\x42\x24"; - case 148: // F16 - return "\x04\x4b\x70\x42\x23"; - case 149: // F17 - return "\x05\x4b\x70\x42\x42\x41"; - case 150: // F18 - return "\x05\x4b\x70\x42\x42\x42"; - case 151: // F19 - return "\x05\x4b\x70\x42\x42\x43"; - case 152: // F20 - return "\x05\x4b\x70\x42\x42\x44"; - case 153: // F21 - return "\x05\x4b\x70\x42\x42\x45"; - case 154: // F22 - return "\x05\x4b\x70\x42\x42\x46"; - case 155: // F23 - return "\x05\x4b\x70\x42\x42\x47"; - case 156: // F24 - return "\x05\x4b\x70\x42\x42\x48"; - case 157: // F25 - return "\x05\x4b\x70\x42\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x70\x42\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x70\x42\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x70\x42\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x70\x42\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x70\x42\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x70\x42\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x70\x42\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x70\x42\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x70\x42\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x70\x42\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x70\x42\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x70\x42\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x70\x42\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x70\x42\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x70\x42\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x70\x42\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x70\x42\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x70\x42\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x70\x42\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x70\x42\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x70\x42\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x70\x42\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x70\x42\x42\x68"; - } // end switch(key) - case 0x2: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x70\x45\x41"; - case 1: // EXCLAM - return "\x05\x4b\x70\x45\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x70\x45\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x70\x45\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x70\x45\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x70\x45\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x70\x45\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x70\x45\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x70\x45\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x70\x45\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x70\x45\x43"; - case 11: // MINUS - return "\x04\x4b\x70\x45\x44"; - case 12: // PERIOD - return "\x04\x4b\x70\x45\x45"; - case 13: // SLASH - return "\x04\x4b\x70\x45\x46"; - case 14: // 0 - return "\x04\x4b\x70\x45\x47"; - case 15: // 1 - return "\x04\x4b\x70\x45\x48"; - case 16: // 2 - return "\x04\x4b\x70\x45\x49"; - case 17: // 3 - return "\x04\x4b\x70\x45\x4a"; - case 18: // 4 - return "\x04\x4b\x70\x45\x4b"; - case 19: // 5 - return "\x04\x4b\x70\x45\x4c"; - case 20: // 6 - return "\x04\x4b\x70\x45\x4d"; - case 21: // 7 - return "\x04\x4b\x70\x45\x4e"; - case 22: // 8 - return "\x04\x4b\x70\x45\x4f"; - case 23: // 9 - return "\x04\x4b\x70\x45\x50"; - case 24: // COLON - return "\x05\x4b\x70\x45\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x70\x45\x51"; - case 26: // LESS - return "\x05\x4b\x70\x45\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x70\x45\x52"; - case 28: // GREATER - return "\x05\x4b\x70\x45\x42\x75"; - case 29: // AT - return "\x05\x4b\x70\x45\x42\x76"; - case 30: // A - return "\x04\x4b\x70\x45\x53"; - case 31: // B - return "\x04\x4b\x70\x45\x54"; - case 32: // C - return "\x04\x4b\x70\x45\x55"; - case 33: // D - return "\x04\x4b\x70\x45\x56"; - case 34: // E - return "\x04\x4b\x70\x45\x57"; - case 35: // F - return "\x04\x4b\x70\x45\x58"; - case 36: // G - return "\x04\x4b\x70\x45\x59"; - case 37: // H - return "\x04\x4b\x70\x45\x5a"; - case 38: // I - return "\x04\x4b\x70\x45\x61"; - case 39: // J - return "\x04\x4b\x70\x45\x62"; - case 40: // K - return "\x04\x4b\x70\x45\x63"; - case 41: // L - return "\x04\x4b\x70\x45\x64"; - case 42: // M - return "\x04\x4b\x70\x45\x65"; - case 43: // N - return "\x04\x4b\x70\x45\x66"; - case 44: // O - return "\x04\x4b\x70\x45\x67"; - case 45: // P - return "\x04\x4b\x70\x45\x68"; - case 46: // Q - return "\x04\x4b\x70\x45\x69"; - case 47: // R - return "\x04\x4b\x70\x45\x6a"; - case 48: // S - return "\x04\x4b\x70\x45\x6b"; - case 49: // T - return "\x04\x4b\x70\x45\x6c"; - case 50: // U - return "\x04\x4b\x70\x45\x6d"; - case 51: // V - return "\x04\x4b\x70\x45\x6e"; - case 52: // W - return "\x04\x4b\x70\x45\x6f"; - case 53: // X - return "\x04\x4b\x70\x45\x70"; - case 54: // Y - return "\x04\x4b\x70\x45\x71"; - case 55: // Z - return "\x04\x4b\x70\x45\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x70\x45\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x70\x45\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x70\x45\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x70\x45\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x70\x45\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x70\x45\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x70\x45\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x70\x45\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x70\x45\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x70\x45\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x70\x45\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x70\x45\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x70\x45\x42\x30"; - case 69: // AE - return "\x05\x4b\x70\x45\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x70\x45\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x70\x45\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x70\x45\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x70\x45\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x70\x45\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x70\x45\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x70\x45\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x70\x45\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x70\x45\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x70\x45\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x70\x45\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x70\x45\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x70\x45\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x70\x45\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x70\x45\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x70\x45\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x70\x45\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x70\x45\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x70\x45\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x70\x45\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x70\x45\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x70\x45\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x70\x45\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x70\x45\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x70\x45\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x70\x45\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x70\x45\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x70\x45\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x70\x45\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x70\x45\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x70\x45\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x70\x45\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x70\x45\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x70\x45\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x70\x45\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x70\x45\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x70\x45\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x70\x45\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x70\x45\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x70\x45\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x70\x45\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x70\x45\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x70\x45\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x70\x45\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x70\x45\x79"; - case 115: // ENTER - return "\x04\x4b\x70\x45\x7a"; - case 116: // TAB - return "\x04\x4b\x70\x45\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x70\x45\x31"; - case 118: // INSERT - return "\x04\x4b\x70\x45\x32"; - case 119: // DELETE - return "\x04\x4b\x70\x45\x33"; - case 120: // RIGHT - return "\x04\x4b\x70\x45\x34"; - case 121: // LEFT - return "\x04\x4b\x70\x45\x35"; - case 122: // DOWN - return "\x04\x4b\x70\x45\x36"; - case 123: // UP - return "\x04\x4b\x70\x45\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x70\x45\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x70\x45\x39"; - case 126: // HOME - return "\x04\x4b\x70\x45\x2e"; - case 127: // END - return "\x04\x4b\x70\x45\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x70\x45\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x70\x45\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x70\x45\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x70\x45\x5e"; - case 132: // PAUSE - return "\x04\x4b\x70\x45\x21"; - case 133: // F1 - return "\x04\x4b\x70\x45\x2f"; - case 134: // F2 - return "\x04\x4b\x70\x45\x2a"; - case 135: // F3 - return "\x04\x4b\x70\x45\x3f"; - case 136: // F4 - return "\x04\x4b\x70\x45\x26"; - case 137: // F5 - return "\x04\x4b\x70\x45\x3c"; - case 138: // F6 - return "\x04\x4b\x70\x45\x3e"; - case 139: // F7 - return "\x04\x4b\x70\x45\x28"; - case 140: // F8 - return "\x04\x4b\x70\x45\x29"; - case 141: // F9 - return "\x04\x4b\x70\x45\x5b"; - case 142: // F10 - return "\x04\x4b\x70\x45\x5d"; - case 143: // F11 - return "\x04\x4b\x70\x45\x7b"; - case 144: // F12 - return "\x04\x4b\x70\x45\x7d"; - case 145: // F13 - return "\x04\x4b\x70\x45\x40"; - case 146: // F14 - return "\x04\x4b\x70\x45\x25"; - case 147: // F15 - return "\x04\x4b\x70\x45\x24"; - case 148: // F16 - return "\x04\x4b\x70\x45\x23"; - case 149: // F17 - return "\x05\x4b\x70\x45\x42\x41"; - case 150: // F18 - return "\x05\x4b\x70\x45\x42\x42"; - case 151: // F19 - return "\x05\x4b\x70\x45\x42\x43"; - case 152: // F20 - return "\x05\x4b\x70\x45\x42\x44"; - case 153: // F21 - return "\x05\x4b\x70\x45\x42\x45"; - case 154: // F22 - return "\x05\x4b\x70\x45\x42\x46"; - case 155: // F23 - return "\x05\x4b\x70\x45\x42\x47"; - case 156: // F24 - return "\x05\x4b\x70\x45\x42\x48"; - case 157: // F25 - return "\x05\x4b\x70\x45\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x70\x45\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x70\x45\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x70\x45\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x70\x45\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x70\x45\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x70\x45\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x70\x45\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x70\x45\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x70\x45\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x70\x45\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x70\x45\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x70\x45\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x70\x45\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x70\x45\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x70\x45\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x70\x45\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x70\x45\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x70\x45\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x70\x45\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x70\x45\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x70\x45\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x70\x45\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x70\x45\x42\x68"; - } // end switch(key) - case 0x3: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x70\x46\x41"; - case 1: // EXCLAM - return "\x05\x4b\x70\x46\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x70\x46\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x70\x46\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x70\x46\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x70\x46\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x70\x46\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x70\x46\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x70\x46\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x70\x46\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x70\x46\x43"; - case 11: // MINUS - return "\x04\x4b\x70\x46\x44"; - case 12: // PERIOD - return "\x04\x4b\x70\x46\x45"; - case 13: // SLASH - return "\x04\x4b\x70\x46\x46"; - case 14: // 0 - return "\x04\x4b\x70\x46\x47"; - case 15: // 1 - return "\x04\x4b\x70\x46\x48"; - case 16: // 2 - return "\x04\x4b\x70\x46\x49"; - case 17: // 3 - return "\x04\x4b\x70\x46\x4a"; - case 18: // 4 - return "\x04\x4b\x70\x46\x4b"; - case 19: // 5 - return "\x04\x4b\x70\x46\x4c"; - case 20: // 6 - return "\x04\x4b\x70\x46\x4d"; - case 21: // 7 - return "\x04\x4b\x70\x46\x4e"; - case 22: // 8 - return "\x04\x4b\x70\x46\x4f"; - case 23: // 9 - return "\x04\x4b\x70\x46\x50"; - case 24: // COLON - return "\x05\x4b\x70\x46\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x70\x46\x51"; - case 26: // LESS - return "\x05\x4b\x70\x46\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x70\x46\x52"; - case 28: // GREATER - return "\x05\x4b\x70\x46\x42\x75"; - case 29: // AT - return "\x05\x4b\x70\x46\x42\x76"; - case 30: // A - return "\x04\x4b\x70\x46\x53"; - case 31: // B - return "\x04\x4b\x70\x46\x54"; - case 32: // C - return "\x04\x4b\x70\x46\x55"; - case 33: // D - return "\x04\x4b\x70\x46\x56"; - case 34: // E - return "\x04\x4b\x70\x46\x57"; - case 35: // F - return "\x04\x4b\x70\x46\x58"; - case 36: // G - return "\x04\x4b\x70\x46\x59"; - case 37: // H - return "\x04\x4b\x70\x46\x5a"; - case 38: // I - return "\x04\x4b\x70\x46\x61"; - case 39: // J - return "\x04\x4b\x70\x46\x62"; - case 40: // K - return "\x04\x4b\x70\x46\x63"; - case 41: // L - return "\x04\x4b\x70\x46\x64"; - case 42: // M - return "\x04\x4b\x70\x46\x65"; - case 43: // N - return "\x04\x4b\x70\x46\x66"; - case 44: // O - return "\x04\x4b\x70\x46\x67"; - case 45: // P - return "\x04\x4b\x70\x46\x68"; - case 46: // Q - return "\x04\x4b\x70\x46\x69"; - case 47: // R - return "\x04\x4b\x70\x46\x6a"; - case 48: // S - return "\x04\x4b\x70\x46\x6b"; - case 49: // T - return "\x04\x4b\x70\x46\x6c"; - case 50: // U - return "\x04\x4b\x70\x46\x6d"; - case 51: // V - return "\x04\x4b\x70\x46\x6e"; - case 52: // W - return "\x04\x4b\x70\x46\x6f"; - case 53: // X - return "\x04\x4b\x70\x46\x70"; - case 54: // Y - return "\x04\x4b\x70\x46\x71"; - case 55: // Z - return "\x04\x4b\x70\x46\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x70\x46\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x70\x46\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x70\x46\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x70\x46\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x70\x46\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x70\x46\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x70\x46\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x70\x46\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x70\x46\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x70\x46\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x70\x46\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x70\x46\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x70\x46\x42\x30"; - case 69: // AE - return "\x05\x4b\x70\x46\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x70\x46\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x70\x46\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x70\x46\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x70\x46\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x70\x46\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x70\x46\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x70\x46\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x70\x46\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x70\x46\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x70\x46\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x70\x46\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x70\x46\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x70\x46\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x70\x46\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x70\x46\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x70\x46\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x70\x46\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x70\x46\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x70\x46\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x70\x46\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x70\x46\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x70\x46\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x70\x46\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x70\x46\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x70\x46\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x70\x46\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x70\x46\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x70\x46\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x70\x46\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x70\x46\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x70\x46\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x70\x46\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x70\x46\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x70\x46\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x70\x46\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x70\x46\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x70\x46\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x70\x46\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x70\x46\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x70\x46\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x70\x46\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x70\x46\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x70\x46\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x70\x46\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x70\x46\x79"; - case 115: // ENTER - return "\x04\x4b\x70\x46\x7a"; - case 116: // TAB - return "\x04\x4b\x70\x46\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x70\x46\x31"; - case 118: // INSERT - return "\x04\x4b\x70\x46\x32"; - case 119: // DELETE - return "\x04\x4b\x70\x46\x33"; - case 120: // RIGHT - return "\x04\x4b\x70\x46\x34"; - case 121: // LEFT - return "\x04\x4b\x70\x46\x35"; - case 122: // DOWN - return "\x04\x4b\x70\x46\x36"; - case 123: // UP - return "\x04\x4b\x70\x46\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x70\x46\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x70\x46\x39"; - case 126: // HOME - return "\x04\x4b\x70\x46\x2e"; - case 127: // END - return "\x04\x4b\x70\x46\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x70\x46\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x70\x46\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x70\x46\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x70\x46\x5e"; - case 132: // PAUSE - return "\x04\x4b\x70\x46\x21"; - case 133: // F1 - return "\x04\x4b\x70\x46\x2f"; - case 134: // F2 - return "\x04\x4b\x70\x46\x2a"; - case 135: // F3 - return "\x04\x4b\x70\x46\x3f"; - case 136: // F4 - return "\x04\x4b\x70\x46\x26"; - case 137: // F5 - return "\x04\x4b\x70\x46\x3c"; - case 138: // F6 - return "\x04\x4b\x70\x46\x3e"; - case 139: // F7 - return "\x04\x4b\x70\x46\x28"; - case 140: // F8 - return "\x04\x4b\x70\x46\x29"; - case 141: // F9 - return "\x04\x4b\x70\x46\x5b"; - case 142: // F10 - return "\x04\x4b\x70\x46\x5d"; - case 143: // F11 - return "\x04\x4b\x70\x46\x7b"; - case 144: // F12 - return "\x04\x4b\x70\x46\x7d"; - case 145: // F13 - return "\x04\x4b\x70\x46\x40"; - case 146: // F14 - return "\x04\x4b\x70\x46\x25"; - case 147: // F15 - return "\x04\x4b\x70\x46\x24"; - case 148: // F16 - return "\x04\x4b\x70\x46\x23"; - case 149: // F17 - return "\x05\x4b\x70\x46\x42\x41"; - case 150: // F18 - return "\x05\x4b\x70\x46\x42\x42"; - case 151: // F19 - return "\x05\x4b\x70\x46\x42\x43"; - case 152: // F20 - return "\x05\x4b\x70\x46\x42\x44"; - case 153: // F21 - return "\x05\x4b\x70\x46\x42\x45"; - case 154: // F22 - return "\x05\x4b\x70\x46\x42\x46"; - case 155: // F23 - return "\x05\x4b\x70\x46\x42\x47"; - case 156: // F24 - return "\x05\x4b\x70\x46\x42\x48"; - case 157: // F25 - return "\x05\x4b\x70\x46\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x70\x46\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x70\x46\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x70\x46\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x70\x46\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x70\x46\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x70\x46\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x70\x46\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x70\x46\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x70\x46\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x70\x46\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x70\x46\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x70\x46\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x70\x46\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x70\x46\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x70\x46\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x70\x46\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x70\x46\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x70\x46\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x70\x46\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x70\x46\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x70\x46\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x70\x46\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x70\x46\x42\x68"; - } // end switch(key) - case 0x4: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x70\x43\x41"; - case 1: // EXCLAM - return "\x05\x4b\x70\x43\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x70\x43\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x70\x43\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x70\x43\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x70\x43\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x70\x43\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x70\x43\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x70\x43\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x70\x43\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x70\x43\x43"; - case 11: // MINUS - return "\x04\x4b\x70\x43\x44"; - case 12: // PERIOD - return "\x04\x4b\x70\x43\x45"; - case 13: // SLASH - return "\x04\x4b\x70\x43\x46"; - case 14: // 0 - return "\x04\x4b\x70\x43\x47"; - case 15: // 1 - return "\x04\x4b\x70\x43\x48"; - case 16: // 2 - return "\x04\x4b\x70\x43\x49"; - case 17: // 3 - return "\x04\x4b\x70\x43\x4a"; - case 18: // 4 - return "\x04\x4b\x70\x43\x4b"; - case 19: // 5 - return "\x04\x4b\x70\x43\x4c"; - case 20: // 6 - return "\x04\x4b\x70\x43\x4d"; - case 21: // 7 - return "\x04\x4b\x70\x43\x4e"; - case 22: // 8 - return "\x04\x4b\x70\x43\x4f"; - case 23: // 9 - return "\x04\x4b\x70\x43\x50"; - case 24: // COLON - return "\x05\x4b\x70\x43\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x70\x43\x51"; - case 26: // LESS - return "\x05\x4b\x70\x43\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x70\x43\x52"; - case 28: // GREATER - return "\x05\x4b\x70\x43\x42\x75"; - case 29: // AT - return "\x05\x4b\x70\x43\x42\x76"; - case 30: // A - return "\x04\x4b\x70\x43\x53"; - case 31: // B - return "\x04\x4b\x70\x43\x54"; - case 32: // C - return "\x04\x4b\x70\x43\x55"; - case 33: // D - return "\x04\x4b\x70\x43\x56"; - case 34: // E - return "\x04\x4b\x70\x43\x57"; - case 35: // F - return "\x04\x4b\x70\x43\x58"; - case 36: // G - return "\x04\x4b\x70\x43\x59"; - case 37: // H - return "\x04\x4b\x70\x43\x5a"; - case 38: // I - return "\x04\x4b\x70\x43\x61"; - case 39: // J - return "\x04\x4b\x70\x43\x62"; - case 40: // K - return "\x04\x4b\x70\x43\x63"; - case 41: // L - return "\x04\x4b\x70\x43\x64"; - case 42: // M - return "\x04\x4b\x70\x43\x65"; - case 43: // N - return "\x04\x4b\x70\x43\x66"; - case 44: // O - return "\x04\x4b\x70\x43\x67"; - case 45: // P - return "\x04\x4b\x70\x43\x68"; - case 46: // Q - return "\x04\x4b\x70\x43\x69"; - case 47: // R - return "\x04\x4b\x70\x43\x6a"; - case 48: // S - return "\x04\x4b\x70\x43\x6b"; - case 49: // T - return "\x04\x4b\x70\x43\x6c"; - case 50: // U - return "\x04\x4b\x70\x43\x6d"; - case 51: // V - return "\x04\x4b\x70\x43\x6e"; - case 52: // W - return "\x04\x4b\x70\x43\x6f"; - case 53: // X - return "\x04\x4b\x70\x43\x70"; - case 54: // Y - return "\x04\x4b\x70\x43\x71"; - case 55: // Z - return "\x04\x4b\x70\x43\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x70\x43\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x70\x43\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x70\x43\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x70\x43\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x70\x43\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x70\x43\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x70\x43\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x70\x43\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x70\x43\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x70\x43\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x70\x43\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x70\x43\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x70\x43\x42\x30"; - case 69: // AE - return "\x05\x4b\x70\x43\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x70\x43\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x70\x43\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x70\x43\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x70\x43\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x70\x43\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x70\x43\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x70\x43\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x70\x43\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x70\x43\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x70\x43\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x70\x43\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x70\x43\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x70\x43\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x70\x43\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x70\x43\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x70\x43\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x70\x43\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x70\x43\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x70\x43\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x70\x43\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x70\x43\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x70\x43\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x70\x43\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x70\x43\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x70\x43\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x70\x43\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x70\x43\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x70\x43\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x70\x43\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x70\x43\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x70\x43\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x70\x43\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x70\x43\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x70\x43\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x70\x43\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x70\x43\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x70\x43\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x70\x43\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x70\x43\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x70\x43\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x70\x43\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x70\x43\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x70\x43\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x70\x43\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x70\x43\x79"; - case 115: // ENTER - return "\x04\x4b\x70\x43\x7a"; - case 116: // TAB - return "\x04\x4b\x70\x43\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x70\x43\x31"; - case 118: // INSERT - return "\x04\x4b\x70\x43\x32"; - case 119: // DELETE - return "\x04\x4b\x70\x43\x33"; - case 120: // RIGHT - return "\x04\x4b\x70\x43\x34"; - case 121: // LEFT - return "\x04\x4b\x70\x43\x35"; - case 122: // DOWN - return "\x04\x4b\x70\x43\x36"; - case 123: // UP - return "\x04\x4b\x70\x43\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x70\x43\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x70\x43\x39"; - case 126: // HOME - return "\x04\x4b\x70\x43\x2e"; - case 127: // END - return "\x04\x4b\x70\x43\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x70\x43\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x70\x43\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x70\x43\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x70\x43\x5e"; - case 132: // PAUSE - return "\x04\x4b\x70\x43\x21"; - case 133: // F1 - return "\x04\x4b\x70\x43\x2f"; - case 134: // F2 - return "\x04\x4b\x70\x43\x2a"; - case 135: // F3 - return "\x04\x4b\x70\x43\x3f"; - case 136: // F4 - return "\x04\x4b\x70\x43\x26"; - case 137: // F5 - return "\x04\x4b\x70\x43\x3c"; - case 138: // F6 - return "\x04\x4b\x70\x43\x3e"; - case 139: // F7 - return "\x04\x4b\x70\x43\x28"; - case 140: // F8 - return "\x04\x4b\x70\x43\x29"; - case 141: // F9 - return "\x04\x4b\x70\x43\x5b"; - case 142: // F10 - return "\x04\x4b\x70\x43\x5d"; - case 143: // F11 - return "\x04\x4b\x70\x43\x7b"; - case 144: // F12 - return "\x04\x4b\x70\x43\x7d"; - case 145: // F13 - return "\x04\x4b\x70\x43\x40"; - case 146: // F14 - return "\x04\x4b\x70\x43\x25"; - case 147: // F15 - return "\x04\x4b\x70\x43\x24"; - case 148: // F16 - return "\x04\x4b\x70\x43\x23"; - case 149: // F17 - return "\x05\x4b\x70\x43\x42\x41"; - case 150: // F18 - return "\x05\x4b\x70\x43\x42\x42"; - case 151: // F19 - return "\x05\x4b\x70\x43\x42\x43"; - case 152: // F20 - return "\x05\x4b\x70\x43\x42\x44"; - case 153: // F21 - return "\x05\x4b\x70\x43\x42\x45"; - case 154: // F22 - return "\x05\x4b\x70\x43\x42\x46"; - case 155: // F23 - return "\x05\x4b\x70\x43\x42\x47"; - case 156: // F24 - return "\x05\x4b\x70\x43\x42\x48"; - case 157: // F25 - return "\x05\x4b\x70\x43\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x70\x43\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x70\x43\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x70\x43\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x70\x43\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x70\x43\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x70\x43\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x70\x43\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x70\x43\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x70\x43\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x70\x43\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x70\x43\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x70\x43\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x70\x43\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x70\x43\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x70\x43\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x70\x43\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x70\x43\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x70\x43\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x70\x43\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x70\x43\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x70\x43\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x70\x43\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x70\x43\x42\x68"; - } // end switch(key) - case 0x5: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x70\x44\x41"; - case 1: // EXCLAM - return "\x05\x4b\x70\x44\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x70\x44\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x70\x44\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x70\x44\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x70\x44\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x70\x44\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x70\x44\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x70\x44\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x70\x44\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x70\x44\x43"; - case 11: // MINUS - return "\x04\x4b\x70\x44\x44"; - case 12: // PERIOD - return "\x04\x4b\x70\x44\x45"; - case 13: // SLASH - return "\x04\x4b\x70\x44\x46"; - case 14: // 0 - return "\x04\x4b\x70\x44\x47"; - case 15: // 1 - return "\x04\x4b\x70\x44\x48"; - case 16: // 2 - return "\x04\x4b\x70\x44\x49"; - case 17: // 3 - return "\x04\x4b\x70\x44\x4a"; - case 18: // 4 - return "\x04\x4b\x70\x44\x4b"; - case 19: // 5 - return "\x04\x4b\x70\x44\x4c"; - case 20: // 6 - return "\x04\x4b\x70\x44\x4d"; - case 21: // 7 - return "\x04\x4b\x70\x44\x4e"; - case 22: // 8 - return "\x04\x4b\x70\x44\x4f"; - case 23: // 9 - return "\x04\x4b\x70\x44\x50"; - case 24: // COLON - return "\x05\x4b\x70\x44\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x70\x44\x51"; - case 26: // LESS - return "\x05\x4b\x70\x44\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x70\x44\x52"; - case 28: // GREATER - return "\x05\x4b\x70\x44\x42\x75"; - case 29: // AT - return "\x05\x4b\x70\x44\x42\x76"; - case 30: // A - return "\x04\x4b\x70\x44\x53"; - case 31: // B - return "\x04\x4b\x70\x44\x54"; - case 32: // C - return "\x04\x4b\x70\x44\x55"; - case 33: // D - return "\x04\x4b\x70\x44\x56"; - case 34: // E - return "\x04\x4b\x70\x44\x57"; - case 35: // F - return "\x04\x4b\x70\x44\x58"; - case 36: // G - return "\x04\x4b\x70\x44\x59"; - case 37: // H - return "\x04\x4b\x70\x44\x5a"; - case 38: // I - return "\x04\x4b\x70\x44\x61"; - case 39: // J - return "\x04\x4b\x70\x44\x62"; - case 40: // K - return "\x04\x4b\x70\x44\x63"; - case 41: // L - return "\x04\x4b\x70\x44\x64"; - case 42: // M - return "\x04\x4b\x70\x44\x65"; - case 43: // N - return "\x04\x4b\x70\x44\x66"; - case 44: // O - return "\x04\x4b\x70\x44\x67"; - case 45: // P - return "\x04\x4b\x70\x44\x68"; - case 46: // Q - return "\x04\x4b\x70\x44\x69"; - case 47: // R - return "\x04\x4b\x70\x44\x6a"; - case 48: // S - return "\x04\x4b\x70\x44\x6b"; - case 49: // T - return "\x04\x4b\x70\x44\x6c"; - case 50: // U - return "\x04\x4b\x70\x44\x6d"; - case 51: // V - return "\x04\x4b\x70\x44\x6e"; - case 52: // W - return "\x04\x4b\x70\x44\x6f"; - case 53: // X - return "\x04\x4b\x70\x44\x70"; - case 54: // Y - return "\x04\x4b\x70\x44\x71"; - case 55: // Z - return "\x04\x4b\x70\x44\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x70\x44\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x70\x44\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x70\x44\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x70\x44\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x70\x44\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x70\x44\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x70\x44\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x70\x44\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x70\x44\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x70\x44\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x70\x44\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x70\x44\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x70\x44\x42\x30"; - case 69: // AE - return "\x05\x4b\x70\x44\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x70\x44\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x70\x44\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x70\x44\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x70\x44\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x70\x44\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x70\x44\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x70\x44\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x70\x44\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x70\x44\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x70\x44\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x70\x44\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x70\x44\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x70\x44\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x70\x44\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x70\x44\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x70\x44\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x70\x44\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x70\x44\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x70\x44\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x70\x44\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x70\x44\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x70\x44\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x70\x44\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x70\x44\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x70\x44\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x70\x44\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x70\x44\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x70\x44\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x70\x44\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x70\x44\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x70\x44\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x70\x44\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x70\x44\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x70\x44\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x70\x44\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x70\x44\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x70\x44\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x70\x44\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x70\x44\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x70\x44\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x70\x44\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x70\x44\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x70\x44\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x70\x44\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x70\x44\x79"; - case 115: // ENTER - return "\x04\x4b\x70\x44\x7a"; - case 116: // TAB - return "\x04\x4b\x70\x44\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x70\x44\x31"; - case 118: // INSERT - return "\x04\x4b\x70\x44\x32"; - case 119: // DELETE - return "\x04\x4b\x70\x44\x33"; - case 120: // RIGHT - return "\x04\x4b\x70\x44\x34"; - case 121: // LEFT - return "\x04\x4b\x70\x44\x35"; - case 122: // DOWN - return "\x04\x4b\x70\x44\x36"; - case 123: // UP - return "\x04\x4b\x70\x44\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x70\x44\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x70\x44\x39"; - case 126: // HOME - return "\x04\x4b\x70\x44\x2e"; - case 127: // END - return "\x04\x4b\x70\x44\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x70\x44\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x70\x44\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x70\x44\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x70\x44\x5e"; - case 132: // PAUSE - return "\x04\x4b\x70\x44\x21"; - case 133: // F1 - return "\x04\x4b\x70\x44\x2f"; - case 134: // F2 - return "\x04\x4b\x70\x44\x2a"; - case 135: // F3 - return "\x04\x4b\x70\x44\x3f"; - case 136: // F4 - return "\x04\x4b\x70\x44\x26"; - case 137: // F5 - return "\x04\x4b\x70\x44\x3c"; - case 138: // F6 - return "\x04\x4b\x70\x44\x3e"; - case 139: // F7 - return "\x04\x4b\x70\x44\x28"; - case 140: // F8 - return "\x04\x4b\x70\x44\x29"; - case 141: // F9 - return "\x04\x4b\x70\x44\x5b"; - case 142: // F10 - return "\x04\x4b\x70\x44\x5d"; - case 143: // F11 - return "\x04\x4b\x70\x44\x7b"; - case 144: // F12 - return "\x04\x4b\x70\x44\x7d"; - case 145: // F13 - return "\x04\x4b\x70\x44\x40"; - case 146: // F14 - return "\x04\x4b\x70\x44\x25"; - case 147: // F15 - return "\x04\x4b\x70\x44\x24"; - case 148: // F16 - return "\x04\x4b\x70\x44\x23"; - case 149: // F17 - return "\x05\x4b\x70\x44\x42\x41"; - case 150: // F18 - return "\x05\x4b\x70\x44\x42\x42"; - case 151: // F19 - return "\x05\x4b\x70\x44\x42\x43"; - case 152: // F20 - return "\x05\x4b\x70\x44\x42\x44"; - case 153: // F21 - return "\x05\x4b\x70\x44\x42\x45"; - case 154: // F22 - return "\x05\x4b\x70\x44\x42\x46"; - case 155: // F23 - return "\x05\x4b\x70\x44\x42\x47"; - case 156: // F24 - return "\x05\x4b\x70\x44\x42\x48"; - case 157: // F25 - return "\x05\x4b\x70\x44\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x70\x44\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x70\x44\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x70\x44\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x70\x44\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x70\x44\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x70\x44\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x70\x44\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x70\x44\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x70\x44\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x70\x44\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x70\x44\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x70\x44\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x70\x44\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x70\x44\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x70\x44\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x70\x44\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x70\x44\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x70\x44\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x70\x44\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x70\x44\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x70\x44\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x70\x44\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x70\x44\x42\x68"; - } // end switch(key) - case 0x6: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x70\x47\x41"; - case 1: // EXCLAM - return "\x05\x4b\x70\x47\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x70\x47\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x70\x47\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x70\x47\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x70\x47\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x70\x47\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x70\x47\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x70\x47\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x70\x47\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x70\x47\x43"; - case 11: // MINUS - return "\x04\x4b\x70\x47\x44"; - case 12: // PERIOD - return "\x04\x4b\x70\x47\x45"; - case 13: // SLASH - return "\x04\x4b\x70\x47\x46"; - case 14: // 0 - return "\x04\x4b\x70\x47\x47"; - case 15: // 1 - return "\x04\x4b\x70\x47\x48"; - case 16: // 2 - return "\x04\x4b\x70\x47\x49"; - case 17: // 3 - return "\x04\x4b\x70\x47\x4a"; - case 18: // 4 - return "\x04\x4b\x70\x47\x4b"; - case 19: // 5 - return "\x04\x4b\x70\x47\x4c"; - case 20: // 6 - return "\x04\x4b\x70\x47\x4d"; - case 21: // 7 - return "\x04\x4b\x70\x47\x4e"; - case 22: // 8 - return "\x04\x4b\x70\x47\x4f"; - case 23: // 9 - return "\x04\x4b\x70\x47\x50"; - case 24: // COLON - return "\x05\x4b\x70\x47\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x70\x47\x51"; - case 26: // LESS - return "\x05\x4b\x70\x47\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x70\x47\x52"; - case 28: // GREATER - return "\x05\x4b\x70\x47\x42\x75"; - case 29: // AT - return "\x05\x4b\x70\x47\x42\x76"; - case 30: // A - return "\x04\x4b\x70\x47\x53"; - case 31: // B - return "\x04\x4b\x70\x47\x54"; - case 32: // C - return "\x04\x4b\x70\x47\x55"; - case 33: // D - return "\x04\x4b\x70\x47\x56"; - case 34: // E - return "\x04\x4b\x70\x47\x57"; - case 35: // F - return "\x04\x4b\x70\x47\x58"; - case 36: // G - return "\x04\x4b\x70\x47\x59"; - case 37: // H - return "\x04\x4b\x70\x47\x5a"; - case 38: // I - return "\x04\x4b\x70\x47\x61"; - case 39: // J - return "\x04\x4b\x70\x47\x62"; - case 40: // K - return "\x04\x4b\x70\x47\x63"; - case 41: // L - return "\x04\x4b\x70\x47\x64"; - case 42: // M - return "\x04\x4b\x70\x47\x65"; - case 43: // N - return "\x04\x4b\x70\x47\x66"; - case 44: // O - return "\x04\x4b\x70\x47\x67"; - case 45: // P - return "\x04\x4b\x70\x47\x68"; - case 46: // Q - return "\x04\x4b\x70\x47\x69"; - case 47: // R - return "\x04\x4b\x70\x47\x6a"; - case 48: // S - return "\x04\x4b\x70\x47\x6b"; - case 49: // T - return "\x04\x4b\x70\x47\x6c"; - case 50: // U - return "\x04\x4b\x70\x47\x6d"; - case 51: // V - return "\x04\x4b\x70\x47\x6e"; - case 52: // W - return "\x04\x4b\x70\x47\x6f"; - case 53: // X - return "\x04\x4b\x70\x47\x70"; - case 54: // Y - return "\x04\x4b\x70\x47\x71"; - case 55: // Z - return "\x04\x4b\x70\x47\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x70\x47\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x70\x47\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x70\x47\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x70\x47\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x70\x47\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x70\x47\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x70\x47\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x70\x47\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x70\x47\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x70\x47\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x70\x47\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x70\x47\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x70\x47\x42\x30"; - case 69: // AE - return "\x05\x4b\x70\x47\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x70\x47\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x70\x47\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x70\x47\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x70\x47\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x70\x47\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x70\x47\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x70\x47\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x70\x47\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x70\x47\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x70\x47\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x70\x47\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x70\x47\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x70\x47\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x70\x47\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x70\x47\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x70\x47\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x70\x47\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x70\x47\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x70\x47\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x70\x47\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x70\x47\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x70\x47\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x70\x47\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x70\x47\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x70\x47\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x70\x47\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x70\x47\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x70\x47\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x70\x47\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x70\x47\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x70\x47\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x70\x47\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x70\x47\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x70\x47\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x70\x47\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x70\x47\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x70\x47\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x70\x47\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x70\x47\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x70\x47\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x70\x47\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x70\x47\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x70\x47\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x70\x47\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x70\x47\x79"; - case 115: // ENTER - return "\x04\x4b\x70\x47\x7a"; - case 116: // TAB - return "\x04\x4b\x70\x47\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x70\x47\x31"; - case 118: // INSERT - return "\x04\x4b\x70\x47\x32"; - case 119: // DELETE - return "\x04\x4b\x70\x47\x33"; - case 120: // RIGHT - return "\x04\x4b\x70\x47\x34"; - case 121: // LEFT - return "\x04\x4b\x70\x47\x35"; - case 122: // DOWN - return "\x04\x4b\x70\x47\x36"; - case 123: // UP - return "\x04\x4b\x70\x47\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x70\x47\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x70\x47\x39"; - case 126: // HOME - return "\x04\x4b\x70\x47\x2e"; - case 127: // END - return "\x04\x4b\x70\x47\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x70\x47\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x70\x47\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x70\x47\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x70\x47\x5e"; - case 132: // PAUSE - return "\x04\x4b\x70\x47\x21"; - case 133: // F1 - return "\x04\x4b\x70\x47\x2f"; - case 134: // F2 - return "\x04\x4b\x70\x47\x2a"; - case 135: // F3 - return "\x04\x4b\x70\x47\x3f"; - case 136: // F4 - return "\x04\x4b\x70\x47\x26"; - case 137: // F5 - return "\x04\x4b\x70\x47\x3c"; - case 138: // F6 - return "\x04\x4b\x70\x47\x3e"; - case 139: // F7 - return "\x04\x4b\x70\x47\x28"; - case 140: // F8 - return "\x04\x4b\x70\x47\x29"; - case 141: // F9 - return "\x04\x4b\x70\x47\x5b"; - case 142: // F10 - return "\x04\x4b\x70\x47\x5d"; - case 143: // F11 - return "\x04\x4b\x70\x47\x7b"; - case 144: // F12 - return "\x04\x4b\x70\x47\x7d"; - case 145: // F13 - return "\x04\x4b\x70\x47\x40"; - case 146: // F14 - return "\x04\x4b\x70\x47\x25"; - case 147: // F15 - return "\x04\x4b\x70\x47\x24"; - case 148: // F16 - return "\x04\x4b\x70\x47\x23"; - case 149: // F17 - return "\x05\x4b\x70\x47\x42\x41"; - case 150: // F18 - return "\x05\x4b\x70\x47\x42\x42"; - case 151: // F19 - return "\x05\x4b\x70\x47\x42\x43"; - case 152: // F20 - return "\x05\x4b\x70\x47\x42\x44"; - case 153: // F21 - return "\x05\x4b\x70\x47\x42\x45"; - case 154: // F22 - return "\x05\x4b\x70\x47\x42\x46"; - case 155: // F23 - return "\x05\x4b\x70\x47\x42\x47"; - case 156: // F24 - return "\x05\x4b\x70\x47\x42\x48"; - case 157: // F25 - return "\x05\x4b\x70\x47\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x70\x47\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x70\x47\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x70\x47\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x70\x47\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x70\x47\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x70\x47\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x70\x47\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x70\x47\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x70\x47\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x70\x47\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x70\x47\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x70\x47\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x70\x47\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x70\x47\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x70\x47\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x70\x47\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x70\x47\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x70\x47\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x70\x47\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x70\x47\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x70\x47\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x70\x47\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x70\x47\x42\x68"; - } // end switch(key) - case 0x7: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x70\x48\x41"; - case 1: // EXCLAM - return "\x05\x4b\x70\x48\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x70\x48\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x70\x48\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x70\x48\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x70\x48\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x70\x48\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x70\x48\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x70\x48\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x70\x48\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x70\x48\x43"; - case 11: // MINUS - return "\x04\x4b\x70\x48\x44"; - case 12: // PERIOD - return "\x04\x4b\x70\x48\x45"; - case 13: // SLASH - return "\x04\x4b\x70\x48\x46"; - case 14: // 0 - return "\x04\x4b\x70\x48\x47"; - case 15: // 1 - return "\x04\x4b\x70\x48\x48"; - case 16: // 2 - return "\x04\x4b\x70\x48\x49"; - case 17: // 3 - return "\x04\x4b\x70\x48\x4a"; - case 18: // 4 - return "\x04\x4b\x70\x48\x4b"; - case 19: // 5 - return "\x04\x4b\x70\x48\x4c"; - case 20: // 6 - return "\x04\x4b\x70\x48\x4d"; - case 21: // 7 - return "\x04\x4b\x70\x48\x4e"; - case 22: // 8 - return "\x04\x4b\x70\x48\x4f"; - case 23: // 9 - return "\x04\x4b\x70\x48\x50"; - case 24: // COLON - return "\x05\x4b\x70\x48\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x70\x48\x51"; - case 26: // LESS - return "\x05\x4b\x70\x48\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x70\x48\x52"; - case 28: // GREATER - return "\x05\x4b\x70\x48\x42\x75"; - case 29: // AT - return "\x05\x4b\x70\x48\x42\x76"; - case 30: // A - return "\x04\x4b\x70\x48\x53"; - case 31: // B - return "\x04\x4b\x70\x48\x54"; - case 32: // C - return "\x04\x4b\x70\x48\x55"; - case 33: // D - return "\x04\x4b\x70\x48\x56"; - case 34: // E - return "\x04\x4b\x70\x48\x57"; - case 35: // F - return "\x04\x4b\x70\x48\x58"; - case 36: // G - return "\x04\x4b\x70\x48\x59"; - case 37: // H - return "\x04\x4b\x70\x48\x5a"; - case 38: // I - return "\x04\x4b\x70\x48\x61"; - case 39: // J - return "\x04\x4b\x70\x48\x62"; - case 40: // K - return "\x04\x4b\x70\x48\x63"; - case 41: // L - return "\x04\x4b\x70\x48\x64"; - case 42: // M - return "\x04\x4b\x70\x48\x65"; - case 43: // N - return "\x04\x4b\x70\x48\x66"; - case 44: // O - return "\x04\x4b\x70\x48\x67"; - case 45: // P - return "\x04\x4b\x70\x48\x68"; - case 46: // Q - return "\x04\x4b\x70\x48\x69"; - case 47: // R - return "\x04\x4b\x70\x48\x6a"; - case 48: // S - return "\x04\x4b\x70\x48\x6b"; - case 49: // T - return "\x04\x4b\x70\x48\x6c"; - case 50: // U - return "\x04\x4b\x70\x48\x6d"; - case 51: // V - return "\x04\x4b\x70\x48\x6e"; - case 52: // W - return "\x04\x4b\x70\x48\x6f"; - case 53: // X - return "\x04\x4b\x70\x48\x70"; - case 54: // Y - return "\x04\x4b\x70\x48\x71"; - case 55: // Z - return "\x04\x4b\x70\x48\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x70\x48\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x70\x48\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x70\x48\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x70\x48\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x70\x48\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x70\x48\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x70\x48\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x70\x48\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x70\x48\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x70\x48\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x70\x48\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x70\x48\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x70\x48\x42\x30"; - case 69: // AE - return "\x05\x4b\x70\x48\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x70\x48\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x70\x48\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x70\x48\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x70\x48\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x70\x48\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x70\x48\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x70\x48\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x70\x48\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x70\x48\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x70\x48\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x70\x48\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x70\x48\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x70\x48\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x70\x48\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x70\x48\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x70\x48\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x70\x48\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x70\x48\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x70\x48\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x70\x48\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x70\x48\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x70\x48\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x70\x48\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x70\x48\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x70\x48\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x70\x48\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x70\x48\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x70\x48\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x70\x48\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x70\x48\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x70\x48\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x70\x48\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x70\x48\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x70\x48\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x70\x48\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x70\x48\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x70\x48\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x70\x48\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x70\x48\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x70\x48\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x70\x48\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x70\x48\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x70\x48\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x70\x48\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x70\x48\x79"; - case 115: // ENTER - return "\x04\x4b\x70\x48\x7a"; - case 116: // TAB - return "\x04\x4b\x70\x48\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x70\x48\x31"; - case 118: // INSERT - return "\x04\x4b\x70\x48\x32"; - case 119: // DELETE - return "\x04\x4b\x70\x48\x33"; - case 120: // RIGHT - return "\x04\x4b\x70\x48\x34"; - case 121: // LEFT - return "\x04\x4b\x70\x48\x35"; - case 122: // DOWN - return "\x04\x4b\x70\x48\x36"; - case 123: // UP - return "\x04\x4b\x70\x48\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x70\x48\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x70\x48\x39"; - case 126: // HOME - return "\x04\x4b\x70\x48\x2e"; - case 127: // END - return "\x04\x4b\x70\x48\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x70\x48\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x70\x48\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x70\x48\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x70\x48\x5e"; - case 132: // PAUSE - return "\x04\x4b\x70\x48\x21"; - case 133: // F1 - return "\x04\x4b\x70\x48\x2f"; - case 134: // F2 - return "\x04\x4b\x70\x48\x2a"; - case 135: // F3 - return "\x04\x4b\x70\x48\x3f"; - case 136: // F4 - return "\x04\x4b\x70\x48\x26"; - case 137: // F5 - return "\x04\x4b\x70\x48\x3c"; - case 138: // F6 - return "\x04\x4b\x70\x48\x3e"; - case 139: // F7 - return "\x04\x4b\x70\x48\x28"; - case 140: // F8 - return "\x04\x4b\x70\x48\x29"; - case 141: // F9 - return "\x04\x4b\x70\x48\x5b"; - case 142: // F10 - return "\x04\x4b\x70\x48\x5d"; - case 143: // F11 - return "\x04\x4b\x70\x48\x7b"; - case 144: // F12 - return "\x04\x4b\x70\x48\x7d"; - case 145: // F13 - return "\x04\x4b\x70\x48\x40"; - case 146: // F14 - return "\x04\x4b\x70\x48\x25"; - case 147: // F15 - return "\x04\x4b\x70\x48\x24"; - case 148: // F16 - return "\x04\x4b\x70\x48\x23"; - case 149: // F17 - return "\x05\x4b\x70\x48\x42\x41"; - case 150: // F18 - return "\x05\x4b\x70\x48\x42\x42"; - case 151: // F19 - return "\x05\x4b\x70\x48\x42\x43"; - case 152: // F20 - return "\x05\x4b\x70\x48\x42\x44"; - case 153: // F21 - return "\x05\x4b\x70\x48\x42\x45"; - case 154: // F22 - return "\x05\x4b\x70\x48\x42\x46"; - case 155: // F23 - return "\x05\x4b\x70\x48\x42\x47"; - case 156: // F24 - return "\x05\x4b\x70\x48\x42\x48"; - case 157: // F25 - return "\x05\x4b\x70\x48\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x70\x48\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x70\x48\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x70\x48\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x70\x48\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x70\x48\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x70\x48\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x70\x48\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x70\x48\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x70\x48\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x70\x48\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x70\x48\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x70\x48\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x70\x48\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x70\x48\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x70\x48\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x70\x48\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x70\x48\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x70\x48\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x70\x48\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x70\x48\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x70\x48\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x70\x48\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x70\x48\x42\x68"; - } // end switch(key) - case 0x8: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x70\x49\x41"; - case 1: // EXCLAM - return "\x05\x4b\x70\x49\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x70\x49\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x70\x49\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x70\x49\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x70\x49\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x70\x49\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x70\x49\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x70\x49\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x70\x49\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x70\x49\x43"; - case 11: // MINUS - return "\x04\x4b\x70\x49\x44"; - case 12: // PERIOD - return "\x04\x4b\x70\x49\x45"; - case 13: // SLASH - return "\x04\x4b\x70\x49\x46"; - case 14: // 0 - return "\x04\x4b\x70\x49\x47"; - case 15: // 1 - return "\x04\x4b\x70\x49\x48"; - case 16: // 2 - return "\x04\x4b\x70\x49\x49"; - case 17: // 3 - return "\x04\x4b\x70\x49\x4a"; - case 18: // 4 - return "\x04\x4b\x70\x49\x4b"; - case 19: // 5 - return "\x04\x4b\x70\x49\x4c"; - case 20: // 6 - return "\x04\x4b\x70\x49\x4d"; - case 21: // 7 - return "\x04\x4b\x70\x49\x4e"; - case 22: // 8 - return "\x04\x4b\x70\x49\x4f"; - case 23: // 9 - return "\x04\x4b\x70\x49\x50"; - case 24: // COLON - return "\x05\x4b\x70\x49\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x70\x49\x51"; - case 26: // LESS - return "\x05\x4b\x70\x49\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x70\x49\x52"; - case 28: // GREATER - return "\x05\x4b\x70\x49\x42\x75"; - case 29: // AT - return "\x05\x4b\x70\x49\x42\x76"; - case 30: // A - return "\x04\x4b\x70\x49\x53"; - case 31: // B - return "\x04\x4b\x70\x49\x54"; - case 32: // C - return "\x04\x4b\x70\x49\x55"; - case 33: // D - return "\x04\x4b\x70\x49\x56"; - case 34: // E - return "\x04\x4b\x70\x49\x57"; - case 35: // F - return "\x04\x4b\x70\x49\x58"; - case 36: // G - return "\x04\x4b\x70\x49\x59"; - case 37: // H - return "\x04\x4b\x70\x49\x5a"; - case 38: // I - return "\x04\x4b\x70\x49\x61"; - case 39: // J - return "\x04\x4b\x70\x49\x62"; - case 40: // K - return "\x04\x4b\x70\x49\x63"; - case 41: // L - return "\x04\x4b\x70\x49\x64"; - case 42: // M - return "\x04\x4b\x70\x49\x65"; - case 43: // N - return "\x04\x4b\x70\x49\x66"; - case 44: // O - return "\x04\x4b\x70\x49\x67"; - case 45: // P - return "\x04\x4b\x70\x49\x68"; - case 46: // Q - return "\x04\x4b\x70\x49\x69"; - case 47: // R - return "\x04\x4b\x70\x49\x6a"; - case 48: // S - return "\x04\x4b\x70\x49\x6b"; - case 49: // T - return "\x04\x4b\x70\x49\x6c"; - case 50: // U - return "\x04\x4b\x70\x49\x6d"; - case 51: // V - return "\x04\x4b\x70\x49\x6e"; - case 52: // W - return "\x04\x4b\x70\x49\x6f"; - case 53: // X - return "\x04\x4b\x70\x49\x70"; - case 54: // Y - return "\x04\x4b\x70\x49\x71"; - case 55: // Z - return "\x04\x4b\x70\x49\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x70\x49\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x70\x49\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x70\x49\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x70\x49\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x70\x49\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x70\x49\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x70\x49\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x70\x49\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x70\x49\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x70\x49\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x70\x49\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x70\x49\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x70\x49\x42\x30"; - case 69: // AE - return "\x05\x4b\x70\x49\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x70\x49\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x70\x49\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x70\x49\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x70\x49\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x70\x49\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x70\x49\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x70\x49\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x70\x49\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x70\x49\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x70\x49\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x70\x49\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x70\x49\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x70\x49\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x70\x49\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x70\x49\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x70\x49\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x70\x49\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x70\x49\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x70\x49\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x70\x49\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x70\x49\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x70\x49\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x70\x49\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x70\x49\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x70\x49\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x70\x49\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x70\x49\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x70\x49\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x70\x49\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x70\x49\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x70\x49\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x70\x49\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x70\x49\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x70\x49\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x70\x49\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x70\x49\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x70\x49\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x70\x49\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x70\x49\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x70\x49\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x70\x49\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x70\x49\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x70\x49\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x70\x49\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x70\x49\x79"; - case 115: // ENTER - return "\x04\x4b\x70\x49\x7a"; - case 116: // TAB - return "\x04\x4b\x70\x49\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x70\x49\x31"; - case 118: // INSERT - return "\x04\x4b\x70\x49\x32"; - case 119: // DELETE - return "\x04\x4b\x70\x49\x33"; - case 120: // RIGHT - return "\x04\x4b\x70\x49\x34"; - case 121: // LEFT - return "\x04\x4b\x70\x49\x35"; - case 122: // DOWN - return "\x04\x4b\x70\x49\x36"; - case 123: // UP - return "\x04\x4b\x70\x49\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x70\x49\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x70\x49\x39"; - case 126: // HOME - return "\x04\x4b\x70\x49\x2e"; - case 127: // END - return "\x04\x4b\x70\x49\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x70\x49\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x70\x49\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x70\x49\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x70\x49\x5e"; - case 132: // PAUSE - return "\x04\x4b\x70\x49\x21"; - case 133: // F1 - return "\x04\x4b\x70\x49\x2f"; - case 134: // F2 - return "\x04\x4b\x70\x49\x2a"; - case 135: // F3 - return "\x04\x4b\x70\x49\x3f"; - case 136: // F4 - return "\x04\x4b\x70\x49\x26"; - case 137: // F5 - return "\x04\x4b\x70\x49\x3c"; - case 138: // F6 - return "\x04\x4b\x70\x49\x3e"; - case 139: // F7 - return "\x04\x4b\x70\x49\x28"; - case 140: // F8 - return "\x04\x4b\x70\x49\x29"; - case 141: // F9 - return "\x04\x4b\x70\x49\x5b"; - case 142: // F10 - return "\x04\x4b\x70\x49\x5d"; - case 143: // F11 - return "\x04\x4b\x70\x49\x7b"; - case 144: // F12 - return "\x04\x4b\x70\x49\x7d"; - case 145: // F13 - return "\x04\x4b\x70\x49\x40"; - case 146: // F14 - return "\x04\x4b\x70\x49\x25"; - case 147: // F15 - return "\x04\x4b\x70\x49\x24"; - case 148: // F16 - return "\x04\x4b\x70\x49\x23"; - case 149: // F17 - return "\x05\x4b\x70\x49\x42\x41"; - case 150: // F18 - return "\x05\x4b\x70\x49\x42\x42"; - case 151: // F19 - return "\x05\x4b\x70\x49\x42\x43"; - case 152: // F20 - return "\x05\x4b\x70\x49\x42\x44"; - case 153: // F21 - return "\x05\x4b\x70\x49\x42\x45"; - case 154: // F22 - return "\x05\x4b\x70\x49\x42\x46"; - case 155: // F23 - return "\x05\x4b\x70\x49\x42\x47"; - case 156: // F24 - return "\x05\x4b\x70\x49\x42\x48"; - case 157: // F25 - return "\x05\x4b\x70\x49\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x70\x49\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x70\x49\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x70\x49\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x70\x49\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x70\x49\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x70\x49\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x70\x49\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x70\x49\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x70\x49\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x70\x49\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x70\x49\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x70\x49\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x70\x49\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x70\x49\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x70\x49\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x70\x49\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x70\x49\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x70\x49\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x70\x49\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x70\x49\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x70\x49\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x70\x49\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x70\x49\x42\x68"; - } // end switch(key) - case 0x9: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x70\x4a\x41"; - case 1: // EXCLAM - return "\x05\x4b\x70\x4a\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x70\x4a\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x70\x4a\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x70\x4a\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x70\x4a\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x70\x4a\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x70\x4a\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x70\x4a\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x70\x4a\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x70\x4a\x43"; - case 11: // MINUS - return "\x04\x4b\x70\x4a\x44"; - case 12: // PERIOD - return "\x04\x4b\x70\x4a\x45"; - case 13: // SLASH - return "\x04\x4b\x70\x4a\x46"; - case 14: // 0 - return "\x04\x4b\x70\x4a\x47"; - case 15: // 1 - return "\x04\x4b\x70\x4a\x48"; - case 16: // 2 - return "\x04\x4b\x70\x4a\x49"; - case 17: // 3 - return "\x04\x4b\x70\x4a\x4a"; - case 18: // 4 - return "\x04\x4b\x70\x4a\x4b"; - case 19: // 5 - return "\x04\x4b\x70\x4a\x4c"; - case 20: // 6 - return "\x04\x4b\x70\x4a\x4d"; - case 21: // 7 - return "\x04\x4b\x70\x4a\x4e"; - case 22: // 8 - return "\x04\x4b\x70\x4a\x4f"; - case 23: // 9 - return "\x04\x4b\x70\x4a\x50"; - case 24: // COLON - return "\x05\x4b\x70\x4a\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x70\x4a\x51"; - case 26: // LESS - return "\x05\x4b\x70\x4a\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x70\x4a\x52"; - case 28: // GREATER - return "\x05\x4b\x70\x4a\x42\x75"; - case 29: // AT - return "\x05\x4b\x70\x4a\x42\x76"; - case 30: // A - return "\x04\x4b\x70\x4a\x53"; - case 31: // B - return "\x04\x4b\x70\x4a\x54"; - case 32: // C - return "\x04\x4b\x70\x4a\x55"; - case 33: // D - return "\x04\x4b\x70\x4a\x56"; - case 34: // E - return "\x04\x4b\x70\x4a\x57"; - case 35: // F - return "\x04\x4b\x70\x4a\x58"; - case 36: // G - return "\x04\x4b\x70\x4a\x59"; - case 37: // H - return "\x04\x4b\x70\x4a\x5a"; - case 38: // I - return "\x04\x4b\x70\x4a\x61"; - case 39: // J - return "\x04\x4b\x70\x4a\x62"; - case 40: // K - return "\x04\x4b\x70\x4a\x63"; - case 41: // L - return "\x04\x4b\x70\x4a\x64"; - case 42: // M - return "\x04\x4b\x70\x4a\x65"; - case 43: // N - return "\x04\x4b\x70\x4a\x66"; - case 44: // O - return "\x04\x4b\x70\x4a\x67"; - case 45: // P - return "\x04\x4b\x70\x4a\x68"; - case 46: // Q - return "\x04\x4b\x70\x4a\x69"; - case 47: // R - return "\x04\x4b\x70\x4a\x6a"; - case 48: // S - return "\x04\x4b\x70\x4a\x6b"; - case 49: // T - return "\x04\x4b\x70\x4a\x6c"; - case 50: // U - return "\x04\x4b\x70\x4a\x6d"; - case 51: // V - return "\x04\x4b\x70\x4a\x6e"; - case 52: // W - return "\x04\x4b\x70\x4a\x6f"; - case 53: // X - return "\x04\x4b\x70\x4a\x70"; - case 54: // Y - return "\x04\x4b\x70\x4a\x71"; - case 55: // Z - return "\x04\x4b\x70\x4a\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x70\x4a\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x70\x4a\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x70\x4a\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x70\x4a\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x70\x4a\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x70\x4a\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x70\x4a\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x70\x4a\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x70\x4a\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x70\x4a\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x70\x4a\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x70\x4a\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x70\x4a\x42\x30"; - case 69: // AE - return "\x05\x4b\x70\x4a\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x70\x4a\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x70\x4a\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x70\x4a\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x70\x4a\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x70\x4a\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x70\x4a\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x70\x4a\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x70\x4a\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x70\x4a\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x70\x4a\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x70\x4a\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x70\x4a\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x70\x4a\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x70\x4a\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x70\x4a\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x70\x4a\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x70\x4a\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x70\x4a\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x70\x4a\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x70\x4a\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x70\x4a\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x70\x4a\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x70\x4a\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x70\x4a\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x70\x4a\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x70\x4a\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x70\x4a\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x70\x4a\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x70\x4a\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x70\x4a\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x70\x4a\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x70\x4a\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x70\x4a\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x70\x4a\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x70\x4a\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x70\x4a\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x70\x4a\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x70\x4a\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x70\x4a\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x70\x4a\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x70\x4a\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x70\x4a\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x70\x4a\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x70\x4a\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x70\x4a\x79"; - case 115: // ENTER - return "\x04\x4b\x70\x4a\x7a"; - case 116: // TAB - return "\x04\x4b\x70\x4a\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x70\x4a\x31"; - case 118: // INSERT - return "\x04\x4b\x70\x4a\x32"; - case 119: // DELETE - return "\x04\x4b\x70\x4a\x33"; - case 120: // RIGHT - return "\x04\x4b\x70\x4a\x34"; - case 121: // LEFT - return "\x04\x4b\x70\x4a\x35"; - case 122: // DOWN - return "\x04\x4b\x70\x4a\x36"; - case 123: // UP - return "\x04\x4b\x70\x4a\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x70\x4a\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x70\x4a\x39"; - case 126: // HOME - return "\x04\x4b\x70\x4a\x2e"; - case 127: // END - return "\x04\x4b\x70\x4a\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x70\x4a\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x70\x4a\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x70\x4a\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x70\x4a\x5e"; - case 132: // PAUSE - return "\x04\x4b\x70\x4a\x21"; - case 133: // F1 - return "\x04\x4b\x70\x4a\x2f"; - case 134: // F2 - return "\x04\x4b\x70\x4a\x2a"; - case 135: // F3 - return "\x04\x4b\x70\x4a\x3f"; - case 136: // F4 - return "\x04\x4b\x70\x4a\x26"; - case 137: // F5 - return "\x04\x4b\x70\x4a\x3c"; - case 138: // F6 - return "\x04\x4b\x70\x4a\x3e"; - case 139: // F7 - return "\x04\x4b\x70\x4a\x28"; - case 140: // F8 - return "\x04\x4b\x70\x4a\x29"; - case 141: // F9 - return "\x04\x4b\x70\x4a\x5b"; - case 142: // F10 - return "\x04\x4b\x70\x4a\x5d"; - case 143: // F11 - return "\x04\x4b\x70\x4a\x7b"; - case 144: // F12 - return "\x04\x4b\x70\x4a\x7d"; - case 145: // F13 - return "\x04\x4b\x70\x4a\x40"; - case 146: // F14 - return "\x04\x4b\x70\x4a\x25"; - case 147: // F15 - return "\x04\x4b\x70\x4a\x24"; - case 148: // F16 - return "\x04\x4b\x70\x4a\x23"; - case 149: // F17 - return "\x05\x4b\x70\x4a\x42\x41"; - case 150: // F18 - return "\x05\x4b\x70\x4a\x42\x42"; - case 151: // F19 - return "\x05\x4b\x70\x4a\x42\x43"; - case 152: // F20 - return "\x05\x4b\x70\x4a\x42\x44"; - case 153: // F21 - return "\x05\x4b\x70\x4a\x42\x45"; - case 154: // F22 - return "\x05\x4b\x70\x4a\x42\x46"; - case 155: // F23 - return "\x05\x4b\x70\x4a\x42\x47"; - case 156: // F24 - return "\x05\x4b\x70\x4a\x42\x48"; - case 157: // F25 - return "\x05\x4b\x70\x4a\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x70\x4a\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x70\x4a\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x70\x4a\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x70\x4a\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x70\x4a\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x70\x4a\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x70\x4a\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x70\x4a\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x70\x4a\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x70\x4a\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x70\x4a\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x70\x4a\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x70\x4a\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x70\x4a\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x70\x4a\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x70\x4a\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x70\x4a\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x70\x4a\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x70\x4a\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x70\x4a\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x70\x4a\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x70\x4a\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x70\x4a\x42\x68"; - } // end switch(key) - case 0xa: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x70\x4d\x41"; - case 1: // EXCLAM - return "\x05\x4b\x70\x4d\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x70\x4d\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x70\x4d\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x70\x4d\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x70\x4d\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x70\x4d\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x70\x4d\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x70\x4d\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x70\x4d\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x70\x4d\x43"; - case 11: // MINUS - return "\x04\x4b\x70\x4d\x44"; - case 12: // PERIOD - return "\x04\x4b\x70\x4d\x45"; - case 13: // SLASH - return "\x04\x4b\x70\x4d\x46"; - case 14: // 0 - return "\x04\x4b\x70\x4d\x47"; - case 15: // 1 - return "\x04\x4b\x70\x4d\x48"; - case 16: // 2 - return "\x04\x4b\x70\x4d\x49"; - case 17: // 3 - return "\x04\x4b\x70\x4d\x4a"; - case 18: // 4 - return "\x04\x4b\x70\x4d\x4b"; - case 19: // 5 - return "\x04\x4b\x70\x4d\x4c"; - case 20: // 6 - return "\x04\x4b\x70\x4d\x4d"; - case 21: // 7 - return "\x04\x4b\x70\x4d\x4e"; - case 22: // 8 - return "\x04\x4b\x70\x4d\x4f"; - case 23: // 9 - return "\x04\x4b\x70\x4d\x50"; - case 24: // COLON - return "\x05\x4b\x70\x4d\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x70\x4d\x51"; - case 26: // LESS - return "\x05\x4b\x70\x4d\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x70\x4d\x52"; - case 28: // GREATER - return "\x05\x4b\x70\x4d\x42\x75"; - case 29: // AT - return "\x05\x4b\x70\x4d\x42\x76"; - case 30: // A - return "\x04\x4b\x70\x4d\x53"; - case 31: // B - return "\x04\x4b\x70\x4d\x54"; - case 32: // C - return "\x04\x4b\x70\x4d\x55"; - case 33: // D - return "\x04\x4b\x70\x4d\x56"; - case 34: // E - return "\x04\x4b\x70\x4d\x57"; - case 35: // F - return "\x04\x4b\x70\x4d\x58"; - case 36: // G - return "\x04\x4b\x70\x4d\x59"; - case 37: // H - return "\x04\x4b\x70\x4d\x5a"; - case 38: // I - return "\x04\x4b\x70\x4d\x61"; - case 39: // J - return "\x04\x4b\x70\x4d\x62"; - case 40: // K - return "\x04\x4b\x70\x4d\x63"; - case 41: // L - return "\x04\x4b\x70\x4d\x64"; - case 42: // M - return "\x04\x4b\x70\x4d\x65"; - case 43: // N - return "\x04\x4b\x70\x4d\x66"; - case 44: // O - return "\x04\x4b\x70\x4d\x67"; - case 45: // P - return "\x04\x4b\x70\x4d\x68"; - case 46: // Q - return "\x04\x4b\x70\x4d\x69"; - case 47: // R - return "\x04\x4b\x70\x4d\x6a"; - case 48: // S - return "\x04\x4b\x70\x4d\x6b"; - case 49: // T - return "\x04\x4b\x70\x4d\x6c"; - case 50: // U - return "\x04\x4b\x70\x4d\x6d"; - case 51: // V - return "\x04\x4b\x70\x4d\x6e"; - case 52: // W - return "\x04\x4b\x70\x4d\x6f"; - case 53: // X - return "\x04\x4b\x70\x4d\x70"; - case 54: // Y - return "\x04\x4b\x70\x4d\x71"; - case 55: // Z - return "\x04\x4b\x70\x4d\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x70\x4d\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x70\x4d\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x70\x4d\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x70\x4d\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x70\x4d\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x70\x4d\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x70\x4d\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x70\x4d\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x70\x4d\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x70\x4d\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x70\x4d\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x70\x4d\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x70\x4d\x42\x30"; - case 69: // AE - return "\x05\x4b\x70\x4d\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x70\x4d\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x70\x4d\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x70\x4d\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x70\x4d\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x70\x4d\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x70\x4d\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x70\x4d\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x70\x4d\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x70\x4d\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x70\x4d\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x70\x4d\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x70\x4d\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x70\x4d\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x70\x4d\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x70\x4d\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x70\x4d\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x70\x4d\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x70\x4d\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x70\x4d\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x70\x4d\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x70\x4d\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x70\x4d\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x70\x4d\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x70\x4d\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x70\x4d\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x70\x4d\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x70\x4d\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x70\x4d\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x70\x4d\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x70\x4d\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x70\x4d\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x70\x4d\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x70\x4d\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x70\x4d\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x70\x4d\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x70\x4d\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x70\x4d\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x70\x4d\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x70\x4d\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x70\x4d\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x70\x4d\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x70\x4d\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x70\x4d\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x70\x4d\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x70\x4d\x79"; - case 115: // ENTER - return "\x04\x4b\x70\x4d\x7a"; - case 116: // TAB - return "\x04\x4b\x70\x4d\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x70\x4d\x31"; - case 118: // INSERT - return "\x04\x4b\x70\x4d\x32"; - case 119: // DELETE - return "\x04\x4b\x70\x4d\x33"; - case 120: // RIGHT - return "\x04\x4b\x70\x4d\x34"; - case 121: // LEFT - return "\x04\x4b\x70\x4d\x35"; - case 122: // DOWN - return "\x04\x4b\x70\x4d\x36"; - case 123: // UP - return "\x04\x4b\x70\x4d\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x70\x4d\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x70\x4d\x39"; - case 126: // HOME - return "\x04\x4b\x70\x4d\x2e"; - case 127: // END - return "\x04\x4b\x70\x4d\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x70\x4d\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x70\x4d\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x70\x4d\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x70\x4d\x5e"; - case 132: // PAUSE - return "\x04\x4b\x70\x4d\x21"; - case 133: // F1 - return "\x04\x4b\x70\x4d\x2f"; - case 134: // F2 - return "\x04\x4b\x70\x4d\x2a"; - case 135: // F3 - return "\x04\x4b\x70\x4d\x3f"; - case 136: // F4 - return "\x04\x4b\x70\x4d\x26"; - case 137: // F5 - return "\x04\x4b\x70\x4d\x3c"; - case 138: // F6 - return "\x04\x4b\x70\x4d\x3e"; - case 139: // F7 - return "\x04\x4b\x70\x4d\x28"; - case 140: // F8 - return "\x04\x4b\x70\x4d\x29"; - case 141: // F9 - return "\x04\x4b\x70\x4d\x5b"; - case 142: // F10 - return "\x04\x4b\x70\x4d\x5d"; - case 143: // F11 - return "\x04\x4b\x70\x4d\x7b"; - case 144: // F12 - return "\x04\x4b\x70\x4d\x7d"; - case 145: // F13 - return "\x04\x4b\x70\x4d\x40"; - case 146: // F14 - return "\x04\x4b\x70\x4d\x25"; - case 147: // F15 - return "\x04\x4b\x70\x4d\x24"; - case 148: // F16 - return "\x04\x4b\x70\x4d\x23"; - case 149: // F17 - return "\x05\x4b\x70\x4d\x42\x41"; - case 150: // F18 - return "\x05\x4b\x70\x4d\x42\x42"; - case 151: // F19 - return "\x05\x4b\x70\x4d\x42\x43"; - case 152: // F20 - return "\x05\x4b\x70\x4d\x42\x44"; - case 153: // F21 - return "\x05\x4b\x70\x4d\x42\x45"; - case 154: // F22 - return "\x05\x4b\x70\x4d\x42\x46"; - case 155: // F23 - return "\x05\x4b\x70\x4d\x42\x47"; - case 156: // F24 - return "\x05\x4b\x70\x4d\x42\x48"; - case 157: // F25 - return "\x05\x4b\x70\x4d\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x70\x4d\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x70\x4d\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x70\x4d\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x70\x4d\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x70\x4d\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x70\x4d\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x70\x4d\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x70\x4d\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x70\x4d\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x70\x4d\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x70\x4d\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x70\x4d\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x70\x4d\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x70\x4d\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x70\x4d\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x70\x4d\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x70\x4d\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x70\x4d\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x70\x4d\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x70\x4d\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x70\x4d\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x70\x4d\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x70\x4d\x42\x68"; - } // end switch(key) - case 0xb: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x70\x4e\x41"; - case 1: // EXCLAM - return "\x05\x4b\x70\x4e\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x70\x4e\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x70\x4e\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x70\x4e\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x70\x4e\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x70\x4e\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x70\x4e\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x70\x4e\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x70\x4e\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x70\x4e\x43"; - case 11: // MINUS - return "\x04\x4b\x70\x4e\x44"; - case 12: // PERIOD - return "\x04\x4b\x70\x4e\x45"; - case 13: // SLASH - return "\x04\x4b\x70\x4e\x46"; - case 14: // 0 - return "\x04\x4b\x70\x4e\x47"; - case 15: // 1 - return "\x04\x4b\x70\x4e\x48"; - case 16: // 2 - return "\x04\x4b\x70\x4e\x49"; - case 17: // 3 - return "\x04\x4b\x70\x4e\x4a"; - case 18: // 4 - return "\x04\x4b\x70\x4e\x4b"; - case 19: // 5 - return "\x04\x4b\x70\x4e\x4c"; - case 20: // 6 - return "\x04\x4b\x70\x4e\x4d"; - case 21: // 7 - return "\x04\x4b\x70\x4e\x4e"; - case 22: // 8 - return "\x04\x4b\x70\x4e\x4f"; - case 23: // 9 - return "\x04\x4b\x70\x4e\x50"; - case 24: // COLON - return "\x05\x4b\x70\x4e\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x70\x4e\x51"; - case 26: // LESS - return "\x05\x4b\x70\x4e\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x70\x4e\x52"; - case 28: // GREATER - return "\x05\x4b\x70\x4e\x42\x75"; - case 29: // AT - return "\x05\x4b\x70\x4e\x42\x76"; - case 30: // A - return "\x04\x4b\x70\x4e\x53"; - case 31: // B - return "\x04\x4b\x70\x4e\x54"; - case 32: // C - return "\x04\x4b\x70\x4e\x55"; - case 33: // D - return "\x04\x4b\x70\x4e\x56"; - case 34: // E - return "\x04\x4b\x70\x4e\x57"; - case 35: // F - return "\x04\x4b\x70\x4e\x58"; - case 36: // G - return "\x04\x4b\x70\x4e\x59"; - case 37: // H - return "\x04\x4b\x70\x4e\x5a"; - case 38: // I - return "\x04\x4b\x70\x4e\x61"; - case 39: // J - return "\x04\x4b\x70\x4e\x62"; - case 40: // K - return "\x04\x4b\x70\x4e\x63"; - case 41: // L - return "\x04\x4b\x70\x4e\x64"; - case 42: // M - return "\x04\x4b\x70\x4e\x65"; - case 43: // N - return "\x04\x4b\x70\x4e\x66"; - case 44: // O - return "\x04\x4b\x70\x4e\x67"; - case 45: // P - return "\x04\x4b\x70\x4e\x68"; - case 46: // Q - return "\x04\x4b\x70\x4e\x69"; - case 47: // R - return "\x04\x4b\x70\x4e\x6a"; - case 48: // S - return "\x04\x4b\x70\x4e\x6b"; - case 49: // T - return "\x04\x4b\x70\x4e\x6c"; - case 50: // U - return "\x04\x4b\x70\x4e\x6d"; - case 51: // V - return "\x04\x4b\x70\x4e\x6e"; - case 52: // W - return "\x04\x4b\x70\x4e\x6f"; - case 53: // X - return "\x04\x4b\x70\x4e\x70"; - case 54: // Y - return "\x04\x4b\x70\x4e\x71"; - case 55: // Z - return "\x04\x4b\x70\x4e\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x70\x4e\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x70\x4e\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x70\x4e\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x70\x4e\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x70\x4e\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x70\x4e\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x70\x4e\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x70\x4e\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x70\x4e\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x70\x4e\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x70\x4e\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x70\x4e\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x70\x4e\x42\x30"; - case 69: // AE - return "\x05\x4b\x70\x4e\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x70\x4e\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x70\x4e\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x70\x4e\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x70\x4e\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x70\x4e\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x70\x4e\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x70\x4e\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x70\x4e\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x70\x4e\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x70\x4e\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x70\x4e\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x70\x4e\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x70\x4e\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x70\x4e\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x70\x4e\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x70\x4e\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x70\x4e\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x70\x4e\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x70\x4e\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x70\x4e\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x70\x4e\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x70\x4e\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x70\x4e\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x70\x4e\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x70\x4e\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x70\x4e\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x70\x4e\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x70\x4e\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x70\x4e\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x70\x4e\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x70\x4e\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x70\x4e\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x70\x4e\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x70\x4e\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x70\x4e\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x70\x4e\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x70\x4e\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x70\x4e\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x70\x4e\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x70\x4e\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x70\x4e\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x70\x4e\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x70\x4e\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x70\x4e\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x70\x4e\x79"; - case 115: // ENTER - return "\x04\x4b\x70\x4e\x7a"; - case 116: // TAB - return "\x04\x4b\x70\x4e\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x70\x4e\x31"; - case 118: // INSERT - return "\x04\x4b\x70\x4e\x32"; - case 119: // DELETE - return "\x04\x4b\x70\x4e\x33"; - case 120: // RIGHT - return "\x04\x4b\x70\x4e\x34"; - case 121: // LEFT - return "\x04\x4b\x70\x4e\x35"; - case 122: // DOWN - return "\x04\x4b\x70\x4e\x36"; - case 123: // UP - return "\x04\x4b\x70\x4e\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x70\x4e\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x70\x4e\x39"; - case 126: // HOME - return "\x04\x4b\x70\x4e\x2e"; - case 127: // END - return "\x04\x4b\x70\x4e\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x70\x4e\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x70\x4e\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x70\x4e\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x70\x4e\x5e"; - case 132: // PAUSE - return "\x04\x4b\x70\x4e\x21"; - case 133: // F1 - return "\x04\x4b\x70\x4e\x2f"; - case 134: // F2 - return "\x04\x4b\x70\x4e\x2a"; - case 135: // F3 - return "\x04\x4b\x70\x4e\x3f"; - case 136: // F4 - return "\x04\x4b\x70\x4e\x26"; - case 137: // F5 - return "\x04\x4b\x70\x4e\x3c"; - case 138: // F6 - return "\x04\x4b\x70\x4e\x3e"; - case 139: // F7 - return "\x04\x4b\x70\x4e\x28"; - case 140: // F8 - return "\x04\x4b\x70\x4e\x29"; - case 141: // F9 - return "\x04\x4b\x70\x4e\x5b"; - case 142: // F10 - return "\x04\x4b\x70\x4e\x5d"; - case 143: // F11 - return "\x04\x4b\x70\x4e\x7b"; - case 144: // F12 - return "\x04\x4b\x70\x4e\x7d"; - case 145: // F13 - return "\x04\x4b\x70\x4e\x40"; - case 146: // F14 - return "\x04\x4b\x70\x4e\x25"; - case 147: // F15 - return "\x04\x4b\x70\x4e\x24"; - case 148: // F16 - return "\x04\x4b\x70\x4e\x23"; - case 149: // F17 - return "\x05\x4b\x70\x4e\x42\x41"; - case 150: // F18 - return "\x05\x4b\x70\x4e\x42\x42"; - case 151: // F19 - return "\x05\x4b\x70\x4e\x42\x43"; - case 152: // F20 - return "\x05\x4b\x70\x4e\x42\x44"; - case 153: // F21 - return "\x05\x4b\x70\x4e\x42\x45"; - case 154: // F22 - return "\x05\x4b\x70\x4e\x42\x46"; - case 155: // F23 - return "\x05\x4b\x70\x4e\x42\x47"; - case 156: // F24 - return "\x05\x4b\x70\x4e\x42\x48"; - case 157: // F25 - return "\x05\x4b\x70\x4e\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x70\x4e\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x70\x4e\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x70\x4e\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x70\x4e\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x70\x4e\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x70\x4e\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x70\x4e\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x70\x4e\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x70\x4e\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x70\x4e\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x70\x4e\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x70\x4e\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x70\x4e\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x70\x4e\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x70\x4e\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x70\x4e\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x70\x4e\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x70\x4e\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x70\x4e\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x70\x4e\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x70\x4e\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x70\x4e\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x70\x4e\x42\x68"; - } // end switch(key) - case 0xc: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x70\x4b\x41"; - case 1: // EXCLAM - return "\x05\x4b\x70\x4b\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x70\x4b\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x70\x4b\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x70\x4b\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x70\x4b\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x70\x4b\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x70\x4b\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x70\x4b\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x70\x4b\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x70\x4b\x43"; - case 11: // MINUS - return "\x04\x4b\x70\x4b\x44"; - case 12: // PERIOD - return "\x04\x4b\x70\x4b\x45"; - case 13: // SLASH - return "\x04\x4b\x70\x4b\x46"; - case 14: // 0 - return "\x04\x4b\x70\x4b\x47"; - case 15: // 1 - return "\x04\x4b\x70\x4b\x48"; - case 16: // 2 - return "\x04\x4b\x70\x4b\x49"; - case 17: // 3 - return "\x04\x4b\x70\x4b\x4a"; - case 18: // 4 - return "\x04\x4b\x70\x4b\x4b"; - case 19: // 5 - return "\x04\x4b\x70\x4b\x4c"; - case 20: // 6 - return "\x04\x4b\x70\x4b\x4d"; - case 21: // 7 - return "\x04\x4b\x70\x4b\x4e"; - case 22: // 8 - return "\x04\x4b\x70\x4b\x4f"; - case 23: // 9 - return "\x04\x4b\x70\x4b\x50"; - case 24: // COLON - return "\x05\x4b\x70\x4b\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x70\x4b\x51"; - case 26: // LESS - return "\x05\x4b\x70\x4b\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x70\x4b\x52"; - case 28: // GREATER - return "\x05\x4b\x70\x4b\x42\x75"; - case 29: // AT - return "\x05\x4b\x70\x4b\x42\x76"; - case 30: // A - return "\x04\x4b\x70\x4b\x53"; - case 31: // B - return "\x04\x4b\x70\x4b\x54"; - case 32: // C - return "\x04\x4b\x70\x4b\x55"; - case 33: // D - return "\x04\x4b\x70\x4b\x56"; - case 34: // E - return "\x04\x4b\x70\x4b\x57"; - case 35: // F - return "\x04\x4b\x70\x4b\x58"; - case 36: // G - return "\x04\x4b\x70\x4b\x59"; - case 37: // H - return "\x04\x4b\x70\x4b\x5a"; - case 38: // I - return "\x04\x4b\x70\x4b\x61"; - case 39: // J - return "\x04\x4b\x70\x4b\x62"; - case 40: // K - return "\x04\x4b\x70\x4b\x63"; - case 41: // L - return "\x04\x4b\x70\x4b\x64"; - case 42: // M - return "\x04\x4b\x70\x4b\x65"; - case 43: // N - return "\x04\x4b\x70\x4b\x66"; - case 44: // O - return "\x04\x4b\x70\x4b\x67"; - case 45: // P - return "\x04\x4b\x70\x4b\x68"; - case 46: // Q - return "\x04\x4b\x70\x4b\x69"; - case 47: // R - return "\x04\x4b\x70\x4b\x6a"; - case 48: // S - return "\x04\x4b\x70\x4b\x6b"; - case 49: // T - return "\x04\x4b\x70\x4b\x6c"; - case 50: // U - return "\x04\x4b\x70\x4b\x6d"; - case 51: // V - return "\x04\x4b\x70\x4b\x6e"; - case 52: // W - return "\x04\x4b\x70\x4b\x6f"; - case 53: // X - return "\x04\x4b\x70\x4b\x70"; - case 54: // Y - return "\x04\x4b\x70\x4b\x71"; - case 55: // Z - return "\x04\x4b\x70\x4b\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x70\x4b\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x70\x4b\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x70\x4b\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x70\x4b\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x70\x4b\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x70\x4b\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x70\x4b\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x70\x4b\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x70\x4b\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x70\x4b\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x70\x4b\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x70\x4b\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x70\x4b\x42\x30"; - case 69: // AE - return "\x05\x4b\x70\x4b\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x70\x4b\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x70\x4b\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x70\x4b\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x70\x4b\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x70\x4b\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x70\x4b\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x70\x4b\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x70\x4b\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x70\x4b\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x70\x4b\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x70\x4b\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x70\x4b\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x70\x4b\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x70\x4b\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x70\x4b\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x70\x4b\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x70\x4b\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x70\x4b\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x70\x4b\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x70\x4b\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x70\x4b\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x70\x4b\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x70\x4b\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x70\x4b\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x70\x4b\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x70\x4b\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x70\x4b\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x70\x4b\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x70\x4b\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x70\x4b\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x70\x4b\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x70\x4b\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x70\x4b\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x70\x4b\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x70\x4b\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x70\x4b\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x70\x4b\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x70\x4b\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x70\x4b\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x70\x4b\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x70\x4b\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x70\x4b\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x70\x4b\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x70\x4b\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x70\x4b\x79"; - case 115: // ENTER - return "\x04\x4b\x70\x4b\x7a"; - case 116: // TAB - return "\x04\x4b\x70\x4b\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x70\x4b\x31"; - case 118: // INSERT - return "\x04\x4b\x70\x4b\x32"; - case 119: // DELETE - return "\x04\x4b\x70\x4b\x33"; - case 120: // RIGHT - return "\x04\x4b\x70\x4b\x34"; - case 121: // LEFT - return "\x04\x4b\x70\x4b\x35"; - case 122: // DOWN - return "\x04\x4b\x70\x4b\x36"; - case 123: // UP - return "\x04\x4b\x70\x4b\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x70\x4b\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x70\x4b\x39"; - case 126: // HOME - return "\x04\x4b\x70\x4b\x2e"; - case 127: // END - return "\x04\x4b\x70\x4b\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x70\x4b\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x70\x4b\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x70\x4b\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x70\x4b\x5e"; - case 132: // PAUSE - return "\x04\x4b\x70\x4b\x21"; - case 133: // F1 - return "\x04\x4b\x70\x4b\x2f"; - case 134: // F2 - return "\x04\x4b\x70\x4b\x2a"; - case 135: // F3 - return "\x04\x4b\x70\x4b\x3f"; - case 136: // F4 - return "\x04\x4b\x70\x4b\x26"; - case 137: // F5 - return "\x04\x4b\x70\x4b\x3c"; - case 138: // F6 - return "\x04\x4b\x70\x4b\x3e"; - case 139: // F7 - return "\x04\x4b\x70\x4b\x28"; - case 140: // F8 - return "\x04\x4b\x70\x4b\x29"; - case 141: // F9 - return "\x04\x4b\x70\x4b\x5b"; - case 142: // F10 - return "\x04\x4b\x70\x4b\x5d"; - case 143: // F11 - return "\x04\x4b\x70\x4b\x7b"; - case 144: // F12 - return "\x04\x4b\x70\x4b\x7d"; - case 145: // F13 - return "\x04\x4b\x70\x4b\x40"; - case 146: // F14 - return "\x04\x4b\x70\x4b\x25"; - case 147: // F15 - return "\x04\x4b\x70\x4b\x24"; - case 148: // F16 - return "\x04\x4b\x70\x4b\x23"; - case 149: // F17 - return "\x05\x4b\x70\x4b\x42\x41"; - case 150: // F18 - return "\x05\x4b\x70\x4b\x42\x42"; - case 151: // F19 - return "\x05\x4b\x70\x4b\x42\x43"; - case 152: // F20 - return "\x05\x4b\x70\x4b\x42\x44"; - case 153: // F21 - return "\x05\x4b\x70\x4b\x42\x45"; - case 154: // F22 - return "\x05\x4b\x70\x4b\x42\x46"; - case 155: // F23 - return "\x05\x4b\x70\x4b\x42\x47"; - case 156: // F24 - return "\x05\x4b\x70\x4b\x42\x48"; - case 157: // F25 - return "\x05\x4b\x70\x4b\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x70\x4b\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x70\x4b\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x70\x4b\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x70\x4b\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x70\x4b\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x70\x4b\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x70\x4b\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x70\x4b\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x70\x4b\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x70\x4b\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x70\x4b\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x70\x4b\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x70\x4b\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x70\x4b\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x70\x4b\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x70\x4b\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x70\x4b\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x70\x4b\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x70\x4b\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x70\x4b\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x70\x4b\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x70\x4b\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x70\x4b\x42\x68"; - } // end switch(key) - case 0xd: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x70\x4c\x41"; - case 1: // EXCLAM - return "\x05\x4b\x70\x4c\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x70\x4c\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x70\x4c\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x70\x4c\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x70\x4c\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x70\x4c\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x70\x4c\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x70\x4c\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x70\x4c\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x70\x4c\x43"; - case 11: // MINUS - return "\x04\x4b\x70\x4c\x44"; - case 12: // PERIOD - return "\x04\x4b\x70\x4c\x45"; - case 13: // SLASH - return "\x04\x4b\x70\x4c\x46"; - case 14: // 0 - return "\x04\x4b\x70\x4c\x47"; - case 15: // 1 - return "\x04\x4b\x70\x4c\x48"; - case 16: // 2 - return "\x04\x4b\x70\x4c\x49"; - case 17: // 3 - return "\x04\x4b\x70\x4c\x4a"; - case 18: // 4 - return "\x04\x4b\x70\x4c\x4b"; - case 19: // 5 - return "\x04\x4b\x70\x4c\x4c"; - case 20: // 6 - return "\x04\x4b\x70\x4c\x4d"; - case 21: // 7 - return "\x04\x4b\x70\x4c\x4e"; - case 22: // 8 - return "\x04\x4b\x70\x4c\x4f"; - case 23: // 9 - return "\x04\x4b\x70\x4c\x50"; - case 24: // COLON - return "\x05\x4b\x70\x4c\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x70\x4c\x51"; - case 26: // LESS - return "\x05\x4b\x70\x4c\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x70\x4c\x52"; - case 28: // GREATER - return "\x05\x4b\x70\x4c\x42\x75"; - case 29: // AT - return "\x05\x4b\x70\x4c\x42\x76"; - case 30: // A - return "\x04\x4b\x70\x4c\x53"; - case 31: // B - return "\x04\x4b\x70\x4c\x54"; - case 32: // C - return "\x04\x4b\x70\x4c\x55"; - case 33: // D - return "\x04\x4b\x70\x4c\x56"; - case 34: // E - return "\x04\x4b\x70\x4c\x57"; - case 35: // F - return "\x04\x4b\x70\x4c\x58"; - case 36: // G - return "\x04\x4b\x70\x4c\x59"; - case 37: // H - return "\x04\x4b\x70\x4c\x5a"; - case 38: // I - return "\x04\x4b\x70\x4c\x61"; - case 39: // J - return "\x04\x4b\x70\x4c\x62"; - case 40: // K - return "\x04\x4b\x70\x4c\x63"; - case 41: // L - return "\x04\x4b\x70\x4c\x64"; - case 42: // M - return "\x04\x4b\x70\x4c\x65"; - case 43: // N - return "\x04\x4b\x70\x4c\x66"; - case 44: // O - return "\x04\x4b\x70\x4c\x67"; - case 45: // P - return "\x04\x4b\x70\x4c\x68"; - case 46: // Q - return "\x04\x4b\x70\x4c\x69"; - case 47: // R - return "\x04\x4b\x70\x4c\x6a"; - case 48: // S - return "\x04\x4b\x70\x4c\x6b"; - case 49: // T - return "\x04\x4b\x70\x4c\x6c"; - case 50: // U - return "\x04\x4b\x70\x4c\x6d"; - case 51: // V - return "\x04\x4b\x70\x4c\x6e"; - case 52: // W - return "\x04\x4b\x70\x4c\x6f"; - case 53: // X - return "\x04\x4b\x70\x4c\x70"; - case 54: // Y - return "\x04\x4b\x70\x4c\x71"; - case 55: // Z - return "\x04\x4b\x70\x4c\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x70\x4c\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x70\x4c\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x70\x4c\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x70\x4c\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x70\x4c\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x70\x4c\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x70\x4c\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x70\x4c\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x70\x4c\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x70\x4c\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x70\x4c\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x70\x4c\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x70\x4c\x42\x30"; - case 69: // AE - return "\x05\x4b\x70\x4c\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x70\x4c\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x70\x4c\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x70\x4c\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x70\x4c\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x70\x4c\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x70\x4c\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x70\x4c\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x70\x4c\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x70\x4c\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x70\x4c\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x70\x4c\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x70\x4c\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x70\x4c\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x70\x4c\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x70\x4c\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x70\x4c\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x70\x4c\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x70\x4c\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x70\x4c\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x70\x4c\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x70\x4c\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x70\x4c\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x70\x4c\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x70\x4c\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x70\x4c\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x70\x4c\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x70\x4c\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x70\x4c\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x70\x4c\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x70\x4c\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x70\x4c\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x70\x4c\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x70\x4c\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x70\x4c\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x70\x4c\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x70\x4c\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x70\x4c\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x70\x4c\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x70\x4c\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x70\x4c\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x70\x4c\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x70\x4c\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x70\x4c\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x70\x4c\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x70\x4c\x79"; - case 115: // ENTER - return "\x04\x4b\x70\x4c\x7a"; - case 116: // TAB - return "\x04\x4b\x70\x4c\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x70\x4c\x31"; - case 118: // INSERT - return "\x04\x4b\x70\x4c\x32"; - case 119: // DELETE - return "\x04\x4b\x70\x4c\x33"; - case 120: // RIGHT - return "\x04\x4b\x70\x4c\x34"; - case 121: // LEFT - return "\x04\x4b\x70\x4c\x35"; - case 122: // DOWN - return "\x04\x4b\x70\x4c\x36"; - case 123: // UP - return "\x04\x4b\x70\x4c\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x70\x4c\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x70\x4c\x39"; - case 126: // HOME - return "\x04\x4b\x70\x4c\x2e"; - case 127: // END - return "\x04\x4b\x70\x4c\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x70\x4c\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x70\x4c\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x70\x4c\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x70\x4c\x5e"; - case 132: // PAUSE - return "\x04\x4b\x70\x4c\x21"; - case 133: // F1 - return "\x04\x4b\x70\x4c\x2f"; - case 134: // F2 - return "\x04\x4b\x70\x4c\x2a"; - case 135: // F3 - return "\x04\x4b\x70\x4c\x3f"; - case 136: // F4 - return "\x04\x4b\x70\x4c\x26"; - case 137: // F5 - return "\x04\x4b\x70\x4c\x3c"; - case 138: // F6 - return "\x04\x4b\x70\x4c\x3e"; - case 139: // F7 - return "\x04\x4b\x70\x4c\x28"; - case 140: // F8 - return "\x04\x4b\x70\x4c\x29"; - case 141: // F9 - return "\x04\x4b\x70\x4c\x5b"; - case 142: // F10 - return "\x04\x4b\x70\x4c\x5d"; - case 143: // F11 - return "\x04\x4b\x70\x4c\x7b"; - case 144: // F12 - return "\x04\x4b\x70\x4c\x7d"; - case 145: // F13 - return "\x04\x4b\x70\x4c\x40"; - case 146: // F14 - return "\x04\x4b\x70\x4c\x25"; - case 147: // F15 - return "\x04\x4b\x70\x4c\x24"; - case 148: // F16 - return "\x04\x4b\x70\x4c\x23"; - case 149: // F17 - return "\x05\x4b\x70\x4c\x42\x41"; - case 150: // F18 - return "\x05\x4b\x70\x4c\x42\x42"; - case 151: // F19 - return "\x05\x4b\x70\x4c\x42\x43"; - case 152: // F20 - return "\x05\x4b\x70\x4c\x42\x44"; - case 153: // F21 - return "\x05\x4b\x70\x4c\x42\x45"; - case 154: // F22 - return "\x05\x4b\x70\x4c\x42\x46"; - case 155: // F23 - return "\x05\x4b\x70\x4c\x42\x47"; - case 156: // F24 - return "\x05\x4b\x70\x4c\x42\x48"; - case 157: // F25 - return "\x05\x4b\x70\x4c\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x70\x4c\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x70\x4c\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x70\x4c\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x70\x4c\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x70\x4c\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x70\x4c\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x70\x4c\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x70\x4c\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x70\x4c\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x70\x4c\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x70\x4c\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x70\x4c\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x70\x4c\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x70\x4c\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x70\x4c\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x70\x4c\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x70\x4c\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x70\x4c\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x70\x4c\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x70\x4c\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x70\x4c\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x70\x4c\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x70\x4c\x42\x68"; - } // end switch(key) - case 0xe: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x70\x4f\x41"; - case 1: // EXCLAM - return "\x05\x4b\x70\x4f\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x70\x4f\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x70\x4f\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x70\x4f\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x70\x4f\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x70\x4f\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x70\x4f\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x70\x4f\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x70\x4f\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x70\x4f\x43"; - case 11: // MINUS - return "\x04\x4b\x70\x4f\x44"; - case 12: // PERIOD - return "\x04\x4b\x70\x4f\x45"; - case 13: // SLASH - return "\x04\x4b\x70\x4f\x46"; - case 14: // 0 - return "\x04\x4b\x70\x4f\x47"; - case 15: // 1 - return "\x04\x4b\x70\x4f\x48"; - case 16: // 2 - return "\x04\x4b\x70\x4f\x49"; - case 17: // 3 - return "\x04\x4b\x70\x4f\x4a"; - case 18: // 4 - return "\x04\x4b\x70\x4f\x4b"; - case 19: // 5 - return "\x04\x4b\x70\x4f\x4c"; - case 20: // 6 - return "\x04\x4b\x70\x4f\x4d"; - case 21: // 7 - return "\x04\x4b\x70\x4f\x4e"; - case 22: // 8 - return "\x04\x4b\x70\x4f\x4f"; - case 23: // 9 - return "\x04\x4b\x70\x4f\x50"; - case 24: // COLON - return "\x05\x4b\x70\x4f\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x70\x4f\x51"; - case 26: // LESS - return "\x05\x4b\x70\x4f\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x70\x4f\x52"; - case 28: // GREATER - return "\x05\x4b\x70\x4f\x42\x75"; - case 29: // AT - return "\x05\x4b\x70\x4f\x42\x76"; - case 30: // A - return "\x04\x4b\x70\x4f\x53"; - case 31: // B - return "\x04\x4b\x70\x4f\x54"; - case 32: // C - return "\x04\x4b\x70\x4f\x55"; - case 33: // D - return "\x04\x4b\x70\x4f\x56"; - case 34: // E - return "\x04\x4b\x70\x4f\x57"; - case 35: // F - return "\x04\x4b\x70\x4f\x58"; - case 36: // G - return "\x04\x4b\x70\x4f\x59"; - case 37: // H - return "\x04\x4b\x70\x4f\x5a"; - case 38: // I - return "\x04\x4b\x70\x4f\x61"; - case 39: // J - return "\x04\x4b\x70\x4f\x62"; - case 40: // K - return "\x04\x4b\x70\x4f\x63"; - case 41: // L - return "\x04\x4b\x70\x4f\x64"; - case 42: // M - return "\x04\x4b\x70\x4f\x65"; - case 43: // N - return "\x04\x4b\x70\x4f\x66"; - case 44: // O - return "\x04\x4b\x70\x4f\x67"; - case 45: // P - return "\x04\x4b\x70\x4f\x68"; - case 46: // Q - return "\x04\x4b\x70\x4f\x69"; - case 47: // R - return "\x04\x4b\x70\x4f\x6a"; - case 48: // S - return "\x04\x4b\x70\x4f\x6b"; - case 49: // T - return "\x04\x4b\x70\x4f\x6c"; - case 50: // U - return "\x04\x4b\x70\x4f\x6d"; - case 51: // V - return "\x04\x4b\x70\x4f\x6e"; - case 52: // W - return "\x04\x4b\x70\x4f\x6f"; - case 53: // X - return "\x04\x4b\x70\x4f\x70"; - case 54: // Y - return "\x04\x4b\x70\x4f\x71"; - case 55: // Z - return "\x04\x4b\x70\x4f\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x70\x4f\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x70\x4f\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x70\x4f\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x70\x4f\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x70\x4f\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x70\x4f\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x70\x4f\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x70\x4f\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x70\x4f\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x70\x4f\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x70\x4f\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x70\x4f\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x70\x4f\x42\x30"; - case 69: // AE - return "\x05\x4b\x70\x4f\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x70\x4f\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x70\x4f\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x70\x4f\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x70\x4f\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x70\x4f\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x70\x4f\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x70\x4f\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x70\x4f\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x70\x4f\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x70\x4f\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x70\x4f\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x70\x4f\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x70\x4f\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x70\x4f\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x70\x4f\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x70\x4f\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x70\x4f\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x70\x4f\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x70\x4f\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x70\x4f\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x70\x4f\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x70\x4f\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x70\x4f\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x70\x4f\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x70\x4f\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x70\x4f\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x70\x4f\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x70\x4f\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x70\x4f\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x70\x4f\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x70\x4f\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x70\x4f\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x70\x4f\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x70\x4f\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x70\x4f\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x70\x4f\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x70\x4f\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x70\x4f\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x70\x4f\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x70\x4f\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x70\x4f\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x70\x4f\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x70\x4f\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x70\x4f\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x70\x4f\x79"; - case 115: // ENTER - return "\x04\x4b\x70\x4f\x7a"; - case 116: // TAB - return "\x04\x4b\x70\x4f\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x70\x4f\x31"; - case 118: // INSERT - return "\x04\x4b\x70\x4f\x32"; - case 119: // DELETE - return "\x04\x4b\x70\x4f\x33"; - case 120: // RIGHT - return "\x04\x4b\x70\x4f\x34"; - case 121: // LEFT - return "\x04\x4b\x70\x4f\x35"; - case 122: // DOWN - return "\x04\x4b\x70\x4f\x36"; - case 123: // UP - return "\x04\x4b\x70\x4f\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x70\x4f\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x70\x4f\x39"; - case 126: // HOME - return "\x04\x4b\x70\x4f\x2e"; - case 127: // END - return "\x04\x4b\x70\x4f\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x70\x4f\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x70\x4f\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x70\x4f\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x70\x4f\x5e"; - case 132: // PAUSE - return "\x04\x4b\x70\x4f\x21"; - case 133: // F1 - return "\x04\x4b\x70\x4f\x2f"; - case 134: // F2 - return "\x04\x4b\x70\x4f\x2a"; - case 135: // F3 - return "\x04\x4b\x70\x4f\x3f"; - case 136: // F4 - return "\x04\x4b\x70\x4f\x26"; - case 137: // F5 - return "\x04\x4b\x70\x4f\x3c"; - case 138: // F6 - return "\x04\x4b\x70\x4f\x3e"; - case 139: // F7 - return "\x04\x4b\x70\x4f\x28"; - case 140: // F8 - return "\x04\x4b\x70\x4f\x29"; - case 141: // F9 - return "\x04\x4b\x70\x4f\x5b"; - case 142: // F10 - return "\x04\x4b\x70\x4f\x5d"; - case 143: // F11 - return "\x04\x4b\x70\x4f\x7b"; - case 144: // F12 - return "\x04\x4b\x70\x4f\x7d"; - case 145: // F13 - return "\x04\x4b\x70\x4f\x40"; - case 146: // F14 - return "\x04\x4b\x70\x4f\x25"; - case 147: // F15 - return "\x04\x4b\x70\x4f\x24"; - case 148: // F16 - return "\x04\x4b\x70\x4f\x23"; - case 149: // F17 - return "\x05\x4b\x70\x4f\x42\x41"; - case 150: // F18 - return "\x05\x4b\x70\x4f\x42\x42"; - case 151: // F19 - return "\x05\x4b\x70\x4f\x42\x43"; - case 152: // F20 - return "\x05\x4b\x70\x4f\x42\x44"; - case 153: // F21 - return "\x05\x4b\x70\x4f\x42\x45"; - case 154: // F22 - return "\x05\x4b\x70\x4f\x42\x46"; - case 155: // F23 - return "\x05\x4b\x70\x4f\x42\x47"; - case 156: // F24 - return "\x05\x4b\x70\x4f\x42\x48"; - case 157: // F25 - return "\x05\x4b\x70\x4f\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x70\x4f\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x70\x4f\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x70\x4f\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x70\x4f\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x70\x4f\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x70\x4f\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x70\x4f\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x70\x4f\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x70\x4f\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x70\x4f\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x70\x4f\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x70\x4f\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x70\x4f\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x70\x4f\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x70\x4f\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x70\x4f\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x70\x4f\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x70\x4f\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x70\x4f\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x70\x4f\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x70\x4f\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x70\x4f\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x70\x4f\x42\x68"; - } // end switch(key) - case 0xf: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x70\x50\x41"; - case 1: // EXCLAM - return "\x05\x4b\x70\x50\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x70\x50\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x70\x50\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x70\x50\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x70\x50\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x70\x50\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x70\x50\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x70\x50\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x70\x50\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x70\x50\x43"; - case 11: // MINUS - return "\x04\x4b\x70\x50\x44"; - case 12: // PERIOD - return "\x04\x4b\x70\x50\x45"; - case 13: // SLASH - return "\x04\x4b\x70\x50\x46"; - case 14: // 0 - return "\x04\x4b\x70\x50\x47"; - case 15: // 1 - return "\x04\x4b\x70\x50\x48"; - case 16: // 2 - return "\x04\x4b\x70\x50\x49"; - case 17: // 3 - return "\x04\x4b\x70\x50\x4a"; - case 18: // 4 - return "\x04\x4b\x70\x50\x4b"; - case 19: // 5 - return "\x04\x4b\x70\x50\x4c"; - case 20: // 6 - return "\x04\x4b\x70\x50\x4d"; - case 21: // 7 - return "\x04\x4b\x70\x50\x4e"; - case 22: // 8 - return "\x04\x4b\x70\x50\x4f"; - case 23: // 9 - return "\x04\x4b\x70\x50\x50"; - case 24: // COLON - return "\x05\x4b\x70\x50\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x70\x50\x51"; - case 26: // LESS - return "\x05\x4b\x70\x50\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x70\x50\x52"; - case 28: // GREATER - return "\x05\x4b\x70\x50\x42\x75"; - case 29: // AT - return "\x05\x4b\x70\x50\x42\x76"; - case 30: // A - return "\x04\x4b\x70\x50\x53"; - case 31: // B - return "\x04\x4b\x70\x50\x54"; - case 32: // C - return "\x04\x4b\x70\x50\x55"; - case 33: // D - return "\x04\x4b\x70\x50\x56"; - case 34: // E - return "\x04\x4b\x70\x50\x57"; - case 35: // F - return "\x04\x4b\x70\x50\x58"; - case 36: // G - return "\x04\x4b\x70\x50\x59"; - case 37: // H - return "\x04\x4b\x70\x50\x5a"; - case 38: // I - return "\x04\x4b\x70\x50\x61"; - case 39: // J - return "\x04\x4b\x70\x50\x62"; - case 40: // K - return "\x04\x4b\x70\x50\x63"; - case 41: // L - return "\x04\x4b\x70\x50\x64"; - case 42: // M - return "\x04\x4b\x70\x50\x65"; - case 43: // N - return "\x04\x4b\x70\x50\x66"; - case 44: // O - return "\x04\x4b\x70\x50\x67"; - case 45: // P - return "\x04\x4b\x70\x50\x68"; - case 46: // Q - return "\x04\x4b\x70\x50\x69"; - case 47: // R - return "\x04\x4b\x70\x50\x6a"; - case 48: // S - return "\x04\x4b\x70\x50\x6b"; - case 49: // T - return "\x04\x4b\x70\x50\x6c"; - case 50: // U - return "\x04\x4b\x70\x50\x6d"; - case 51: // V - return "\x04\x4b\x70\x50\x6e"; - case 52: // W - return "\x04\x4b\x70\x50\x6f"; - case 53: // X - return "\x04\x4b\x70\x50\x70"; - case 54: // Y - return "\x04\x4b\x70\x50\x71"; - case 55: // Z - return "\x04\x4b\x70\x50\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x70\x50\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x70\x50\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x70\x50\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x70\x50\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x70\x50\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x70\x50\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x70\x50\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x70\x50\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x70\x50\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x70\x50\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x70\x50\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x70\x50\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x70\x50\x42\x30"; - case 69: // AE - return "\x05\x4b\x70\x50\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x70\x50\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x70\x50\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x70\x50\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x70\x50\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x70\x50\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x70\x50\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x70\x50\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x70\x50\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x70\x50\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x70\x50\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x70\x50\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x70\x50\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x70\x50\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x70\x50\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x70\x50\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x70\x50\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x70\x50\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x70\x50\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x70\x50\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x70\x50\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x70\x50\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x70\x50\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x70\x50\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x70\x50\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x70\x50\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x70\x50\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x70\x50\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x70\x50\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x70\x50\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x70\x50\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x70\x50\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x70\x50\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x70\x50\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x70\x50\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x70\x50\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x70\x50\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x70\x50\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x70\x50\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x70\x50\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x70\x50\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x70\x50\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x70\x50\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x70\x50\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x70\x50\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x70\x50\x79"; - case 115: // ENTER - return "\x04\x4b\x70\x50\x7a"; - case 116: // TAB - return "\x04\x4b\x70\x50\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x70\x50\x31"; - case 118: // INSERT - return "\x04\x4b\x70\x50\x32"; - case 119: // DELETE - return "\x04\x4b\x70\x50\x33"; - case 120: // RIGHT - return "\x04\x4b\x70\x50\x34"; - case 121: // LEFT - return "\x04\x4b\x70\x50\x35"; - case 122: // DOWN - return "\x04\x4b\x70\x50\x36"; - case 123: // UP - return "\x04\x4b\x70\x50\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x70\x50\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x70\x50\x39"; - case 126: // HOME - return "\x04\x4b\x70\x50\x2e"; - case 127: // END - return "\x04\x4b\x70\x50\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x70\x50\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x70\x50\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x70\x50\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x70\x50\x5e"; - case 132: // PAUSE - return "\x04\x4b\x70\x50\x21"; - case 133: // F1 - return "\x04\x4b\x70\x50\x2f"; - case 134: // F2 - return "\x04\x4b\x70\x50\x2a"; - case 135: // F3 - return "\x04\x4b\x70\x50\x3f"; - case 136: // F4 - return "\x04\x4b\x70\x50\x26"; - case 137: // F5 - return "\x04\x4b\x70\x50\x3c"; - case 138: // F6 - return "\x04\x4b\x70\x50\x3e"; - case 139: // F7 - return "\x04\x4b\x70\x50\x28"; - case 140: // F8 - return "\x04\x4b\x70\x50\x29"; - case 141: // F9 - return "\x04\x4b\x70\x50\x5b"; - case 142: // F10 - return "\x04\x4b\x70\x50\x5d"; - case 143: // F11 - return "\x04\x4b\x70\x50\x7b"; - case 144: // F12 - return "\x04\x4b\x70\x50\x7d"; - case 145: // F13 - return "\x04\x4b\x70\x50\x40"; - case 146: // F14 - return "\x04\x4b\x70\x50\x25"; - case 147: // F15 - return "\x04\x4b\x70\x50\x24"; - case 148: // F16 - return "\x04\x4b\x70\x50\x23"; - case 149: // F17 - return "\x05\x4b\x70\x50\x42\x41"; - case 150: // F18 - return "\x05\x4b\x70\x50\x42\x42"; - case 151: // F19 - return "\x05\x4b\x70\x50\x42\x43"; - case 152: // F20 - return "\x05\x4b\x70\x50\x42\x44"; - case 153: // F21 - return "\x05\x4b\x70\x50\x42\x45"; - case 154: // F22 - return "\x05\x4b\x70\x50\x42\x46"; - case 155: // F23 - return "\x05\x4b\x70\x50\x42\x47"; - case 156: // F24 - return "\x05\x4b\x70\x50\x42\x48"; - case 157: // F25 - return "\x05\x4b\x70\x50\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x70\x50\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x70\x50\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x70\x50\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x70\x50\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x70\x50\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x70\x50\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x70\x50\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x70\x50\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x70\x50\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x70\x50\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x70\x50\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x70\x50\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x70\x50\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x70\x50\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x70\x50\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x70\x50\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x70\x50\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x70\x50\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x70\x50\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x70\x50\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x70\x50\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x70\x50\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x70\x50\x42\x68"; - } // end switch(key) - } // end switch(mods) - break; - - case 2: // REPEAT - switch (mods & 0xf) { - case 0x0: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x04\x4b\x74\x41\x79"; - case 115: // ENTER - return "\x01\x0d"; - case 116: // TAB - return "\x04\x4b\x74\x41\x30"; - case 117: // BACKSPACE - return "\x01\x7f"; - case 118: // INSERT - return "\x04\x4b\x74\x41\x32"; - case 119: // DELETE - return "\x04\x4b\x74\x41\x33"; - case 120: // RIGHT - return "\x04\x4b\x74\x41\x34"; - case 121: // LEFT - return "\x04\x4b\x74\x41\x35"; - case 122: // DOWN - return "\x04\x4b\x74\x41\x36"; - case 123: // UP - return "\x04\x4b\x74\x41\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x74\x41\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x74\x41\x39"; - case 126: // HOME - return "\x04\x4b\x74\x41\x2e"; - case 127: // END - return "\x04\x4b\x74\x41\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x74\x41\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x74\x41\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x74\x41\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x74\x41\x5e"; - case 132: // PAUSE - return "\x04\x4b\x74\x41\x21"; - case 133: // F1 - return "\x04\x4b\x74\x41\x2f"; - case 134: // F2 - return "\x04\x4b\x74\x41\x2a"; - case 135: // F3 - return "\x04\x4b\x74\x41\x3f"; - case 136: // F4 - return "\x04\x4b\x74\x41\x26"; - case 137: // F5 - return "\x04\x4b\x74\x41\x3c"; - case 138: // F6 - return "\x04\x4b\x74\x41\x3e"; - case 139: // F7 - return "\x04\x4b\x74\x41\x28"; - case 140: // F8 - return "\x04\x4b\x74\x41\x29"; - case 141: // F9 - return "\x04\x4b\x74\x41\x5b"; - case 142: // F10 - return "\x04\x4b\x74\x41\x5d"; - case 143: // F11 - return "\x04\x4b\x74\x41\x7b"; - case 144: // F12 - return "\x04\x4b\x74\x41\x7d"; - case 145: // F13 - return "\x04\x4b\x74\x41\x40"; - case 146: // F14 - return "\x04\x4b\x74\x41\x25"; - case 147: // F15 - return "\x04\x4b\x74\x41\x24"; - case 148: // F16 - return "\x04\x4b\x74\x41\x23"; - case 149: // F17 - return "\x05\x4b\x74\x41\x42\x41"; - case 150: // F18 - return "\x05\x4b\x74\x41\x42\x42"; - case 151: // F19 - return "\x05\x4b\x74\x41\x42\x43"; - case 152: // F20 - return "\x05\x4b\x74\x41\x42\x44"; - case 153: // F21 - return "\x05\x4b\x74\x41\x42\x45"; - case 154: // F22 - return "\x05\x4b\x74\x41\x42\x46"; - case 155: // F23 - return "\x05\x4b\x74\x41\x42\x47"; - case 156: // F24 - return "\x05\x4b\x74\x41\x42\x48"; - case 157: // F25 - return "\x05\x4b\x74\x41\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x74\x41\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x74\x41\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x74\x41\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x74\x41\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x74\x41\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x74\x41\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x74\x41\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x74\x41\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x74\x41\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x74\x41\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x74\x41\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x74\x41\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x74\x41\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x74\x41\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x74\x41\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x74\x41\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x74\x41\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x74\x41\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x74\x41\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x74\x41\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x74\x41\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x74\x41\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x74\x41\x42\x68"; - } // end switch(key) - case 0x1: - switch(key & 0xff) { default: return NULL; - case 114: // ESCAPE - return "\x04\x4b\x74\x42\x79"; - case 115: // ENTER - return "\x04\x4b\x74\x42\x7a"; - case 116: // TAB - return "\x04\x4b\x74\x42\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x74\x42\x31"; - case 118: // INSERT - return "\x04\x4b\x74\x42\x32"; - case 119: // DELETE - return "\x04\x4b\x74\x42\x33"; - case 120: // RIGHT - return "\x04\x4b\x74\x42\x34"; - case 121: // LEFT - return "\x04\x4b\x74\x42\x35"; - case 122: // DOWN - return "\x04\x4b\x74\x42\x36"; - case 123: // UP - return "\x04\x4b\x74\x42\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x74\x42\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x74\x42\x39"; - case 126: // HOME - return "\x04\x4b\x74\x42\x2e"; - case 127: // END - return "\x04\x4b\x74\x42\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x74\x42\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x74\x42\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x74\x42\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x74\x42\x5e"; - case 132: // PAUSE - return "\x04\x4b\x74\x42\x21"; - case 133: // F1 - return "\x04\x4b\x74\x42\x2f"; - case 134: // F2 - return "\x04\x4b\x74\x42\x2a"; - case 135: // F3 - return "\x04\x4b\x74\x42\x3f"; - case 136: // F4 - return "\x04\x4b\x74\x42\x26"; - case 137: // F5 - return "\x04\x4b\x74\x42\x3c"; - case 138: // F6 - return "\x04\x4b\x74\x42\x3e"; - case 139: // F7 - return "\x04\x4b\x74\x42\x28"; - case 140: // F8 - return "\x04\x4b\x74\x42\x29"; - case 141: // F9 - return "\x04\x4b\x74\x42\x5b"; - case 142: // F10 - return "\x04\x4b\x74\x42\x5d"; - case 143: // F11 - return "\x04\x4b\x74\x42\x7b"; - case 144: // F12 - return "\x04\x4b\x74\x42\x7d"; - case 145: // F13 - return "\x04\x4b\x74\x42\x40"; - case 146: // F14 - return "\x04\x4b\x74\x42\x25"; - case 147: // F15 - return "\x04\x4b\x74\x42\x24"; - case 148: // F16 - return "\x04\x4b\x74\x42\x23"; - case 149: // F17 - return "\x05\x4b\x74\x42\x42\x41"; - case 150: // F18 - return "\x05\x4b\x74\x42\x42\x42"; - case 151: // F19 - return "\x05\x4b\x74\x42\x42\x43"; - case 152: // F20 - return "\x05\x4b\x74\x42\x42\x44"; - case 153: // F21 - return "\x05\x4b\x74\x42\x42\x45"; - case 154: // F22 - return "\x05\x4b\x74\x42\x42\x46"; - case 155: // F23 - return "\x05\x4b\x74\x42\x42\x47"; - case 156: // F24 - return "\x05\x4b\x74\x42\x42\x48"; - case 157: // F25 - return "\x05\x4b\x74\x42\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x74\x42\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x74\x42\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x74\x42\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x74\x42\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x74\x42\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x74\x42\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x74\x42\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x74\x42\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x74\x42\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x74\x42\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x74\x42\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x74\x42\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x74\x42\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x74\x42\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x74\x42\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x74\x42\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x74\x42\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x74\x42\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x74\x42\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x74\x42\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x74\x42\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x74\x42\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x74\x42\x42\x68"; - } // end switch(key) - case 0x2: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x74\x45\x41"; - case 1: // EXCLAM - return "\x05\x4b\x74\x45\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x74\x45\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x74\x45\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x74\x45\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x74\x45\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x74\x45\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x74\x45\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x74\x45\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x74\x45\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x74\x45\x43"; - case 11: // MINUS - return "\x04\x4b\x74\x45\x44"; - case 12: // PERIOD - return "\x04\x4b\x74\x45\x45"; - case 13: // SLASH - return "\x04\x4b\x74\x45\x46"; - case 14: // 0 - return "\x04\x4b\x74\x45\x47"; - case 15: // 1 - return "\x04\x4b\x74\x45\x48"; - case 16: // 2 - return "\x04\x4b\x74\x45\x49"; - case 17: // 3 - return "\x04\x4b\x74\x45\x4a"; - case 18: // 4 - return "\x04\x4b\x74\x45\x4b"; - case 19: // 5 - return "\x04\x4b\x74\x45\x4c"; - case 20: // 6 - return "\x04\x4b\x74\x45\x4d"; - case 21: // 7 - return "\x04\x4b\x74\x45\x4e"; - case 22: // 8 - return "\x04\x4b\x74\x45\x4f"; - case 23: // 9 - return "\x04\x4b\x74\x45\x50"; - case 24: // COLON - return "\x05\x4b\x74\x45\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x74\x45\x51"; - case 26: // LESS - return "\x05\x4b\x74\x45\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x74\x45\x52"; - case 28: // GREATER - return "\x05\x4b\x74\x45\x42\x75"; - case 29: // AT - return "\x05\x4b\x74\x45\x42\x76"; - case 30: // A - return "\x04\x4b\x74\x45\x53"; - case 31: // B - return "\x04\x4b\x74\x45\x54"; - case 32: // C - return "\x04\x4b\x74\x45\x55"; - case 33: // D - return "\x04\x4b\x74\x45\x56"; - case 34: // E - return "\x04\x4b\x74\x45\x57"; - case 35: // F - return "\x04\x4b\x74\x45\x58"; - case 36: // G - return "\x04\x4b\x74\x45\x59"; - case 37: // H - return "\x04\x4b\x74\x45\x5a"; - case 38: // I - return "\x04\x4b\x74\x45\x61"; - case 39: // J - return "\x04\x4b\x74\x45\x62"; - case 40: // K - return "\x04\x4b\x74\x45\x63"; - case 41: // L - return "\x04\x4b\x74\x45\x64"; - case 42: // M - return "\x04\x4b\x74\x45\x65"; - case 43: // N - return "\x04\x4b\x74\x45\x66"; - case 44: // O - return "\x04\x4b\x74\x45\x67"; - case 45: // P - return "\x04\x4b\x74\x45\x68"; - case 46: // Q - return "\x04\x4b\x74\x45\x69"; - case 47: // R - return "\x04\x4b\x74\x45\x6a"; - case 48: // S - return "\x04\x4b\x74\x45\x6b"; - case 49: // T - return "\x04\x4b\x74\x45\x6c"; - case 50: // U - return "\x04\x4b\x74\x45\x6d"; - case 51: // V - return "\x04\x4b\x74\x45\x6e"; - case 52: // W - return "\x04\x4b\x74\x45\x6f"; - case 53: // X - return "\x04\x4b\x74\x45\x70"; - case 54: // Y - return "\x04\x4b\x74\x45\x71"; - case 55: // Z - return "\x04\x4b\x74\x45\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x74\x45\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x74\x45\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x74\x45\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x74\x45\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x74\x45\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x74\x45\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x74\x45\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x74\x45\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x74\x45\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x74\x45\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x74\x45\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x74\x45\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x74\x45\x42\x30"; - case 69: // AE - return "\x05\x4b\x74\x45\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x74\x45\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x74\x45\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x74\x45\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x74\x45\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x74\x45\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x74\x45\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x74\x45\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x74\x45\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x74\x45\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x74\x45\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x74\x45\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x74\x45\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x74\x45\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x74\x45\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x74\x45\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x74\x45\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x74\x45\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x74\x45\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x74\x45\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x74\x45\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x74\x45\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x74\x45\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x74\x45\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x74\x45\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x74\x45\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x74\x45\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x74\x45\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x74\x45\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x74\x45\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x74\x45\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x74\x45\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x74\x45\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x74\x45\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x74\x45\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x74\x45\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x74\x45\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x74\x45\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x74\x45\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x74\x45\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x74\x45\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x74\x45\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x74\x45\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x74\x45\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x74\x45\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x74\x45\x79"; - case 115: // ENTER - return "\x04\x4b\x74\x45\x7a"; - case 116: // TAB - return "\x04\x4b\x74\x45\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x74\x45\x31"; - case 118: // INSERT - return "\x04\x4b\x74\x45\x32"; - case 119: // DELETE - return "\x04\x4b\x74\x45\x33"; - case 120: // RIGHT - return "\x04\x4b\x74\x45\x34"; - case 121: // LEFT - return "\x04\x4b\x74\x45\x35"; - case 122: // DOWN - return "\x04\x4b\x74\x45\x36"; - case 123: // UP - return "\x04\x4b\x74\x45\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x74\x45\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x74\x45\x39"; - case 126: // HOME - return "\x04\x4b\x74\x45\x2e"; - case 127: // END - return "\x04\x4b\x74\x45\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x74\x45\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x74\x45\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x74\x45\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x74\x45\x5e"; - case 132: // PAUSE - return "\x04\x4b\x74\x45\x21"; - case 133: // F1 - return "\x04\x4b\x74\x45\x2f"; - case 134: // F2 - return "\x04\x4b\x74\x45\x2a"; - case 135: // F3 - return "\x04\x4b\x74\x45\x3f"; - case 136: // F4 - return "\x04\x4b\x74\x45\x26"; - case 137: // F5 - return "\x04\x4b\x74\x45\x3c"; - case 138: // F6 - return "\x04\x4b\x74\x45\x3e"; - case 139: // F7 - return "\x04\x4b\x74\x45\x28"; - case 140: // F8 - return "\x04\x4b\x74\x45\x29"; - case 141: // F9 - return "\x04\x4b\x74\x45\x5b"; - case 142: // F10 - return "\x04\x4b\x74\x45\x5d"; - case 143: // F11 - return "\x04\x4b\x74\x45\x7b"; - case 144: // F12 - return "\x04\x4b\x74\x45\x7d"; - case 145: // F13 - return "\x04\x4b\x74\x45\x40"; - case 146: // F14 - return "\x04\x4b\x74\x45\x25"; - case 147: // F15 - return "\x04\x4b\x74\x45\x24"; - case 148: // F16 - return "\x04\x4b\x74\x45\x23"; - case 149: // F17 - return "\x05\x4b\x74\x45\x42\x41"; - case 150: // F18 - return "\x05\x4b\x74\x45\x42\x42"; - case 151: // F19 - return "\x05\x4b\x74\x45\x42\x43"; - case 152: // F20 - return "\x05\x4b\x74\x45\x42\x44"; - case 153: // F21 - return "\x05\x4b\x74\x45\x42\x45"; - case 154: // F22 - return "\x05\x4b\x74\x45\x42\x46"; - case 155: // F23 - return "\x05\x4b\x74\x45\x42\x47"; - case 156: // F24 - return "\x05\x4b\x74\x45\x42\x48"; - case 157: // F25 - return "\x05\x4b\x74\x45\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x74\x45\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x74\x45\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x74\x45\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x74\x45\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x74\x45\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x74\x45\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x74\x45\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x74\x45\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x74\x45\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x74\x45\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x74\x45\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x74\x45\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x74\x45\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x74\x45\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x74\x45\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x74\x45\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x74\x45\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x74\x45\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x74\x45\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x74\x45\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x74\x45\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x74\x45\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x74\x45\x42\x68"; - } // end switch(key) - case 0x3: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x74\x46\x41"; - case 1: // EXCLAM - return "\x05\x4b\x74\x46\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x74\x46\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x74\x46\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x74\x46\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x74\x46\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x74\x46\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x74\x46\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x74\x46\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x74\x46\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x74\x46\x43"; - case 11: // MINUS - return "\x04\x4b\x74\x46\x44"; - case 12: // PERIOD - return "\x04\x4b\x74\x46\x45"; - case 13: // SLASH - return "\x04\x4b\x74\x46\x46"; - case 14: // 0 - return "\x04\x4b\x74\x46\x47"; - case 15: // 1 - return "\x04\x4b\x74\x46\x48"; - case 16: // 2 - return "\x04\x4b\x74\x46\x49"; - case 17: // 3 - return "\x04\x4b\x74\x46\x4a"; - case 18: // 4 - return "\x04\x4b\x74\x46\x4b"; - case 19: // 5 - return "\x04\x4b\x74\x46\x4c"; - case 20: // 6 - return "\x04\x4b\x74\x46\x4d"; - case 21: // 7 - return "\x04\x4b\x74\x46\x4e"; - case 22: // 8 - return "\x04\x4b\x74\x46\x4f"; - case 23: // 9 - return "\x04\x4b\x74\x46\x50"; - case 24: // COLON - return "\x05\x4b\x74\x46\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x74\x46\x51"; - case 26: // LESS - return "\x05\x4b\x74\x46\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x74\x46\x52"; - case 28: // GREATER - return "\x05\x4b\x74\x46\x42\x75"; - case 29: // AT - return "\x05\x4b\x74\x46\x42\x76"; - case 30: // A - return "\x04\x4b\x74\x46\x53"; - case 31: // B - return "\x04\x4b\x74\x46\x54"; - case 32: // C - return "\x04\x4b\x74\x46\x55"; - case 33: // D - return "\x04\x4b\x74\x46\x56"; - case 34: // E - return "\x04\x4b\x74\x46\x57"; - case 35: // F - return "\x04\x4b\x74\x46\x58"; - case 36: // G - return "\x04\x4b\x74\x46\x59"; - case 37: // H - return "\x04\x4b\x74\x46\x5a"; - case 38: // I - return "\x04\x4b\x74\x46\x61"; - case 39: // J - return "\x04\x4b\x74\x46\x62"; - case 40: // K - return "\x04\x4b\x74\x46\x63"; - case 41: // L - return "\x04\x4b\x74\x46\x64"; - case 42: // M - return "\x04\x4b\x74\x46\x65"; - case 43: // N - return "\x04\x4b\x74\x46\x66"; - case 44: // O - return "\x04\x4b\x74\x46\x67"; - case 45: // P - return "\x04\x4b\x74\x46\x68"; - case 46: // Q - return "\x04\x4b\x74\x46\x69"; - case 47: // R - return "\x04\x4b\x74\x46\x6a"; - case 48: // S - return "\x04\x4b\x74\x46\x6b"; - case 49: // T - return "\x04\x4b\x74\x46\x6c"; - case 50: // U - return "\x04\x4b\x74\x46\x6d"; - case 51: // V - return "\x04\x4b\x74\x46\x6e"; - case 52: // W - return "\x04\x4b\x74\x46\x6f"; - case 53: // X - return "\x04\x4b\x74\x46\x70"; - case 54: // Y - return "\x04\x4b\x74\x46\x71"; - case 55: // Z - return "\x04\x4b\x74\x46\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x74\x46\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x74\x46\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x74\x46\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x74\x46\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x74\x46\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x74\x46\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x74\x46\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x74\x46\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x74\x46\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x74\x46\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x74\x46\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x74\x46\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x74\x46\x42\x30"; - case 69: // AE - return "\x05\x4b\x74\x46\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x74\x46\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x74\x46\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x74\x46\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x74\x46\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x74\x46\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x74\x46\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x74\x46\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x74\x46\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x74\x46\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x74\x46\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x74\x46\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x74\x46\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x74\x46\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x74\x46\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x74\x46\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x74\x46\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x74\x46\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x74\x46\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x74\x46\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x74\x46\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x74\x46\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x74\x46\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x74\x46\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x74\x46\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x74\x46\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x74\x46\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x74\x46\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x74\x46\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x74\x46\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x74\x46\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x74\x46\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x74\x46\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x74\x46\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x74\x46\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x74\x46\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x74\x46\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x74\x46\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x74\x46\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x74\x46\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x74\x46\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x74\x46\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x74\x46\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x74\x46\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x74\x46\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x74\x46\x79"; - case 115: // ENTER - return "\x04\x4b\x74\x46\x7a"; - case 116: // TAB - return "\x04\x4b\x74\x46\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x74\x46\x31"; - case 118: // INSERT - return "\x04\x4b\x74\x46\x32"; - case 119: // DELETE - return "\x04\x4b\x74\x46\x33"; - case 120: // RIGHT - return "\x04\x4b\x74\x46\x34"; - case 121: // LEFT - return "\x04\x4b\x74\x46\x35"; - case 122: // DOWN - return "\x04\x4b\x74\x46\x36"; - case 123: // UP - return "\x04\x4b\x74\x46\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x74\x46\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x74\x46\x39"; - case 126: // HOME - return "\x04\x4b\x74\x46\x2e"; - case 127: // END - return "\x04\x4b\x74\x46\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x74\x46\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x74\x46\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x74\x46\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x74\x46\x5e"; - case 132: // PAUSE - return "\x04\x4b\x74\x46\x21"; - case 133: // F1 - return "\x04\x4b\x74\x46\x2f"; - case 134: // F2 - return "\x04\x4b\x74\x46\x2a"; - case 135: // F3 - return "\x04\x4b\x74\x46\x3f"; - case 136: // F4 - return "\x04\x4b\x74\x46\x26"; - case 137: // F5 - return "\x04\x4b\x74\x46\x3c"; - case 138: // F6 - return "\x04\x4b\x74\x46\x3e"; - case 139: // F7 - return "\x04\x4b\x74\x46\x28"; - case 140: // F8 - return "\x04\x4b\x74\x46\x29"; - case 141: // F9 - return "\x04\x4b\x74\x46\x5b"; - case 142: // F10 - return "\x04\x4b\x74\x46\x5d"; - case 143: // F11 - return "\x04\x4b\x74\x46\x7b"; - case 144: // F12 - return "\x04\x4b\x74\x46\x7d"; - case 145: // F13 - return "\x04\x4b\x74\x46\x40"; - case 146: // F14 - return "\x04\x4b\x74\x46\x25"; - case 147: // F15 - return "\x04\x4b\x74\x46\x24"; - case 148: // F16 - return "\x04\x4b\x74\x46\x23"; - case 149: // F17 - return "\x05\x4b\x74\x46\x42\x41"; - case 150: // F18 - return "\x05\x4b\x74\x46\x42\x42"; - case 151: // F19 - return "\x05\x4b\x74\x46\x42\x43"; - case 152: // F20 - return "\x05\x4b\x74\x46\x42\x44"; - case 153: // F21 - return "\x05\x4b\x74\x46\x42\x45"; - case 154: // F22 - return "\x05\x4b\x74\x46\x42\x46"; - case 155: // F23 - return "\x05\x4b\x74\x46\x42\x47"; - case 156: // F24 - return "\x05\x4b\x74\x46\x42\x48"; - case 157: // F25 - return "\x05\x4b\x74\x46\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x74\x46\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x74\x46\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x74\x46\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x74\x46\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x74\x46\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x74\x46\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x74\x46\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x74\x46\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x74\x46\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x74\x46\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x74\x46\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x74\x46\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x74\x46\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x74\x46\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x74\x46\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x74\x46\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x74\x46\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x74\x46\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x74\x46\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x74\x46\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x74\x46\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x74\x46\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x74\x46\x42\x68"; - } // end switch(key) - case 0x4: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x74\x43\x41"; - case 1: // EXCLAM - return "\x05\x4b\x74\x43\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x74\x43\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x74\x43\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x74\x43\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x74\x43\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x74\x43\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x74\x43\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x74\x43\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x74\x43\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x74\x43\x43"; - case 11: // MINUS - return "\x04\x4b\x74\x43\x44"; - case 12: // PERIOD - return "\x04\x4b\x74\x43\x45"; - case 13: // SLASH - return "\x04\x4b\x74\x43\x46"; - case 14: // 0 - return "\x04\x4b\x74\x43\x47"; - case 15: // 1 - return "\x04\x4b\x74\x43\x48"; - case 16: // 2 - return "\x04\x4b\x74\x43\x49"; - case 17: // 3 - return "\x04\x4b\x74\x43\x4a"; - case 18: // 4 - return "\x04\x4b\x74\x43\x4b"; - case 19: // 5 - return "\x04\x4b\x74\x43\x4c"; - case 20: // 6 - return "\x04\x4b\x74\x43\x4d"; - case 21: // 7 - return "\x04\x4b\x74\x43\x4e"; - case 22: // 8 - return "\x04\x4b\x74\x43\x4f"; - case 23: // 9 - return "\x04\x4b\x74\x43\x50"; - case 24: // COLON - return "\x05\x4b\x74\x43\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x74\x43\x51"; - case 26: // LESS - return "\x05\x4b\x74\x43\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x74\x43\x52"; - case 28: // GREATER - return "\x05\x4b\x74\x43\x42\x75"; - case 29: // AT - return "\x05\x4b\x74\x43\x42\x76"; - case 30: // A - return "\x04\x4b\x74\x43\x53"; - case 31: // B - return "\x04\x4b\x74\x43\x54"; - case 32: // C - return "\x04\x4b\x74\x43\x55"; - case 33: // D - return "\x04\x4b\x74\x43\x56"; - case 34: // E - return "\x04\x4b\x74\x43\x57"; - case 35: // F - return "\x04\x4b\x74\x43\x58"; - case 36: // G - return "\x04\x4b\x74\x43\x59"; - case 37: // H - return "\x04\x4b\x74\x43\x5a"; - case 38: // I - return "\x04\x4b\x74\x43\x61"; - case 39: // J - return "\x04\x4b\x74\x43\x62"; - case 40: // K - return "\x04\x4b\x74\x43\x63"; - case 41: // L - return "\x04\x4b\x74\x43\x64"; - case 42: // M - return "\x04\x4b\x74\x43\x65"; - case 43: // N - return "\x04\x4b\x74\x43\x66"; - case 44: // O - return "\x04\x4b\x74\x43\x67"; - case 45: // P - return "\x04\x4b\x74\x43\x68"; - case 46: // Q - return "\x04\x4b\x74\x43\x69"; - case 47: // R - return "\x04\x4b\x74\x43\x6a"; - case 48: // S - return "\x04\x4b\x74\x43\x6b"; - case 49: // T - return "\x04\x4b\x74\x43\x6c"; - case 50: // U - return "\x04\x4b\x74\x43\x6d"; - case 51: // V - return "\x04\x4b\x74\x43\x6e"; - case 52: // W - return "\x04\x4b\x74\x43\x6f"; - case 53: // X - return "\x04\x4b\x74\x43\x70"; - case 54: // Y - return "\x04\x4b\x74\x43\x71"; - case 55: // Z - return "\x04\x4b\x74\x43\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x74\x43\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x74\x43\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x74\x43\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x74\x43\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x74\x43\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x74\x43\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x74\x43\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x74\x43\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x74\x43\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x74\x43\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x74\x43\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x74\x43\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x74\x43\x42\x30"; - case 69: // AE - return "\x05\x4b\x74\x43\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x74\x43\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x74\x43\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x74\x43\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x74\x43\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x74\x43\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x74\x43\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x74\x43\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x74\x43\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x74\x43\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x74\x43\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x74\x43\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x74\x43\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x74\x43\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x74\x43\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x74\x43\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x74\x43\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x74\x43\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x74\x43\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x74\x43\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x74\x43\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x74\x43\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x74\x43\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x74\x43\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x74\x43\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x74\x43\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x74\x43\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x74\x43\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x74\x43\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x74\x43\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x74\x43\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x74\x43\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x74\x43\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x74\x43\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x74\x43\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x74\x43\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x74\x43\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x74\x43\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x74\x43\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x74\x43\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x74\x43\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x74\x43\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x74\x43\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x74\x43\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x74\x43\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x74\x43\x79"; - case 115: // ENTER - return "\x04\x4b\x74\x43\x7a"; - case 116: // TAB - return "\x04\x4b\x74\x43\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x74\x43\x31"; - case 118: // INSERT - return "\x04\x4b\x74\x43\x32"; - case 119: // DELETE - return "\x04\x4b\x74\x43\x33"; - case 120: // RIGHT - return "\x04\x4b\x74\x43\x34"; - case 121: // LEFT - return "\x04\x4b\x74\x43\x35"; - case 122: // DOWN - return "\x04\x4b\x74\x43\x36"; - case 123: // UP - return "\x04\x4b\x74\x43\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x74\x43\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x74\x43\x39"; - case 126: // HOME - return "\x04\x4b\x74\x43\x2e"; - case 127: // END - return "\x04\x4b\x74\x43\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x74\x43\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x74\x43\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x74\x43\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x74\x43\x5e"; - case 132: // PAUSE - return "\x04\x4b\x74\x43\x21"; - case 133: // F1 - return "\x04\x4b\x74\x43\x2f"; - case 134: // F2 - return "\x04\x4b\x74\x43\x2a"; - case 135: // F3 - return "\x04\x4b\x74\x43\x3f"; - case 136: // F4 - return "\x04\x4b\x74\x43\x26"; - case 137: // F5 - return "\x04\x4b\x74\x43\x3c"; - case 138: // F6 - return "\x04\x4b\x74\x43\x3e"; - case 139: // F7 - return "\x04\x4b\x74\x43\x28"; - case 140: // F8 - return "\x04\x4b\x74\x43\x29"; - case 141: // F9 - return "\x04\x4b\x74\x43\x5b"; - case 142: // F10 - return "\x04\x4b\x74\x43\x5d"; - case 143: // F11 - return "\x04\x4b\x74\x43\x7b"; - case 144: // F12 - return "\x04\x4b\x74\x43\x7d"; - case 145: // F13 - return "\x04\x4b\x74\x43\x40"; - case 146: // F14 - return "\x04\x4b\x74\x43\x25"; - case 147: // F15 - return "\x04\x4b\x74\x43\x24"; - case 148: // F16 - return "\x04\x4b\x74\x43\x23"; - case 149: // F17 - return "\x05\x4b\x74\x43\x42\x41"; - case 150: // F18 - return "\x05\x4b\x74\x43\x42\x42"; - case 151: // F19 - return "\x05\x4b\x74\x43\x42\x43"; - case 152: // F20 - return "\x05\x4b\x74\x43\x42\x44"; - case 153: // F21 - return "\x05\x4b\x74\x43\x42\x45"; - case 154: // F22 - return "\x05\x4b\x74\x43\x42\x46"; - case 155: // F23 - return "\x05\x4b\x74\x43\x42\x47"; - case 156: // F24 - return "\x05\x4b\x74\x43\x42\x48"; - case 157: // F25 - return "\x05\x4b\x74\x43\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x74\x43\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x74\x43\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x74\x43\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x74\x43\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x74\x43\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x74\x43\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x74\x43\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x74\x43\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x74\x43\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x74\x43\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x74\x43\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x74\x43\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x74\x43\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x74\x43\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x74\x43\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x74\x43\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x74\x43\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x74\x43\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x74\x43\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x74\x43\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x74\x43\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x74\x43\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x74\x43\x42\x68"; - } // end switch(key) - case 0x5: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x74\x44\x41"; - case 1: // EXCLAM - return "\x05\x4b\x74\x44\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x74\x44\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x74\x44\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x74\x44\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x74\x44\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x74\x44\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x74\x44\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x74\x44\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x74\x44\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x74\x44\x43"; - case 11: // MINUS - return "\x04\x4b\x74\x44\x44"; - case 12: // PERIOD - return "\x04\x4b\x74\x44\x45"; - case 13: // SLASH - return "\x04\x4b\x74\x44\x46"; - case 14: // 0 - return "\x04\x4b\x74\x44\x47"; - case 15: // 1 - return "\x04\x4b\x74\x44\x48"; - case 16: // 2 - return "\x04\x4b\x74\x44\x49"; - case 17: // 3 - return "\x04\x4b\x74\x44\x4a"; - case 18: // 4 - return "\x04\x4b\x74\x44\x4b"; - case 19: // 5 - return "\x04\x4b\x74\x44\x4c"; - case 20: // 6 - return "\x04\x4b\x74\x44\x4d"; - case 21: // 7 - return "\x04\x4b\x74\x44\x4e"; - case 22: // 8 - return "\x04\x4b\x74\x44\x4f"; - case 23: // 9 - return "\x04\x4b\x74\x44\x50"; - case 24: // COLON - return "\x05\x4b\x74\x44\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x74\x44\x51"; - case 26: // LESS - return "\x05\x4b\x74\x44\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x74\x44\x52"; - case 28: // GREATER - return "\x05\x4b\x74\x44\x42\x75"; - case 29: // AT - return "\x05\x4b\x74\x44\x42\x76"; - case 30: // A - return "\x04\x4b\x74\x44\x53"; - case 31: // B - return "\x04\x4b\x74\x44\x54"; - case 32: // C - return "\x04\x4b\x74\x44\x55"; - case 33: // D - return "\x04\x4b\x74\x44\x56"; - case 34: // E - return "\x04\x4b\x74\x44\x57"; - case 35: // F - return "\x04\x4b\x74\x44\x58"; - case 36: // G - return "\x04\x4b\x74\x44\x59"; - case 37: // H - return "\x04\x4b\x74\x44\x5a"; - case 38: // I - return "\x04\x4b\x74\x44\x61"; - case 39: // J - return "\x04\x4b\x74\x44\x62"; - case 40: // K - return "\x04\x4b\x74\x44\x63"; - case 41: // L - return "\x04\x4b\x74\x44\x64"; - case 42: // M - return "\x04\x4b\x74\x44\x65"; - case 43: // N - return "\x04\x4b\x74\x44\x66"; - case 44: // O - return "\x04\x4b\x74\x44\x67"; - case 45: // P - return "\x04\x4b\x74\x44\x68"; - case 46: // Q - return "\x04\x4b\x74\x44\x69"; - case 47: // R - return "\x04\x4b\x74\x44\x6a"; - case 48: // S - return "\x04\x4b\x74\x44\x6b"; - case 49: // T - return "\x04\x4b\x74\x44\x6c"; - case 50: // U - return "\x04\x4b\x74\x44\x6d"; - case 51: // V - return "\x04\x4b\x74\x44\x6e"; - case 52: // W - return "\x04\x4b\x74\x44\x6f"; - case 53: // X - return "\x04\x4b\x74\x44\x70"; - case 54: // Y - return "\x04\x4b\x74\x44\x71"; - case 55: // Z - return "\x04\x4b\x74\x44\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x74\x44\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x74\x44\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x74\x44\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x74\x44\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x74\x44\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x74\x44\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x74\x44\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x74\x44\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x74\x44\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x74\x44\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x74\x44\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x74\x44\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x74\x44\x42\x30"; - case 69: // AE - return "\x05\x4b\x74\x44\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x74\x44\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x74\x44\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x74\x44\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x74\x44\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x74\x44\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x74\x44\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x74\x44\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x74\x44\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x74\x44\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x74\x44\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x74\x44\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x74\x44\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x74\x44\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x74\x44\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x74\x44\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x74\x44\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x74\x44\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x74\x44\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x74\x44\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x74\x44\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x74\x44\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x74\x44\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x74\x44\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x74\x44\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x74\x44\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x74\x44\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x74\x44\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x74\x44\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x74\x44\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x74\x44\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x74\x44\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x74\x44\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x74\x44\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x74\x44\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x74\x44\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x74\x44\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x74\x44\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x74\x44\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x74\x44\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x74\x44\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x74\x44\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x74\x44\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x74\x44\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x74\x44\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x74\x44\x79"; - case 115: // ENTER - return "\x04\x4b\x74\x44\x7a"; - case 116: // TAB - return "\x04\x4b\x74\x44\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x74\x44\x31"; - case 118: // INSERT - return "\x04\x4b\x74\x44\x32"; - case 119: // DELETE - return "\x04\x4b\x74\x44\x33"; - case 120: // RIGHT - return "\x04\x4b\x74\x44\x34"; - case 121: // LEFT - return "\x04\x4b\x74\x44\x35"; - case 122: // DOWN - return "\x04\x4b\x74\x44\x36"; - case 123: // UP - return "\x04\x4b\x74\x44\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x74\x44\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x74\x44\x39"; - case 126: // HOME - return "\x04\x4b\x74\x44\x2e"; - case 127: // END - return "\x04\x4b\x74\x44\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x74\x44\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x74\x44\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x74\x44\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x74\x44\x5e"; - case 132: // PAUSE - return "\x04\x4b\x74\x44\x21"; - case 133: // F1 - return "\x04\x4b\x74\x44\x2f"; - case 134: // F2 - return "\x04\x4b\x74\x44\x2a"; - case 135: // F3 - return "\x04\x4b\x74\x44\x3f"; - case 136: // F4 - return "\x04\x4b\x74\x44\x26"; - case 137: // F5 - return "\x04\x4b\x74\x44\x3c"; - case 138: // F6 - return "\x04\x4b\x74\x44\x3e"; - case 139: // F7 - return "\x04\x4b\x74\x44\x28"; - case 140: // F8 - return "\x04\x4b\x74\x44\x29"; - case 141: // F9 - return "\x04\x4b\x74\x44\x5b"; - case 142: // F10 - return "\x04\x4b\x74\x44\x5d"; - case 143: // F11 - return "\x04\x4b\x74\x44\x7b"; - case 144: // F12 - return "\x04\x4b\x74\x44\x7d"; - case 145: // F13 - return "\x04\x4b\x74\x44\x40"; - case 146: // F14 - return "\x04\x4b\x74\x44\x25"; - case 147: // F15 - return "\x04\x4b\x74\x44\x24"; - case 148: // F16 - return "\x04\x4b\x74\x44\x23"; - case 149: // F17 - return "\x05\x4b\x74\x44\x42\x41"; - case 150: // F18 - return "\x05\x4b\x74\x44\x42\x42"; - case 151: // F19 - return "\x05\x4b\x74\x44\x42\x43"; - case 152: // F20 - return "\x05\x4b\x74\x44\x42\x44"; - case 153: // F21 - return "\x05\x4b\x74\x44\x42\x45"; - case 154: // F22 - return "\x05\x4b\x74\x44\x42\x46"; - case 155: // F23 - return "\x05\x4b\x74\x44\x42\x47"; - case 156: // F24 - return "\x05\x4b\x74\x44\x42\x48"; - case 157: // F25 - return "\x05\x4b\x74\x44\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x74\x44\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x74\x44\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x74\x44\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x74\x44\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x74\x44\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x74\x44\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x74\x44\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x74\x44\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x74\x44\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x74\x44\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x74\x44\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x74\x44\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x74\x44\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x74\x44\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x74\x44\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x74\x44\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x74\x44\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x74\x44\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x74\x44\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x74\x44\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x74\x44\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x74\x44\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x74\x44\x42\x68"; - } // end switch(key) - case 0x6: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x74\x47\x41"; - case 1: // EXCLAM - return "\x05\x4b\x74\x47\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x74\x47\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x74\x47\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x74\x47\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x74\x47\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x74\x47\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x74\x47\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x74\x47\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x74\x47\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x74\x47\x43"; - case 11: // MINUS - return "\x04\x4b\x74\x47\x44"; - case 12: // PERIOD - return "\x04\x4b\x74\x47\x45"; - case 13: // SLASH - return "\x04\x4b\x74\x47\x46"; - case 14: // 0 - return "\x04\x4b\x74\x47\x47"; - case 15: // 1 - return "\x04\x4b\x74\x47\x48"; - case 16: // 2 - return "\x04\x4b\x74\x47\x49"; - case 17: // 3 - return "\x04\x4b\x74\x47\x4a"; - case 18: // 4 - return "\x04\x4b\x74\x47\x4b"; - case 19: // 5 - return "\x04\x4b\x74\x47\x4c"; - case 20: // 6 - return "\x04\x4b\x74\x47\x4d"; - case 21: // 7 - return "\x04\x4b\x74\x47\x4e"; - case 22: // 8 - return "\x04\x4b\x74\x47\x4f"; - case 23: // 9 - return "\x04\x4b\x74\x47\x50"; - case 24: // COLON - return "\x05\x4b\x74\x47\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x74\x47\x51"; - case 26: // LESS - return "\x05\x4b\x74\x47\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x74\x47\x52"; - case 28: // GREATER - return "\x05\x4b\x74\x47\x42\x75"; - case 29: // AT - return "\x05\x4b\x74\x47\x42\x76"; - case 30: // A - return "\x04\x4b\x74\x47\x53"; - case 31: // B - return "\x04\x4b\x74\x47\x54"; - case 32: // C - return "\x04\x4b\x74\x47\x55"; - case 33: // D - return "\x04\x4b\x74\x47\x56"; - case 34: // E - return "\x04\x4b\x74\x47\x57"; - case 35: // F - return "\x04\x4b\x74\x47\x58"; - case 36: // G - return "\x04\x4b\x74\x47\x59"; - case 37: // H - return "\x04\x4b\x74\x47\x5a"; - case 38: // I - return "\x04\x4b\x74\x47\x61"; - case 39: // J - return "\x04\x4b\x74\x47\x62"; - case 40: // K - return "\x04\x4b\x74\x47\x63"; - case 41: // L - return "\x04\x4b\x74\x47\x64"; - case 42: // M - return "\x04\x4b\x74\x47\x65"; - case 43: // N - return "\x04\x4b\x74\x47\x66"; - case 44: // O - return "\x04\x4b\x74\x47\x67"; - case 45: // P - return "\x04\x4b\x74\x47\x68"; - case 46: // Q - return "\x04\x4b\x74\x47\x69"; - case 47: // R - return "\x04\x4b\x74\x47\x6a"; - case 48: // S - return "\x04\x4b\x74\x47\x6b"; - case 49: // T - return "\x04\x4b\x74\x47\x6c"; - case 50: // U - return "\x04\x4b\x74\x47\x6d"; - case 51: // V - return "\x04\x4b\x74\x47\x6e"; - case 52: // W - return "\x04\x4b\x74\x47\x6f"; - case 53: // X - return "\x04\x4b\x74\x47\x70"; - case 54: // Y - return "\x04\x4b\x74\x47\x71"; - case 55: // Z - return "\x04\x4b\x74\x47\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x74\x47\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x74\x47\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x74\x47\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x74\x47\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x74\x47\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x74\x47\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x74\x47\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x74\x47\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x74\x47\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x74\x47\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x74\x47\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x74\x47\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x74\x47\x42\x30"; - case 69: // AE - return "\x05\x4b\x74\x47\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x74\x47\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x74\x47\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x74\x47\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x74\x47\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x74\x47\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x74\x47\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x74\x47\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x74\x47\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x74\x47\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x74\x47\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x74\x47\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x74\x47\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x74\x47\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x74\x47\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x74\x47\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x74\x47\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x74\x47\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x74\x47\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x74\x47\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x74\x47\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x74\x47\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x74\x47\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x74\x47\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x74\x47\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x74\x47\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x74\x47\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x74\x47\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x74\x47\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x74\x47\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x74\x47\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x74\x47\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x74\x47\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x74\x47\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x74\x47\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x74\x47\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x74\x47\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x74\x47\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x74\x47\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x74\x47\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x74\x47\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x74\x47\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x74\x47\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x74\x47\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x74\x47\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x74\x47\x79"; - case 115: // ENTER - return "\x04\x4b\x74\x47\x7a"; - case 116: // TAB - return "\x04\x4b\x74\x47\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x74\x47\x31"; - case 118: // INSERT - return "\x04\x4b\x74\x47\x32"; - case 119: // DELETE - return "\x04\x4b\x74\x47\x33"; - case 120: // RIGHT - return "\x04\x4b\x74\x47\x34"; - case 121: // LEFT - return "\x04\x4b\x74\x47\x35"; - case 122: // DOWN - return "\x04\x4b\x74\x47\x36"; - case 123: // UP - return "\x04\x4b\x74\x47\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x74\x47\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x74\x47\x39"; - case 126: // HOME - return "\x04\x4b\x74\x47\x2e"; - case 127: // END - return "\x04\x4b\x74\x47\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x74\x47\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x74\x47\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x74\x47\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x74\x47\x5e"; - case 132: // PAUSE - return "\x04\x4b\x74\x47\x21"; - case 133: // F1 - return "\x04\x4b\x74\x47\x2f"; - case 134: // F2 - return "\x04\x4b\x74\x47\x2a"; - case 135: // F3 - return "\x04\x4b\x74\x47\x3f"; - case 136: // F4 - return "\x04\x4b\x74\x47\x26"; - case 137: // F5 - return "\x04\x4b\x74\x47\x3c"; - case 138: // F6 - return "\x04\x4b\x74\x47\x3e"; - case 139: // F7 - return "\x04\x4b\x74\x47\x28"; - case 140: // F8 - return "\x04\x4b\x74\x47\x29"; - case 141: // F9 - return "\x04\x4b\x74\x47\x5b"; - case 142: // F10 - return "\x04\x4b\x74\x47\x5d"; - case 143: // F11 - return "\x04\x4b\x74\x47\x7b"; - case 144: // F12 - return "\x04\x4b\x74\x47\x7d"; - case 145: // F13 - return "\x04\x4b\x74\x47\x40"; - case 146: // F14 - return "\x04\x4b\x74\x47\x25"; - case 147: // F15 - return "\x04\x4b\x74\x47\x24"; - case 148: // F16 - return "\x04\x4b\x74\x47\x23"; - case 149: // F17 - return "\x05\x4b\x74\x47\x42\x41"; - case 150: // F18 - return "\x05\x4b\x74\x47\x42\x42"; - case 151: // F19 - return "\x05\x4b\x74\x47\x42\x43"; - case 152: // F20 - return "\x05\x4b\x74\x47\x42\x44"; - case 153: // F21 - return "\x05\x4b\x74\x47\x42\x45"; - case 154: // F22 - return "\x05\x4b\x74\x47\x42\x46"; - case 155: // F23 - return "\x05\x4b\x74\x47\x42\x47"; - case 156: // F24 - return "\x05\x4b\x74\x47\x42\x48"; - case 157: // F25 - return "\x05\x4b\x74\x47\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x74\x47\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x74\x47\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x74\x47\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x74\x47\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x74\x47\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x74\x47\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x74\x47\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x74\x47\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x74\x47\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x74\x47\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x74\x47\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x74\x47\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x74\x47\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x74\x47\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x74\x47\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x74\x47\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x74\x47\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x74\x47\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x74\x47\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x74\x47\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x74\x47\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x74\x47\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x74\x47\x42\x68"; - } // end switch(key) - case 0x7: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x74\x48\x41"; - case 1: // EXCLAM - return "\x05\x4b\x74\x48\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x74\x48\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x74\x48\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x74\x48\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x74\x48\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x74\x48\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x74\x48\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x74\x48\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x74\x48\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x74\x48\x43"; - case 11: // MINUS - return "\x04\x4b\x74\x48\x44"; - case 12: // PERIOD - return "\x04\x4b\x74\x48\x45"; - case 13: // SLASH - return "\x04\x4b\x74\x48\x46"; - case 14: // 0 - return "\x04\x4b\x74\x48\x47"; - case 15: // 1 - return "\x04\x4b\x74\x48\x48"; - case 16: // 2 - return "\x04\x4b\x74\x48\x49"; - case 17: // 3 - return "\x04\x4b\x74\x48\x4a"; - case 18: // 4 - return "\x04\x4b\x74\x48\x4b"; - case 19: // 5 - return "\x04\x4b\x74\x48\x4c"; - case 20: // 6 - return "\x04\x4b\x74\x48\x4d"; - case 21: // 7 - return "\x04\x4b\x74\x48\x4e"; - case 22: // 8 - return "\x04\x4b\x74\x48\x4f"; - case 23: // 9 - return "\x04\x4b\x74\x48\x50"; - case 24: // COLON - return "\x05\x4b\x74\x48\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x74\x48\x51"; - case 26: // LESS - return "\x05\x4b\x74\x48\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x74\x48\x52"; - case 28: // GREATER - return "\x05\x4b\x74\x48\x42\x75"; - case 29: // AT - return "\x05\x4b\x74\x48\x42\x76"; - case 30: // A - return "\x04\x4b\x74\x48\x53"; - case 31: // B - return "\x04\x4b\x74\x48\x54"; - case 32: // C - return "\x04\x4b\x74\x48\x55"; - case 33: // D - return "\x04\x4b\x74\x48\x56"; - case 34: // E - return "\x04\x4b\x74\x48\x57"; - case 35: // F - return "\x04\x4b\x74\x48\x58"; - case 36: // G - return "\x04\x4b\x74\x48\x59"; - case 37: // H - return "\x04\x4b\x74\x48\x5a"; - case 38: // I - return "\x04\x4b\x74\x48\x61"; - case 39: // J - return "\x04\x4b\x74\x48\x62"; - case 40: // K - return "\x04\x4b\x74\x48\x63"; - case 41: // L - return "\x04\x4b\x74\x48\x64"; - case 42: // M - return "\x04\x4b\x74\x48\x65"; - case 43: // N - return "\x04\x4b\x74\x48\x66"; - case 44: // O - return "\x04\x4b\x74\x48\x67"; - case 45: // P - return "\x04\x4b\x74\x48\x68"; - case 46: // Q - return "\x04\x4b\x74\x48\x69"; - case 47: // R - return "\x04\x4b\x74\x48\x6a"; - case 48: // S - return "\x04\x4b\x74\x48\x6b"; - case 49: // T - return "\x04\x4b\x74\x48\x6c"; - case 50: // U - return "\x04\x4b\x74\x48\x6d"; - case 51: // V - return "\x04\x4b\x74\x48\x6e"; - case 52: // W - return "\x04\x4b\x74\x48\x6f"; - case 53: // X - return "\x04\x4b\x74\x48\x70"; - case 54: // Y - return "\x04\x4b\x74\x48\x71"; - case 55: // Z - return "\x04\x4b\x74\x48\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x74\x48\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x74\x48\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x74\x48\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x74\x48\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x74\x48\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x74\x48\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x74\x48\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x74\x48\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x74\x48\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x74\x48\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x74\x48\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x74\x48\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x74\x48\x42\x30"; - case 69: // AE - return "\x05\x4b\x74\x48\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x74\x48\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x74\x48\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x74\x48\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x74\x48\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x74\x48\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x74\x48\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x74\x48\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x74\x48\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x74\x48\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x74\x48\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x74\x48\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x74\x48\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x74\x48\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x74\x48\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x74\x48\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x74\x48\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x74\x48\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x74\x48\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x74\x48\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x74\x48\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x74\x48\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x74\x48\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x74\x48\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x74\x48\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x74\x48\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x74\x48\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x74\x48\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x74\x48\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x74\x48\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x74\x48\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x74\x48\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x74\x48\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x74\x48\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x74\x48\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x74\x48\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x74\x48\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x74\x48\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x74\x48\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x74\x48\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x74\x48\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x74\x48\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x74\x48\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x74\x48\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x74\x48\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x74\x48\x79"; - case 115: // ENTER - return "\x04\x4b\x74\x48\x7a"; - case 116: // TAB - return "\x04\x4b\x74\x48\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x74\x48\x31"; - case 118: // INSERT - return "\x04\x4b\x74\x48\x32"; - case 119: // DELETE - return "\x04\x4b\x74\x48\x33"; - case 120: // RIGHT - return "\x04\x4b\x74\x48\x34"; - case 121: // LEFT - return "\x04\x4b\x74\x48\x35"; - case 122: // DOWN - return "\x04\x4b\x74\x48\x36"; - case 123: // UP - return "\x04\x4b\x74\x48\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x74\x48\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x74\x48\x39"; - case 126: // HOME - return "\x04\x4b\x74\x48\x2e"; - case 127: // END - return "\x04\x4b\x74\x48\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x74\x48\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x74\x48\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x74\x48\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x74\x48\x5e"; - case 132: // PAUSE - return "\x04\x4b\x74\x48\x21"; - case 133: // F1 - return "\x04\x4b\x74\x48\x2f"; - case 134: // F2 - return "\x04\x4b\x74\x48\x2a"; - case 135: // F3 - return "\x04\x4b\x74\x48\x3f"; - case 136: // F4 - return "\x04\x4b\x74\x48\x26"; - case 137: // F5 - return "\x04\x4b\x74\x48\x3c"; - case 138: // F6 - return "\x04\x4b\x74\x48\x3e"; - case 139: // F7 - return "\x04\x4b\x74\x48\x28"; - case 140: // F8 - return "\x04\x4b\x74\x48\x29"; - case 141: // F9 - return "\x04\x4b\x74\x48\x5b"; - case 142: // F10 - return "\x04\x4b\x74\x48\x5d"; - case 143: // F11 - return "\x04\x4b\x74\x48\x7b"; - case 144: // F12 - return "\x04\x4b\x74\x48\x7d"; - case 145: // F13 - return "\x04\x4b\x74\x48\x40"; - case 146: // F14 - return "\x04\x4b\x74\x48\x25"; - case 147: // F15 - return "\x04\x4b\x74\x48\x24"; - case 148: // F16 - return "\x04\x4b\x74\x48\x23"; - case 149: // F17 - return "\x05\x4b\x74\x48\x42\x41"; - case 150: // F18 - return "\x05\x4b\x74\x48\x42\x42"; - case 151: // F19 - return "\x05\x4b\x74\x48\x42\x43"; - case 152: // F20 - return "\x05\x4b\x74\x48\x42\x44"; - case 153: // F21 - return "\x05\x4b\x74\x48\x42\x45"; - case 154: // F22 - return "\x05\x4b\x74\x48\x42\x46"; - case 155: // F23 - return "\x05\x4b\x74\x48\x42\x47"; - case 156: // F24 - return "\x05\x4b\x74\x48\x42\x48"; - case 157: // F25 - return "\x05\x4b\x74\x48\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x74\x48\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x74\x48\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x74\x48\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x74\x48\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x74\x48\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x74\x48\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x74\x48\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x74\x48\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x74\x48\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x74\x48\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x74\x48\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x74\x48\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x74\x48\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x74\x48\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x74\x48\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x74\x48\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x74\x48\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x74\x48\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x74\x48\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x74\x48\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x74\x48\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x74\x48\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x74\x48\x42\x68"; - } // end switch(key) - case 0x8: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x74\x49\x41"; - case 1: // EXCLAM - return "\x05\x4b\x74\x49\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x74\x49\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x74\x49\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x74\x49\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x74\x49\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x74\x49\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x74\x49\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x74\x49\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x74\x49\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x74\x49\x43"; - case 11: // MINUS - return "\x04\x4b\x74\x49\x44"; - case 12: // PERIOD - return "\x04\x4b\x74\x49\x45"; - case 13: // SLASH - return "\x04\x4b\x74\x49\x46"; - case 14: // 0 - return "\x04\x4b\x74\x49\x47"; - case 15: // 1 - return "\x04\x4b\x74\x49\x48"; - case 16: // 2 - return "\x04\x4b\x74\x49\x49"; - case 17: // 3 - return "\x04\x4b\x74\x49\x4a"; - case 18: // 4 - return "\x04\x4b\x74\x49\x4b"; - case 19: // 5 - return "\x04\x4b\x74\x49\x4c"; - case 20: // 6 - return "\x04\x4b\x74\x49\x4d"; - case 21: // 7 - return "\x04\x4b\x74\x49\x4e"; - case 22: // 8 - return "\x04\x4b\x74\x49\x4f"; - case 23: // 9 - return "\x04\x4b\x74\x49\x50"; - case 24: // COLON - return "\x05\x4b\x74\x49\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x74\x49\x51"; - case 26: // LESS - return "\x05\x4b\x74\x49\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x74\x49\x52"; - case 28: // GREATER - return "\x05\x4b\x74\x49\x42\x75"; - case 29: // AT - return "\x05\x4b\x74\x49\x42\x76"; - case 30: // A - return "\x04\x4b\x74\x49\x53"; - case 31: // B - return "\x04\x4b\x74\x49\x54"; - case 32: // C - return "\x04\x4b\x74\x49\x55"; - case 33: // D - return "\x04\x4b\x74\x49\x56"; - case 34: // E - return "\x04\x4b\x74\x49\x57"; - case 35: // F - return "\x04\x4b\x74\x49\x58"; - case 36: // G - return "\x04\x4b\x74\x49\x59"; - case 37: // H - return "\x04\x4b\x74\x49\x5a"; - case 38: // I - return "\x04\x4b\x74\x49\x61"; - case 39: // J - return "\x04\x4b\x74\x49\x62"; - case 40: // K - return "\x04\x4b\x74\x49\x63"; - case 41: // L - return "\x04\x4b\x74\x49\x64"; - case 42: // M - return "\x04\x4b\x74\x49\x65"; - case 43: // N - return "\x04\x4b\x74\x49\x66"; - case 44: // O - return "\x04\x4b\x74\x49\x67"; - case 45: // P - return "\x04\x4b\x74\x49\x68"; - case 46: // Q - return "\x04\x4b\x74\x49\x69"; - case 47: // R - return "\x04\x4b\x74\x49\x6a"; - case 48: // S - return "\x04\x4b\x74\x49\x6b"; - case 49: // T - return "\x04\x4b\x74\x49\x6c"; - case 50: // U - return "\x04\x4b\x74\x49\x6d"; - case 51: // V - return "\x04\x4b\x74\x49\x6e"; - case 52: // W - return "\x04\x4b\x74\x49\x6f"; - case 53: // X - return "\x04\x4b\x74\x49\x70"; - case 54: // Y - return "\x04\x4b\x74\x49\x71"; - case 55: // Z - return "\x04\x4b\x74\x49\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x74\x49\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x74\x49\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x74\x49\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x74\x49\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x74\x49\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x74\x49\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x74\x49\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x74\x49\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x74\x49\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x74\x49\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x74\x49\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x74\x49\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x74\x49\x42\x30"; - case 69: // AE - return "\x05\x4b\x74\x49\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x74\x49\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x74\x49\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x74\x49\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x74\x49\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x74\x49\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x74\x49\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x74\x49\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x74\x49\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x74\x49\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x74\x49\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x74\x49\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x74\x49\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x74\x49\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x74\x49\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x74\x49\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x74\x49\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x74\x49\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x74\x49\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x74\x49\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x74\x49\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x74\x49\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x74\x49\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x74\x49\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x74\x49\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x74\x49\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x74\x49\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x74\x49\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x74\x49\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x74\x49\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x74\x49\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x74\x49\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x74\x49\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x74\x49\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x74\x49\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x74\x49\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x74\x49\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x74\x49\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x74\x49\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x74\x49\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x74\x49\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x74\x49\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x74\x49\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x74\x49\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x74\x49\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x74\x49\x79"; - case 115: // ENTER - return "\x04\x4b\x74\x49\x7a"; - case 116: // TAB - return "\x04\x4b\x74\x49\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x74\x49\x31"; - case 118: // INSERT - return "\x04\x4b\x74\x49\x32"; - case 119: // DELETE - return "\x04\x4b\x74\x49\x33"; - case 120: // RIGHT - return "\x04\x4b\x74\x49\x34"; - case 121: // LEFT - return "\x04\x4b\x74\x49\x35"; - case 122: // DOWN - return "\x04\x4b\x74\x49\x36"; - case 123: // UP - return "\x04\x4b\x74\x49\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x74\x49\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x74\x49\x39"; - case 126: // HOME - return "\x04\x4b\x74\x49\x2e"; - case 127: // END - return "\x04\x4b\x74\x49\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x74\x49\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x74\x49\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x74\x49\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x74\x49\x5e"; - case 132: // PAUSE - return "\x04\x4b\x74\x49\x21"; - case 133: // F1 - return "\x04\x4b\x74\x49\x2f"; - case 134: // F2 - return "\x04\x4b\x74\x49\x2a"; - case 135: // F3 - return "\x04\x4b\x74\x49\x3f"; - case 136: // F4 - return "\x04\x4b\x74\x49\x26"; - case 137: // F5 - return "\x04\x4b\x74\x49\x3c"; - case 138: // F6 - return "\x04\x4b\x74\x49\x3e"; - case 139: // F7 - return "\x04\x4b\x74\x49\x28"; - case 140: // F8 - return "\x04\x4b\x74\x49\x29"; - case 141: // F9 - return "\x04\x4b\x74\x49\x5b"; - case 142: // F10 - return "\x04\x4b\x74\x49\x5d"; - case 143: // F11 - return "\x04\x4b\x74\x49\x7b"; - case 144: // F12 - return "\x04\x4b\x74\x49\x7d"; - case 145: // F13 - return "\x04\x4b\x74\x49\x40"; - case 146: // F14 - return "\x04\x4b\x74\x49\x25"; - case 147: // F15 - return "\x04\x4b\x74\x49\x24"; - case 148: // F16 - return "\x04\x4b\x74\x49\x23"; - case 149: // F17 - return "\x05\x4b\x74\x49\x42\x41"; - case 150: // F18 - return "\x05\x4b\x74\x49\x42\x42"; - case 151: // F19 - return "\x05\x4b\x74\x49\x42\x43"; - case 152: // F20 - return "\x05\x4b\x74\x49\x42\x44"; - case 153: // F21 - return "\x05\x4b\x74\x49\x42\x45"; - case 154: // F22 - return "\x05\x4b\x74\x49\x42\x46"; - case 155: // F23 - return "\x05\x4b\x74\x49\x42\x47"; - case 156: // F24 - return "\x05\x4b\x74\x49\x42\x48"; - case 157: // F25 - return "\x05\x4b\x74\x49\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x74\x49\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x74\x49\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x74\x49\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x74\x49\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x74\x49\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x74\x49\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x74\x49\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x74\x49\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x74\x49\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x74\x49\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x74\x49\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x74\x49\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x74\x49\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x74\x49\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x74\x49\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x74\x49\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x74\x49\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x74\x49\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x74\x49\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x74\x49\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x74\x49\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x74\x49\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x74\x49\x42\x68"; - } // end switch(key) - case 0x9: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x74\x4a\x41"; - case 1: // EXCLAM - return "\x05\x4b\x74\x4a\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x74\x4a\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x74\x4a\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x74\x4a\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x74\x4a\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x74\x4a\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x74\x4a\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x74\x4a\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x74\x4a\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x74\x4a\x43"; - case 11: // MINUS - return "\x04\x4b\x74\x4a\x44"; - case 12: // PERIOD - return "\x04\x4b\x74\x4a\x45"; - case 13: // SLASH - return "\x04\x4b\x74\x4a\x46"; - case 14: // 0 - return "\x04\x4b\x74\x4a\x47"; - case 15: // 1 - return "\x04\x4b\x74\x4a\x48"; - case 16: // 2 - return "\x04\x4b\x74\x4a\x49"; - case 17: // 3 - return "\x04\x4b\x74\x4a\x4a"; - case 18: // 4 - return "\x04\x4b\x74\x4a\x4b"; - case 19: // 5 - return "\x04\x4b\x74\x4a\x4c"; - case 20: // 6 - return "\x04\x4b\x74\x4a\x4d"; - case 21: // 7 - return "\x04\x4b\x74\x4a\x4e"; - case 22: // 8 - return "\x04\x4b\x74\x4a\x4f"; - case 23: // 9 - return "\x04\x4b\x74\x4a\x50"; - case 24: // COLON - return "\x05\x4b\x74\x4a\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x74\x4a\x51"; - case 26: // LESS - return "\x05\x4b\x74\x4a\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x74\x4a\x52"; - case 28: // GREATER - return "\x05\x4b\x74\x4a\x42\x75"; - case 29: // AT - return "\x05\x4b\x74\x4a\x42\x76"; - case 30: // A - return "\x04\x4b\x74\x4a\x53"; - case 31: // B - return "\x04\x4b\x74\x4a\x54"; - case 32: // C - return "\x04\x4b\x74\x4a\x55"; - case 33: // D - return "\x04\x4b\x74\x4a\x56"; - case 34: // E - return "\x04\x4b\x74\x4a\x57"; - case 35: // F - return "\x04\x4b\x74\x4a\x58"; - case 36: // G - return "\x04\x4b\x74\x4a\x59"; - case 37: // H - return "\x04\x4b\x74\x4a\x5a"; - case 38: // I - return "\x04\x4b\x74\x4a\x61"; - case 39: // J - return "\x04\x4b\x74\x4a\x62"; - case 40: // K - return "\x04\x4b\x74\x4a\x63"; - case 41: // L - return "\x04\x4b\x74\x4a\x64"; - case 42: // M - return "\x04\x4b\x74\x4a\x65"; - case 43: // N - return "\x04\x4b\x74\x4a\x66"; - case 44: // O - return "\x04\x4b\x74\x4a\x67"; - case 45: // P - return "\x04\x4b\x74\x4a\x68"; - case 46: // Q - return "\x04\x4b\x74\x4a\x69"; - case 47: // R - return "\x04\x4b\x74\x4a\x6a"; - case 48: // S - return "\x04\x4b\x74\x4a\x6b"; - case 49: // T - return "\x04\x4b\x74\x4a\x6c"; - case 50: // U - return "\x04\x4b\x74\x4a\x6d"; - case 51: // V - return "\x04\x4b\x74\x4a\x6e"; - case 52: // W - return "\x04\x4b\x74\x4a\x6f"; - case 53: // X - return "\x04\x4b\x74\x4a\x70"; - case 54: // Y - return "\x04\x4b\x74\x4a\x71"; - case 55: // Z - return "\x04\x4b\x74\x4a\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x74\x4a\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x74\x4a\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x74\x4a\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x74\x4a\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x74\x4a\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x74\x4a\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x74\x4a\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x74\x4a\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x74\x4a\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x74\x4a\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x74\x4a\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x74\x4a\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x74\x4a\x42\x30"; - case 69: // AE - return "\x05\x4b\x74\x4a\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x74\x4a\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x74\x4a\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x74\x4a\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x74\x4a\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x74\x4a\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x74\x4a\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x74\x4a\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x74\x4a\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x74\x4a\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x74\x4a\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x74\x4a\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x74\x4a\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x74\x4a\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x74\x4a\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x74\x4a\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x74\x4a\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x74\x4a\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x74\x4a\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x74\x4a\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x74\x4a\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x74\x4a\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x74\x4a\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x74\x4a\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x74\x4a\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x74\x4a\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x74\x4a\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x74\x4a\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x74\x4a\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x74\x4a\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x74\x4a\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x74\x4a\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x74\x4a\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x74\x4a\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x74\x4a\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x74\x4a\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x74\x4a\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x74\x4a\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x74\x4a\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x74\x4a\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x74\x4a\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x74\x4a\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x74\x4a\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x74\x4a\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x74\x4a\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x74\x4a\x79"; - case 115: // ENTER - return "\x04\x4b\x74\x4a\x7a"; - case 116: // TAB - return "\x04\x4b\x74\x4a\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x74\x4a\x31"; - case 118: // INSERT - return "\x04\x4b\x74\x4a\x32"; - case 119: // DELETE - return "\x04\x4b\x74\x4a\x33"; - case 120: // RIGHT - return "\x04\x4b\x74\x4a\x34"; - case 121: // LEFT - return "\x04\x4b\x74\x4a\x35"; - case 122: // DOWN - return "\x04\x4b\x74\x4a\x36"; - case 123: // UP - return "\x04\x4b\x74\x4a\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x74\x4a\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x74\x4a\x39"; - case 126: // HOME - return "\x04\x4b\x74\x4a\x2e"; - case 127: // END - return "\x04\x4b\x74\x4a\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x74\x4a\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x74\x4a\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x74\x4a\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x74\x4a\x5e"; - case 132: // PAUSE - return "\x04\x4b\x74\x4a\x21"; - case 133: // F1 - return "\x04\x4b\x74\x4a\x2f"; - case 134: // F2 - return "\x04\x4b\x74\x4a\x2a"; - case 135: // F3 - return "\x04\x4b\x74\x4a\x3f"; - case 136: // F4 - return "\x04\x4b\x74\x4a\x26"; - case 137: // F5 - return "\x04\x4b\x74\x4a\x3c"; - case 138: // F6 - return "\x04\x4b\x74\x4a\x3e"; - case 139: // F7 - return "\x04\x4b\x74\x4a\x28"; - case 140: // F8 - return "\x04\x4b\x74\x4a\x29"; - case 141: // F9 - return "\x04\x4b\x74\x4a\x5b"; - case 142: // F10 - return "\x04\x4b\x74\x4a\x5d"; - case 143: // F11 - return "\x04\x4b\x74\x4a\x7b"; - case 144: // F12 - return "\x04\x4b\x74\x4a\x7d"; - case 145: // F13 - return "\x04\x4b\x74\x4a\x40"; - case 146: // F14 - return "\x04\x4b\x74\x4a\x25"; - case 147: // F15 - return "\x04\x4b\x74\x4a\x24"; - case 148: // F16 - return "\x04\x4b\x74\x4a\x23"; - case 149: // F17 - return "\x05\x4b\x74\x4a\x42\x41"; - case 150: // F18 - return "\x05\x4b\x74\x4a\x42\x42"; - case 151: // F19 - return "\x05\x4b\x74\x4a\x42\x43"; - case 152: // F20 - return "\x05\x4b\x74\x4a\x42\x44"; - case 153: // F21 - return "\x05\x4b\x74\x4a\x42\x45"; - case 154: // F22 - return "\x05\x4b\x74\x4a\x42\x46"; - case 155: // F23 - return "\x05\x4b\x74\x4a\x42\x47"; - case 156: // F24 - return "\x05\x4b\x74\x4a\x42\x48"; - case 157: // F25 - return "\x05\x4b\x74\x4a\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x74\x4a\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x74\x4a\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x74\x4a\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x74\x4a\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x74\x4a\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x74\x4a\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x74\x4a\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x74\x4a\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x74\x4a\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x74\x4a\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x74\x4a\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x74\x4a\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x74\x4a\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x74\x4a\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x74\x4a\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x74\x4a\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x74\x4a\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x74\x4a\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x74\x4a\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x74\x4a\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x74\x4a\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x74\x4a\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x74\x4a\x42\x68"; - } // end switch(key) - case 0xa: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x74\x4d\x41"; - case 1: // EXCLAM - return "\x05\x4b\x74\x4d\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x74\x4d\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x74\x4d\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x74\x4d\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x74\x4d\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x74\x4d\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x74\x4d\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x74\x4d\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x74\x4d\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x74\x4d\x43"; - case 11: // MINUS - return "\x04\x4b\x74\x4d\x44"; - case 12: // PERIOD - return "\x04\x4b\x74\x4d\x45"; - case 13: // SLASH - return "\x04\x4b\x74\x4d\x46"; - case 14: // 0 - return "\x04\x4b\x74\x4d\x47"; - case 15: // 1 - return "\x04\x4b\x74\x4d\x48"; - case 16: // 2 - return "\x04\x4b\x74\x4d\x49"; - case 17: // 3 - return "\x04\x4b\x74\x4d\x4a"; - case 18: // 4 - return "\x04\x4b\x74\x4d\x4b"; - case 19: // 5 - return "\x04\x4b\x74\x4d\x4c"; - case 20: // 6 - return "\x04\x4b\x74\x4d\x4d"; - case 21: // 7 - return "\x04\x4b\x74\x4d\x4e"; - case 22: // 8 - return "\x04\x4b\x74\x4d\x4f"; - case 23: // 9 - return "\x04\x4b\x74\x4d\x50"; - case 24: // COLON - return "\x05\x4b\x74\x4d\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x74\x4d\x51"; - case 26: // LESS - return "\x05\x4b\x74\x4d\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x74\x4d\x52"; - case 28: // GREATER - return "\x05\x4b\x74\x4d\x42\x75"; - case 29: // AT - return "\x05\x4b\x74\x4d\x42\x76"; - case 30: // A - return "\x04\x4b\x74\x4d\x53"; - case 31: // B - return "\x04\x4b\x74\x4d\x54"; - case 32: // C - return "\x04\x4b\x74\x4d\x55"; - case 33: // D - return "\x04\x4b\x74\x4d\x56"; - case 34: // E - return "\x04\x4b\x74\x4d\x57"; - case 35: // F - return "\x04\x4b\x74\x4d\x58"; - case 36: // G - return "\x04\x4b\x74\x4d\x59"; - case 37: // H - return "\x04\x4b\x74\x4d\x5a"; - case 38: // I - return "\x04\x4b\x74\x4d\x61"; - case 39: // J - return "\x04\x4b\x74\x4d\x62"; - case 40: // K - return "\x04\x4b\x74\x4d\x63"; - case 41: // L - return "\x04\x4b\x74\x4d\x64"; - case 42: // M - return "\x04\x4b\x74\x4d\x65"; - case 43: // N - return "\x04\x4b\x74\x4d\x66"; - case 44: // O - return "\x04\x4b\x74\x4d\x67"; - case 45: // P - return "\x04\x4b\x74\x4d\x68"; - case 46: // Q - return "\x04\x4b\x74\x4d\x69"; - case 47: // R - return "\x04\x4b\x74\x4d\x6a"; - case 48: // S - return "\x04\x4b\x74\x4d\x6b"; - case 49: // T - return "\x04\x4b\x74\x4d\x6c"; - case 50: // U - return "\x04\x4b\x74\x4d\x6d"; - case 51: // V - return "\x04\x4b\x74\x4d\x6e"; - case 52: // W - return "\x04\x4b\x74\x4d\x6f"; - case 53: // X - return "\x04\x4b\x74\x4d\x70"; - case 54: // Y - return "\x04\x4b\x74\x4d\x71"; - case 55: // Z - return "\x04\x4b\x74\x4d\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x74\x4d\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x74\x4d\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x74\x4d\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x74\x4d\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x74\x4d\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x74\x4d\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x74\x4d\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x74\x4d\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x74\x4d\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x74\x4d\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x74\x4d\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x74\x4d\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x74\x4d\x42\x30"; - case 69: // AE - return "\x05\x4b\x74\x4d\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x74\x4d\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x74\x4d\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x74\x4d\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x74\x4d\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x74\x4d\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x74\x4d\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x74\x4d\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x74\x4d\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x74\x4d\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x74\x4d\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x74\x4d\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x74\x4d\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x74\x4d\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x74\x4d\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x74\x4d\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x74\x4d\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x74\x4d\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x74\x4d\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x74\x4d\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x74\x4d\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x74\x4d\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x74\x4d\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x74\x4d\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x74\x4d\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x74\x4d\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x74\x4d\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x74\x4d\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x74\x4d\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x74\x4d\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x74\x4d\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x74\x4d\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x74\x4d\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x74\x4d\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x74\x4d\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x74\x4d\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x74\x4d\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x74\x4d\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x74\x4d\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x74\x4d\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x74\x4d\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x74\x4d\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x74\x4d\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x74\x4d\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x74\x4d\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x74\x4d\x79"; - case 115: // ENTER - return "\x04\x4b\x74\x4d\x7a"; - case 116: // TAB - return "\x04\x4b\x74\x4d\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x74\x4d\x31"; - case 118: // INSERT - return "\x04\x4b\x74\x4d\x32"; - case 119: // DELETE - return "\x04\x4b\x74\x4d\x33"; - case 120: // RIGHT - return "\x04\x4b\x74\x4d\x34"; - case 121: // LEFT - return "\x04\x4b\x74\x4d\x35"; - case 122: // DOWN - return "\x04\x4b\x74\x4d\x36"; - case 123: // UP - return "\x04\x4b\x74\x4d\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x74\x4d\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x74\x4d\x39"; - case 126: // HOME - return "\x04\x4b\x74\x4d\x2e"; - case 127: // END - return "\x04\x4b\x74\x4d\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x74\x4d\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x74\x4d\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x74\x4d\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x74\x4d\x5e"; - case 132: // PAUSE - return "\x04\x4b\x74\x4d\x21"; - case 133: // F1 - return "\x04\x4b\x74\x4d\x2f"; - case 134: // F2 - return "\x04\x4b\x74\x4d\x2a"; - case 135: // F3 - return "\x04\x4b\x74\x4d\x3f"; - case 136: // F4 - return "\x04\x4b\x74\x4d\x26"; - case 137: // F5 - return "\x04\x4b\x74\x4d\x3c"; - case 138: // F6 - return "\x04\x4b\x74\x4d\x3e"; - case 139: // F7 - return "\x04\x4b\x74\x4d\x28"; - case 140: // F8 - return "\x04\x4b\x74\x4d\x29"; - case 141: // F9 - return "\x04\x4b\x74\x4d\x5b"; - case 142: // F10 - return "\x04\x4b\x74\x4d\x5d"; - case 143: // F11 - return "\x04\x4b\x74\x4d\x7b"; - case 144: // F12 - return "\x04\x4b\x74\x4d\x7d"; - case 145: // F13 - return "\x04\x4b\x74\x4d\x40"; - case 146: // F14 - return "\x04\x4b\x74\x4d\x25"; - case 147: // F15 - return "\x04\x4b\x74\x4d\x24"; - case 148: // F16 - return "\x04\x4b\x74\x4d\x23"; - case 149: // F17 - return "\x05\x4b\x74\x4d\x42\x41"; - case 150: // F18 - return "\x05\x4b\x74\x4d\x42\x42"; - case 151: // F19 - return "\x05\x4b\x74\x4d\x42\x43"; - case 152: // F20 - return "\x05\x4b\x74\x4d\x42\x44"; - case 153: // F21 - return "\x05\x4b\x74\x4d\x42\x45"; - case 154: // F22 - return "\x05\x4b\x74\x4d\x42\x46"; - case 155: // F23 - return "\x05\x4b\x74\x4d\x42\x47"; - case 156: // F24 - return "\x05\x4b\x74\x4d\x42\x48"; - case 157: // F25 - return "\x05\x4b\x74\x4d\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x74\x4d\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x74\x4d\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x74\x4d\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x74\x4d\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x74\x4d\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x74\x4d\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x74\x4d\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x74\x4d\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x74\x4d\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x74\x4d\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x74\x4d\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x74\x4d\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x74\x4d\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x74\x4d\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x74\x4d\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x74\x4d\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x74\x4d\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x74\x4d\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x74\x4d\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x74\x4d\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x74\x4d\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x74\x4d\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x74\x4d\x42\x68"; - } // end switch(key) - case 0xb: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x74\x4e\x41"; - case 1: // EXCLAM - return "\x05\x4b\x74\x4e\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x74\x4e\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x74\x4e\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x74\x4e\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x74\x4e\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x74\x4e\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x74\x4e\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x74\x4e\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x74\x4e\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x74\x4e\x43"; - case 11: // MINUS - return "\x04\x4b\x74\x4e\x44"; - case 12: // PERIOD - return "\x04\x4b\x74\x4e\x45"; - case 13: // SLASH - return "\x04\x4b\x74\x4e\x46"; - case 14: // 0 - return "\x04\x4b\x74\x4e\x47"; - case 15: // 1 - return "\x04\x4b\x74\x4e\x48"; - case 16: // 2 - return "\x04\x4b\x74\x4e\x49"; - case 17: // 3 - return "\x04\x4b\x74\x4e\x4a"; - case 18: // 4 - return "\x04\x4b\x74\x4e\x4b"; - case 19: // 5 - return "\x04\x4b\x74\x4e\x4c"; - case 20: // 6 - return "\x04\x4b\x74\x4e\x4d"; - case 21: // 7 - return "\x04\x4b\x74\x4e\x4e"; - case 22: // 8 - return "\x04\x4b\x74\x4e\x4f"; - case 23: // 9 - return "\x04\x4b\x74\x4e\x50"; - case 24: // COLON - return "\x05\x4b\x74\x4e\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x74\x4e\x51"; - case 26: // LESS - return "\x05\x4b\x74\x4e\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x74\x4e\x52"; - case 28: // GREATER - return "\x05\x4b\x74\x4e\x42\x75"; - case 29: // AT - return "\x05\x4b\x74\x4e\x42\x76"; - case 30: // A - return "\x04\x4b\x74\x4e\x53"; - case 31: // B - return "\x04\x4b\x74\x4e\x54"; - case 32: // C - return "\x04\x4b\x74\x4e\x55"; - case 33: // D - return "\x04\x4b\x74\x4e\x56"; - case 34: // E - return "\x04\x4b\x74\x4e\x57"; - case 35: // F - return "\x04\x4b\x74\x4e\x58"; - case 36: // G - return "\x04\x4b\x74\x4e\x59"; - case 37: // H - return "\x04\x4b\x74\x4e\x5a"; - case 38: // I - return "\x04\x4b\x74\x4e\x61"; - case 39: // J - return "\x04\x4b\x74\x4e\x62"; - case 40: // K - return "\x04\x4b\x74\x4e\x63"; - case 41: // L - return "\x04\x4b\x74\x4e\x64"; - case 42: // M - return "\x04\x4b\x74\x4e\x65"; - case 43: // N - return "\x04\x4b\x74\x4e\x66"; - case 44: // O - return "\x04\x4b\x74\x4e\x67"; - case 45: // P - return "\x04\x4b\x74\x4e\x68"; - case 46: // Q - return "\x04\x4b\x74\x4e\x69"; - case 47: // R - return "\x04\x4b\x74\x4e\x6a"; - case 48: // S - return "\x04\x4b\x74\x4e\x6b"; - case 49: // T - return "\x04\x4b\x74\x4e\x6c"; - case 50: // U - return "\x04\x4b\x74\x4e\x6d"; - case 51: // V - return "\x04\x4b\x74\x4e\x6e"; - case 52: // W - return "\x04\x4b\x74\x4e\x6f"; - case 53: // X - return "\x04\x4b\x74\x4e\x70"; - case 54: // Y - return "\x04\x4b\x74\x4e\x71"; - case 55: // Z - return "\x04\x4b\x74\x4e\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x74\x4e\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x74\x4e\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x74\x4e\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x74\x4e\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x74\x4e\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x74\x4e\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x74\x4e\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x74\x4e\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x74\x4e\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x74\x4e\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x74\x4e\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x74\x4e\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x74\x4e\x42\x30"; - case 69: // AE - return "\x05\x4b\x74\x4e\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x74\x4e\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x74\x4e\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x74\x4e\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x74\x4e\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x74\x4e\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x74\x4e\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x74\x4e\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x74\x4e\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x74\x4e\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x74\x4e\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x74\x4e\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x74\x4e\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x74\x4e\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x74\x4e\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x74\x4e\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x74\x4e\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x74\x4e\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x74\x4e\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x74\x4e\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x74\x4e\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x74\x4e\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x74\x4e\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x74\x4e\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x74\x4e\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x74\x4e\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x74\x4e\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x74\x4e\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x74\x4e\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x74\x4e\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x74\x4e\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x74\x4e\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x74\x4e\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x74\x4e\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x74\x4e\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x74\x4e\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x74\x4e\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x74\x4e\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x74\x4e\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x74\x4e\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x74\x4e\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x74\x4e\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x74\x4e\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x74\x4e\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x74\x4e\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x74\x4e\x79"; - case 115: // ENTER - return "\x04\x4b\x74\x4e\x7a"; - case 116: // TAB - return "\x04\x4b\x74\x4e\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x74\x4e\x31"; - case 118: // INSERT - return "\x04\x4b\x74\x4e\x32"; - case 119: // DELETE - return "\x04\x4b\x74\x4e\x33"; - case 120: // RIGHT - return "\x04\x4b\x74\x4e\x34"; - case 121: // LEFT - return "\x04\x4b\x74\x4e\x35"; - case 122: // DOWN - return "\x04\x4b\x74\x4e\x36"; - case 123: // UP - return "\x04\x4b\x74\x4e\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x74\x4e\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x74\x4e\x39"; - case 126: // HOME - return "\x04\x4b\x74\x4e\x2e"; - case 127: // END - return "\x04\x4b\x74\x4e\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x74\x4e\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x74\x4e\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x74\x4e\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x74\x4e\x5e"; - case 132: // PAUSE - return "\x04\x4b\x74\x4e\x21"; - case 133: // F1 - return "\x04\x4b\x74\x4e\x2f"; - case 134: // F2 - return "\x04\x4b\x74\x4e\x2a"; - case 135: // F3 - return "\x04\x4b\x74\x4e\x3f"; - case 136: // F4 - return "\x04\x4b\x74\x4e\x26"; - case 137: // F5 - return "\x04\x4b\x74\x4e\x3c"; - case 138: // F6 - return "\x04\x4b\x74\x4e\x3e"; - case 139: // F7 - return "\x04\x4b\x74\x4e\x28"; - case 140: // F8 - return "\x04\x4b\x74\x4e\x29"; - case 141: // F9 - return "\x04\x4b\x74\x4e\x5b"; - case 142: // F10 - return "\x04\x4b\x74\x4e\x5d"; - case 143: // F11 - return "\x04\x4b\x74\x4e\x7b"; - case 144: // F12 - return "\x04\x4b\x74\x4e\x7d"; - case 145: // F13 - return "\x04\x4b\x74\x4e\x40"; - case 146: // F14 - return "\x04\x4b\x74\x4e\x25"; - case 147: // F15 - return "\x04\x4b\x74\x4e\x24"; - case 148: // F16 - return "\x04\x4b\x74\x4e\x23"; - case 149: // F17 - return "\x05\x4b\x74\x4e\x42\x41"; - case 150: // F18 - return "\x05\x4b\x74\x4e\x42\x42"; - case 151: // F19 - return "\x05\x4b\x74\x4e\x42\x43"; - case 152: // F20 - return "\x05\x4b\x74\x4e\x42\x44"; - case 153: // F21 - return "\x05\x4b\x74\x4e\x42\x45"; - case 154: // F22 - return "\x05\x4b\x74\x4e\x42\x46"; - case 155: // F23 - return "\x05\x4b\x74\x4e\x42\x47"; - case 156: // F24 - return "\x05\x4b\x74\x4e\x42\x48"; - case 157: // F25 - return "\x05\x4b\x74\x4e\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x74\x4e\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x74\x4e\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x74\x4e\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x74\x4e\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x74\x4e\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x74\x4e\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x74\x4e\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x74\x4e\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x74\x4e\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x74\x4e\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x74\x4e\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x74\x4e\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x74\x4e\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x74\x4e\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x74\x4e\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x74\x4e\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x74\x4e\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x74\x4e\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x74\x4e\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x74\x4e\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x74\x4e\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x74\x4e\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x74\x4e\x42\x68"; - } // end switch(key) - case 0xc: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x74\x4b\x41"; - case 1: // EXCLAM - return "\x05\x4b\x74\x4b\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x74\x4b\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x74\x4b\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x74\x4b\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x74\x4b\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x74\x4b\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x74\x4b\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x74\x4b\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x74\x4b\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x74\x4b\x43"; - case 11: // MINUS - return "\x04\x4b\x74\x4b\x44"; - case 12: // PERIOD - return "\x04\x4b\x74\x4b\x45"; - case 13: // SLASH - return "\x04\x4b\x74\x4b\x46"; - case 14: // 0 - return "\x04\x4b\x74\x4b\x47"; - case 15: // 1 - return "\x04\x4b\x74\x4b\x48"; - case 16: // 2 - return "\x04\x4b\x74\x4b\x49"; - case 17: // 3 - return "\x04\x4b\x74\x4b\x4a"; - case 18: // 4 - return "\x04\x4b\x74\x4b\x4b"; - case 19: // 5 - return "\x04\x4b\x74\x4b\x4c"; - case 20: // 6 - return "\x04\x4b\x74\x4b\x4d"; - case 21: // 7 - return "\x04\x4b\x74\x4b\x4e"; - case 22: // 8 - return "\x04\x4b\x74\x4b\x4f"; - case 23: // 9 - return "\x04\x4b\x74\x4b\x50"; - case 24: // COLON - return "\x05\x4b\x74\x4b\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x74\x4b\x51"; - case 26: // LESS - return "\x05\x4b\x74\x4b\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x74\x4b\x52"; - case 28: // GREATER - return "\x05\x4b\x74\x4b\x42\x75"; - case 29: // AT - return "\x05\x4b\x74\x4b\x42\x76"; - case 30: // A - return "\x04\x4b\x74\x4b\x53"; - case 31: // B - return "\x04\x4b\x74\x4b\x54"; - case 32: // C - return "\x04\x4b\x74\x4b\x55"; - case 33: // D - return "\x04\x4b\x74\x4b\x56"; - case 34: // E - return "\x04\x4b\x74\x4b\x57"; - case 35: // F - return "\x04\x4b\x74\x4b\x58"; - case 36: // G - return "\x04\x4b\x74\x4b\x59"; - case 37: // H - return "\x04\x4b\x74\x4b\x5a"; - case 38: // I - return "\x04\x4b\x74\x4b\x61"; - case 39: // J - return "\x04\x4b\x74\x4b\x62"; - case 40: // K - return "\x04\x4b\x74\x4b\x63"; - case 41: // L - return "\x04\x4b\x74\x4b\x64"; - case 42: // M - return "\x04\x4b\x74\x4b\x65"; - case 43: // N - return "\x04\x4b\x74\x4b\x66"; - case 44: // O - return "\x04\x4b\x74\x4b\x67"; - case 45: // P - return "\x04\x4b\x74\x4b\x68"; - case 46: // Q - return "\x04\x4b\x74\x4b\x69"; - case 47: // R - return "\x04\x4b\x74\x4b\x6a"; - case 48: // S - return "\x04\x4b\x74\x4b\x6b"; - case 49: // T - return "\x04\x4b\x74\x4b\x6c"; - case 50: // U - return "\x04\x4b\x74\x4b\x6d"; - case 51: // V - return "\x04\x4b\x74\x4b\x6e"; - case 52: // W - return "\x04\x4b\x74\x4b\x6f"; - case 53: // X - return "\x04\x4b\x74\x4b\x70"; - case 54: // Y - return "\x04\x4b\x74\x4b\x71"; - case 55: // Z - return "\x04\x4b\x74\x4b\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x74\x4b\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x74\x4b\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x74\x4b\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x74\x4b\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x74\x4b\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x74\x4b\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x74\x4b\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x74\x4b\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x74\x4b\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x74\x4b\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x74\x4b\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x74\x4b\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x74\x4b\x42\x30"; - case 69: // AE - return "\x05\x4b\x74\x4b\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x74\x4b\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x74\x4b\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x74\x4b\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x74\x4b\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x74\x4b\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x74\x4b\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x74\x4b\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x74\x4b\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x74\x4b\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x74\x4b\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x74\x4b\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x74\x4b\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x74\x4b\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x74\x4b\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x74\x4b\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x74\x4b\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x74\x4b\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x74\x4b\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x74\x4b\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x74\x4b\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x74\x4b\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x74\x4b\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x74\x4b\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x74\x4b\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x74\x4b\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x74\x4b\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x74\x4b\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x74\x4b\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x74\x4b\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x74\x4b\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x74\x4b\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x74\x4b\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x74\x4b\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x74\x4b\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x74\x4b\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x74\x4b\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x74\x4b\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x74\x4b\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x74\x4b\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x74\x4b\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x74\x4b\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x74\x4b\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x74\x4b\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x74\x4b\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x74\x4b\x79"; - case 115: // ENTER - return "\x04\x4b\x74\x4b\x7a"; - case 116: // TAB - return "\x04\x4b\x74\x4b\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x74\x4b\x31"; - case 118: // INSERT - return "\x04\x4b\x74\x4b\x32"; - case 119: // DELETE - return "\x04\x4b\x74\x4b\x33"; - case 120: // RIGHT - return "\x04\x4b\x74\x4b\x34"; - case 121: // LEFT - return "\x04\x4b\x74\x4b\x35"; - case 122: // DOWN - return "\x04\x4b\x74\x4b\x36"; - case 123: // UP - return "\x04\x4b\x74\x4b\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x74\x4b\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x74\x4b\x39"; - case 126: // HOME - return "\x04\x4b\x74\x4b\x2e"; - case 127: // END - return "\x04\x4b\x74\x4b\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x74\x4b\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x74\x4b\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x74\x4b\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x74\x4b\x5e"; - case 132: // PAUSE - return "\x04\x4b\x74\x4b\x21"; - case 133: // F1 - return "\x04\x4b\x74\x4b\x2f"; - case 134: // F2 - return "\x04\x4b\x74\x4b\x2a"; - case 135: // F3 - return "\x04\x4b\x74\x4b\x3f"; - case 136: // F4 - return "\x04\x4b\x74\x4b\x26"; - case 137: // F5 - return "\x04\x4b\x74\x4b\x3c"; - case 138: // F6 - return "\x04\x4b\x74\x4b\x3e"; - case 139: // F7 - return "\x04\x4b\x74\x4b\x28"; - case 140: // F8 - return "\x04\x4b\x74\x4b\x29"; - case 141: // F9 - return "\x04\x4b\x74\x4b\x5b"; - case 142: // F10 - return "\x04\x4b\x74\x4b\x5d"; - case 143: // F11 - return "\x04\x4b\x74\x4b\x7b"; - case 144: // F12 - return "\x04\x4b\x74\x4b\x7d"; - case 145: // F13 - return "\x04\x4b\x74\x4b\x40"; - case 146: // F14 - return "\x04\x4b\x74\x4b\x25"; - case 147: // F15 - return "\x04\x4b\x74\x4b\x24"; - case 148: // F16 - return "\x04\x4b\x74\x4b\x23"; - case 149: // F17 - return "\x05\x4b\x74\x4b\x42\x41"; - case 150: // F18 - return "\x05\x4b\x74\x4b\x42\x42"; - case 151: // F19 - return "\x05\x4b\x74\x4b\x42\x43"; - case 152: // F20 - return "\x05\x4b\x74\x4b\x42\x44"; - case 153: // F21 - return "\x05\x4b\x74\x4b\x42\x45"; - case 154: // F22 - return "\x05\x4b\x74\x4b\x42\x46"; - case 155: // F23 - return "\x05\x4b\x74\x4b\x42\x47"; - case 156: // F24 - return "\x05\x4b\x74\x4b\x42\x48"; - case 157: // F25 - return "\x05\x4b\x74\x4b\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x74\x4b\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x74\x4b\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x74\x4b\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x74\x4b\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x74\x4b\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x74\x4b\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x74\x4b\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x74\x4b\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x74\x4b\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x74\x4b\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x74\x4b\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x74\x4b\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x74\x4b\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x74\x4b\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x74\x4b\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x74\x4b\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x74\x4b\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x74\x4b\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x74\x4b\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x74\x4b\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x74\x4b\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x74\x4b\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x74\x4b\x42\x68"; - } // end switch(key) - case 0xd: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x74\x4c\x41"; - case 1: // EXCLAM - return "\x05\x4b\x74\x4c\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x74\x4c\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x74\x4c\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x74\x4c\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x74\x4c\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x74\x4c\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x74\x4c\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x74\x4c\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x74\x4c\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x74\x4c\x43"; - case 11: // MINUS - return "\x04\x4b\x74\x4c\x44"; - case 12: // PERIOD - return "\x04\x4b\x74\x4c\x45"; - case 13: // SLASH - return "\x04\x4b\x74\x4c\x46"; - case 14: // 0 - return "\x04\x4b\x74\x4c\x47"; - case 15: // 1 - return "\x04\x4b\x74\x4c\x48"; - case 16: // 2 - return "\x04\x4b\x74\x4c\x49"; - case 17: // 3 - return "\x04\x4b\x74\x4c\x4a"; - case 18: // 4 - return "\x04\x4b\x74\x4c\x4b"; - case 19: // 5 - return "\x04\x4b\x74\x4c\x4c"; - case 20: // 6 - return "\x04\x4b\x74\x4c\x4d"; - case 21: // 7 - return "\x04\x4b\x74\x4c\x4e"; - case 22: // 8 - return "\x04\x4b\x74\x4c\x4f"; - case 23: // 9 - return "\x04\x4b\x74\x4c\x50"; - case 24: // COLON - return "\x05\x4b\x74\x4c\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x74\x4c\x51"; - case 26: // LESS - return "\x05\x4b\x74\x4c\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x74\x4c\x52"; - case 28: // GREATER - return "\x05\x4b\x74\x4c\x42\x75"; - case 29: // AT - return "\x05\x4b\x74\x4c\x42\x76"; - case 30: // A - return "\x04\x4b\x74\x4c\x53"; - case 31: // B - return "\x04\x4b\x74\x4c\x54"; - case 32: // C - return "\x04\x4b\x74\x4c\x55"; - case 33: // D - return "\x04\x4b\x74\x4c\x56"; - case 34: // E - return "\x04\x4b\x74\x4c\x57"; - case 35: // F - return "\x04\x4b\x74\x4c\x58"; - case 36: // G - return "\x04\x4b\x74\x4c\x59"; - case 37: // H - return "\x04\x4b\x74\x4c\x5a"; - case 38: // I - return "\x04\x4b\x74\x4c\x61"; - case 39: // J - return "\x04\x4b\x74\x4c\x62"; - case 40: // K - return "\x04\x4b\x74\x4c\x63"; - case 41: // L - return "\x04\x4b\x74\x4c\x64"; - case 42: // M - return "\x04\x4b\x74\x4c\x65"; - case 43: // N - return "\x04\x4b\x74\x4c\x66"; - case 44: // O - return "\x04\x4b\x74\x4c\x67"; - case 45: // P - return "\x04\x4b\x74\x4c\x68"; - case 46: // Q - return "\x04\x4b\x74\x4c\x69"; - case 47: // R - return "\x04\x4b\x74\x4c\x6a"; - case 48: // S - return "\x04\x4b\x74\x4c\x6b"; - case 49: // T - return "\x04\x4b\x74\x4c\x6c"; - case 50: // U - return "\x04\x4b\x74\x4c\x6d"; - case 51: // V - return "\x04\x4b\x74\x4c\x6e"; - case 52: // W - return "\x04\x4b\x74\x4c\x6f"; - case 53: // X - return "\x04\x4b\x74\x4c\x70"; - case 54: // Y - return "\x04\x4b\x74\x4c\x71"; - case 55: // Z - return "\x04\x4b\x74\x4c\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x74\x4c\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x74\x4c\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x74\x4c\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x74\x4c\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x74\x4c\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x74\x4c\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x74\x4c\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x74\x4c\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x74\x4c\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x74\x4c\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x74\x4c\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x74\x4c\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x74\x4c\x42\x30"; - case 69: // AE - return "\x05\x4b\x74\x4c\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x74\x4c\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x74\x4c\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x74\x4c\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x74\x4c\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x74\x4c\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x74\x4c\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x74\x4c\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x74\x4c\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x74\x4c\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x74\x4c\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x74\x4c\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x74\x4c\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x74\x4c\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x74\x4c\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x74\x4c\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x74\x4c\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x74\x4c\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x74\x4c\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x74\x4c\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x74\x4c\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x74\x4c\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x74\x4c\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x74\x4c\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x74\x4c\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x74\x4c\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x74\x4c\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x74\x4c\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x74\x4c\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x74\x4c\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x74\x4c\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x74\x4c\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x74\x4c\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x74\x4c\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x74\x4c\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x74\x4c\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x74\x4c\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x74\x4c\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x74\x4c\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x74\x4c\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x74\x4c\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x74\x4c\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x74\x4c\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x74\x4c\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x74\x4c\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x74\x4c\x79"; - case 115: // ENTER - return "\x04\x4b\x74\x4c\x7a"; - case 116: // TAB - return "\x04\x4b\x74\x4c\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x74\x4c\x31"; - case 118: // INSERT - return "\x04\x4b\x74\x4c\x32"; - case 119: // DELETE - return "\x04\x4b\x74\x4c\x33"; - case 120: // RIGHT - return "\x04\x4b\x74\x4c\x34"; - case 121: // LEFT - return "\x04\x4b\x74\x4c\x35"; - case 122: // DOWN - return "\x04\x4b\x74\x4c\x36"; - case 123: // UP - return "\x04\x4b\x74\x4c\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x74\x4c\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x74\x4c\x39"; - case 126: // HOME - return "\x04\x4b\x74\x4c\x2e"; - case 127: // END - return "\x04\x4b\x74\x4c\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x74\x4c\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x74\x4c\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x74\x4c\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x74\x4c\x5e"; - case 132: // PAUSE - return "\x04\x4b\x74\x4c\x21"; - case 133: // F1 - return "\x04\x4b\x74\x4c\x2f"; - case 134: // F2 - return "\x04\x4b\x74\x4c\x2a"; - case 135: // F3 - return "\x04\x4b\x74\x4c\x3f"; - case 136: // F4 - return "\x04\x4b\x74\x4c\x26"; - case 137: // F5 - return "\x04\x4b\x74\x4c\x3c"; - case 138: // F6 - return "\x04\x4b\x74\x4c\x3e"; - case 139: // F7 - return "\x04\x4b\x74\x4c\x28"; - case 140: // F8 - return "\x04\x4b\x74\x4c\x29"; - case 141: // F9 - return "\x04\x4b\x74\x4c\x5b"; - case 142: // F10 - return "\x04\x4b\x74\x4c\x5d"; - case 143: // F11 - return "\x04\x4b\x74\x4c\x7b"; - case 144: // F12 - return "\x04\x4b\x74\x4c\x7d"; - case 145: // F13 - return "\x04\x4b\x74\x4c\x40"; - case 146: // F14 - return "\x04\x4b\x74\x4c\x25"; - case 147: // F15 - return "\x04\x4b\x74\x4c\x24"; - case 148: // F16 - return "\x04\x4b\x74\x4c\x23"; - case 149: // F17 - return "\x05\x4b\x74\x4c\x42\x41"; - case 150: // F18 - return "\x05\x4b\x74\x4c\x42\x42"; - case 151: // F19 - return "\x05\x4b\x74\x4c\x42\x43"; - case 152: // F20 - return "\x05\x4b\x74\x4c\x42\x44"; - case 153: // F21 - return "\x05\x4b\x74\x4c\x42\x45"; - case 154: // F22 - return "\x05\x4b\x74\x4c\x42\x46"; - case 155: // F23 - return "\x05\x4b\x74\x4c\x42\x47"; - case 156: // F24 - return "\x05\x4b\x74\x4c\x42\x48"; - case 157: // F25 - return "\x05\x4b\x74\x4c\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x74\x4c\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x74\x4c\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x74\x4c\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x74\x4c\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x74\x4c\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x74\x4c\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x74\x4c\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x74\x4c\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x74\x4c\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x74\x4c\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x74\x4c\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x74\x4c\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x74\x4c\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x74\x4c\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x74\x4c\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x74\x4c\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x74\x4c\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x74\x4c\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x74\x4c\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x74\x4c\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x74\x4c\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x74\x4c\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x74\x4c\x42\x68"; - } // end switch(key) - case 0xe: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x74\x4f\x41"; - case 1: // EXCLAM - return "\x05\x4b\x74\x4f\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x74\x4f\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x74\x4f\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x74\x4f\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x74\x4f\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x74\x4f\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x74\x4f\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x74\x4f\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x74\x4f\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x74\x4f\x43"; - case 11: // MINUS - return "\x04\x4b\x74\x4f\x44"; - case 12: // PERIOD - return "\x04\x4b\x74\x4f\x45"; - case 13: // SLASH - return "\x04\x4b\x74\x4f\x46"; - case 14: // 0 - return "\x04\x4b\x74\x4f\x47"; - case 15: // 1 - return "\x04\x4b\x74\x4f\x48"; - case 16: // 2 - return "\x04\x4b\x74\x4f\x49"; - case 17: // 3 - return "\x04\x4b\x74\x4f\x4a"; - case 18: // 4 - return "\x04\x4b\x74\x4f\x4b"; - case 19: // 5 - return "\x04\x4b\x74\x4f\x4c"; - case 20: // 6 - return "\x04\x4b\x74\x4f\x4d"; - case 21: // 7 - return "\x04\x4b\x74\x4f\x4e"; - case 22: // 8 - return "\x04\x4b\x74\x4f\x4f"; - case 23: // 9 - return "\x04\x4b\x74\x4f\x50"; - case 24: // COLON - return "\x05\x4b\x74\x4f\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x74\x4f\x51"; - case 26: // LESS - return "\x05\x4b\x74\x4f\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x74\x4f\x52"; - case 28: // GREATER - return "\x05\x4b\x74\x4f\x42\x75"; - case 29: // AT - return "\x05\x4b\x74\x4f\x42\x76"; - case 30: // A - return "\x04\x4b\x74\x4f\x53"; - case 31: // B - return "\x04\x4b\x74\x4f\x54"; - case 32: // C - return "\x04\x4b\x74\x4f\x55"; - case 33: // D - return "\x04\x4b\x74\x4f\x56"; - case 34: // E - return "\x04\x4b\x74\x4f\x57"; - case 35: // F - return "\x04\x4b\x74\x4f\x58"; - case 36: // G - return "\x04\x4b\x74\x4f\x59"; - case 37: // H - return "\x04\x4b\x74\x4f\x5a"; - case 38: // I - return "\x04\x4b\x74\x4f\x61"; - case 39: // J - return "\x04\x4b\x74\x4f\x62"; - case 40: // K - return "\x04\x4b\x74\x4f\x63"; - case 41: // L - return "\x04\x4b\x74\x4f\x64"; - case 42: // M - return "\x04\x4b\x74\x4f\x65"; - case 43: // N - return "\x04\x4b\x74\x4f\x66"; - case 44: // O - return "\x04\x4b\x74\x4f\x67"; - case 45: // P - return "\x04\x4b\x74\x4f\x68"; - case 46: // Q - return "\x04\x4b\x74\x4f\x69"; - case 47: // R - return "\x04\x4b\x74\x4f\x6a"; - case 48: // S - return "\x04\x4b\x74\x4f\x6b"; - case 49: // T - return "\x04\x4b\x74\x4f\x6c"; - case 50: // U - return "\x04\x4b\x74\x4f\x6d"; - case 51: // V - return "\x04\x4b\x74\x4f\x6e"; - case 52: // W - return "\x04\x4b\x74\x4f\x6f"; - case 53: // X - return "\x04\x4b\x74\x4f\x70"; - case 54: // Y - return "\x04\x4b\x74\x4f\x71"; - case 55: // Z - return "\x04\x4b\x74\x4f\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x74\x4f\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x74\x4f\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x74\x4f\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x74\x4f\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x74\x4f\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x74\x4f\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x74\x4f\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x74\x4f\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x74\x4f\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x74\x4f\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x74\x4f\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x74\x4f\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x74\x4f\x42\x30"; - case 69: // AE - return "\x05\x4b\x74\x4f\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x74\x4f\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x74\x4f\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x74\x4f\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x74\x4f\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x74\x4f\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x74\x4f\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x74\x4f\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x74\x4f\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x74\x4f\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x74\x4f\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x74\x4f\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x74\x4f\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x74\x4f\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x74\x4f\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x74\x4f\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x74\x4f\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x74\x4f\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x74\x4f\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x74\x4f\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x74\x4f\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x74\x4f\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x74\x4f\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x74\x4f\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x74\x4f\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x74\x4f\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x74\x4f\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x74\x4f\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x74\x4f\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x74\x4f\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x74\x4f\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x74\x4f\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x74\x4f\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x74\x4f\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x74\x4f\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x74\x4f\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x74\x4f\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x74\x4f\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x74\x4f\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x74\x4f\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x74\x4f\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x74\x4f\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x74\x4f\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x74\x4f\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x74\x4f\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x74\x4f\x79"; - case 115: // ENTER - return "\x04\x4b\x74\x4f\x7a"; - case 116: // TAB - return "\x04\x4b\x74\x4f\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x74\x4f\x31"; - case 118: // INSERT - return "\x04\x4b\x74\x4f\x32"; - case 119: // DELETE - return "\x04\x4b\x74\x4f\x33"; - case 120: // RIGHT - return "\x04\x4b\x74\x4f\x34"; - case 121: // LEFT - return "\x04\x4b\x74\x4f\x35"; - case 122: // DOWN - return "\x04\x4b\x74\x4f\x36"; - case 123: // UP - return "\x04\x4b\x74\x4f\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x74\x4f\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x74\x4f\x39"; - case 126: // HOME - return "\x04\x4b\x74\x4f\x2e"; - case 127: // END - return "\x04\x4b\x74\x4f\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x74\x4f\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x74\x4f\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x74\x4f\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x74\x4f\x5e"; - case 132: // PAUSE - return "\x04\x4b\x74\x4f\x21"; - case 133: // F1 - return "\x04\x4b\x74\x4f\x2f"; - case 134: // F2 - return "\x04\x4b\x74\x4f\x2a"; - case 135: // F3 - return "\x04\x4b\x74\x4f\x3f"; - case 136: // F4 - return "\x04\x4b\x74\x4f\x26"; - case 137: // F5 - return "\x04\x4b\x74\x4f\x3c"; - case 138: // F6 - return "\x04\x4b\x74\x4f\x3e"; - case 139: // F7 - return "\x04\x4b\x74\x4f\x28"; - case 140: // F8 - return "\x04\x4b\x74\x4f\x29"; - case 141: // F9 - return "\x04\x4b\x74\x4f\x5b"; - case 142: // F10 - return "\x04\x4b\x74\x4f\x5d"; - case 143: // F11 - return "\x04\x4b\x74\x4f\x7b"; - case 144: // F12 - return "\x04\x4b\x74\x4f\x7d"; - case 145: // F13 - return "\x04\x4b\x74\x4f\x40"; - case 146: // F14 - return "\x04\x4b\x74\x4f\x25"; - case 147: // F15 - return "\x04\x4b\x74\x4f\x24"; - case 148: // F16 - return "\x04\x4b\x74\x4f\x23"; - case 149: // F17 - return "\x05\x4b\x74\x4f\x42\x41"; - case 150: // F18 - return "\x05\x4b\x74\x4f\x42\x42"; - case 151: // F19 - return "\x05\x4b\x74\x4f\x42\x43"; - case 152: // F20 - return "\x05\x4b\x74\x4f\x42\x44"; - case 153: // F21 - return "\x05\x4b\x74\x4f\x42\x45"; - case 154: // F22 - return "\x05\x4b\x74\x4f\x42\x46"; - case 155: // F23 - return "\x05\x4b\x74\x4f\x42\x47"; - case 156: // F24 - return "\x05\x4b\x74\x4f\x42\x48"; - case 157: // F25 - return "\x05\x4b\x74\x4f\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x74\x4f\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x74\x4f\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x74\x4f\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x74\x4f\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x74\x4f\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x74\x4f\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x74\x4f\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x74\x4f\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x74\x4f\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x74\x4f\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x74\x4f\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x74\x4f\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x74\x4f\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x74\x4f\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x74\x4f\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x74\x4f\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x74\x4f\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x74\x4f\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x74\x4f\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x74\x4f\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x74\x4f\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x74\x4f\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x74\x4f\x42\x68"; - } // end switch(key) - case 0xf: - switch(key & 0xff) { default: return NULL; - case 0: // SPACE - return "\x04\x4b\x74\x50\x41"; - case 1: // EXCLAM - return "\x05\x4b\x74\x50\x42\x6c"; - case 2: // DOUBLE_QUOTE - return "\x05\x4b\x74\x50\x42\x6d"; - case 3: // NUMBER_SIGN - return "\x05\x4b\x74\x50\x42\x6e"; - case 4: // DOLLAR - return "\x05\x4b\x74\x50\x42\x6f"; - case 5: // AMPERSAND - return "\x05\x4b\x74\x50\x42\x70"; - case 6: // APOSTROPHE - return "\x04\x4b\x74\x50\x42"; - case 7: // PARENTHESIS_LEFT - return "\x05\x4b\x74\x50\x42\x71"; - case 8: // PARENTHESIS_RIGHT - return "\x05\x4b\x74\x50\x42\x72"; - case 9: // PLUS - return "\x05\x4b\x74\x50\x42\x69"; - case 10: // COMMA - return "\x04\x4b\x74\x50\x43"; - case 11: // MINUS - return "\x04\x4b\x74\x50\x44"; - case 12: // PERIOD - return "\x04\x4b\x74\x50\x45"; - case 13: // SLASH - return "\x04\x4b\x74\x50\x46"; - case 14: // 0 - return "\x04\x4b\x74\x50\x47"; - case 15: // 1 - return "\x04\x4b\x74\x50\x48"; - case 16: // 2 - return "\x04\x4b\x74\x50\x49"; - case 17: // 3 - return "\x04\x4b\x74\x50\x4a"; - case 18: // 4 - return "\x04\x4b\x74\x50\x4b"; - case 19: // 5 - return "\x04\x4b\x74\x50\x4c"; - case 20: // 6 - return "\x04\x4b\x74\x50\x4d"; - case 21: // 7 - return "\x04\x4b\x74\x50\x4e"; - case 22: // 8 - return "\x04\x4b\x74\x50\x4f"; - case 23: // 9 - return "\x04\x4b\x74\x50\x50"; - case 24: // COLON - return "\x05\x4b\x74\x50\x42\x73"; - case 25: // SEMICOLON - return "\x04\x4b\x74\x50\x51"; - case 26: // LESS - return "\x05\x4b\x74\x50\x42\x74"; - case 27: // EQUAL - return "\x04\x4b\x74\x50\x52"; - case 28: // GREATER - return "\x05\x4b\x74\x50\x42\x75"; - case 29: // AT - return "\x05\x4b\x74\x50\x42\x76"; - case 30: // A - return "\x04\x4b\x74\x50\x53"; - case 31: // B - return "\x04\x4b\x74\x50\x54"; - case 32: // C - return "\x04\x4b\x74\x50\x55"; - case 33: // D - return "\x04\x4b\x74\x50\x56"; - case 34: // E - return "\x04\x4b\x74\x50\x57"; - case 35: // F - return "\x04\x4b\x74\x50\x58"; - case 36: // G - return "\x04\x4b\x74\x50\x59"; - case 37: // H - return "\x04\x4b\x74\x50\x5a"; - case 38: // I - return "\x04\x4b\x74\x50\x61"; - case 39: // J - return "\x04\x4b\x74\x50\x62"; - case 40: // K - return "\x04\x4b\x74\x50\x63"; - case 41: // L - return "\x04\x4b\x74\x50\x64"; - case 42: // M - return "\x04\x4b\x74\x50\x65"; - case 43: // N - return "\x04\x4b\x74\x50\x66"; - case 44: // O - return "\x04\x4b\x74\x50\x67"; - case 45: // P - return "\x04\x4b\x74\x50\x68"; - case 46: // Q - return "\x04\x4b\x74\x50\x69"; - case 47: // R - return "\x04\x4b\x74\x50\x6a"; - case 48: // S - return "\x04\x4b\x74\x50\x6b"; - case 49: // T - return "\x04\x4b\x74\x50\x6c"; - case 50: // U - return "\x04\x4b\x74\x50\x6d"; - case 51: // V - return "\x04\x4b\x74\x50\x6e"; - case 52: // W - return "\x04\x4b\x74\x50\x6f"; - case 53: // X - return "\x04\x4b\x74\x50\x70"; - case 54: // Y - return "\x04\x4b\x74\x50\x71"; - case 55: // Z - return "\x04\x4b\x74\x50\x72"; - case 56: // LEFT_BRACKET - return "\x04\x4b\x74\x50\x73"; - case 57: // BACKSLASH - return "\x04\x4b\x74\x50\x74"; - case 58: // RIGHT_BRACKET - return "\x04\x4b\x74\x50\x75"; - case 59: // CIRCUMFLEX - return "\x05\x4b\x74\x50\x43\x4e"; - case 60: // UNDERSCORE - return "\x05\x4b\x74\x50\x42\x6a"; - case 61: // GRAVE_ACCENT - return "\x04\x4b\x74\x50\x76"; - case 62: // WORLD_1 - return "\x04\x4b\x74\x50\x77"; - case 63: // WORLD_2 - return "\x04\x4b\x74\x50\x78"; - case 64: // PARAGRAPH - return "\x05\x4b\x74\x50\x42\x77"; - case 65: // MASCULINE - return "\x05\x4b\x74\x50\x42\x78"; - case 66: // A_GRAVE - return "\x05\x4b\x74\x50\x42\x79"; - case 67: // A_DIAERESIS - return "\x05\x4b\x74\x50\x42\x7a"; - case 68: // A_RING - return "\x05\x4b\x74\x50\x42\x30"; - case 69: // AE - return "\x05\x4b\x74\x50\x42\x31"; - case 70: // C_CEDILLA - return "\x05\x4b\x74\x50\x42\x32"; - case 71: // E_GRAVE - return "\x05\x4b\x74\x50\x42\x33"; - case 72: // E_ACUTE - return "\x05\x4b\x74\x50\x42\x34"; - case 73: // I_GRAVE - return "\x05\x4b\x74\x50\x42\x35"; - case 74: // N_TILDE - return "\x05\x4b\x74\x50\x42\x36"; - case 75: // O_GRAVE - return "\x05\x4b\x74\x50\x42\x37"; - case 76: // O_DIAERESIS - return "\x05\x4b\x74\x50\x42\x38"; - case 77: // O_SLASH - return "\x05\x4b\x74\x50\x42\x39"; - case 78: // U_GRAVE - return "\x05\x4b\x74\x50\x42\x2e"; - case 79: // U_DIAERESIS - return "\x05\x4b\x74\x50\x42\x2d"; - case 80: // S_SHARP - return "\x05\x4b\x74\x50\x42\x3a"; - case 81: // CYRILLIC_A - return "\x05\x4b\x74\x50\x42\x2b"; - case 82: // CYRILLIC_BE - return "\x05\x4b\x74\x50\x42\x3d"; - case 83: // CYRILLIC_VE - return "\x05\x4b\x74\x50\x42\x5e"; - case 84: // CYRILLIC_GHE - return "\x05\x4b\x74\x50\x42\x21"; - case 85: // CYRILLIC_DE - return "\x05\x4b\x74\x50\x42\x2f"; - case 86: // CYRILLIC_IE - return "\x05\x4b\x74\x50\x42\x2a"; - case 87: // CYRILLIC_ZHE - return "\x05\x4b\x74\x50\x42\x3f"; - case 88: // CYRILLIC_ZE - return "\x05\x4b\x74\x50\x42\x26"; - case 89: // CYRILLIC_I - return "\x05\x4b\x74\x50\x42\x3c"; - case 90: // CYRILLIC_SHORT_I - return "\x05\x4b\x74\x50\x42\x3e"; - case 91: // CYRILLIC_KA - return "\x05\x4b\x74\x50\x42\x28"; - case 92: // CYRILLIC_EL - return "\x05\x4b\x74\x50\x42\x29"; - case 93: // CYRILLIC_EM - return "\x05\x4b\x74\x50\x42\x5b"; - case 94: // CYRILLIC_EN - return "\x05\x4b\x74\x50\x42\x5d"; - case 95: // CYRILLIC_O - return "\x05\x4b\x74\x50\x42\x7b"; - case 96: // CYRILLIC_PE - return "\x05\x4b\x74\x50\x42\x7d"; - case 97: // CYRILLIC_ER - return "\x05\x4b\x74\x50\x42\x40"; - case 98: // CYRILLIC_ES - return "\x05\x4b\x74\x50\x42\x25"; - case 99: // CYRILLIC_TE - return "\x05\x4b\x74\x50\x42\x24"; - case 100: // CYRILLIC_U - return "\x05\x4b\x74\x50\x42\x23"; - case 101: // CYRILLIC_EF - return "\x05\x4b\x74\x50\x43\x41"; - case 102: // CYRILLIC_HA - return "\x05\x4b\x74\x50\x43\x42"; - case 103: // CYRILLIC_TSE - return "\x05\x4b\x74\x50\x43\x43"; - case 104: // CYRILLIC_CHE - return "\x05\x4b\x74\x50\x43\x44"; - case 105: // CYRILLIC_SHA - return "\x05\x4b\x74\x50\x43\x45"; - case 106: // CYRILLIC_SHCHA - return "\x05\x4b\x74\x50\x43\x46"; - case 107: // CYRILLIC_HARD_SIGN - return "\x05\x4b\x74\x50\x43\x47"; - case 108: // CYRILLIC_YERU - return "\x05\x4b\x74\x50\x43\x48"; - case 109: // CYRILLIC_SOFT_SIGN - return "\x05\x4b\x74\x50\x43\x49"; - case 110: // CYRILLIC_E - return "\x05\x4b\x74\x50\x43\x4a"; - case 111: // CYRILLIC_YU - return "\x05\x4b\x74\x50\x43\x4b"; - case 112: // CYRILLIC_YA - return "\x05\x4b\x74\x50\x43\x4c"; - case 113: // CYRILLIC_IO - return "\x05\x4b\x74\x50\x43\x4d"; - case 114: // ESCAPE - return "\x04\x4b\x74\x50\x79"; - case 115: // ENTER - return "\x04\x4b\x74\x50\x7a"; - case 116: // TAB - return "\x04\x4b\x74\x50\x30"; - case 117: // BACKSPACE - return "\x04\x4b\x74\x50\x31"; - case 118: // INSERT - return "\x04\x4b\x74\x50\x32"; - case 119: // DELETE - return "\x04\x4b\x74\x50\x33"; - case 120: // RIGHT - return "\x04\x4b\x74\x50\x34"; - case 121: // LEFT - return "\x04\x4b\x74\x50\x35"; - case 122: // DOWN - return "\x04\x4b\x74\x50\x36"; - case 123: // UP - return "\x04\x4b\x74\x50\x37"; - case 124: // PAGE_UP - return "\x04\x4b\x74\x50\x38"; - case 125: // PAGE_DOWN - return "\x04\x4b\x74\x50\x39"; - case 126: // HOME - return "\x04\x4b\x74\x50\x2e"; - case 127: // END - return "\x04\x4b\x74\x50\x2d"; - case 128: // CAPS_LOCK - return "\x04\x4b\x74\x50\x3a"; - case 129: // SCROLL_LOCK - return "\x04\x4b\x74\x50\x2b"; - case 130: // NUM_LOCK - return "\x04\x4b\x74\x50\x3d"; - case 131: // PRINT_SCREEN - return "\x04\x4b\x74\x50\x5e"; - case 132: // PAUSE - return "\x04\x4b\x74\x50\x21"; - case 133: // F1 - return "\x04\x4b\x74\x50\x2f"; - case 134: // F2 - return "\x04\x4b\x74\x50\x2a"; - case 135: // F3 - return "\x04\x4b\x74\x50\x3f"; - case 136: // F4 - return "\x04\x4b\x74\x50\x26"; - case 137: // F5 - return "\x04\x4b\x74\x50\x3c"; - case 138: // F6 - return "\x04\x4b\x74\x50\x3e"; - case 139: // F7 - return "\x04\x4b\x74\x50\x28"; - case 140: // F8 - return "\x04\x4b\x74\x50\x29"; - case 141: // F9 - return "\x04\x4b\x74\x50\x5b"; - case 142: // F10 - return "\x04\x4b\x74\x50\x5d"; - case 143: // F11 - return "\x04\x4b\x74\x50\x7b"; - case 144: // F12 - return "\x04\x4b\x74\x50\x7d"; - case 145: // F13 - return "\x04\x4b\x74\x50\x40"; - case 146: // F14 - return "\x04\x4b\x74\x50\x25"; - case 147: // F15 - return "\x04\x4b\x74\x50\x24"; - case 148: // F16 - return "\x04\x4b\x74\x50\x23"; - case 149: // F17 - return "\x05\x4b\x74\x50\x42\x41"; - case 150: // F18 - return "\x05\x4b\x74\x50\x42\x42"; - case 151: // F19 - return "\x05\x4b\x74\x50\x42\x43"; - case 152: // F20 - return "\x05\x4b\x74\x50\x42\x44"; - case 153: // F21 - return "\x05\x4b\x74\x50\x42\x45"; - case 154: // F22 - return "\x05\x4b\x74\x50\x42\x46"; - case 155: // F23 - return "\x05\x4b\x74\x50\x42\x47"; - case 156: // F24 - return "\x05\x4b\x74\x50\x42\x48"; - case 157: // F25 - return "\x05\x4b\x74\x50\x42\x49"; - case 158: // KP_0 - return "\x05\x4b\x74\x50\x42\x4a"; - case 159: // KP_1 - return "\x05\x4b\x74\x50\x42\x4b"; - case 160: // KP_2 - return "\x05\x4b\x74\x50\x42\x4c"; - case 161: // KP_3 - return "\x05\x4b\x74\x50\x42\x4d"; - case 162: // KP_4 - return "\x05\x4b\x74\x50\x42\x4e"; - case 163: // KP_5 - return "\x05\x4b\x74\x50\x42\x4f"; - case 164: // KP_6 - return "\x05\x4b\x74\x50\x42\x50"; - case 165: // KP_7 - return "\x05\x4b\x74\x50\x42\x51"; - case 166: // KP_8 - return "\x05\x4b\x74\x50\x42\x52"; - case 167: // KP_9 - return "\x05\x4b\x74\x50\x42\x53"; - case 168: // KP_DECIMAL - return "\x05\x4b\x74\x50\x42\x54"; - case 169: // KP_DIVIDE - return "\x05\x4b\x74\x50\x42\x55"; - case 170: // KP_MULTIPLY - return "\x05\x4b\x74\x50\x42\x56"; - case 171: // KP_SUBTRACT - return "\x05\x4b\x74\x50\x42\x57"; - case 172: // KP_ADD - return "\x05\x4b\x74\x50\x42\x58"; - case 173: // KP_ENTER - return "\x05\x4b\x74\x50\x42\x59"; - case 174: // KP_EQUAL - return "\x05\x4b\x74\x50\x42\x5a"; - case 176: // LEFT_CONTROL - return "\x05\x4b\x74\x50\x42\x62"; - case 177: // LEFT_ALT - return "\x05\x4b\x74\x50\x42\x63"; - case 178: // LEFT_SUPER - return "\x05\x4b\x74\x50\x42\x64"; - case 180: // RIGHT_CONTROL - return "\x05\x4b\x74\x50\x42\x66"; - case 181: // RIGHT_ALT - return "\x05\x4b\x74\x50\x42\x67"; - case 182: // RIGHT_SUPER - return "\x05\x4b\x74\x50\x42\x68"; - } // end switch(key) - } // end switch(mods) - break; - - } // end switch(action) in mode EXTENDED - break; - - - } - return NULL; -} +int +encode_glfw_key_event(const GLFWkeyevent *e, const bool cursor_key_mode, const unsigned flags, char *output); diff --git a/kitty/modes.h b/kitty/modes.h index dd7e27b46..a8aff463d 100644 --- a/kitty/modes.h +++ b/kitty/modes.h @@ -80,6 +80,3 @@ #define BRACKETED_PASTE (2004 << 5) #define BRACKETED_PASTE_START "200~" #define BRACKETED_PASTE_END "201~" - -// Extended keyboard protocol -#define EXTENDED_KEYBOARD (2017 << 5) diff --git a/kitty/screen.c b/kitty/screen.c index 777cabec8..e2c59b414 100644 --- a/kitty/screen.c +++ b/kitty/screen.c @@ -150,6 +150,7 @@ void screen_reset(Screen *self) { if (self->linebuf == self->alt_linebuf) screen_toggle_screen_buffer(self, true, true); if (self->overlay_line.is_active) deactivate_overlay_line(self); + self->key_encoding_flags = 0; self->last_graphic_char = 0; self->main_savepoint.is_valid = false; self->alt_savepoint.is_valid = false; @@ -750,7 +751,6 @@ set_mode_from_const(Screen *self, unsigned int mode, bool val) { SIMPLE_MODE(IRM) SIMPLE_MODE(DECARM) SIMPLE_MODE(BRACKETED_PASTE) - SIMPLE_MODE(EXTENDED_KEYBOARD) SIMPLE_MODE(FOCUS_TRACKING) MOUSE_MODE(MOUSE_BUTTON_TRACKING, mouse_tracking_mode, BUTTON_MODE) MOUSE_MODE(MOUSE_MOTION_TRACKING, mouse_tracking_mode, MOTION_MODE) @@ -1143,7 +1143,7 @@ screen_restore_modes(Screen *self) { if (m == NULL) m = &empty_modes; #define S(name) set_mode_from_const(self, name, m->m##name) S(DECTCEM); S(DECSCNM); S(DECSCNM); S(DECOM); S(DECAWM); S(DECARM); S(DECCKM); - S(BRACKETED_PASTE); S(FOCUS_TRACKING); S(EXTENDED_KEYBOARD); + S(BRACKETED_PASTE); S(FOCUS_TRACKING); self->modes.mouse_tracking_mode = m->mouse_tracking_mode; self->modes.mouse_tracking_protocol = m->mouse_tracking_protocol; #undef S @@ -1490,7 +1490,6 @@ report_mode_status(Screen *self, unsigned int which, bool private) { KNOWN_MODE(DECARM); KNOWN_MODE(DECCKM); KNOWN_MODE(BRACKETED_PASTE); - KNOWN_MODE(EXTENDED_KEYBOARD); KNOWN_MODE(FOCUS_TRACKING); #undef KNOWN_MODE case ALTERNATE_SCREEN: @@ -2201,7 +2200,6 @@ WRAP0(scroll_until_cursor) static int name##_set(Screen *self, PyObject *val, void UNUSED *closure) { if (val == NULL) { PyErr_SetString(PyExc_TypeError, "Cannot delete attribute"); return -1; } set_mode_from_const(self, uname, PyObject_IsTrue(val) ? true : false); return 0; } MODE_GETSET(in_bracketed_paste_mode, BRACKETED_PASTE) -MODE_GETSET(extended_keyboard, EXTENDED_KEYBOARD) MODE_GETSET(focus_tracking_enabled, FOCUS_TRACKING) MODE_GETSET(auto_repeat_enabled, DECARM) MODE_GETSET(cursor_visible, DECTCEM) @@ -2859,7 +2857,6 @@ static PyMethodDef methods[] = { static PyGetSetDef getsetters[] = { GETSET(in_bracketed_paste_mode) - GETSET(extended_keyboard) GETSET(auto_repeat_enabled) GETSET(focus_tracking_enabled) GETSET(cursor_visible) diff --git a/kitty/screen.h b/kitty/screen.h index e18bc148c..8dbb65fbb 100644 --- a/kitty/screen.h +++ b/kitty/screen.h @@ -14,7 +14,7 @@ typedef enum ScrollTypes { SCROLL_LINE = -999999, SCROLL_PAGE, SCROLL_FULL } Scr typedef struct { bool mLNM, mIRM, mDECTCEM, mDECSCNM, mDECOM, mDECAWM, mDECCOLM, mDECARM, mDECCKM, - mBRACKETED_PASTE, mFOCUS_TRACKING, mEXTENDED_KEYBOARD, mDECSACE; + mBRACKETED_PASTE, mFOCUS_TRACKING, mDECSACE; MouseTrackingMode mouse_tracking_mode; MouseTrackingProtocol mouse_tracking_protocol; bool eight_bit_controls; // S8C1T @@ -129,6 +129,7 @@ typedef struct { HYPERLINK_POOL_HANDLE hyperlink_pool; ANSIBuf as_ansi_buf; char_type last_graphic_char; + unsigned key_encoding_flags; } Screen;