| 1 | /* |
| 2 | Simple DirectMedia Layer |
| 3 | Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org> |
| 4 | |
| 5 | This software is provided 'as-is', without any express or implied |
| 6 | warranty. In no event will the authors be held liable for any damages |
| 7 | arising from the use of this software. |
| 8 | |
| 9 | Permission is granted to anyone to use this software for any purpose, |
| 10 | including commercial applications, and to alter it and redistribute it |
| 11 | freely, subject to the following restrictions: |
| 12 | |
| 13 | 1. The origin of this software must not be misrepresented; you must not |
| 14 | claim that you wrote the original software. If you use this software |
| 15 | in a product, an acknowledgment in the product documentation would be |
| 16 | appreciated but is not required. |
| 17 | 2. Altered source versions must be plainly marked as such, and must not be |
| 18 | misrepresented as being the original software. |
| 19 | 3. This notice may not be removed or altered from any source distribution. |
| 20 | */ |
| 21 | #include "SDL_internal.h" |
| 22 | |
| 23 | #ifndef scancodes_xfree86_h_ |
| 24 | #define scancodes_xfree86_h_ |
| 25 | |
| 26 | /* XFree86 key code to SDL scancode mapping table |
| 27 | Sources: |
| 28 | - atKeyNames.h from XFree86 source code |
| 29 | */ |
| 30 | /* *INDENT-OFF* */ // clang-format off |
| 31 | static const SDL_Scancode xfree86_scancode_table[] = { |
| 32 | /* 0 */ SDL_SCANCODE_UNKNOWN, |
| 33 | /* 1 */ SDL_SCANCODE_ESCAPE, |
| 34 | /* 2 */ SDL_SCANCODE_1, |
| 35 | /* 3 */ SDL_SCANCODE_2, |
| 36 | /* 4 */ SDL_SCANCODE_3, |
| 37 | /* 5 */ SDL_SCANCODE_4, |
| 38 | /* 6 */ SDL_SCANCODE_5, |
| 39 | /* 7 */ SDL_SCANCODE_6, |
| 40 | /* 8 */ SDL_SCANCODE_7, |
| 41 | /* 9 */ SDL_SCANCODE_8, |
| 42 | /* 10 */ SDL_SCANCODE_9, |
| 43 | /* 11 */ SDL_SCANCODE_0, |
| 44 | /* 12 */ SDL_SCANCODE_MINUS, |
| 45 | /* 13 */ SDL_SCANCODE_EQUALS, |
| 46 | /* 14 */ SDL_SCANCODE_BACKSPACE, |
| 47 | /* 15 */ SDL_SCANCODE_TAB, |
| 48 | /* 16 */ SDL_SCANCODE_Q, |
| 49 | /* 17 */ SDL_SCANCODE_W, |
| 50 | /* 18 */ SDL_SCANCODE_E, |
| 51 | /* 19 */ SDL_SCANCODE_R, |
| 52 | /* 20 */ SDL_SCANCODE_T, |
| 53 | /* 21 */ SDL_SCANCODE_Y, |
| 54 | /* 22 */ SDL_SCANCODE_U, |
| 55 | /* 23 */ SDL_SCANCODE_I, |
| 56 | /* 24 */ SDL_SCANCODE_O, |
| 57 | /* 25 */ SDL_SCANCODE_P, |
| 58 | /* 26 */ SDL_SCANCODE_LEFTBRACKET, |
| 59 | /* 27 */ SDL_SCANCODE_RIGHTBRACKET, |
| 60 | /* 28 */ SDL_SCANCODE_RETURN, |
| 61 | /* 29 */ SDL_SCANCODE_LCTRL, |
| 62 | /* 30 */ SDL_SCANCODE_A, |
| 63 | /* 31 */ SDL_SCANCODE_S, |
| 64 | /* 32 */ SDL_SCANCODE_D, |
| 65 | /* 33 */ SDL_SCANCODE_F, |
| 66 | /* 34 */ SDL_SCANCODE_G, |
| 67 | /* 35 */ SDL_SCANCODE_H, |
| 68 | /* 36 */ SDL_SCANCODE_J, |
| 69 | /* 37 */ SDL_SCANCODE_K, |
| 70 | /* 38 */ SDL_SCANCODE_L, |
| 71 | /* 39 */ SDL_SCANCODE_SEMICOLON, |
| 72 | /* 40 */ SDL_SCANCODE_APOSTROPHE, |
| 73 | /* 41 */ SDL_SCANCODE_GRAVE, |
| 74 | /* 42 */ SDL_SCANCODE_LSHIFT, |
| 75 | /* 43 */ SDL_SCANCODE_BACKSLASH, |
| 76 | /* 44 */ SDL_SCANCODE_Z, |
| 77 | /* 45 */ SDL_SCANCODE_X, |
| 78 | /* 46 */ SDL_SCANCODE_C, |
| 79 | /* 47 */ SDL_SCANCODE_V, |
| 80 | /* 48 */ SDL_SCANCODE_B, |
| 81 | /* 49 */ SDL_SCANCODE_N, |
| 82 | /* 50 */ SDL_SCANCODE_M, |
| 83 | /* 51 */ SDL_SCANCODE_COMMA, |
| 84 | /* 52 */ SDL_SCANCODE_PERIOD, |
| 85 | /* 53 */ SDL_SCANCODE_SLASH, |
| 86 | /* 54 */ SDL_SCANCODE_RSHIFT, |
| 87 | /* 55 */ SDL_SCANCODE_KP_MULTIPLY, |
| 88 | /* 56 */ SDL_SCANCODE_LALT, |
| 89 | /* 57 */ SDL_SCANCODE_SPACE, |
| 90 | /* 58 */ SDL_SCANCODE_CAPSLOCK, |
| 91 | /* 59 */ SDL_SCANCODE_F1, |
| 92 | /* 60 */ SDL_SCANCODE_F2, |
| 93 | /* 61 */ SDL_SCANCODE_F3, |
| 94 | /* 62 */ SDL_SCANCODE_F4, |
| 95 | /* 63 */ SDL_SCANCODE_F5, |
| 96 | /* 64 */ SDL_SCANCODE_F6, |
| 97 | /* 65 */ SDL_SCANCODE_F7, |
| 98 | /* 66 */ SDL_SCANCODE_F8, |
| 99 | /* 67 */ SDL_SCANCODE_F9, |
| 100 | /* 68 */ SDL_SCANCODE_F10, |
| 101 | /* 69 */ SDL_SCANCODE_NUMLOCKCLEAR, |
| 102 | /* 70 */ SDL_SCANCODE_SCROLLLOCK, |
| 103 | /* 71 */ SDL_SCANCODE_KP_7, |
| 104 | /* 72 */ SDL_SCANCODE_KP_8, |
| 105 | /* 73 */ SDL_SCANCODE_KP_9, |
| 106 | /* 74 */ SDL_SCANCODE_KP_MINUS, |
| 107 | /* 75 */ SDL_SCANCODE_KP_4, |
| 108 | /* 76 */ SDL_SCANCODE_KP_5, |
| 109 | /* 77 */ SDL_SCANCODE_KP_6, |
| 110 | /* 78 */ SDL_SCANCODE_KP_PLUS, |
| 111 | /* 79 */ SDL_SCANCODE_KP_1, |
| 112 | /* 80 */ SDL_SCANCODE_KP_2, |
| 113 | /* 81 */ SDL_SCANCODE_KP_3, |
| 114 | /* 82 */ SDL_SCANCODE_KP_0, |
| 115 | /* 83 */ SDL_SCANCODE_KP_PERIOD, |
| 116 | /* 84 */ SDL_SCANCODE_SYSREQ, |
| 117 | /* 85 */ SDL_SCANCODE_MODE, |
| 118 | /* 86 */ SDL_SCANCODE_NONUSBACKSLASH, |
| 119 | /* 87 */ SDL_SCANCODE_F11, |
| 120 | /* 88 */ SDL_SCANCODE_F12, |
| 121 | /* 89 */ SDL_SCANCODE_HOME, |
| 122 | /* 90 */ SDL_SCANCODE_UP, |
| 123 | /* 91 */ SDL_SCANCODE_PAGEUP, |
| 124 | /* 92 */ SDL_SCANCODE_LEFT, |
| 125 | /* 93 */ SDL_SCANCODE_UNKNOWN, // on PowerBook G4 / KEY_Begin |
| 126 | /* 94 */ SDL_SCANCODE_RIGHT, |
| 127 | /* 95 */ SDL_SCANCODE_END, |
| 128 | /* 96 */ SDL_SCANCODE_DOWN, |
| 129 | /* 97 */ SDL_SCANCODE_PAGEDOWN, |
| 130 | /* 98 */ SDL_SCANCODE_INSERT, |
| 131 | /* 99 */ SDL_SCANCODE_DELETE, |
| 132 | /* 100 */ SDL_SCANCODE_KP_ENTER, |
| 133 | /* 101 */ SDL_SCANCODE_RCTRL, |
| 134 | /* 102 */ SDL_SCANCODE_PAUSE, |
| 135 | /* 103 */ SDL_SCANCODE_PRINTSCREEN, |
| 136 | /* 104 */ SDL_SCANCODE_KP_DIVIDE, |
| 137 | /* 105 */ SDL_SCANCODE_RALT, |
| 138 | /* 106 */ SDL_SCANCODE_UNKNOWN, // BREAK |
| 139 | /* 107 */ SDL_SCANCODE_LGUI, |
| 140 | /* 108 */ SDL_SCANCODE_RGUI, |
| 141 | /* 109 */ SDL_SCANCODE_APPLICATION, |
| 142 | /* 110 */ SDL_SCANCODE_F13, |
| 143 | /* 111 */ SDL_SCANCODE_F14, |
| 144 | /* 112 */ SDL_SCANCODE_F15, |
| 145 | /* 113 */ SDL_SCANCODE_F16, |
| 146 | /* 114 */ SDL_SCANCODE_F17, |
| 147 | /* 115 */ SDL_SCANCODE_INTERNATIONAL1, // \_ |
| 148 | /* 116 */ SDL_SCANCODE_UNKNOWN, /* is translated to XK_ISO_Level3_Shift by my X server, but I have no keyboard that generates this code, so I don't know what the correct SDL_SCANCODE_* for it is */ |
| 149 | /* 117 */ SDL_SCANCODE_UNKNOWN, |
| 150 | /* 118 */ SDL_SCANCODE_KP_EQUALS, |
| 151 | /* 119 */ SDL_SCANCODE_UNKNOWN, |
| 152 | /* 120 */ SDL_SCANCODE_UNKNOWN, |
| 153 | /* 121 */ SDL_SCANCODE_INTERNATIONAL4, // Henkan_Mode |
| 154 | /* 122 */ SDL_SCANCODE_UNKNOWN, |
| 155 | /* 123 */ SDL_SCANCODE_INTERNATIONAL5, // Muhenkan |
| 156 | /* 124 */ SDL_SCANCODE_UNKNOWN, |
| 157 | /* 125 */ SDL_SCANCODE_INTERNATIONAL3, // Yen |
| 158 | /* 126 */ SDL_SCANCODE_UNKNOWN, |
| 159 | /* 127 */ SDL_SCANCODE_UNKNOWN, |
| 160 | /* 128 */ SDL_SCANCODE_UNKNOWN, |
| 161 | /* 129 */ SDL_SCANCODE_UNKNOWN, |
| 162 | /* 130 */ SDL_SCANCODE_UNKNOWN, |
| 163 | /* 131 */ SDL_SCANCODE_UNKNOWN, |
| 164 | /* 132 */ SDL_SCANCODE_POWER, |
| 165 | /* 133 */ SDL_SCANCODE_MUTE, |
| 166 | /* 134 */ SDL_SCANCODE_VOLUMEDOWN, |
| 167 | /* 135 */ SDL_SCANCODE_VOLUMEUP, |
| 168 | /* 136 */ SDL_SCANCODE_HELP, |
| 169 | /* 137 */ SDL_SCANCODE_STOP, |
| 170 | /* 138 */ SDL_SCANCODE_AGAIN, |
| 171 | /* 139 */ SDL_SCANCODE_UNKNOWN, // PROPS |
| 172 | /* 140 */ SDL_SCANCODE_UNDO, |
| 173 | /* 141 */ SDL_SCANCODE_UNKNOWN, // FRONT |
| 174 | /* 142 */ SDL_SCANCODE_COPY, |
| 175 | /* 143 */ SDL_SCANCODE_UNKNOWN, // OPEN |
| 176 | /* 144 */ SDL_SCANCODE_PASTE, |
| 177 | /* 145 */ SDL_SCANCODE_FIND, |
| 178 | /* 146 */ SDL_SCANCODE_CUT, |
| 179 | }; |
| 180 | |
| 181 | // This is largely identical to the Linux keycode mapping |
| 182 | static const SDL_Scancode xfree86_scancode_table2[] = { |
| 183 | /* 0, 0x000 */ SDL_SCANCODE_UNKNOWN, // NoSymbol |
| 184 | /* 1, 0x001 */ SDL_SCANCODE_ESCAPE, // Escape |
| 185 | /* 2, 0x002 */ SDL_SCANCODE_1, // 1 |
| 186 | /* 3, 0x003 */ SDL_SCANCODE_2, // 2 |
| 187 | /* 4, 0x004 */ SDL_SCANCODE_3, // 3 |
| 188 | /* 5, 0x005 */ SDL_SCANCODE_4, // 4 |
| 189 | /* 6, 0x006 */ SDL_SCANCODE_5, // 5 |
| 190 | /* 7, 0x007 */ SDL_SCANCODE_6, // 6 |
| 191 | /* 8, 0x008 */ SDL_SCANCODE_7, // 7 |
| 192 | /* 9, 0x009 */ SDL_SCANCODE_8, // 8 |
| 193 | /* 10, 0x00a */ SDL_SCANCODE_9, // 9 |
| 194 | /* 11, 0x00b */ SDL_SCANCODE_0, // 0 |
| 195 | /* 12, 0x00c */ SDL_SCANCODE_MINUS, // minus |
| 196 | /* 13, 0x00d */ SDL_SCANCODE_EQUALS, // equal |
| 197 | /* 14, 0x00e */ SDL_SCANCODE_BACKSPACE, // BackSpace |
| 198 | /* 15, 0x00f */ SDL_SCANCODE_TAB, // Tab |
| 199 | /* 16, 0x010 */ SDL_SCANCODE_Q, // q |
| 200 | /* 17, 0x011 */ SDL_SCANCODE_W, // w |
| 201 | /* 18, 0x012 */ SDL_SCANCODE_E, // e |
| 202 | /* 19, 0x013 */ SDL_SCANCODE_R, // r |
| 203 | /* 20, 0x014 */ SDL_SCANCODE_T, // t |
| 204 | /* 21, 0x015 */ SDL_SCANCODE_Y, // y |
| 205 | /* 22, 0x016 */ SDL_SCANCODE_U, // u |
| 206 | /* 23, 0x017 */ SDL_SCANCODE_I, // i |
| 207 | /* 24, 0x018 */ SDL_SCANCODE_O, // o |
| 208 | /* 25, 0x019 */ SDL_SCANCODE_P, // p |
| 209 | /* 26, 0x01a */ SDL_SCANCODE_LEFTBRACKET, // bracketleft |
| 210 | /* 27, 0x01b */ SDL_SCANCODE_RIGHTBRACKET, // bracketright |
| 211 | /* 28, 0x01c */ SDL_SCANCODE_RETURN, // Return |
| 212 | /* 29, 0x01d */ SDL_SCANCODE_LCTRL, // Control_L |
| 213 | /* 30, 0x01e */ SDL_SCANCODE_A, // a |
| 214 | /* 31, 0x01f */ SDL_SCANCODE_S, // s |
| 215 | /* 32, 0x020 */ SDL_SCANCODE_D, // d |
| 216 | /* 33, 0x021 */ SDL_SCANCODE_F, // f |
| 217 | /* 34, 0x022 */ SDL_SCANCODE_G, // g |
| 218 | /* 35, 0x023 */ SDL_SCANCODE_H, // h |
| 219 | /* 36, 0x024 */ SDL_SCANCODE_J, // j |
| 220 | /* 37, 0x025 */ SDL_SCANCODE_K, // k |
| 221 | /* 38, 0x026 */ SDL_SCANCODE_L, // l |
| 222 | /* 39, 0x027 */ SDL_SCANCODE_SEMICOLON, // semicolon |
| 223 | /* 40, 0x028 */ SDL_SCANCODE_APOSTROPHE, // apostrophe |
| 224 | /* 41, 0x029 */ SDL_SCANCODE_GRAVE, // grave |
| 225 | /* 42, 0x02a */ SDL_SCANCODE_LSHIFT, // Shift_L |
| 226 | /* 43, 0x02b */ SDL_SCANCODE_BACKSLASH, // backslash |
| 227 | /* 44, 0x02c */ SDL_SCANCODE_Z, // z |
| 228 | /* 45, 0x02d */ SDL_SCANCODE_X, // x |
| 229 | /* 46, 0x02e */ SDL_SCANCODE_C, // c |
| 230 | /* 47, 0x02f */ SDL_SCANCODE_V, // v |
| 231 | /* 48, 0x030 */ SDL_SCANCODE_B, // b |
| 232 | /* 49, 0x031 */ SDL_SCANCODE_N, // n |
| 233 | /* 50, 0x032 */ SDL_SCANCODE_M, // m |
| 234 | /* 51, 0x033 */ SDL_SCANCODE_COMMA, // comma |
| 235 | /* 52, 0x034 */ SDL_SCANCODE_PERIOD, // period |
| 236 | /* 53, 0x035 */ SDL_SCANCODE_SLASH, // slash |
| 237 | /* 54, 0x036 */ SDL_SCANCODE_RSHIFT, // Shift_R |
| 238 | /* 55, 0x037 */ SDL_SCANCODE_KP_MULTIPLY, // KP_Multiply |
| 239 | /* 56, 0x038 */ SDL_SCANCODE_LALT, // Alt_L |
| 240 | /* 57, 0x039 */ SDL_SCANCODE_SPACE, // space |
| 241 | /* 58, 0x03a */ SDL_SCANCODE_CAPSLOCK, // Caps_Lock |
| 242 | /* 59, 0x03b */ SDL_SCANCODE_F1, // F1 |
| 243 | /* 60, 0x03c */ SDL_SCANCODE_F2, // F2 |
| 244 | /* 61, 0x03d */ SDL_SCANCODE_F3, // F3 |
| 245 | /* 62, 0x03e */ SDL_SCANCODE_F4, // F4 |
| 246 | /* 63, 0x03f */ SDL_SCANCODE_F5, // F5 |
| 247 | /* 64, 0x040 */ SDL_SCANCODE_F6, // F6 |
| 248 | /* 65, 0x041 */ SDL_SCANCODE_F7, // F7 |
| 249 | /* 66, 0x042 */ SDL_SCANCODE_F8, // F8 |
| 250 | /* 67, 0x043 */ SDL_SCANCODE_F9, // F9 |
| 251 | /* 68, 0x044 */ SDL_SCANCODE_F10, // F10 |
| 252 | /* 69, 0x045 */ SDL_SCANCODE_NUMLOCKCLEAR, // Num_Lock |
| 253 | /* 70, 0x046 */ SDL_SCANCODE_SCROLLLOCK, // Scroll_Lock |
| 254 | /* 71, 0x047 */ SDL_SCANCODE_KP_7, // KP_Home |
| 255 | /* 72, 0x048 */ SDL_SCANCODE_KP_8, // KP_Up |
| 256 | /* 73, 0x049 */ SDL_SCANCODE_KP_9, // KP_Prior |
| 257 | /* 74, 0x04a */ SDL_SCANCODE_KP_MINUS, // KP_Subtract |
| 258 | /* 75, 0x04b */ SDL_SCANCODE_KP_4, // KP_Left |
| 259 | /* 76, 0x04c */ SDL_SCANCODE_KP_5, // KP_Begin |
| 260 | /* 77, 0x04d */ SDL_SCANCODE_KP_6, // KP_Right |
| 261 | /* 78, 0x04e */ SDL_SCANCODE_KP_PLUS, // KP_Add |
| 262 | /* 79, 0x04f */ SDL_SCANCODE_KP_1, // KP_End |
| 263 | /* 80, 0x050 */ SDL_SCANCODE_KP_2, // KP_Down |
| 264 | /* 81, 0x051 */ SDL_SCANCODE_KP_3, // KP_Next |
| 265 | /* 82, 0x052 */ SDL_SCANCODE_KP_0, // KP_Insert |
| 266 | /* 83, 0x053 */ SDL_SCANCODE_KP_PERIOD, // KP_Delete |
| 267 | /* 84, 0x054 */ SDL_SCANCODE_RALT, // ISO_Level3_Shift |
| 268 | /* 85, 0x055 */ SDL_SCANCODE_MODE, // ???? |
| 269 | /* 86, 0x056 */ SDL_SCANCODE_NONUSBACKSLASH, // less |
| 270 | /* 87, 0x057 */ SDL_SCANCODE_F11, // F11 |
| 271 | /* 88, 0x058 */ SDL_SCANCODE_F12, // F12 |
| 272 | /* 89, 0x059 */ SDL_SCANCODE_INTERNATIONAL1, // \_ |
| 273 | /* 90, 0x05a */ SDL_SCANCODE_LANG3, // Katakana |
| 274 | /* 91, 0x05b */ SDL_SCANCODE_LANG4, // Hiragana |
| 275 | /* 92, 0x05c */ SDL_SCANCODE_INTERNATIONAL4, // Henkan_Mode |
| 276 | /* 93, 0x05d */ SDL_SCANCODE_INTERNATIONAL2, // Hiragana_Katakana |
| 277 | /* 94, 0x05e */ SDL_SCANCODE_INTERNATIONAL5, // Muhenkan |
| 278 | /* 95, 0x05f */ SDL_SCANCODE_UNKNOWN, // NoSymbol |
| 279 | /* 96, 0x060 */ SDL_SCANCODE_KP_ENTER, // KP_Enter |
| 280 | /* 97, 0x061 */ SDL_SCANCODE_RCTRL, // Control_R |
| 281 | /* 98, 0x062 */ SDL_SCANCODE_KP_DIVIDE, // KP_Divide |
| 282 | /* 99, 0x063 */ SDL_SCANCODE_PRINTSCREEN, // Print |
| 283 | /* 100, 0x064 */ SDL_SCANCODE_RALT, // ISO_Level3_Shift, ALTGR, RALT |
| 284 | /* 101, 0x065 */ SDL_SCANCODE_UNKNOWN, // Linefeed |
| 285 | /* 102, 0x066 */ SDL_SCANCODE_HOME, // Home |
| 286 | /* 103, 0x067 */ SDL_SCANCODE_UP, // Up |
| 287 | /* 104, 0x068 */ SDL_SCANCODE_PAGEUP, // Prior |
| 288 | /* 105, 0x069 */ SDL_SCANCODE_LEFT, // Left |
| 289 | /* 106, 0x06a */ SDL_SCANCODE_RIGHT, // Right |
| 290 | /* 107, 0x06b */ SDL_SCANCODE_END, // End |
| 291 | /* 108, 0x06c */ SDL_SCANCODE_DOWN, // Down |
| 292 | /* 109, 0x06d */ SDL_SCANCODE_PAGEDOWN, // Next |
| 293 | /* 110, 0x06e */ SDL_SCANCODE_INSERT, // Insert |
| 294 | /* 111, 0x06f */ SDL_SCANCODE_DELETE, // Delete |
| 295 | /* 112, 0x070 */ SDL_SCANCODE_UNKNOWN, // NoSymbol |
| 296 | /* 113, 0x071 */ SDL_SCANCODE_MUTE, // XF86AudioMute |
| 297 | /* 114, 0x072 */ SDL_SCANCODE_VOLUMEDOWN, // XF86AudioLowerVolume |
| 298 | /* 115, 0x073 */ SDL_SCANCODE_VOLUMEUP, // XF86AudioRaiseVolume |
| 299 | /* 116, 0x074 */ SDL_SCANCODE_POWER, // XF86PowerOff |
| 300 | /* 117, 0x075 */ SDL_SCANCODE_KP_EQUALS, // KP_Equal |
| 301 | /* 118, 0x076 */ SDL_SCANCODE_KP_PLUSMINUS, // plusminus |
| 302 | /* 119, 0x077 */ SDL_SCANCODE_PAUSE, // Pause |
| 303 | /* 120, 0x078 */ SDL_SCANCODE_UNKNOWN, // XF86LaunchA |
| 304 | /* 121, 0x079 */ SDL_SCANCODE_KP_PERIOD, // KP_Decimal |
| 305 | /* 122, 0x07a */ SDL_SCANCODE_LANG1, // Hangul |
| 306 | /* 123, 0x07b */ SDL_SCANCODE_LANG2, // Hangul_Hanja |
| 307 | /* 124, 0x07c */ SDL_SCANCODE_INTERNATIONAL3, // Yen |
| 308 | /* 125, 0x07d */ SDL_SCANCODE_LGUI, // Super_L |
| 309 | /* 126, 0x07e */ SDL_SCANCODE_RGUI, // Super_R |
| 310 | /* 127, 0x07f */ SDL_SCANCODE_APPLICATION, // Menu |
| 311 | /* 128, 0x080 */ SDL_SCANCODE_CANCEL, // Cancel |
| 312 | /* 129, 0x081 */ SDL_SCANCODE_AGAIN, // Redo |
| 313 | /* 130, 0x082 */ SDL_SCANCODE_UNKNOWN, // SunProps |
| 314 | /* 131, 0x083 */ SDL_SCANCODE_UNDO, // Undo |
| 315 | /* 132, 0x084 */ SDL_SCANCODE_UNKNOWN, // SunFront |
| 316 | /* 133, 0x085 */ SDL_SCANCODE_COPY, // XF86Copy |
| 317 | /* 134, 0x086 */ SDL_SCANCODE_UNKNOWN, // SunOpen, XF86Open |
| 318 | /* 135, 0x087 */ SDL_SCANCODE_PASTE, // XF86Paste |
| 319 | /* 136, 0x088 */ SDL_SCANCODE_FIND, // Find |
| 320 | /* 137, 0x089 */ SDL_SCANCODE_CUT, // XF86Cut |
| 321 | /* 138, 0x08a */ SDL_SCANCODE_HELP, // Help |
| 322 | /* 139, 0x08b */ SDL_SCANCODE_MENU, // XF86MenuKB |
| 323 | /* 140, 0x08c */ SDL_SCANCODE_UNKNOWN, // XF86Calculator |
| 324 | /* 141, 0x08d */ SDL_SCANCODE_UNKNOWN, // NoSymbol |
| 325 | /* 142, 0x08e */ SDL_SCANCODE_SLEEP, // XF86Sleep |
| 326 | /* 143, 0x08f */ SDL_SCANCODE_UNKNOWN, // XF86WakeUp |
| 327 | /* 144, 0x090 */ SDL_SCANCODE_UNKNOWN, // XF86Explorer |
| 328 | /* 145, 0x091 */ SDL_SCANCODE_UNKNOWN, // XF86Send |
| 329 | /* 146, 0x092 */ SDL_SCANCODE_UNKNOWN, // NoSymbol |
| 330 | /* 147, 0x093 */ SDL_SCANCODE_UNKNOWN, // XF86Xfer |
| 331 | /* 148, 0x094 */ SDL_SCANCODE_UNKNOWN, // XF86Launch1 |
| 332 | /* 149, 0x095 */ SDL_SCANCODE_UNKNOWN, // XF86Launch2 |
| 333 | /* 150, 0x096 */ SDL_SCANCODE_UNKNOWN, // XF86WWW |
| 334 | /* 151, 0x097 */ SDL_SCANCODE_UNKNOWN, // XF86DOS |
| 335 | /* 152, 0x098 */ SDL_SCANCODE_UNKNOWN, // XF86ScreenSaver |
| 336 | /* 153, 0x099 */ SDL_SCANCODE_UNKNOWN, // XF86RotateWindows |
| 337 | /* 154, 0x09a */ SDL_SCANCODE_UNKNOWN, // XF86TaskPane |
| 338 | /* 155, 0x09b */ SDL_SCANCODE_UNKNOWN, // XF86Mail |
| 339 | /* 156, 0x09c */ SDL_SCANCODE_AC_BOOKMARKS, // XF86Favorites |
| 340 | /* 157, 0x09d */ SDL_SCANCODE_UNKNOWN, // XF86MyComputer |
| 341 | /* 158, 0x09e */ SDL_SCANCODE_AC_BACK, // XF86Back |
| 342 | /* 159, 0x09f */ SDL_SCANCODE_AC_FORWARD, // XF86Forward |
| 343 | /* 160, 0x0a0 */ SDL_SCANCODE_UNKNOWN, // NoSymbol |
| 344 | /* 161, 0x0a1 */ SDL_SCANCODE_MEDIA_EJECT, // XF86Eject |
| 345 | /* 162, 0x0a2 */ SDL_SCANCODE_MEDIA_EJECT, // XF86Eject |
| 346 | /* 163, 0x0a3 */ SDL_SCANCODE_MEDIA_NEXT_TRACK, // XF86AudioNext |
| 347 | /* 164, 0x0a4 */ SDL_SCANCODE_MEDIA_PLAY_PAUSE, // XF86AudioPlay |
| 348 | /* 165, 0x0a5 */ SDL_SCANCODE_MEDIA_PREVIOUS_TRACK, // XF86AudioPrev |
| 349 | /* 166, 0x0a6 */ SDL_SCANCODE_MEDIA_STOP, // XF86AudioStop |
| 350 | /* 167, 0x0a7 */ SDL_SCANCODE_MEDIA_RECORD, // XF86AudioRecord |
| 351 | /* 168, 0x0a8 */ SDL_SCANCODE_MEDIA_REWIND, // XF86AudioRewind |
| 352 | /* 169, 0x0a9 */ SDL_SCANCODE_UNKNOWN, // XF86Phone |
| 353 | /* 170, 0x0aa */ SDL_SCANCODE_UNKNOWN, // NoSymbol |
| 354 | /* 171, 0x0ab */ SDL_SCANCODE_F13, // XF86Tools |
| 355 | /* 172, 0x0ac */ SDL_SCANCODE_AC_HOME, // XF86HomePage |
| 356 | /* 173, 0x0ad */ SDL_SCANCODE_AC_REFRESH, // XF86Reload |
| 357 | /* 174, 0x0ae */ SDL_SCANCODE_UNKNOWN, // XF86Close |
| 358 | /* 175, 0x0af */ SDL_SCANCODE_UNKNOWN, // NoSymbol |
| 359 | /* 176, 0x0b0 */ SDL_SCANCODE_UNKNOWN, // NoSymbol |
| 360 | /* 177, 0x0b1 */ SDL_SCANCODE_UNKNOWN, // XF86ScrollUp |
| 361 | /* 178, 0x0b2 */ SDL_SCANCODE_UNKNOWN, // XF86ScrollDown |
| 362 | /* 179, 0x0b3 */ SDL_SCANCODE_KP_LEFTPAREN, // parenleft |
| 363 | /* 180, 0x0b4 */ SDL_SCANCODE_KP_RIGHTPAREN, // parenright |
| 364 | /* 181, 0x0b5 */ SDL_SCANCODE_AC_NEW, // XF86New |
| 365 | /* 182, 0x0b6 */ SDL_SCANCODE_AGAIN, // Redo |
| 366 | /* 183, 0x0b7 */ SDL_SCANCODE_F13, // XF86Tools |
| 367 | /* 184, 0x0b8 */ SDL_SCANCODE_F14, // XF86Launch5 |
| 368 | /* 185, 0x0b9 */ SDL_SCANCODE_F15, // XF86Launch6 |
| 369 | /* 186, 0x0ba */ SDL_SCANCODE_F16, // XF86Launch7 |
| 370 | /* 187, 0x0bb */ SDL_SCANCODE_F17, // XF86Launch8 |
| 371 | /* 188, 0x0bc */ SDL_SCANCODE_F18, // XF86Launch9 |
| 372 | /* 189, 0x0bd */ SDL_SCANCODE_F19, // NoSymbol |
| 373 | /* 190, 0x0be */ SDL_SCANCODE_F20, // XF86AudioMicMute |
| 374 | /* 191, 0x0bf */ SDL_SCANCODE_UNKNOWN, // XF86TouchpadToggle |
| 375 | /* 192, 0x0c0 */ SDL_SCANCODE_UNKNOWN, // XF86TouchpadOn |
| 376 | /* 193, 0x0c1 */ SDL_SCANCODE_UNKNOWN, // XF86TouchpadOff |
| 377 | /* 194, 0x0c2 */ SDL_SCANCODE_UNKNOWN, // NoSymbol |
| 378 | /* 195, 0x0c3 */ SDL_SCANCODE_MODE, // Mode_switch |
| 379 | /* 196, 0x0c4 */ SDL_SCANCODE_UNKNOWN, // NoSymbol |
| 380 | /* 197, 0x0c5 */ SDL_SCANCODE_UNKNOWN, // NoSymbol |
| 381 | /* 198, 0x0c6 */ SDL_SCANCODE_UNKNOWN, // NoSymbol |
| 382 | /* 199, 0x0c7 */ SDL_SCANCODE_UNKNOWN, // NoSymbol |
| 383 | /* 200, 0x0c8 */ SDL_SCANCODE_MEDIA_PLAY, // XF86AudioPlay |
| 384 | /* 201, 0x0c9 */ SDL_SCANCODE_MEDIA_PAUSE, // XF86AudioPause |
| 385 | /* 202, 0x0ca */ SDL_SCANCODE_UNKNOWN, // XF86Launch3 |
| 386 | /* 203, 0x0cb */ SDL_SCANCODE_UNKNOWN, // XF86Launch4 |
| 387 | /* 204, 0x0cc */ SDL_SCANCODE_UNKNOWN, // XF86LaunchB |
| 388 | /* 205, 0x0cd */ SDL_SCANCODE_UNKNOWN, // XF86Suspend |
| 389 | /* 206, 0x0ce */ SDL_SCANCODE_AC_CLOSE, // XF86Close |
| 390 | /* 207, 0x0cf */ SDL_SCANCODE_MEDIA_PLAY, // XF86AudioPlay |
| 391 | /* 208, 0x0d0 */ SDL_SCANCODE_MEDIA_FAST_FORWARD, // XF86AudioForward |
| 392 | /* 209, 0x0d1 */ SDL_SCANCODE_UNKNOWN, // NoSymbol |
| 393 | /* 210, 0x0d2 */ SDL_SCANCODE_PRINTSCREEN, // Print |
| 394 | /* 211, 0x0d3 */ SDL_SCANCODE_UNKNOWN, // NoSymbol |
| 395 | /* 212, 0x0d4 */ SDL_SCANCODE_UNKNOWN, // XF86WebCam |
| 396 | /* 213, 0x0d5 */ SDL_SCANCODE_UNKNOWN, // XF86AudioPreset |
| 397 | /* 214, 0x0d6 */ SDL_SCANCODE_UNKNOWN, // NoSymbol |
| 398 | /* 215, 0x0d7 */ SDL_SCANCODE_UNKNOWN, // XF86Mail |
| 399 | /* 216, 0x0d8 */ SDL_SCANCODE_UNKNOWN, // XF86Messenger |
| 400 | /* 217, 0x0d9 */ SDL_SCANCODE_AC_SEARCH, // XF86Search |
| 401 | /* 218, 0x0da */ SDL_SCANCODE_UNKNOWN, // XF86Go |
| 402 | /* 219, 0x0db */ SDL_SCANCODE_UNKNOWN, // XF86Finance |
| 403 | /* 220, 0x0dc */ SDL_SCANCODE_UNKNOWN, // XF86Game |
| 404 | /* 221, 0x0dd */ SDL_SCANCODE_UNKNOWN, // XF86Shop |
| 405 | /* 222, 0x0de */ SDL_SCANCODE_UNKNOWN, // NoSymbol |
| 406 | /* 223, 0x0df */ SDL_SCANCODE_CANCEL, // Cancel |
| 407 | /* 224, 0x0e0 */ SDL_SCANCODE_UNKNOWN, // XF86MonBrightnessDown |
| 408 | /* 225, 0x0e1 */ SDL_SCANCODE_UNKNOWN, // XF86MonBrightnessUp |
| 409 | /* 226, 0x0e2 */ SDL_SCANCODE_MEDIA_SELECT, // XF86AudioMedia |
| 410 | /* 227, 0x0e3 */ SDL_SCANCODE_UNKNOWN, // XF86Display |
| 411 | /* 228, 0x0e4 */ SDL_SCANCODE_UNKNOWN, // XF86KbdLightOnOff |
| 412 | /* 229, 0x0e5 */ SDL_SCANCODE_UNKNOWN, // XF86KbdBrightnessDown |
| 413 | /* 230, 0x0e6 */ SDL_SCANCODE_UNKNOWN, // XF86KbdBrightnessUp |
| 414 | /* 231, 0x0e7 */ SDL_SCANCODE_UNKNOWN, // XF86Send |
| 415 | /* 232, 0x0e8 */ SDL_SCANCODE_UNKNOWN, // XF86Reply |
| 416 | /* 233, 0x0e9 */ SDL_SCANCODE_UNKNOWN, // XF86MailForward |
| 417 | /* 234, 0x0ea */ SDL_SCANCODE_UNKNOWN, // XF86Save |
| 418 | /* 235, 0x0eb */ SDL_SCANCODE_UNKNOWN, // XF86Documents |
| 419 | /* 236, 0x0ec */ SDL_SCANCODE_UNKNOWN, // XF86Battery |
| 420 | /* 237, 0x0ed */ SDL_SCANCODE_UNKNOWN, // XF86Bluetooth |
| 421 | /* 238, 0x0ee */ SDL_SCANCODE_UNKNOWN, // XF86WLAN |
| 422 | /* 239, 0x0ef */ SDL_SCANCODE_UNKNOWN, // XF86UWB |
| 423 | /* 240, 0x0f0 */ SDL_SCANCODE_UNKNOWN, // NoSymbol |
| 424 | /* 241, 0x0f1 */ SDL_SCANCODE_UNKNOWN, // XF86Next_VMode |
| 425 | /* 242, 0x0f2 */ SDL_SCANCODE_UNKNOWN, // XF86Prev_VMode |
| 426 | /* 243, 0x0f3 */ SDL_SCANCODE_UNKNOWN, // XF86MonBrightnessCycle |
| 427 | /* 244, 0x0f4 */ SDL_SCANCODE_UNKNOWN, // XF86BrightnessAuto |
| 428 | /* 245, 0x0f5 */ SDL_SCANCODE_UNKNOWN, // XF86DisplayOff |
| 429 | /* 246, 0x0f6 */ SDL_SCANCODE_UNKNOWN, // XF86WWAN |
| 430 | /* 247, 0x0f7 */ SDL_SCANCODE_UNKNOWN, // XF86RFKill |
| 431 | }; |
| 432 | |
| 433 | // Xvnc / Xtightvnc scancodes from xmodmap -pk |
| 434 | static const SDL_Scancode xvnc_scancode_table[] = { |
| 435 | /* 0 */ SDL_SCANCODE_LCTRL, |
| 436 | /* 1 */ SDL_SCANCODE_RCTRL, |
| 437 | /* 2 */ SDL_SCANCODE_LSHIFT, |
| 438 | /* 3 */ SDL_SCANCODE_RSHIFT, |
| 439 | /* 4 */ SDL_SCANCODE_UNKNOWN, // Meta_L |
| 440 | /* 5 */ SDL_SCANCODE_UNKNOWN, // Meta_R |
| 441 | /* 6 */ SDL_SCANCODE_LALT, |
| 442 | /* 7 */ SDL_SCANCODE_RALT, |
| 443 | /* 8 */ SDL_SCANCODE_SPACE, |
| 444 | /* 9 */ SDL_SCANCODE_0, |
| 445 | /* 10 */ SDL_SCANCODE_1, |
| 446 | /* 11 */ SDL_SCANCODE_2, |
| 447 | /* 12 */ SDL_SCANCODE_3, |
| 448 | /* 13 */ SDL_SCANCODE_4, |
| 449 | /* 14 */ SDL_SCANCODE_5, |
| 450 | /* 15 */ SDL_SCANCODE_6, |
| 451 | /* 16 */ SDL_SCANCODE_7, |
| 452 | /* 17 */ SDL_SCANCODE_8, |
| 453 | /* 18 */ SDL_SCANCODE_9, |
| 454 | /* 19 */ SDL_SCANCODE_MINUS, |
| 455 | /* 20 */ SDL_SCANCODE_EQUALS, |
| 456 | /* 21 */ SDL_SCANCODE_LEFTBRACKET, |
| 457 | /* 22 */ SDL_SCANCODE_RIGHTBRACKET, |
| 458 | /* 23 */ SDL_SCANCODE_SEMICOLON, |
| 459 | /* 24 */ SDL_SCANCODE_APOSTROPHE, |
| 460 | /* 25 */ SDL_SCANCODE_GRAVE, |
| 461 | /* 26 */ SDL_SCANCODE_COMMA, |
| 462 | /* 27 */ SDL_SCANCODE_PERIOD, |
| 463 | /* 28 */ SDL_SCANCODE_SLASH, |
| 464 | /* 29 */ SDL_SCANCODE_BACKSLASH, |
| 465 | /* 30 */ SDL_SCANCODE_A, |
| 466 | /* 31 */ SDL_SCANCODE_B, |
| 467 | /* 32 */ SDL_SCANCODE_C, |
| 468 | /* 33 */ SDL_SCANCODE_D, |
| 469 | /* 34 */ SDL_SCANCODE_E, |
| 470 | /* 35 */ SDL_SCANCODE_F, |
| 471 | /* 36 */ SDL_SCANCODE_G, |
| 472 | /* 37 */ SDL_SCANCODE_H, |
| 473 | /* 38 */ SDL_SCANCODE_I, |
| 474 | /* 39 */ SDL_SCANCODE_J, |
| 475 | /* 40 */ SDL_SCANCODE_K, |
| 476 | /* 41 */ SDL_SCANCODE_L, |
| 477 | /* 42 */ SDL_SCANCODE_M, |
| 478 | /* 43 */ SDL_SCANCODE_N, |
| 479 | /* 44 */ SDL_SCANCODE_O, |
| 480 | /* 45 */ SDL_SCANCODE_P, |
| 481 | /* 46 */ SDL_SCANCODE_Q, |
| 482 | /* 47 */ SDL_SCANCODE_R, |
| 483 | /* 48 */ SDL_SCANCODE_S, |
| 484 | /* 49 */ SDL_SCANCODE_T, |
| 485 | /* 50 */ SDL_SCANCODE_U, |
| 486 | /* 51 */ SDL_SCANCODE_V, |
| 487 | /* 52 */ SDL_SCANCODE_W, |
| 488 | /* 53 */ SDL_SCANCODE_X, |
| 489 | /* 54 */ SDL_SCANCODE_Y, |
| 490 | /* 55 */ SDL_SCANCODE_Z, |
| 491 | /* 56 */ SDL_SCANCODE_BACKSPACE, |
| 492 | /* 57 */ SDL_SCANCODE_RETURN, |
| 493 | /* 58 */ SDL_SCANCODE_TAB, |
| 494 | /* 59 */ SDL_SCANCODE_ESCAPE, |
| 495 | /* 60 */ SDL_SCANCODE_DELETE, |
| 496 | /* 61 */ SDL_SCANCODE_HOME, |
| 497 | /* 62 */ SDL_SCANCODE_END, |
| 498 | /* 63 */ SDL_SCANCODE_PAGEUP, |
| 499 | /* 64 */ SDL_SCANCODE_PAGEDOWN, |
| 500 | /* 65 */ SDL_SCANCODE_UP, |
| 501 | /* 66 */ SDL_SCANCODE_DOWN, |
| 502 | /* 67 */ SDL_SCANCODE_LEFT, |
| 503 | /* 68 */ SDL_SCANCODE_RIGHT, |
| 504 | /* 69 */ SDL_SCANCODE_F1, |
| 505 | /* 70 */ SDL_SCANCODE_F2, |
| 506 | /* 71 */ SDL_SCANCODE_F3, |
| 507 | /* 72 */ SDL_SCANCODE_F4, |
| 508 | /* 73 */ SDL_SCANCODE_F5, |
| 509 | /* 74 */ SDL_SCANCODE_F6, |
| 510 | /* 75 */ SDL_SCANCODE_F7, |
| 511 | /* 76 */ SDL_SCANCODE_F8, |
| 512 | /* 77 */ SDL_SCANCODE_F9, |
| 513 | /* 78 */ SDL_SCANCODE_F10, |
| 514 | /* 79 */ SDL_SCANCODE_F11, |
| 515 | /* 80 */ SDL_SCANCODE_F12, |
| 516 | }; |
| 517 | |
| 518 | #endif // scancodes_xfree86_h_ |
| 519 | |
| 520 | /* *INDENT-ON* */ // clang-format on |
| 521 | |