mirror of
https://github.com/mupen64plus/mupen64plus-core.git
synced 2024-05-20 12:57:44 -04:00
497 lines
18 KiB
C
497 lines
18 KiB
C
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
* Mupen64plus - gen_sdl_key_converter.c *
|
|
* Mupen64Plus homepage: https://mupen64plus.org/ *
|
|
* Copyright (C) 2013 Mupen64plus development team *
|
|
* *
|
|
* 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., *
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
|
|
/* gcc -E `sdl2-config --cflags --libs` `sdl-config --cflags --libs` gen_sdl_key_converter.c -o gen_sdl_key_converter */
|
|
|
|
#include <SDL_keysym.h>
|
|
#include <SDL_scancode.h>
|
|
#include <inttypes.h>
|
|
#include <stdint.h>
|
|
|
|
struct keycode2scancode {
|
|
const char *keysym_name;
|
|
uint32_t keysym;
|
|
const char *scancode_name;
|
|
uint32_t scancode;
|
|
};
|
|
|
|
#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
|
|
#define _XSTR(x) #x
|
|
#define KEYSYM2SCANCODE(k, s) { \
|
|
.keysym_name = _XSTR(SDLK_##k), \
|
|
.keysym = SDLK_##k, \
|
|
.scancode_name = _XSTR(SDL_SCANCODE_##s), \
|
|
.scancode = SDL_SCANCODE_##s, \
|
|
}
|
|
|
|
/* Table from SDL 1.2.5 to SDL2 2.0-rc1 */
|
|
static const struct keycode2scancode keycode2scancode[] = {
|
|
KEYSYM2SCANCODE(BACKSPACE, BACKSPACE),
|
|
KEYSYM2SCANCODE(TAB, TAB),
|
|
KEYSYM2SCANCODE(CLEAR, CLEAR),
|
|
KEYSYM2SCANCODE(RETURN, RETURN),
|
|
KEYSYM2SCANCODE(PAUSE, PAUSE),
|
|
KEYSYM2SCANCODE(ESCAPE, ESCAPE),
|
|
KEYSYM2SCANCODE(SPACE, SPACE),
|
|
KEYSYM2SCANCODE(EXCLAIM, UNKNOWN),
|
|
KEYSYM2SCANCODE(QUOTEDBL, UNKNOWN),
|
|
KEYSYM2SCANCODE(HASH, UNKNOWN),
|
|
KEYSYM2SCANCODE(DOLLAR, UNKNOWN),
|
|
KEYSYM2SCANCODE(AMPERSAND, UNKNOWN),
|
|
KEYSYM2SCANCODE(QUOTE, UNKNOWN),
|
|
KEYSYM2SCANCODE(LEFTPAREN, UNKNOWN),
|
|
KEYSYM2SCANCODE(RIGHTPAREN, UNKNOWN),
|
|
KEYSYM2SCANCODE(ASTERISK, UNKNOWN),
|
|
KEYSYM2SCANCODE(PLUS, UNKNOWN),
|
|
KEYSYM2SCANCODE(COMMA, COMMA),
|
|
KEYSYM2SCANCODE(MINUS, MINUS),
|
|
KEYSYM2SCANCODE(PERIOD, PERIOD),
|
|
KEYSYM2SCANCODE(SLASH, SLASH),
|
|
KEYSYM2SCANCODE(0, 0),
|
|
KEYSYM2SCANCODE(1, 1),
|
|
KEYSYM2SCANCODE(2, 2),
|
|
KEYSYM2SCANCODE(3, 3),
|
|
KEYSYM2SCANCODE(4, 4),
|
|
KEYSYM2SCANCODE(5, 5),
|
|
KEYSYM2SCANCODE(6, 6),
|
|
KEYSYM2SCANCODE(7, 7),
|
|
KEYSYM2SCANCODE(8, 8),
|
|
KEYSYM2SCANCODE(9, 9),
|
|
KEYSYM2SCANCODE(COLON, UNKNOWN),
|
|
KEYSYM2SCANCODE(SEMICOLON, SEMICOLON),
|
|
KEYSYM2SCANCODE(LESS, UNKNOWN),
|
|
KEYSYM2SCANCODE(EQUALS, EQUALS),
|
|
KEYSYM2SCANCODE(GREATER, UNKNOWN),
|
|
KEYSYM2SCANCODE(QUESTION, UNKNOWN),
|
|
KEYSYM2SCANCODE(AT, UNKNOWN),
|
|
KEYSYM2SCANCODE(LEFTBRACKET, LEFTBRACKET),
|
|
KEYSYM2SCANCODE(BACKSLASH, BACKSLASH),
|
|
KEYSYM2SCANCODE(RIGHTBRACKET, RIGHTBRACKET),
|
|
KEYSYM2SCANCODE(CARET, UNKNOWN),
|
|
KEYSYM2SCANCODE(UNDERSCORE, UNKNOWN),
|
|
KEYSYM2SCANCODE(BACKQUOTE, UNKNOWN),
|
|
KEYSYM2SCANCODE(a, A),
|
|
KEYSYM2SCANCODE(b, B),
|
|
KEYSYM2SCANCODE(c, C),
|
|
KEYSYM2SCANCODE(d, D),
|
|
KEYSYM2SCANCODE(e, E),
|
|
KEYSYM2SCANCODE(f, F),
|
|
KEYSYM2SCANCODE(g, G),
|
|
KEYSYM2SCANCODE(h, H),
|
|
KEYSYM2SCANCODE(i, I),
|
|
KEYSYM2SCANCODE(j, J),
|
|
KEYSYM2SCANCODE(k, K),
|
|
KEYSYM2SCANCODE(l, L),
|
|
KEYSYM2SCANCODE(m, M),
|
|
KEYSYM2SCANCODE(n, N),
|
|
KEYSYM2SCANCODE(o, O),
|
|
KEYSYM2SCANCODE(p, P),
|
|
KEYSYM2SCANCODE(q, Q),
|
|
KEYSYM2SCANCODE(r, R),
|
|
KEYSYM2SCANCODE(s, S),
|
|
KEYSYM2SCANCODE(t, T),
|
|
KEYSYM2SCANCODE(u, U),
|
|
KEYSYM2SCANCODE(v, V),
|
|
KEYSYM2SCANCODE(w, W),
|
|
KEYSYM2SCANCODE(x, X),
|
|
KEYSYM2SCANCODE(y, Y),
|
|
KEYSYM2SCANCODE(z, Z),
|
|
KEYSYM2SCANCODE(DELETE, DELETE),
|
|
KEYSYM2SCANCODE(WORLD_0, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_1, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_2, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_3, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_4, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_5, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_6, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_7, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_8, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_9, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_10, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_11, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_12, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_13, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_14, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_15, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_16, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_17, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_18, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_19, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_20, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_21, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_22, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_23, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_24, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_25, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_26, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_27, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_28, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_29, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_30, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_31, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_32, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_33, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_34, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_35, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_36, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_37, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_38, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_39, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_40, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_41, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_42, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_43, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_44, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_45, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_46, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_47, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_48, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_49, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_50, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_51, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_52, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_53, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_54, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_55, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_56, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_57, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_58, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_59, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_60, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_61, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_62, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_63, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_64, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_65, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_66, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_67, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_68, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_69, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_70, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_71, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_72, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_73, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_74, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_75, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_76, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_77, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_78, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_79, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_80, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_81, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_82, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_83, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_84, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_85, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_86, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_87, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_88, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_89, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_90, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_91, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_92, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_93, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_94, UNKNOWN),
|
|
KEYSYM2SCANCODE(WORLD_95, UNKNOWN),
|
|
KEYSYM2SCANCODE(KP0, KP_0),
|
|
KEYSYM2SCANCODE(KP1, KP_1),
|
|
KEYSYM2SCANCODE(KP2, KP_2),
|
|
KEYSYM2SCANCODE(KP3, KP_3),
|
|
KEYSYM2SCANCODE(KP4, KP_4),
|
|
KEYSYM2SCANCODE(KP5, KP_5),
|
|
KEYSYM2SCANCODE(KP6, KP_6),
|
|
KEYSYM2SCANCODE(KP7, KP_7),
|
|
KEYSYM2SCANCODE(KP8, KP_8),
|
|
KEYSYM2SCANCODE(KP9, KP_9),
|
|
KEYSYM2SCANCODE(KP_PERIOD, KP_PERIOD),
|
|
KEYSYM2SCANCODE(KP_DIVIDE, KP_DIVIDE),
|
|
KEYSYM2SCANCODE(KP_MULTIPLY, KP_MULTIPLY),
|
|
KEYSYM2SCANCODE(KP_MINUS, KP_MINUS),
|
|
KEYSYM2SCANCODE(KP_PLUS, KP_PLUS),
|
|
KEYSYM2SCANCODE(KP_ENTER, KP_ENTER),
|
|
KEYSYM2SCANCODE(KP_EQUALS, KP_EQUALS),
|
|
KEYSYM2SCANCODE(UP, UP),
|
|
KEYSYM2SCANCODE(DOWN, DOWN),
|
|
KEYSYM2SCANCODE(RIGHT, RIGHT),
|
|
KEYSYM2SCANCODE(LEFT, LEFT),
|
|
KEYSYM2SCANCODE(INSERT, INSERT),
|
|
KEYSYM2SCANCODE(HOME, HOME),
|
|
KEYSYM2SCANCODE(END, END),
|
|
KEYSYM2SCANCODE(PAGEUP, PAGEUP),
|
|
KEYSYM2SCANCODE(PAGEDOWN, PAGEDOWN),
|
|
KEYSYM2SCANCODE(F1, F1),
|
|
KEYSYM2SCANCODE(F2, F2),
|
|
KEYSYM2SCANCODE(F3, F3),
|
|
KEYSYM2SCANCODE(F4, F4),
|
|
KEYSYM2SCANCODE(F5, F5),
|
|
KEYSYM2SCANCODE(F6, F6),
|
|
KEYSYM2SCANCODE(F7, F7),
|
|
KEYSYM2SCANCODE(F8, F8),
|
|
KEYSYM2SCANCODE(F9, F9),
|
|
KEYSYM2SCANCODE(F10, F10),
|
|
KEYSYM2SCANCODE(F11, F11),
|
|
KEYSYM2SCANCODE(F12, F12),
|
|
KEYSYM2SCANCODE(F13, F13),
|
|
KEYSYM2SCANCODE(F14, F14),
|
|
KEYSYM2SCANCODE(F15, F15),
|
|
KEYSYM2SCANCODE(NUMLOCK, NUMLOCKCLEAR),
|
|
KEYSYM2SCANCODE(CAPSLOCK, CAPSLOCK),
|
|
KEYSYM2SCANCODE(SCROLLOCK, UNKNOWN),
|
|
KEYSYM2SCANCODE(RSHIFT, RSHIFT),
|
|
KEYSYM2SCANCODE(LSHIFT, LSHIFT),
|
|
KEYSYM2SCANCODE(RCTRL, RCTRL),
|
|
KEYSYM2SCANCODE(LCTRL, LCTRL),
|
|
KEYSYM2SCANCODE(RALT, RALT),
|
|
KEYSYM2SCANCODE(LALT, LALT),
|
|
KEYSYM2SCANCODE(RMETA, UNKNOWN),
|
|
KEYSYM2SCANCODE(LMETA, UNKNOWN),
|
|
KEYSYM2SCANCODE(LSUPER, LGUI),
|
|
KEYSYM2SCANCODE(RSUPER, RGUI),
|
|
KEYSYM2SCANCODE(MODE, MODE),
|
|
KEYSYM2SCANCODE(COMPOSE, UNKNOWN),
|
|
KEYSYM2SCANCODE(HELP, HELP),
|
|
KEYSYM2SCANCODE(PRINT, UNKNOWN),
|
|
KEYSYM2SCANCODE(SYSREQ, SYSREQ),
|
|
KEYSYM2SCANCODE(BREAK, UNKNOWN),
|
|
KEYSYM2SCANCODE(MENU, MENU),
|
|
KEYSYM2SCANCODE(POWER, POWER),
|
|
KEYSYM2SCANCODE(EURO, UNKNOWN),
|
|
KEYSYM2SCANCODE(UNDO, UNDO),
|
|
KEYSYM2SCANCODE(UNKNOWN, NONUSHASH),
|
|
KEYSYM2SCANCODE(UNKNOWN, APOSTROPHE),
|
|
KEYSYM2SCANCODE(UNKNOWN, GRAVE),
|
|
KEYSYM2SCANCODE(UNKNOWN, PRINTSCREEN),
|
|
KEYSYM2SCANCODE(UNKNOWN, SCROLLLOCK),
|
|
KEYSYM2SCANCODE(UNKNOWN, NONUSBACKSLASH),
|
|
KEYSYM2SCANCODE(UNKNOWN, APPLICATION),
|
|
KEYSYM2SCANCODE(UNKNOWN, F16),
|
|
KEYSYM2SCANCODE(UNKNOWN, F17),
|
|
KEYSYM2SCANCODE(UNKNOWN, F18),
|
|
KEYSYM2SCANCODE(UNKNOWN, F19),
|
|
KEYSYM2SCANCODE(UNKNOWN, F20),
|
|
KEYSYM2SCANCODE(UNKNOWN, F21),
|
|
KEYSYM2SCANCODE(UNKNOWN, F22),
|
|
KEYSYM2SCANCODE(UNKNOWN, F23),
|
|
KEYSYM2SCANCODE(UNKNOWN, F24),
|
|
KEYSYM2SCANCODE(UNKNOWN, EXECUTE),
|
|
KEYSYM2SCANCODE(UNKNOWN, SELECT),
|
|
KEYSYM2SCANCODE(UNKNOWN, STOP),
|
|
KEYSYM2SCANCODE(UNKNOWN, AGAIN),
|
|
KEYSYM2SCANCODE(UNKNOWN, CUT),
|
|
KEYSYM2SCANCODE(UNKNOWN, COPY),
|
|
KEYSYM2SCANCODE(UNKNOWN, PASTE),
|
|
KEYSYM2SCANCODE(UNKNOWN, FIND),
|
|
KEYSYM2SCANCODE(UNKNOWN, MUTE),
|
|
KEYSYM2SCANCODE(UNKNOWN, VOLUMEUP),
|
|
KEYSYM2SCANCODE(UNKNOWN, VOLUMEDOWN),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_COMMA),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_EQUALSAS400),
|
|
KEYSYM2SCANCODE(UNKNOWN, INTERNATIONAL1),
|
|
KEYSYM2SCANCODE(UNKNOWN, INTERNATIONAL2),
|
|
KEYSYM2SCANCODE(UNKNOWN, INTERNATIONAL3),
|
|
KEYSYM2SCANCODE(UNKNOWN, INTERNATIONAL4),
|
|
KEYSYM2SCANCODE(UNKNOWN, INTERNATIONAL5),
|
|
KEYSYM2SCANCODE(UNKNOWN, INTERNATIONAL6),
|
|
KEYSYM2SCANCODE(UNKNOWN, INTERNATIONAL7),
|
|
KEYSYM2SCANCODE(UNKNOWN, INTERNATIONAL8),
|
|
KEYSYM2SCANCODE(UNKNOWN, INTERNATIONAL9),
|
|
KEYSYM2SCANCODE(UNKNOWN, LANG1),
|
|
KEYSYM2SCANCODE(UNKNOWN, LANG2),
|
|
KEYSYM2SCANCODE(UNKNOWN, LANG3),
|
|
KEYSYM2SCANCODE(UNKNOWN, LANG4),
|
|
KEYSYM2SCANCODE(UNKNOWN, LANG5),
|
|
KEYSYM2SCANCODE(UNKNOWN, LANG6),
|
|
KEYSYM2SCANCODE(UNKNOWN, LANG7),
|
|
KEYSYM2SCANCODE(UNKNOWN, LANG8),
|
|
KEYSYM2SCANCODE(UNKNOWN, LANG9),
|
|
KEYSYM2SCANCODE(UNKNOWN, ALTERASE),
|
|
KEYSYM2SCANCODE(UNKNOWN, CANCEL),
|
|
KEYSYM2SCANCODE(UNKNOWN, PRIOR),
|
|
KEYSYM2SCANCODE(UNKNOWN, RETURN2),
|
|
KEYSYM2SCANCODE(UNKNOWN, SEPARATOR),
|
|
KEYSYM2SCANCODE(UNKNOWN, OUT),
|
|
KEYSYM2SCANCODE(UNKNOWN, OPER),
|
|
KEYSYM2SCANCODE(UNKNOWN, CLEARAGAIN),
|
|
KEYSYM2SCANCODE(UNKNOWN, CRSEL),
|
|
KEYSYM2SCANCODE(UNKNOWN, EXSEL),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_00),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_000),
|
|
KEYSYM2SCANCODE(UNKNOWN, THOUSANDSSEPARATOR),
|
|
KEYSYM2SCANCODE(UNKNOWN, DECIMALSEPARATOR),
|
|
KEYSYM2SCANCODE(UNKNOWN, CURRENCYUNIT),
|
|
KEYSYM2SCANCODE(UNKNOWN, CURRENCYSUBUNIT),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_LEFTPAREN),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_RIGHTPAREN),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_LEFTBRACE),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_RIGHTBRACE),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_TAB),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_BACKSPACE),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_A),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_B),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_C),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_D),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_E),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_F),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_XOR),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_POWER),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_PERCENT),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_LESS),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_GREATER),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_AMPERSAND),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_DBLAMPERSAND),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_VERTICALBAR),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_DBLVERTICALBAR),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_COLON),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_HASH),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_SPACE),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_AT),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_EXCLAM),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_MEMSTORE),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_MEMRECALL),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_MEMCLEAR),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_MEMADD),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_MEMSUBTRACT),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_MEMMULTIPLY),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_MEMDIVIDE),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_PLUSMINUS),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_CLEAR),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_CLEARENTRY),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_BINARY),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_OCTAL),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_DECIMAL),
|
|
KEYSYM2SCANCODE(UNKNOWN, KP_HEXADECIMAL),
|
|
KEYSYM2SCANCODE(UNKNOWN, AUDIONEXT),
|
|
KEYSYM2SCANCODE(UNKNOWN, AUDIOPREV),
|
|
KEYSYM2SCANCODE(UNKNOWN, AUDIOSTOP),
|
|
KEYSYM2SCANCODE(UNKNOWN, AUDIOPLAY),
|
|
KEYSYM2SCANCODE(UNKNOWN, AUDIOMUTE),
|
|
KEYSYM2SCANCODE(UNKNOWN, MEDIASELECT),
|
|
KEYSYM2SCANCODE(UNKNOWN, WWW),
|
|
KEYSYM2SCANCODE(UNKNOWN, MAIL),
|
|
KEYSYM2SCANCODE(UNKNOWN, CALCULATOR),
|
|
KEYSYM2SCANCODE(UNKNOWN, COMPUTER),
|
|
KEYSYM2SCANCODE(UNKNOWN, AC_SEARCH),
|
|
KEYSYM2SCANCODE(UNKNOWN, AC_HOME),
|
|
KEYSYM2SCANCODE(UNKNOWN, AC_BACK),
|
|
KEYSYM2SCANCODE(UNKNOWN, AC_FORWARD),
|
|
KEYSYM2SCANCODE(UNKNOWN, AC_STOP),
|
|
KEYSYM2SCANCODE(UNKNOWN, AC_REFRESH),
|
|
KEYSYM2SCANCODE(UNKNOWN, AC_BOOKMARKS),
|
|
KEYSYM2SCANCODE(UNKNOWN, BRIGHTNESSDOWN),
|
|
KEYSYM2SCANCODE(UNKNOWN, BRIGHTNESSUP),
|
|
KEYSYM2SCANCODE(UNKNOWN, DISPLAYSWITCH),
|
|
KEYSYM2SCANCODE(UNKNOWN, KBDILLUMTOGGLE),
|
|
KEYSYM2SCANCODE(UNKNOWN, KBDILLUMDOWN),
|
|
KEYSYM2SCANCODE(UNKNOWN, KBDILLUMUP),
|
|
KEYSYM2SCANCODE(UNKNOWN, EJECT),
|
|
KEYSYM2SCANCODE(UNKNOWN, SLEEP),
|
|
KEYSYM2SCANCODE(UNKNOWN, APP1),
|
|
KEYSYM2SCANCODE(UNKNOWN, APP2),
|
|
};
|
|
|
|
int main(void)
|
|
{
|
|
size_t i, j;
|
|
int found;
|
|
uint16_t max_keysym = 0, max_scancode = 0;
|
|
|
|
for (i = 0; i < ARRAY_SIZE(keycode2scancode); i++) {
|
|
if (max_keysym < keycode2scancode[i].keysym)
|
|
max_keysym = keycode2scancode[i].keysym;
|
|
|
|
if (max_scancode < keycode2scancode[i].scancode)
|
|
max_scancode = keycode2scancode[i].scancode;
|
|
}
|
|
|
|
puts("#include <stdint.h>");
|
|
puts("#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))\n");
|
|
|
|
puts("uint16_t sdl_keysym2scancode(uint16_t keysym)\n{");
|
|
|
|
printf(" static const uint16_t keysym2scancode[%"PRIu16"] = {\n",
|
|
max_keysym + 1);
|
|
for (i = 0; i < (max_keysym + 1); i++) {
|
|
found = 0;
|
|
for (j = 0; j < ARRAY_SIZE(keycode2scancode); j++) {
|
|
if (i != 0 && keycode2scancode[j].keysym == i) {
|
|
printf(" 0x%04xu, /* %s -> %s */\n",
|
|
keycode2scancode[j].scancode,
|
|
keycode2scancode[j].keysym_name,
|
|
keycode2scancode[j].scancode_name);
|
|
|
|
if (found)
|
|
fprintf(stderr,
|
|
"Multiple entry with keysym %zu, %s -> %s\n",
|
|
i, keycode2scancode[j].keysym_name,
|
|
keycode2scancode[j].scancode_name);
|
|
found = 1;
|
|
}
|
|
}
|
|
|
|
if (!found)
|
|
printf(" 0x%04xu, /* %s -> %s */\n",
|
|
0,
|
|
"unassigned",
|
|
"SDL_SCANCODE_UNKNOWN");
|
|
}
|
|
puts(" };\n");
|
|
puts(" if (keysym >= ARRAY_SIZE(keysym2scancode))");
|
|
puts(" return 0;");
|
|
puts(" return keysym2scancode[keysym];\n}\n");
|
|
|
|
|
|
|
|
puts("uint16_t sdl_scancode2keysym(uint16_t scancode)\n{");
|
|
|
|
printf(" static const uint16_t scancode2keysym[%"PRIu16"] = {\n",
|
|
max_scancode + 1);
|
|
for (i = 0; i < (max_scancode + 1); i++) {
|
|
found = 0;
|
|
for (j = 0; j < ARRAY_SIZE(keycode2scancode); j++) {
|
|
if (i != 0 && keycode2scancode[j].scancode == i) {
|
|
printf(" 0x%04xu, /* %s -> %s */\n",
|
|
keycode2scancode[j].keysym,
|
|
keycode2scancode[j].scancode_name,
|
|
keycode2scancode[j].keysym_name);
|
|
|
|
if (found)
|
|
fprintf(stderr,
|
|
"Multiple entry with scancode %zu, %s -> %s\n",
|
|
i, keycode2scancode[j].scancode_name,
|
|
keycode2scancode[j].keysym_name);
|
|
found = 1;
|
|
}
|
|
}
|
|
|
|
if (!found)
|
|
printf(" 0x%04xu, /* %s -> %s */\n",
|
|
0,
|
|
"unassigned",
|
|
"SDLK_UNKNOWN");
|
|
}
|
|
puts(" };\n");
|
|
puts(" if (scancode >= ARRAY_SIZE(scancode2keysym))");
|
|
puts(" return 0;");
|
|
puts(" return scancode2keysym[scancode];\n}");
|
|
|
|
return 0;
|
|
}
|