[Qemu-devel] [PATCH 38/42] sdl2: simplify keymap handling
sdl2 gives us scancodes (i.e. identifies keys by location not by keysym mapped to it). We can map them directly to QKeyCodes, pass them on to the new input core and be done with it. No need to jump though any keymap hops. Zap the code. Also operate directly on SDL scancodes for any hotkeys. Signed-off-by: Gerd Hoffmann kra...@redhat.com --- ui/sdl2-keymap.h | 266 +++ ui/sdl2.c| 147 ++-- ui/sdl2_scancode_translate.h | 260 -- 3 files changed, 298 insertions(+), 375 deletions(-) create mode 100644 ui/sdl2-keymap.h delete mode 100644 ui/sdl2_scancode_translate.h diff --git a/ui/sdl2-keymap.h b/ui/sdl2-keymap.h new file mode 100644 index 000..5a12f45 --- /dev/null +++ b/ui/sdl2-keymap.h @@ -0,0 +1,266 @@ + +/* map SDL2 scancodes to QKeyCode */ + +static const int sdl2_scancode_to_qcode[SDL_NUM_SCANCODES] = { +[SDL_SCANCODE_A] = Q_KEY_CODE_A, +[SDL_SCANCODE_B] = Q_KEY_CODE_B, +[SDL_SCANCODE_C] = Q_KEY_CODE_C, +[SDL_SCANCODE_D] = Q_KEY_CODE_D, +[SDL_SCANCODE_E] = Q_KEY_CODE_E, +[SDL_SCANCODE_F] = Q_KEY_CODE_F, +[SDL_SCANCODE_G] = Q_KEY_CODE_G, +[SDL_SCANCODE_H] = Q_KEY_CODE_H, +[SDL_SCANCODE_I] = Q_KEY_CODE_I, +[SDL_SCANCODE_J] = Q_KEY_CODE_J, +[SDL_SCANCODE_K] = Q_KEY_CODE_K, +[SDL_SCANCODE_L] = Q_KEY_CODE_L, +[SDL_SCANCODE_M] = Q_KEY_CODE_M, +[SDL_SCANCODE_N] = Q_KEY_CODE_N, +[SDL_SCANCODE_O] = Q_KEY_CODE_O, +[SDL_SCANCODE_P] = Q_KEY_CODE_P, +[SDL_SCANCODE_Q] = Q_KEY_CODE_Q, +[SDL_SCANCODE_R] = Q_KEY_CODE_R, +[SDL_SCANCODE_S] = Q_KEY_CODE_S, +[SDL_SCANCODE_T] = Q_KEY_CODE_T, +[SDL_SCANCODE_U] = Q_KEY_CODE_U, +[SDL_SCANCODE_V] = Q_KEY_CODE_V, +[SDL_SCANCODE_W] = Q_KEY_CODE_W, +[SDL_SCANCODE_X] = Q_KEY_CODE_X, +[SDL_SCANCODE_Y] = Q_KEY_CODE_Y, +[SDL_SCANCODE_Z] = Q_KEY_CODE_Z, + +[SDL_SCANCODE_1] = Q_KEY_CODE_1, +[SDL_SCANCODE_2] = Q_KEY_CODE_2, +[SDL_SCANCODE_3] = Q_KEY_CODE_3, +[SDL_SCANCODE_4] = Q_KEY_CODE_4, +[SDL_SCANCODE_5] = Q_KEY_CODE_5, +[SDL_SCANCODE_6] = Q_KEY_CODE_6, +[SDL_SCANCODE_7] = Q_KEY_CODE_7, +[SDL_SCANCODE_8] = Q_KEY_CODE_8, +[SDL_SCANCODE_9] = Q_KEY_CODE_9, +[SDL_SCANCODE_0] = Q_KEY_CODE_0, + +[SDL_SCANCODE_RETURN]= Q_KEY_CODE_RET, +[SDL_SCANCODE_ESCAPE]= Q_KEY_CODE_ESC, +[SDL_SCANCODE_BACKSPACE] = Q_KEY_CODE_BACKSPACE, +[SDL_SCANCODE_TAB] = Q_KEY_CODE_TAB, +[SDL_SCANCODE_SPACE] = Q_KEY_CODE_SPC, +[SDL_SCANCODE_MINUS] = Q_KEY_CODE_MINUS, +[SDL_SCANCODE_EQUALS]= Q_KEY_CODE_EQUAL, +[SDL_SCANCODE_LEFTBRACKET] = Q_KEY_CODE_BRACKET_LEFT, +[SDL_SCANCODE_RIGHTBRACKET] = Q_KEY_CODE_BRACKET_RIGHT, +[SDL_SCANCODE_BACKSLASH] = Q_KEY_CODE_BACKSLASH, +#if 0 +[SDL_SCANCODE_NONUSHASH] = Q_KEY_CODE_NONUSHASH, +#endif +[SDL_SCANCODE_SEMICOLON] = Q_KEY_CODE_SEMICOLON, +[SDL_SCANCODE_APOSTROPHE]= Q_KEY_CODE_APOSTROPHE, +[SDL_SCANCODE_GRAVE] = Q_KEY_CODE_GRAVE_ACCENT, +[SDL_SCANCODE_COMMA] = Q_KEY_CODE_COMMA, +[SDL_SCANCODE_PERIOD]= Q_KEY_CODE_DOT, +[SDL_SCANCODE_SLASH] = Q_KEY_CODE_SLASH, +[SDL_SCANCODE_CAPSLOCK] = Q_KEY_CODE_CAPS_LOCK, + +[SDL_SCANCODE_F1]= Q_KEY_CODE_F1, +[SDL_SCANCODE_F2]= Q_KEY_CODE_F2, +[SDL_SCANCODE_F3]= Q_KEY_CODE_F3, +[SDL_SCANCODE_F4]= Q_KEY_CODE_F4, +[SDL_SCANCODE_F5]= Q_KEY_CODE_F5, +[SDL_SCANCODE_F6]= Q_KEY_CODE_F6, +[SDL_SCANCODE_F7]= Q_KEY_CODE_F7, +[SDL_SCANCODE_F8]= Q_KEY_CODE_F8, +[SDL_SCANCODE_F9]= Q_KEY_CODE_F9, +[SDL_SCANCODE_F10] = Q_KEY_CODE_F10, +[SDL_SCANCODE_F11] = Q_KEY_CODE_F11, +[SDL_SCANCODE_F12] = Q_KEY_CODE_F12, + +[SDL_SCANCODE_PRINTSCREEN] = Q_KEY_CODE_PRINT, +[SDL_SCANCODE_SCROLLLOCK]= Q_KEY_CODE_SCROLL_LOCK, +[SDL_SCANCODE_PAUSE] = Q_KEY_CODE_PAUSE, +[SDL_SCANCODE_INSERT]= Q_KEY_CODE_INSERT, +[SDL_SCANCODE_HOME] = Q_KEY_CODE_HOME, +[SDL_SCANCODE_PAGEUP]
[Qemu-devel] [PATCH 38/42] sdl2: simplify keymap handling
sdl2 gives us scancodes (i.e. identifies keys by location not by keysym mapped to it). We can map them directly to QKeyCodes, pass them on to the new input core and be done with it. No need to jump though any keymap hops. Zap the code. Also operate directly on SDL scancodes for any hotkeys. Signed-off-by: Gerd Hoffmann kra...@redhat.com --- ui/sdl2-keymap.h | 266 +++ ui/sdl2.c| 147 ++-- ui/sdl2_scancode_translate.h | 260 -- 3 files changed, 298 insertions(+), 375 deletions(-) create mode 100644 ui/sdl2-keymap.h delete mode 100644 ui/sdl2_scancode_translate.h diff --git a/ui/sdl2-keymap.h b/ui/sdl2-keymap.h new file mode 100644 index 000..5a12f45 --- /dev/null +++ b/ui/sdl2-keymap.h @@ -0,0 +1,266 @@ + +/* map SDL2 scancodes to QKeyCode */ + +static const int sdl2_scancode_to_qcode[SDL_NUM_SCANCODES] = { +[SDL_SCANCODE_A] = Q_KEY_CODE_A, +[SDL_SCANCODE_B] = Q_KEY_CODE_B, +[SDL_SCANCODE_C] = Q_KEY_CODE_C, +[SDL_SCANCODE_D] = Q_KEY_CODE_D, +[SDL_SCANCODE_E] = Q_KEY_CODE_E, +[SDL_SCANCODE_F] = Q_KEY_CODE_F, +[SDL_SCANCODE_G] = Q_KEY_CODE_G, +[SDL_SCANCODE_H] = Q_KEY_CODE_H, +[SDL_SCANCODE_I] = Q_KEY_CODE_I, +[SDL_SCANCODE_J] = Q_KEY_CODE_J, +[SDL_SCANCODE_K] = Q_KEY_CODE_K, +[SDL_SCANCODE_L] = Q_KEY_CODE_L, +[SDL_SCANCODE_M] = Q_KEY_CODE_M, +[SDL_SCANCODE_N] = Q_KEY_CODE_N, +[SDL_SCANCODE_O] = Q_KEY_CODE_O, +[SDL_SCANCODE_P] = Q_KEY_CODE_P, +[SDL_SCANCODE_Q] = Q_KEY_CODE_Q, +[SDL_SCANCODE_R] = Q_KEY_CODE_R, +[SDL_SCANCODE_S] = Q_KEY_CODE_S, +[SDL_SCANCODE_T] = Q_KEY_CODE_T, +[SDL_SCANCODE_U] = Q_KEY_CODE_U, +[SDL_SCANCODE_V] = Q_KEY_CODE_V, +[SDL_SCANCODE_W] = Q_KEY_CODE_W, +[SDL_SCANCODE_X] = Q_KEY_CODE_X, +[SDL_SCANCODE_Y] = Q_KEY_CODE_Y, +[SDL_SCANCODE_Z] = Q_KEY_CODE_Z, + +[SDL_SCANCODE_1] = Q_KEY_CODE_1, +[SDL_SCANCODE_2] = Q_KEY_CODE_2, +[SDL_SCANCODE_3] = Q_KEY_CODE_3, +[SDL_SCANCODE_4] = Q_KEY_CODE_4, +[SDL_SCANCODE_5] = Q_KEY_CODE_5, +[SDL_SCANCODE_6] = Q_KEY_CODE_6, +[SDL_SCANCODE_7] = Q_KEY_CODE_7, +[SDL_SCANCODE_8] = Q_KEY_CODE_8, +[SDL_SCANCODE_9] = Q_KEY_CODE_9, +[SDL_SCANCODE_0] = Q_KEY_CODE_0, + +[SDL_SCANCODE_RETURN]= Q_KEY_CODE_RET, +[SDL_SCANCODE_ESCAPE]= Q_KEY_CODE_ESC, +[SDL_SCANCODE_BACKSPACE] = Q_KEY_CODE_BACKSPACE, +[SDL_SCANCODE_TAB] = Q_KEY_CODE_TAB, +[SDL_SCANCODE_SPACE] = Q_KEY_CODE_SPC, +[SDL_SCANCODE_MINUS] = Q_KEY_CODE_MINUS, +[SDL_SCANCODE_EQUALS]= Q_KEY_CODE_EQUAL, +[SDL_SCANCODE_LEFTBRACKET] = Q_KEY_CODE_BRACKET_LEFT, +[SDL_SCANCODE_RIGHTBRACKET] = Q_KEY_CODE_BRACKET_RIGHT, +[SDL_SCANCODE_BACKSLASH] = Q_KEY_CODE_BACKSLASH, +#if 0 +[SDL_SCANCODE_NONUSHASH] = Q_KEY_CODE_NONUSHASH, +#endif +[SDL_SCANCODE_SEMICOLON] = Q_KEY_CODE_SEMICOLON, +[SDL_SCANCODE_APOSTROPHE]= Q_KEY_CODE_APOSTROPHE, +[SDL_SCANCODE_GRAVE] = Q_KEY_CODE_GRAVE_ACCENT, +[SDL_SCANCODE_COMMA] = Q_KEY_CODE_COMMA, +[SDL_SCANCODE_PERIOD]= Q_KEY_CODE_DOT, +[SDL_SCANCODE_SLASH] = Q_KEY_CODE_SLASH, +[SDL_SCANCODE_CAPSLOCK] = Q_KEY_CODE_CAPS_LOCK, + +[SDL_SCANCODE_F1]= Q_KEY_CODE_F1, +[SDL_SCANCODE_F2]= Q_KEY_CODE_F2, +[SDL_SCANCODE_F3]= Q_KEY_CODE_F3, +[SDL_SCANCODE_F4]= Q_KEY_CODE_F4, +[SDL_SCANCODE_F5]= Q_KEY_CODE_F5, +[SDL_SCANCODE_F6]= Q_KEY_CODE_F6, +[SDL_SCANCODE_F7]= Q_KEY_CODE_F7, +[SDL_SCANCODE_F8]= Q_KEY_CODE_F8, +[SDL_SCANCODE_F9]= Q_KEY_CODE_F9, +[SDL_SCANCODE_F10] = Q_KEY_CODE_F10, +[SDL_SCANCODE_F11] = Q_KEY_CODE_F11, +[SDL_SCANCODE_F12] = Q_KEY_CODE_F12, + +[SDL_SCANCODE_PRINTSCREEN] = Q_KEY_CODE_PRINT, +[SDL_SCANCODE_SCROLLLOCK]= Q_KEY_CODE_SCROLL_LOCK, +[SDL_SCANCODE_PAUSE] = Q_KEY_CODE_PAUSE, +[SDL_SCANCODE_INSERT]= Q_KEY_CODE_INSERT, +[SDL_SCANCODE_HOME] = Q_KEY_CODE_HOME, +[SDL_SCANCODE_PAGEUP]