diff --git a/input/input_common.c b/input/input_common.c index 1178b1a47a..abd6bc8ca8 100644 --- a/input/input_common.c +++ b/input/input_common.c @@ -300,42 +300,27 @@ bool input_translate_coord_viewport(int mouse_x, int mouse_y, #ifdef HAVE_X11 const struct rarch_key_map rarch_key_map_x11[] = { - { XK_Left, RETROK_LEFT }, - { XK_Right, RETROK_RIGHT }, - { XK_Up, RETROK_UP }, - { XK_Down, RETROK_DOWN }, - { XK_Return, RETROK_RETURN }, - { XK_Tab, RETROK_TAB }, - { XK_Insert, RETROK_INSERT }, - { XK_Home, RETROK_HOME }, - { XK_End, RETROK_END }, - { XK_Page_Up, RETROK_PAGEUP }, - { XK_Page_Down, RETROK_PAGEDOWN }, - { XK_Delete, RETROK_DELETE }, - { XK_Shift_R, RETROK_RSHIFT }, - { XK_Shift_L, RETROK_LSHIFT }, - { XK_Control_L, RETROK_LCTRL }, - { XK_Alt_L, RETROK_LALT }, - { XK_space, RETROK_SPACE }, - { XK_Escape, RETROK_ESCAPE }, { XK_BackSpace, RETROK_BACKSPACE }, - { XK_KP_Enter, RETROK_KP_ENTER }, - { XK_KP_Add, RETROK_KP_PLUS }, - { XK_KP_Subtract, RETROK_KP_MINUS }, - { XK_KP_Multiply, RETROK_KP_MULTIPLY }, - { XK_KP_Divide, RETROK_KP_DIVIDE }, - { XK_grave, RETROK_BACKQUOTE }, + { XK_Tab, RETROK_TAB }, + { XK_Clear, RETROK_CLEAR }, + { XK_Return, RETROK_RETURN }, { XK_Pause, RETROK_PAUSE }, - { XK_KP_0, RETROK_KP0 }, - { XK_KP_1, RETROK_KP1 }, - { XK_KP_2, RETROK_KP2 }, - { XK_KP_3, RETROK_KP3 }, - { XK_KP_4, RETROK_KP4 }, - { XK_KP_5, RETROK_KP5 }, - { XK_KP_6, RETROK_KP6 }, - { XK_KP_7, RETROK_KP7 }, - { XK_KP_8, RETROK_KP8 }, - { XK_KP_9, RETROK_KP9 }, + { XK_Escape, RETROK_ESCAPE }, + { XK_space, RETROK_SPACE }, + { XK_exclam, RETROK_EXCLAIM }, + { XK_quotedbl, RETROK_QUOTEDBL }, + { XK_numbersign, RETROK_HASH }, + { XK_dollar, RETROK_DOLLAR }, + { XK_ampersand, RETROK_AMPERSAND }, + { XK_apostrophe, RETROK_QUOTE }, + { XK_parenleft, RETROK_LEFTPAREN }, + { XK_parenright, RETROK_RIGHTPAREN }, + { XK_asterisk, RETROK_ASTERISK }, + { XK_plus, RETROK_PLUS }, + { XK_comma, RETROK_COMMA }, + { XK_minus, RETROK_MINUS }, + { XK_period, RETROK_PERIOD }, + { XK_slash, RETROK_SLASH }, { XK_0, RETROK_0 }, { XK_1, RETROK_1 }, { XK_2, RETROK_2 }, @@ -346,18 +331,19 @@ const struct rarch_key_map rarch_key_map_x11[] = { { XK_7, RETROK_7 }, { XK_8, RETROK_8 }, { XK_9, RETROK_9 }, - { XK_F1, RETROK_F1 }, - { XK_F2, RETROK_F2 }, - { XK_F3, RETROK_F3 }, - { XK_F4, RETROK_F4 }, - { XK_F5, RETROK_F5 }, - { XK_F6, RETROK_F6 }, - { XK_F7, RETROK_F7 }, - { XK_F8, RETROK_F8 }, - { XK_F9, RETROK_F9 }, - { XK_F10, RETROK_F10 }, - { XK_F11, RETROK_F11 }, - { XK_F12, RETROK_F12 }, + { XK_colon, RETROK_COLON }, + { XK_semicolon, RETROK_SEMICOLON }, + { XK_less, RETROK_LESS }, + { XK_equal, RETROK_EQUALS }, + { XK_greater, RETROK_GREATER }, + { XK_question, RETROK_QUESTION }, + { XK_at, RETROK_AT }, + { XK_bracketleft, RETROK_LEFTBRACKET }, + { XK_backslash, RETROK_BACKSLASH }, + { XK_bracketright, RETROK_RIGHTBRACKET }, + { XK_dead_circumflex, RETROK_CARET }, + { XK_underscore, RETROK_UNDERSCORE }, + { XK_grave, RETROK_BACKQUOTE }, { XK_a, RETROK_a }, { XK_b, RETROK_b }, { XK_c, RETROK_c }, @@ -384,48 +370,99 @@ const struct rarch_key_map rarch_key_map_x11[] = { { XK_x, RETROK_x }, { XK_y, RETROK_y }, { XK_z, RETROK_z }, + { XK_Delete, RETROK_DELETE }, + { XK_KP_0, RETROK_KP0 }, + { XK_KP_1, RETROK_KP1 }, + { XK_KP_2, RETROK_KP2 }, + { XK_KP_3, RETROK_KP3 }, + { XK_KP_4, RETROK_KP4 }, + { XK_KP_5, RETROK_KP5 }, + { XK_KP_6, RETROK_KP6 }, + { XK_KP_7, RETROK_KP7 }, + { XK_KP_8, RETROK_KP8 }, + { XK_KP_9, RETROK_KP9 }, + { XK_KP_Decimal, RETROK_KP_PERIOD }, + { XK_KP_Divide, RETROK_KP_DIVIDE }, + { XK_KP_Multiply, RETROK_KP_MULTIPLY }, + { XK_KP_Subtract, RETROK_KP_MINUS }, + { XK_KP_Add, RETROK_KP_PLUS }, + { XK_KP_Enter, RETROK_KP_ENTER }, + { XK_KP_Equal, RETROK_KP_EQUALS }, + { XK_Up, RETROK_UP }, + { XK_Down, RETROK_DOWN }, + { XK_Right, RETROK_RIGHT }, + { XK_Left, RETROK_LEFT }, + { XK_Insert, RETROK_INSERT }, + { XK_Home, RETROK_HOME }, + { XK_End, RETROK_END }, + { XK_Page_Up, RETROK_PAGEUP }, + { XK_Page_Down, RETROK_PAGEDOWN }, + { XK_F1, RETROK_F1 }, + { XK_F2, RETROK_F2 }, + { XK_F3, RETROK_F3 }, + { XK_F4, RETROK_F4 }, + { XK_F5, RETROK_F5 }, + { XK_F6, RETROK_F6 }, + { XK_F7, RETROK_F7 }, + { XK_F8, RETROK_F8 }, + { XK_F9, RETROK_F9 }, + { XK_F10, RETROK_F10 }, + { XK_F11, RETROK_F11 }, + { XK_F12, RETROK_F12 }, + { XK_F13, RETROK_F13 }, + { XK_F14, RETROK_F14 }, + { XK_F15, RETROK_F15 }, + { XK_Num_Lock, RETROK_NUMLOCK }, + { XK_Caps_Lock, RETROK_CAPSLOCK }, + { XK_Scroll_Lock, RETROK_SCROLLOCK }, + { XK_Shift_R, RETROK_RSHIFT }, + { XK_Shift_L, RETROK_LSHIFT }, + { XK_Control_R, RETROK_RCTRL }, + { XK_Control_L, RETROK_LCTRL }, + { XK_Alt_R, RETROK_RALT }, + { XK_Alt_L, RETROK_LALT }, + { XK_Meta_R, RETROK_RMETA }, + { XK_Meta_L, RETROK_LMETA }, + { XK_Super_L, RETROK_LSUPER }, + { XK_Super_R, RETROK_RSUPER }, + { XK_Mode_switch, RETROK_MODE }, + { XK_Multi_key, RETROK_COMPOSE }, + { XK_Help, RETROK_HELP }, + { XK_Print, RETROK_PRINT }, + { XK_Sys_Req, RETROK_SYSREQ }, + { XK_Break, RETROK_BREAK }, + { XK_Menu, RETROK_MENU }, + /*{ ?, RETROK_POWER },*/ + { XK_EuroSign, RETROK_EURO }, + { XK_Undo, RETROK_UNDO }, + { 0, RETROK_UNKNOWN }, }; #endif -#ifdef HAVE_SDL +#if defined(HAVE_SDL) || defined(HAVE_SDL2) const struct rarch_key_map rarch_key_map_sdl[] = { - { SDLK_LEFT, RETROK_LEFT }, - { SDLK_RIGHT, RETROK_RIGHT }, - { SDLK_UP, RETROK_UP }, - { SDLK_DOWN, RETROK_DOWN }, - { SDLK_RETURN, RETROK_RETURN }, - { SDLK_TAB, RETROK_TAB }, - { SDLK_INSERT, RETROK_INSERT }, - { SDLK_DELETE, RETROK_DELETE }, - { SDLK_RSHIFT, RETROK_RSHIFT }, - { SDLK_LSHIFT, RETROK_LSHIFT }, - { SDLK_LCTRL, RETROK_LCTRL }, - { SDLK_END, RETROK_END }, - { SDLK_HOME, RETROK_HOME }, - { SDLK_PAGEDOWN, RETROK_PAGEDOWN }, - { SDLK_PAGEUP, RETROK_PAGEUP }, - { SDLK_LALT, RETROK_LALT }, - { SDLK_SPACE, RETROK_SPACE }, - { SDLK_ESCAPE, RETROK_ESCAPE }, { SDLK_BACKSPACE, RETROK_BACKSPACE }, - { SDLK_KP_ENTER, RETROK_KP_ENTER }, - { SDLK_KP_PLUS, RETROK_KP_PLUS }, - { SDLK_KP_MINUS, RETROK_KP_MINUS }, - { SDLK_KP_MULTIPLY, RETROK_KP_MULTIPLY }, - { SDLK_KP_DIVIDE, RETROK_KP_DIVIDE }, - { SDLK_BACKQUOTE, RETROK_BACKQUOTE }, + { SDLK_TAB, RETROK_TAB }, + { SDLK_CLEAR, RETROK_CLEAR }, + { SDLK_RETURN, RETROK_RETURN }, { SDLK_PAUSE, RETROK_PAUSE }, - { SDLK_KP0, RETROK_KP0 }, - { SDLK_KP1, RETROK_KP1 }, - { SDLK_KP2, RETROK_KP2 }, - { SDLK_KP3, RETROK_KP3 }, - { SDLK_KP4, RETROK_KP4 }, - { SDLK_KP5, RETROK_KP5 }, - { SDLK_KP6, RETROK_KP6 }, - { SDLK_KP7, RETROK_KP7 }, - { SDLK_KP8, RETROK_KP8 }, - { SDLK_KP9, RETROK_KP9 }, + { SDLK_ESCAPE, RETROK_ESCAPE }, + { SDLK_SPACE, RETROK_SPACE }, + { SDLK_EXCLAIM, RETROK_EXCLAIM }, + { SDLK_QUOTEDBL, RETROK_QUOTEDBL }, + { SDLK_HASH, RETROK_HASH }, + { SDLK_DOLLAR, RETROK_DOLLAR }, + { SDLK_AMPERSAND, RETROK_AMPERSAND }, + { SDLK_QUOTE, RETROK_QUOTE }, + { SDLK_LEFTPAREN, RETROK_LEFTPAREN }, + { SDLK_RIGHTPAREN, RETROK_RIGHTPAREN }, + { SDLK_ASTERISK, RETROK_ASTERISK }, + { SDLK_PLUS, RETROK_PLUS }, + { SDLK_COMMA, RETROK_COMMA }, + { SDLK_MINUS, RETROK_MINUS }, + { SDLK_PERIOD, RETROK_PERIOD }, + { SDLK_SLASH, RETROK_SLASH }, { SDLK_0, RETROK_0 }, { SDLK_1, RETROK_1 }, { SDLK_2, RETROK_2 }, @@ -436,18 +473,19 @@ const struct rarch_key_map rarch_key_map_sdl[] = { { SDLK_7, RETROK_7 }, { SDLK_8, RETROK_8 }, { SDLK_9, RETROK_9 }, - { SDLK_F1, RETROK_F1 }, - { SDLK_F2, RETROK_F2 }, - { SDLK_F3, RETROK_F3 }, - { SDLK_F4, RETROK_F4 }, - { SDLK_F5, RETROK_F5 }, - { SDLK_F6, RETROK_F6 }, - { SDLK_F7, RETROK_F7 }, - { SDLK_F8, RETROK_F8 }, - { SDLK_F9, RETROK_F9 }, - { SDLK_F10, RETROK_F10 }, - { SDLK_F11, RETROK_F11 }, - { SDLK_F12, RETROK_F12 }, + { SDLK_COLON, RETROK_COLON }, + { SDLK_SEMICOLON, RETROK_SEMICOLON }, + { SDLK_LESS, RETROK_LESS }, + { SDLK_EQUALS, RETROK_EQUALS }, + { SDLK_GREATER, RETROK_GREATER }, + { SDLK_QUESTION, RETROK_QUESTION }, + { SDLK_AT, RETROK_AT }, + { SDLK_LEFTBRACKET, RETROK_LEFTBRACKET }, + { SDLK_BACKSLASH, RETROK_BACKSLASH }, + { SDLK_RIGHTBRACKET, RETROK_RIGHTBRACKET }, + { SDLK_CARET, RETROK_CARET }, + { SDLK_UNDERSCORE, RETROK_UNDERSCORE }, + { SDLK_BACKQUOTE, RETROK_BACKQUOTE }, { SDLK_a, RETROK_a }, { SDLK_b, RETROK_b }, { SDLK_c, RETROK_c }, @@ -474,96 +512,107 @@ const struct rarch_key_map rarch_key_map_sdl[] = { { SDLK_x, RETROK_x }, { SDLK_y, RETROK_y }, { SDLK_z, RETROK_z }, - { 0, RETROK_UNKNOWN }, -}; -#endif - + { SDLK_DELETE, RETROK_DELETE }, #ifdef HAVE_SDL2 -const struct rarch_key_map rarch_key_map_sdl[] = { - { SDL_SCANCODE_LEFT, RETROK_LEFT }, - { SDL_SCANCODE_RIGHT, RETROK_RIGHT }, - { SDL_SCANCODE_UP, RETROK_UP }, - { SDL_SCANCODE_DOWN, RETROK_DOWN }, - { SDL_SCANCODE_RETURN, RETROK_RETURN }, - { SDL_SCANCODE_TAB, RETROK_TAB }, - { SDL_SCANCODE_INSERT, RETROK_INSERT }, - { SDL_SCANCODE_DELETE, RETROK_DELETE }, - { SDL_SCANCODE_RSHIFT, RETROK_RSHIFT }, - { SDL_SCANCODE_LSHIFT, RETROK_LSHIFT }, - { SDL_SCANCODE_LCTRL, RETROK_LCTRL }, - { SDL_SCANCODE_END, RETROK_END }, - { SDL_SCANCODE_HOME, RETROK_HOME }, - { SDL_SCANCODE_PAGEDOWN, RETROK_PAGEDOWN }, - { SDL_SCANCODE_PAGEUP, RETROK_PAGEUP }, - { SDL_SCANCODE_LALT, RETROK_LALT }, - { SDL_SCANCODE_SPACE, RETROK_SPACE }, - { SDL_SCANCODE_ESCAPE, RETROK_ESCAPE }, - { SDL_SCANCODE_BACKSPACE, RETROK_BACKSPACE }, - { SDL_SCANCODE_KP_ENTER, RETROK_KP_ENTER }, - { SDL_SCANCODE_KP_PLUS, RETROK_KP_PLUS }, - { SDL_SCANCODE_KP_MINUS, RETROK_KP_MINUS }, - { SDL_SCANCODE_KP_MULTIPLY, RETROK_KP_MULTIPLY }, - { SDL_SCANCODE_KP_DIVIDE, RETROK_KP_DIVIDE }, - { SDL_SCANCODE_GRAVE, RETROK_BACKQUOTE }, - { SDL_SCANCODE_PAUSE, RETROK_PAUSE }, - { SDL_SCANCODE_KP_0, RETROK_KP0 }, - { SDL_SCANCODE_KP_1, RETROK_KP1 }, - { SDL_SCANCODE_KP_2, RETROK_KP2 }, - { SDL_SCANCODE_KP_3, RETROK_KP3 }, - { SDL_SCANCODE_KP_4, RETROK_KP4 }, - { SDL_SCANCODE_KP_5, RETROK_KP5 }, - { SDL_SCANCODE_KP_6, RETROK_KP6 }, - { SDL_SCANCODE_KP_7, RETROK_KP7 }, - { SDL_SCANCODE_KP_8, RETROK_KP8 }, - { SDL_SCANCODE_KP_9, RETROK_KP9 }, - { SDL_SCANCODE_0, RETROK_0 }, - { SDL_SCANCODE_1, RETROK_1 }, - { SDL_SCANCODE_2, RETROK_2 }, - { SDL_SCANCODE_3, RETROK_3 }, - { SDL_SCANCODE_4, RETROK_4 }, - { SDL_SCANCODE_5, RETROK_5 }, - { SDL_SCANCODE_6, RETROK_6 }, - { SDL_SCANCODE_7, RETROK_7 }, - { SDL_SCANCODE_8, RETROK_8 }, - { SDL_SCANCODE_9, RETROK_9 }, - { SDL_SCANCODE_F1, RETROK_F1 }, - { SDL_SCANCODE_F2, RETROK_F2 }, - { SDL_SCANCODE_F3, RETROK_F3 }, - { SDL_SCANCODE_F4, RETROK_F4 }, - { SDL_SCANCODE_F5, RETROK_F5 }, - { SDL_SCANCODE_F6, RETROK_F6 }, - { SDL_SCANCODE_F7, RETROK_F7 }, - { SDL_SCANCODE_F8, RETROK_F8 }, - { SDL_SCANCODE_F9, RETROK_F9 }, - { SDL_SCANCODE_F10, RETROK_F10 }, - { SDL_SCANCODE_F11, RETROK_F11 }, - { SDL_SCANCODE_F12, RETROK_F12 }, - { SDL_SCANCODE_A, RETROK_a }, - { SDL_SCANCODE_B, RETROK_b }, - { SDL_SCANCODE_C, RETROK_c }, - { SDL_SCANCODE_D, RETROK_d }, - { SDL_SCANCODE_E, RETROK_e }, - { SDL_SCANCODE_F, RETROK_f }, - { SDL_SCANCODE_G, RETROK_g }, - { SDL_SCANCODE_H, RETROK_h }, - { SDL_SCANCODE_I, RETROK_i }, - { SDL_SCANCODE_J, RETROK_j }, - { SDL_SCANCODE_K, RETROK_k }, - { SDL_SCANCODE_L, RETROK_l }, - { SDL_SCANCODE_M, RETROK_m }, - { SDL_SCANCODE_N, RETROK_n }, - { SDL_SCANCODE_O, RETROK_o }, - { SDL_SCANCODE_P, RETROK_p }, - { SDL_SCANCODE_Q, RETROK_q }, - { SDL_SCANCODE_R, RETROK_r }, - { SDL_SCANCODE_S, RETROK_s }, - { SDL_SCANCODE_T, RETROK_t }, - { SDL_SCANCODE_U, RETROK_u }, - { SDL_SCANCODE_V, RETROK_v }, - { SDL_SCANCODE_W, RETROK_w }, - { SDL_SCANCODE_X, RETROK_x }, - { SDL_SCANCODE_Y, RETROK_y }, - { SDL_SCANCODE_Z, RETROK_z }, + { SDLK_KP_0, RETROK_KP0 }, + { SDLK_KP_1, RETROK_KP1 }, + { SDLK_KP_2, RETROK_KP2 }, + { SDLK_KP_3, RETROK_KP3 }, + { SDLK_KP_4, RETROK_KP4 }, + { SDLK_KP_5, RETROK_KP5 }, + { SDLK_KP_6, RETROK_KP6 }, + { SDLK_KP_7, RETROK_KP7 }, + { SDLK_KP_8, RETROK_KP8 }, + { SDLK_KP_9, RETROK_KP9 }, +#else + { SDLK_KP0, RETROK_KP0 }, + { SDLK_KP1, RETROK_KP1 }, + { SDLK_KP2, RETROK_KP2 }, + { SDLK_KP3, RETROK_KP3 }, + { SDLK_KP4, RETROK_KP4 }, + { SDLK_KP5, RETROK_KP5 }, + { SDLK_KP6, RETROK_KP6 }, + { SDLK_KP7, RETROK_KP7 }, + { SDLK_KP8, RETROK_KP8 }, + { SDLK_KP9, RETROK_KP9 }, +#endif + { SDLK_KP_PERIOD, RETROK_KP_PERIOD }, + { SDLK_KP_DIVIDE, RETROK_KP_DIVIDE }, + { SDLK_KP_MULTIPLY, RETROK_KP_MULTIPLY }, + { SDLK_KP_MINUS, RETROK_KP_MINUS }, + { SDLK_KP_PLUS, RETROK_KP_PLUS }, + { SDLK_KP_ENTER, RETROK_KP_ENTER }, + { SDLK_KP_EQUALS, RETROK_KP_EQUALS }, + { SDLK_UP, RETROK_UP }, + { SDLK_DOWN, RETROK_DOWN }, + { SDLK_RIGHT, RETROK_RIGHT }, + { SDLK_LEFT, RETROK_LEFT }, + { SDLK_INSERT, RETROK_INSERT }, + { SDLK_HOME, RETROK_HOME }, + { SDLK_END, RETROK_END }, + { SDLK_PAGEUP, RETROK_PAGEUP }, + { SDLK_PAGEDOWN, RETROK_PAGEDOWN }, + { SDLK_F1, RETROK_F1 }, + { SDLK_F2, RETROK_F2 }, + { SDLK_F3, RETROK_F3 }, + { SDLK_F4, RETROK_F4 }, + { SDLK_F5, RETROK_F5 }, + { SDLK_F6, RETROK_F6 }, + { SDLK_F7, RETROK_F7 }, + { SDLK_F8, RETROK_F8 }, + { SDLK_F9, RETROK_F9 }, + { SDLK_F10, RETROK_F10 }, + { SDLK_F11, RETROK_F11 }, + { SDLK_F12, RETROK_F12 }, + { SDLK_F13, RETROK_F13 }, + { SDLK_F14, RETROK_F14 }, + { SDLK_F15, RETROK_F15 }, +#ifdef HAVE_SDL2 + { SDLK_NUMLOCKCLEAR, RETROK_NUMLOCK }, +#else + { SDLK_NUMLOCK, RETROK_NUMLOCK }, +#endif + { SDLK_CAPSLOCK, RETROK_CAPSLOCK }, +#ifdef HAVE_SDL2 + { SDLK_SCROLLLOCK, RETROK_SCROLLOCK }, +#else + { SDLK_SCROLLOCK, RETROK_SCROLLOCK }, +#endif + { SDLK_RSHIFT, RETROK_RSHIFT }, + { SDLK_LSHIFT, RETROK_LSHIFT }, + { SDLK_RCTRL, RETROK_RCTRL }, + { SDLK_LCTRL, RETROK_LCTRL }, + { SDLK_RALT, RETROK_RALT }, + { SDLK_LALT, RETROK_LALT }, +#ifdef HAVE_SDL2 + { SDLK_LGUI, RETROK_LSUPER }, + { SDLK_RGUI, RETROK_RSUPER }, +#else + { SDLK_RMETA, RETROK_RMETA }, + { SDLK_LMETA, RETROK_LMETA }, + { SDLK_LSUPER, RETROK_LSUPER }, + { SDLK_RSUPER, RETROK_RSUPER }, +#endif + { SDLK_MODE, RETROK_MODE }, +#ifndef HAVE_SDL2 + { SDLK_COMPOSE, RETROK_COMPOSE }, +#endif + { SDLK_HELP, RETROK_HELP }, +#ifdef HAVE_SDL2 + { SDLK_PRINTSCREEN, RETROK_PRINT }, +#else + { SDLK_PRINT, RETROK_PRINT }, +#endif + { SDLK_SYSREQ, RETROK_SYSREQ }, + { SDLK_PAUSE, RETROK_BREAK }, + { SDLK_MENU, RETROK_MENU }, + { SDLK_POWER, RETROK_POWER }, + +#ifndef HAVE_SDL2 + { SDLK_EURO, RETROK_EURO }, +#endif + { SDLK_UNDO, RETROK_UNDO }, + { 0, RETROK_UNKNOWN }, }; #endif diff --git a/input/sdl_input.c b/input/sdl_input.c index 1f5de9de1f..5a4689ff88 100644 --- a/input/sdl_input.c +++ b/input/sdl_input.c @@ -23,6 +23,7 @@ #include #include "../libretro.h" #include "input_common.h" +#include "keyboard_line.h" typedef struct sdl_input { @@ -51,11 +52,12 @@ static bool sdl_key_pressed(int key) if (key >= RETROK_LAST) return false; - int sym = input_translate_rk_to_keysym((enum retro_key)key); + unsigned sym = input_translate_rk_to_keysym((enum retro_key)key); int num_keys; const uint8_t *keymap; #if HAVE_SDL2 + sym = SDL_GetScancodeFromKey(sym); keymap = SDL_GetKeyboardState(&num_keys); #else keymap = SDL_GetKeyState(&num_keys); @@ -295,11 +297,37 @@ static void sdl_input_poll(void *data) sdl->joypad->poll(); sdl_poll_mouse(sdl); -#ifdef HAVE_SDL2 SDL_Event event; - while (SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_MOUSEWHEEL, SDL_MOUSEWHEEL) > 0) +#ifdef HAVE_SDL2 + while (SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_KEYDOWN, SDL_MOUSEWHEEL) > 0) +#else + while (SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_KEYEVENTMASK) > 0) +#endif { - if (event.type == SDL_MOUSEWHEEL) + if (event.type == SDL_KEYDOWN || event.type == SDL_KEYUP) + { + uint16_t mod = 0; + unsigned code = input_translate_keysym_to_rk(event.key.keysym.sym); + + if (event.key.keysym.mod & KMOD_SHIFT) + mod |= RETROKMOD_SHIFT; + + if (event.key.keysym.mod & KMOD_CTRL) + mod |= RETROKMOD_CTRL; + + if (event.key.keysym.mod & KMOD_ALT) + mod |= RETROKMOD_ALT; + + if (event.key.keysym.mod & KMOD_NUM) + mod |= RETROKMOD_NUMLOCK; + + if (event.key.keysym.mod & KMOD_CAPS) + mod |= RETROKMOD_CAPSLOCK; + + input_keyboard_event(event.type == SDL_KEYDOWN, code, code, mod); + } +#ifdef HAVE_SDL2 + else if (event.type == SDL_MOUSEWHEEL) { sdl->mouse_wu = event.wheel.y < 0; sdl->mouse_wd = event.wheel.y > 0; @@ -307,8 +335,8 @@ static void sdl_input_poll(void *data) sdl->mouse_wr = event.wheel.x > 0; break; } - } #endif + } } static uint64_t sdl_get_capabilities(void *data)