/** * Looking Glass * Copyright © 2017-2026 The Looking Glass Authors * https://looking-glass.io * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation; either version 2 of the License, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., 59 * Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "kb.h" #include "cimgui.h" const uint32_t lg_keycode_to_ps2[LG_KEY_MAX] = { [LG_KEY_RESERVED] /* = USB 0 */ = 0x000000, [LG_KEY_ESC] /* = USB 41 */ = 0x000001, [LG_KEY_1] /* = USB 30 */ = 0x000002, [LG_KEY_2] /* = USB 31 */ = 0x000003, [LG_KEY_3] /* = USB 32 */ = 0x000004, [LG_KEY_4] /* = USB 33 */ = 0x000005, [LG_KEY_5] /* = USB 34 */ = 0x000006, [LG_KEY_6] /* = USB 35 */ = 0x000007, [LG_KEY_7] /* = USB 36 */ = 0x000008, [LG_KEY_8] /* = USB 37 */ = 0x000009, [LG_KEY_9] /* = USB 38 */ = 0x00000A, [LG_KEY_0] /* = USB 39 */ = 0x00000B, [LG_KEY_MINUS] /* = USB 45 */ = 0x00000C, [LG_KEY_EQUAL] /* = USB 46 */ = 0x00000D, [LG_KEY_BACKSPACE] /* = USB 42 */ = 0x00000E, [LG_KEY_TAB] /* = USB 43 */ = 0x00000F, [LG_KEY_Q] /* = USB 20 */ = 0x000010, [LG_KEY_W] /* = USB 26 */ = 0x000011, [LG_KEY_E] /* = USB 8 */ = 0x000012, [LG_KEY_R] /* = USB 21 */ = 0x000013, [LG_KEY_T] /* = USB 23 */ = 0x000014, [LG_KEY_Y] /* = USB 28 */ = 0x000015, [LG_KEY_U] /* = USB 24 */ = 0x000016, [LG_KEY_I] /* = USB 12 */ = 0x000017, [LG_KEY_O] /* = USB 18 */ = 0x000018, [LG_KEY_P] /* = USB 19 */ = 0x000019, [LG_KEY_LEFTBRACE] /* = USB 47 */ = 0x00001A, [LG_KEY_RIGHTBRACE] /* = USB 48 */ = 0x00001B, [LG_KEY_ENTER] /* = USB 40 */ = 0x00001C, [LG_KEY_LEFTCTRL] /* = USB 224 */ = 0x00001D, [LG_KEY_A] /* = USB 4 */ = 0x00001E, [LG_KEY_S] /* = USB 22 */ = 0x00001F, [LG_KEY_D] /* = USB 7 */ = 0x000020, [LG_KEY_F] /* = USB 9 */ = 0x000021, [LG_KEY_G] /* = USB 10 */ = 0x000022, [LG_KEY_H] /* = USB 11 */ = 0x000023, [LG_KEY_J] /* = USB 13 */ = 0x000024, [LG_KEY_K] /* = USB 14 */ = 0x000025, [LG_KEY_L] /* = USB 15 */ = 0x000026, [LG_KEY_SEMICOLON] /* = USB 51 */ = 0x000027, [LG_KEY_APOSTROPHE] /* = USB 52 */ = 0x000028, [LG_KEY_GRAVE] /* = USB 53 */ = 0x000029, [LG_KEY_LEFTSHIFT] /* = USB 225 */ = 0x00002A, [LG_KEY_BACKSLASH] /* = USB 49 */ = 0x00002B, [LG_KEY_Z] /* = USB 29 */ = 0x00002C, [LG_KEY_X] /* = USB 27 */ = 0x00002D, [LG_KEY_C] /* = USB 6 */ = 0x00002E, [LG_KEY_V] /* = USB 25 */ = 0x00002F, [LG_KEY_B] /* = USB 5 */ = 0x000030, [LG_KEY_N] /* = USB 17 */ = 0x000031, [LG_KEY_M] /* = USB 16 */ = 0x000032, [LG_KEY_COMMA] /* = USB 54 */ = 0x000033, [LG_KEY_DOT] /* = USB 55 */ = 0x000034, [LG_KEY_SLASH] /* = USB 56 */ = 0x000035, [LG_KEY_RIGHTSHIFT] /* = USB 229 */ = 0x000036, [LG_KEY_KPASTERISK] /* = USB 85 */ = 0x000037, [LG_KEY_LEFTALT] /* = USB 226 */ = 0x000038, [LG_KEY_SPACE] /* = USB 44 */ = 0x000039, [LG_KEY_CAPSLOCK] /* = USB 57 */ = 0x00003A, [LG_KEY_F1] /* = USB 58 */ = 0x00003B, [LG_KEY_F2] /* = USB 59 */ = 0x00003C, [LG_KEY_F3] /* = USB 60 */ = 0x00003D, [LG_KEY_F4] /* = USB 61 */ = 0x00003E, [LG_KEY_F5] /* = USB 62 */ = 0x00003F, [LG_KEY_F6] /* = USB 63 */ = 0x000040, [LG_KEY_F7] /* = USB 64 */ = 0x000041, [LG_KEY_F8] /* = USB 65 */ = 0x000042, [LG_KEY_F9] /* = USB 66 */ = 0x000043, [LG_KEY_F10] /* = USB 67 */ = 0x000044, [LG_KEY_NUMLOCK] /* = USB 83 */ = 0x000045, [LG_KEY_SCROLLLOCK] /* = USB 71 */ = 0x000046, [LG_KEY_KP7] /* = USB 95 */ = 0x000047, [LG_KEY_KP8] /* = USB 96 */ = 0x000048, [LG_KEY_KP9] /* = USB 97 */ = 0x000049, [LG_KEY_KPMINUS] /* = USB 86 */ = 0x00004A, [LG_KEY_KP4] /* = USB 92 */ = 0x00004B, [LG_KEY_KP5] /* = USB 93 */ = 0x00004C, [LG_KEY_KP6] /* = USB 94 */ = 0x00004D, [LG_KEY_KPPLUS] /* = USB 87 */ = 0x00004E, [LG_KEY_KP1] /* = USB 89 */ = 0x00004F, [LG_KEY_KP2] /* = USB 90 */ = 0x000050, [LG_KEY_KP3] /* = USB 91 */ = 0x000051, [LG_KEY_KP0] /* = USB 98 */ = 0x000052, [LG_KEY_KPDOT] /* = USB 99 */ = 0x000053, [LG_KEY_102ND] /* = USB 100 */ = 0x000056, [LG_KEY_F11] /* = USB 68 */ = 0x000057, [LG_KEY_F12] /* = USB 69 */ = 0x000058, [LG_KEY_RO] /* = USB 135 */ = 0x000073, [LG_KEY_HENKAN] /* = USB 138 */ = 0x000079, [LG_KEY_KATAKANAHIRAGANA] /* = USB 136 */ = 0x000070, [LG_KEY_MUHENKAN] /* = USB 139 */ = 0x00007B, [LG_KEY_KPENTER] /* = USB 88 */ = 0x00E01C, [LG_KEY_RIGHTCTRL] /* = USB 228 */ = 0x00E01D, [LG_KEY_KPSLASH] /* = USB 84 */ = 0x00E035, [LG_KEY_SYSRQ] /* = USB 70 */ = 0x000054, [LG_KEY_RIGHTALT] /* = USB 230 */ = 0x00E038, [LG_KEY_HOME] /* = USB 74 */ = 0x00E047, [LG_KEY_UP] /* = USB 82 */ = 0x00E048, [LG_KEY_PAGEUP] /* = USB 75 */ = 0x00E049, [LG_KEY_LEFT] /* = USB 80 */ = 0x00E04B, [LG_KEY_RIGHT] /* = USB 79 */ = 0x00E04D, [LG_KEY_END] /* = USB 77 */ = 0x00E04F, [LG_KEY_DOWN] /* = USB 81 */ = 0x00E050, [LG_KEY_PAGEDOWN] /* = USB 78 */ = 0x00E051, [LG_KEY_INSERT] /* = USB 73 */ = 0x00E052, [LG_KEY_DELETE] /* = USB 76 */ = 0x00E053, [LG_KEY_KPEQUAL] /* = USB 103 */ = 0x000059, [LG_KEY_PAUSE] /* = USB 72 */ = 0x00E046, [LG_KEY_KPCOMMA] /* = USB 133 */ = 0x00007E, [LG_KEY_HANGEUL] /* = USB 144 */ = 0x0000F2, [LG_KEY_HANJA] /* = USB 145 */ = 0x0000F1, [LG_KEY_YEN] /* = USB 137 */ = 0x00007D, [LG_KEY_LEFTMETA] /* = USB 227 */ = 0x00E05B, [LG_KEY_RIGHTMETA] /* = USB 231 */ = 0x00E05C, [LG_KEY_COMPOSE] /* = USB 101 */ = 0x00E05D, [LG_KEY_POWER] /* = USB 102 */ = 0x00E05E, [LG_KEY_F13] /* = USB 104 */ = 0x00005D, [LG_KEY_F14] /* = USB 105 */ = 0x00005E, [LG_KEY_F15] /* = USB 106 */ = 0x00005F, [LG_KEY_F16] /* = USB 107 */ = 0x000055, [LG_KEY_F17] /* = USB 108 */ = 0x00E003, [LG_KEY_F18] /* = USB 109 */ = 0x00E077, [LG_KEY_F19] /* = USB 110 */ = 0x00E004, [LG_KEY_F20] /* = USB 111 */ = 0x00005A, [LG_KEY_F21] /* = USB 112 */ = 0x000074, [LG_KEY_F22] /* = USB 113 */ = 0x00E079, [LG_KEY_F23] /* = USB 114 */ = 0x00006D, [LG_KEY_F24] /* = USB 115 */ = 0x00006F, [LG_KEY_OPEN] /* = USB 116 */ = 0x000064, [LG_KEY_HELP] /* = USB 117 */ = 0x00E075, [LG_KEY_MENU] /* = USB 118 */ = 0x00E01E, [LG_KEY_FRONT] /* = USB 119 */ = 0x00E00C, [LG_KEY_AGAIN] /* = USB 121 */ = 0x00E005, [LG_KEY_UNDO] /* = USB 122 */ = 0x00E007, [LG_KEY_CUT] /* = USB 123 */ = 0x00E03C, [LG_KEY_COPY] /* = USB 124 */ = 0x00E078, [LG_KEY_PASTE] /* = USB 125 */ = 0x000065, [LG_KEY_KPJPCOMMA] /* = USB 140 */ = 0x00005C, [LG_KEY_KATAKANA] /* = USB 146 */ = 0x000078, [LG_KEY_HIRAGANA] /* = USB 147 */ = 0x000077, [LG_KEY_ZENKAKUHANKAKU] /* = USB 148 */ = 0x000076, [LG_KEY_KPLEFTPAREN] /* = USB 182 */ = 0x00E076, [LG_KEY_KPRIGHTPAREN] /* = USB 183 */ = 0x00E07B, [LG_KEY_PRINT] /* = USB 70 */ = 0x00E037, [LG_KEY_MUTE] /* = USB 127 */ = 0x00E020, [LG_KEY_VOLUMEUP] /* = USB 128 */ = 0x00E030, [LG_KEY_VOLUMEDOWN] /* = USB 129 */ = 0x00E02E, [LG_KEY_NEXTSONG] /* = USB 235 */ = 0x00E019, [LG_KEY_PLAYPAUSE] /* = USB 232 */ = 0x00E022, [LG_KEY_PREVIOUSSONG] /* = USB 234 */ = 0x00E010, [LG_KEY_STOPCD] /* = USB 233 */ = 0x00E024, [LG_KEY_EJECTCD] /* = USB 236 */ = 0x00006C, [LG_KEY_WWW] /* = USB 240 */ = 0x00E002, [LG_KEY_BACK] /* = USB 241 */ = 0x00E06A, [LG_KEY_FORWARD] /* = USB 242 */ = 0x00E069, [LG_KEY_STOP] /* = USB 243 */ = 0x00E068, [LG_KEY_FIND] /* = USB 244 */ = 0x00E041, [LG_KEY_SCROLLUP] /* = USB 245 */ = 0x000075, [LG_KEY_SCROLLDOWN] /* = USB 246 */ = 0x00E00F, [LG_KEY_EDIT] /* = USB 247 */ = 0x00E008, [LG_KEY_SLEEP] /* = USB 248 */ = 0x00E05F, [LG_KEY_SCREENLOCK] /* = USB 249 */ = 0x00E012, [LG_KEY_REFRESH] /* = USB 250 */ = 0x00E067, [LG_KEY_CALC] /* = USB 251 */ = 0x00E021, }; const char * lg_keycode_to_name[LG_KEY_MAX] = { [LG_KEY_RESERVED] = "KEY_RESERVED", [LG_KEY_ESC] = "KEY_ESC", [LG_KEY_1] = "KEY_1", [LG_KEY_2] = "KEY_2", [LG_KEY_3] = "KEY_3", [LG_KEY_4] = "KEY_4", [LG_KEY_5] = "KEY_5", [LG_KEY_6] = "KEY_6", [LG_KEY_7] = "KEY_7", [LG_KEY_8] = "KEY_8", [LG_KEY_9] = "KEY_9", [LG_KEY_0] = "KEY_0", [LG_KEY_MINUS] = "KEY_MINUS", [LG_KEY_EQUAL] = "KEY_EQUAL", [LG_KEY_BACKSPACE] = "KEY_BACKSPACE", [LG_KEY_TAB] = "KEY_TAB", [LG_KEY_Q] = "KEY_Q", [LG_KEY_W] = "KEY_W", [LG_KEY_E] = "KEY_E", [LG_KEY_R] = "KEY_R", [LG_KEY_T] = "KEY_T", [LG_KEY_Y] = "KEY_Y", [LG_KEY_U] = "KEY_U", [LG_KEY_I] = "KEY_I", [LG_KEY_O] = "KEY_O", [LG_KEY_P] = "KEY_P", [LG_KEY_LEFTBRACE] = "KEY_LEFTBRACE", [LG_KEY_RIGHTBRACE] = "KEY_RIGHTBRACE", [LG_KEY_ENTER] = "KEY_ENTER", [LG_KEY_LEFTCTRL] = "KEY_LEFTCTRL", [LG_KEY_A] = "KEY_A", [LG_KEY_S] = "KEY_S", [LG_KEY_D] = "KEY_D", [LG_KEY_F] = "KEY_F", [LG_KEY_G] = "KEY_G", [LG_KEY_H] = "KEY_H", [LG_KEY_J] = "KEY_J", [LG_KEY_K] = "KEY_K", [LG_KEY_L] = "KEY_L", [LG_KEY_SEMICOLON] = "KEY_SEMICOLON", [LG_KEY_APOSTROPHE] = "KEY_APOSTROPHE", [LG_KEY_GRAVE] = "KEY_GRAVE", [LG_KEY_LEFTSHIFT] = "KEY_LEFTSHIFT", [LG_KEY_BACKSLASH] = "KEY_BACKSLASH", [LG_KEY_Z] = "KEY_Z", [LG_KEY_X] = "KEY_X", [LG_KEY_C] = "KEY_C", [LG_KEY_V] = "KEY_V", [LG_KEY_B] = "KEY_B", [LG_KEY_N] = "KEY_N", [LG_KEY_M] = "KEY_M", [LG_KEY_COMMA] = "KEY_COMMA", [LG_KEY_DOT] = "KEY_DOT", [LG_KEY_SLASH] = "KEY_SLASH", [LG_KEY_RIGHTSHIFT] = "KEY_RIGHTSHIFT", [LG_KEY_KPASTERISK] = "KEY_KPASTERISK", [LG_KEY_LEFTALT] = "KEY_LEFTALT", [LG_KEY_SPACE] = "KEY_SPACE", [LG_KEY_CAPSLOCK] = "KEY_CAPSLOCK", [LG_KEY_F1] = "KEY_F1", [LG_KEY_F2] = "KEY_F2", [LG_KEY_F3] = "KEY_F3", [LG_KEY_F4] = "KEY_F4", [LG_KEY_F5] = "KEY_F5", [LG_KEY_F6] = "KEY_F6", [LG_KEY_F7] = "KEY_F7", [LG_KEY_F8] = "KEY_F8", [LG_KEY_F9] = "KEY_F9", [LG_KEY_F10] = "KEY_F10", [LG_KEY_NUMLOCK] = "KEY_NUMLOCK", [LG_KEY_SCROLLLOCK] = "KEY_SCROLLLOCK", [LG_KEY_KP7] = "KEY_KP7", [LG_KEY_KP8] = "KEY_KP8", [LG_KEY_KP9] = "KEY_KP9", [LG_KEY_KPMINUS] = "KEY_KPMINUS", [LG_KEY_KP4] = "KEY_KP4", [LG_KEY_KP5] = "KEY_KP5", [LG_KEY_KP6] = "KEY_KP6", [LG_KEY_KPPLUS] = "KEY_KPPLUS", [LG_KEY_KP1] = "KEY_KP1", [LG_KEY_KP2] = "KEY_KP2", [LG_KEY_KP3] = "KEY_KP3", [LG_KEY_KP0] = "KEY_KP0", [LG_KEY_KPDOT] = "KEY_KPDOT", [LG_KEY_102ND] = "KEY_102ND", [LG_KEY_F11] = "KEY_F11", [LG_KEY_F12] = "KEY_F12", [LG_KEY_RO] = "KEY_RO", [LG_KEY_HENKAN] = "KEY_HENKAN", [LG_KEY_KATAKANAHIRAGANA] = "KEY_KATAKANAHIRAGANA", [LG_KEY_MUHENKAN] = "KEY_MUHENKAN", [LG_KEY_KPENTER] = "KEY_KPENTER", [LG_KEY_RIGHTCTRL] = "KEY_RIGHTCTRL", [LG_KEY_KPSLASH] = "KEY_KPSLASH", [LG_KEY_SYSRQ] = "KEY_SYSRQ", [LG_KEY_RIGHTALT] = "KEY_RIGHTALT", [LG_KEY_HOME] = "KEY_HOME", [LG_KEY_UP] = "KEY_UP", [LG_KEY_PAGEUP] = "KEY_PAGEUP", [LG_KEY_LEFT] = "KEY_LEFT", [LG_KEY_RIGHT] = "KEY_RIGHT", [LG_KEY_END] = "KEY_END", [LG_KEY_DOWN] = "KEY_DOWN", [LG_KEY_PAGEDOWN] = "KEY_PAGEDOWN", [LG_KEY_INSERT] = "KEY_INSERT", [LG_KEY_DELETE] = "KEY_DELETE", [LG_KEY_KPEQUAL] = "KEY_KPEQUAL", [LG_KEY_PAUSE] = "KEY_PAUSE", [LG_KEY_KPCOMMA] = "KEY_KPCOMMA", [LG_KEY_HANGEUL] = "KEY_HANGEUL", [LG_KEY_HANJA] = "KEY_HANJA", [LG_KEY_YEN] = "KEY_YEN", [LG_KEY_LEFTMETA] = "KEY_LEFTMETA", [LG_KEY_RIGHTMETA] = "KEY_RIGHTMETA", [LG_KEY_COMPOSE] = "KEY_COMPOSE", [LG_KEY_POWER] = "KEY_POWER", [LG_KEY_F13] = "KEY_F13", [LG_KEY_F14] = "KEY_F14", [LG_KEY_F15] = "KEY_F15", [LG_KEY_F16] = "KEY_F16", [LG_KEY_F17] = "KEY_F17", [LG_KEY_F18] = "KEY_F18", [LG_KEY_F19] = "KEY_F19", [LG_KEY_F20] = "KEY_F20", [LG_KEY_F21] = "KEY_F21", [LG_KEY_F22] = "KEY_F22", [LG_KEY_F23] = "KEY_F23", [LG_KEY_F24] = "KEY_F24", [LG_KEY_OPEN] = "KEY_OPEN", [LG_KEY_HELP] = "KEY_HELP", [LG_KEY_MENU] = "KEY_MENU", [LG_KEY_FRONT] = "KEY_FRONT", [LG_KEY_AGAIN] = "KEY_AGAIN", [LG_KEY_UNDO] = "KEY_UNDO", [LG_KEY_CUT] = "KEY_CUT", [LG_KEY_COPY] = "KEY_COPY", [LG_KEY_PASTE] = "KEY_PASTE", [LG_KEY_KPJPCOMMA] = "KEY_KPJPCOMMA", [LG_KEY_KATAKANA] = "KEY_KATAKANA", [LG_KEY_HIRAGANA] = "KEY_HIRAGANA", [LG_KEY_ZENKAKUHANKAKU] = "KEY_ZENKAKUHANKAKU", [LG_KEY_KPLEFTPAREN] = "KEY_KPLEFTPAREN", [LG_KEY_KPRIGHTPAREN] = "KEY_KPRIGHTPAREN", [LG_KEY_PRINT] = "KEY_PRINT", [LG_KEY_MUTE] = "KEY_MUTE", [LG_KEY_VOLUMEUP] = "KEY_VOLUMEUP", [LG_KEY_VOLUMEDOWN] = "KEY_VOLUMEDOWN", [LG_KEY_NEXTSONG] = "KEY_NEXTSONG", [LG_KEY_PLAYPAUSE] = "KEY_PLAYPAUSE", [LG_KEY_PREVIOUSSONG] = "KEY_PREVIOUSSONG", [LG_KEY_STOPCD] = "KEY_STOPCD", [LG_KEY_EJECTCD] = "KEY_EJECTCD", [LG_KEY_WWW] = "KEY_WWW", [LG_KEY_BACK] = "KEY_BACK", [LG_KEY_FORWARD] = "KEY_FORWARD", [LG_KEY_STOP] = "KEY_STOP", [LG_KEY_FIND] = "KEY_FIND", [LG_KEY_SCROLLUP] = "KEY_SCROLLUP", [LG_KEY_SCROLLDOWN] = "KEY_SCROLLDOWN", [LG_KEY_EDIT] = "KEY_EDIT", [LG_KEY_SLEEP] = "KEY_SLEEP", [LG_KEY_SCREENLOCK] = "KEY_SCREENLOCK", [LG_KEY_REFRESH] = "KEY_REFRESH", [LG_KEY_CALC] = "KEY_CALC", }; const char * lg_keycode_to_display[LG_KEY_MAX] = { [LG_KEY_RESERVED] = "Reserved", [LG_KEY_ESC] = "Esc", [LG_KEY_1] = "1", [LG_KEY_2] = "2", [LG_KEY_3] = "3", [LG_KEY_4] = "4", [LG_KEY_5] = "5", [LG_KEY_6] = "6", [LG_KEY_7] = "7", [LG_KEY_8] = "8", [LG_KEY_9] = "9", [LG_KEY_0] = "0", [LG_KEY_MINUS] = "-", [LG_KEY_EQUAL] = "=", [LG_KEY_BACKSPACE] = "Backspace", [LG_KEY_TAB] = "Tab", [LG_KEY_Q] = "Q", [LG_KEY_W] = "W", [LG_KEY_E] = "E", [LG_KEY_R] = "R", [LG_KEY_T] = "T", [LG_KEY_Y] = "Y", [LG_KEY_U] = "U", [LG_KEY_I] = "I", [LG_KEY_O] = "O", [LG_KEY_P] = "P", [LG_KEY_LEFTBRACE] = "{", [LG_KEY_RIGHTBRACE] = "}", [LG_KEY_ENTER] = "Enter", [LG_KEY_LEFTCTRL] = "LCtrl", [LG_KEY_A] = "A", [LG_KEY_S] = "S", [LG_KEY_D] = "D", [LG_KEY_F] = "F", [LG_KEY_G] = "G", [LG_KEY_H] = "H", [LG_KEY_J] = "J", [LG_KEY_K] = "K", [LG_KEY_L] = "L", [LG_KEY_SEMICOLON] = ";", [LG_KEY_APOSTROPHE] = "'", [LG_KEY_GRAVE] = "`", [LG_KEY_LEFTSHIFT] = "LShift", [LG_KEY_BACKSLASH] = "\\", [LG_KEY_Z] = "Z", [LG_KEY_X] = "X", [LG_KEY_C] = "C", [LG_KEY_V] = "V", [LG_KEY_B] = "B", [LG_KEY_N] = "N", [LG_KEY_M] = "M", [LG_KEY_COMMA] = ",", [LG_KEY_DOT] = ".", [LG_KEY_SLASH] = "/", [LG_KEY_RIGHTSHIFT] = "RShift", [LG_KEY_KPASTERISK] = "*", [LG_KEY_LEFTALT] = "LAlt", [LG_KEY_SPACE] = "Space", [LG_KEY_CAPSLOCK] = "CapsLock", [LG_KEY_F1] = "F1", [LG_KEY_F2] = "F2", [LG_KEY_F3] = "F3", [LG_KEY_F4] = "F4", [LG_KEY_F5] = "F5", [LG_KEY_F6] = "F6", [LG_KEY_F7] = "F7", [LG_KEY_F8] = "F8", [LG_KEY_F9] = "F9", [LG_KEY_F10] = "F10", [LG_KEY_NUMLOCK] = "NumLock", [LG_KEY_SCROLLLOCK] = "ScrollLock", [LG_KEY_KP7] = "KP7", [LG_KEY_KP8] = "KP8", [LG_KEY_KP9] = "KP9", [LG_KEY_KPMINUS] = "KPMinus", [LG_KEY_KP4] = "KP4", [LG_KEY_KP5] = "KP5", [LG_KEY_KP6] = "KP6", [LG_KEY_KPPLUS] = "KPPlus", [LG_KEY_KP1] = "KP1", [LG_KEY_KP2] = "KP2", [LG_KEY_KP3] = "KP3", [LG_KEY_KP0] = "KP0", [LG_KEY_KPDOT] = "KPDOT", [LG_KEY_102ND] = "102ND", [LG_KEY_F11] = "F11", [LG_KEY_F12] = "F12", [LG_KEY_RO] = "RO", [LG_KEY_HENKAN] = "Henkan", [LG_KEY_KATAKANAHIRAGANA] = "Kana", [LG_KEY_MUHENKAN] = "Muhenkan", [LG_KEY_KPENTER] = "KPEnter", [LG_KEY_RIGHTCTRL] = "RCtrl", [LG_KEY_KPSLASH] = "KPSlash", [LG_KEY_SYSRQ] = "SysRQ", [LG_KEY_RIGHTALT] = "RAlt", [LG_KEY_HOME] = "Home", [LG_KEY_UP] = "↑", [LG_KEY_PAGEUP] = "PageUp", [LG_KEY_LEFT] = "←", [LG_KEY_RIGHT] = "→", [LG_KEY_END] = "End", [LG_KEY_DOWN] = "↓", [LG_KEY_PAGEDOWN] = "PageDown", [LG_KEY_INSERT] = "Insert", [LG_KEY_DELETE] = "Delete", [LG_KEY_KPEQUAL] = "KPEqual", [LG_KEY_PAUSE] = "Pause", [LG_KEY_KPCOMMA] = "KPComma", [LG_KEY_HANGEUL] = "Hangul", [LG_KEY_HANJA] = "Hanja", [LG_KEY_YEN] = "Yen", [LG_KEY_LEFTMETA] = "LWin", [LG_KEY_RIGHTMETA] = "RWin", [LG_KEY_COMPOSE] = "Compose", [LG_KEY_POWER] = "Power", [LG_KEY_F13] = "F13", [LG_KEY_F14] = "F14", [LG_KEY_F15] = "F15", [LG_KEY_F16] = "F16", [LG_KEY_F17] = "F17", [LG_KEY_F18] = "F18", [LG_KEY_F19] = "F19", [LG_KEY_F20] = "F20", [LG_KEY_F21] = "F21", [LG_KEY_F22] = "F22", [LG_KEY_F23] = "F23", [LG_KEY_F24] = "F24", [LG_KEY_OPEN] = "Open", [LG_KEY_HELP] = "Help", [LG_KEY_MENU] = "Menu", [LG_KEY_FRONT] = "Front", [LG_KEY_AGAIN] = "Again", [LG_KEY_UNDO] = "Undo", [LG_KEY_CUT] = "Cut", [LG_KEY_COPY] = "Copy", [LG_KEY_PASTE] = "Paste", [LG_KEY_KPJPCOMMA] = "KPJPComma", [LG_KEY_KATAKANA] = "Katakana", [LG_KEY_HIRAGANA] = "Hiragana", [LG_KEY_ZENKAKUHANKAKU] = "ZenkakuHankaku", [LG_KEY_KPLEFTPAREN] = "KPLeftParen", [LG_KEY_KPRIGHTPAREN] = "KPRightParen", [LG_KEY_PRINT] = "Print", [LG_KEY_MUTE] = "Mute", [LG_KEY_VOLUMEUP] = "VolumeUp", [LG_KEY_VOLUMEDOWN] = "VolumeDown", [LG_KEY_NEXTSONG] = "NextSong", [LG_KEY_PLAYPAUSE] = "PlayPause", [LG_KEY_PREVIOUSSONG] = "PreviousSong", [LG_KEY_STOPCD] = "StopMedia", [LG_KEY_EJECTCD] = "Eject", [LG_KEY_WWW] = "WWW", [LG_KEY_BACK] = "Back", [LG_KEY_FORWARD] = "Forward", [LG_KEY_STOP] = "Stop", [LG_KEY_FIND] = "Find", [LG_KEY_SCROLLUP] = "ScrollUp", [LG_KEY_SCROLLDOWN] = "ScrollDown", [LG_KEY_EDIT] = "Edit", [LG_KEY_SLEEP] = "Sleep", [LG_KEY_SCREENLOCK] = "ScreenLock", [LG_KEY_REFRESH] = "Refresh", [LG_KEY_CALC] = "Calculator", }; const int lg_keycode_to_imgui[LG_KEY_MAX] = { [LG_KEY_TAB ] = ImGuiKey_Tab, [LG_KEY_LEFT ] = ImGuiKey_LeftArrow, [LG_KEY_RIGHT ] = ImGuiKey_RightArrow, [LG_KEY_UP ] = ImGuiKey_UpArrow, [LG_KEY_DOWN ] = ImGuiKey_DownArrow, [LG_KEY_PAGEUP ] = ImGuiKey_PageUp, [LG_KEY_PAGEDOWN ] = ImGuiKey_PageDown, [LG_KEY_HOME ] = ImGuiKey_Home, [LG_KEY_END ] = ImGuiKey_End, [LG_KEY_INSERT ] = ImGuiKey_Insert, [LG_KEY_DELETE ] = ImGuiKey_Delete, [LG_KEY_BACKSPACE ] = ImGuiKey_Backspace, [LG_KEY_SPACE ] = ImGuiKey_Space, [LG_KEY_ENTER ] = ImGuiKey_Enter, [LG_KEY_LEFTCTRL ] = ImGuiKey_LeftCtrl, [LG_KEY_LEFTSHIFT ] = ImGuiKey_LeftShift, [LG_KEY_LEFTALT ] = ImGuiKey_LeftAlt, [LG_KEY_LEFTMETA ] = ImGuiKey_LeftSuper, [LG_KEY_RIGHTCTRL ] = ImGuiKey_RightCtrl, [LG_KEY_RIGHTSHIFT] = ImGuiKey_RightShift, [LG_KEY_RIGHTALT ] = ImGuiKey_RightAlt, [LG_KEY_RIGHTMETA ] = ImGuiKey_RightSuper, [LG_KEY_COMPOSE ] = ImGuiKey_Menu, [LG_KEY_MENU ] = ImGuiKey_Menu, [LG_KEY_0 ] = ImGuiKey_0, [LG_KEY_1 ] = ImGuiKey_1, [LG_KEY_2 ] = ImGuiKey_2, [LG_KEY_3 ] = ImGuiKey_3, [LG_KEY_4 ] = ImGuiKey_4, [LG_KEY_5 ] = ImGuiKey_5, [LG_KEY_6 ] = ImGuiKey_6, [LG_KEY_7 ] = ImGuiKey_7, [LG_KEY_8 ] = ImGuiKey_8, [LG_KEY_9 ] = ImGuiKey_9, [LG_KEY_A ] = ImGuiKey_A, [LG_KEY_B ] = ImGuiKey_B, [LG_KEY_C ] = ImGuiKey_C, [LG_KEY_D ] = ImGuiKey_D, [LG_KEY_E ] = ImGuiKey_E, [LG_KEY_F ] = ImGuiKey_F, [LG_KEY_G ] = ImGuiKey_G, [LG_KEY_H ] = ImGuiKey_H, [LG_KEY_I ] = ImGuiKey_I, [LG_KEY_J ] = ImGuiKey_J, [LG_KEY_K ] = ImGuiKey_K, [LG_KEY_L ] = ImGuiKey_L, [LG_KEY_M ] = ImGuiKey_M, [LG_KEY_N ] = ImGuiKey_N, [LG_KEY_O ] = ImGuiKey_O, [LG_KEY_P ] = ImGuiKey_P, [LG_KEY_Q ] = ImGuiKey_Q, [LG_KEY_R ] = ImGuiKey_R, [LG_KEY_S ] = ImGuiKey_S, [LG_KEY_T ] = ImGuiKey_T, [LG_KEY_U ] = ImGuiKey_U, [LG_KEY_V ] = ImGuiKey_V, [LG_KEY_W ] = ImGuiKey_W, [LG_KEY_X ] = ImGuiKey_X, [LG_KEY_Y ] = ImGuiKey_Y, [LG_KEY_Z ] = ImGuiKey_Z, [LG_KEY_F1 ] = ImGuiKey_F1, [LG_KEY_F2 ] = ImGuiKey_F2, [LG_KEY_F3 ] = ImGuiKey_F3, [LG_KEY_F4 ] = ImGuiKey_F4, [LG_KEY_F5 ] = ImGuiKey_F5, [LG_KEY_F6 ] = ImGuiKey_F6, [LG_KEY_F7 ] = ImGuiKey_F7, [LG_KEY_F8 ] = ImGuiKey_F8, [LG_KEY_F9 ] = ImGuiKey_F9, [LG_KEY_F10 ] = ImGuiKey_F10, [LG_KEY_F11 ] = ImGuiKey_F11, [LG_KEY_F12 ] = ImGuiKey_F12, [LG_KEY_F13 ] = ImGuiKey_F13, [LG_KEY_F14 ] = ImGuiKey_F14, [LG_KEY_F15 ] = ImGuiKey_F15, [LG_KEY_F16 ] = ImGuiKey_F16, [LG_KEY_F17 ] = ImGuiKey_F17, [LG_KEY_F18 ] = ImGuiKey_F18, [LG_KEY_F19 ] = ImGuiKey_F19, [LG_KEY_F20 ] = ImGuiKey_F20, [LG_KEY_F21 ] = ImGuiKey_F21, [LG_KEY_F22 ] = ImGuiKey_F22, [LG_KEY_F23 ] = ImGuiKey_F23, [LG_KEY_F24 ] = ImGuiKey_F24, [LG_KEY_APOSTROPHE] = ImGuiKey_Apostrophe, [LG_KEY_COMMA ] = ImGuiKey_Comma, [LG_KEY_MINUS ] = ImGuiKey_Minus, [LG_KEY_DOT ] = ImGuiKey_Period, [LG_KEY_SLASH ] = ImGuiKey_Slash, [LG_KEY_SEMICOLON ] = ImGuiKey_Semicolon, [LG_KEY_EQUAL ] = ImGuiKey_Equal, [LG_KEY_LEFTBRACE ] = ImGuiKey_LeftBracket, [LG_KEY_BACKSLASH ] = ImGuiKey_Backslash, [LG_KEY_RIGHTBRACE] = ImGuiKey_RightBracket, [LG_KEY_GRAVE ] = ImGuiKey_GraveAccent, [LG_KEY_CAPSLOCK ] = ImGuiKey_CapsLock, [LG_KEY_SCROLLLOCK] = ImGuiKey_ScrollLock, [LG_KEY_NUMLOCK ] = ImGuiKey_NumLock, [LG_KEY_PRINT ] = ImGuiKey_PrintScreen, [LG_KEY_PAUSE ] = ImGuiKey_Pause, [LG_KEY_KP0 ] = ImGuiKey_Keypad0, [LG_KEY_KP1 ] = ImGuiKey_Keypad1, [LG_KEY_KP2 ] = ImGuiKey_Keypad2, [LG_KEY_KP3 ] = ImGuiKey_Keypad3, [LG_KEY_KP4 ] = ImGuiKey_Keypad4, [LG_KEY_KP5 ] = ImGuiKey_Keypad5, [LG_KEY_KP6 ] = ImGuiKey_Keypad6, [LG_KEY_KP7 ] = ImGuiKey_Keypad7, [LG_KEY_KP8 ] = ImGuiKey_Keypad8, [LG_KEY_KP9 ] = ImGuiKey_Keypad9, [LG_KEY_KPDOT ] = ImGuiKey_KeypadDecimal, [LG_KEY_KPSLASH ] = ImGuiKey_KeypadDivide, [LG_KEY_KPASTERISK] = ImGuiKey_KeypadMultiply, [LG_KEY_KPMINUS ] = ImGuiKey_KeypadSubtract, [LG_KEY_KPPLUS ] = ImGuiKey_KeypadAdd, [LG_KEY_KPENTER ] = ImGuiKey_KeypadEnter, [LG_KEY_KPEQUAL ] = ImGuiKey_KeypadEqual, [LG_KEY_BACK ] = ImGuiKey_AppBack, [LG_KEY_FORWARD ] = ImGuiKey_AppForward, };