Move keysyms to libretro.h.

Should allow RETRO_KEYBOARD to work on GL/SDL/X11 drivers.
This commit is contained in:
Themaister 2012-07-28 03:21:37 +02:00
parent 8fe47d5c16
commit 488d2c5a63
9 changed files with 583 additions and 599 deletions

View File

@ -28,8 +28,6 @@
#include "config.h"
#endif
#include "input/keysym.h"
enum
{
VIDEO_GL = 0,
@ -313,86 +311,86 @@ static const float axis_threshold = 0.5;
// Player 1
static const struct retro_keybind retro_keybinds_1[] = {
// SNES button | keyboard key | js btn | js axis |
{ true, RETRO_DEVICE_ID_JOYPAD_B, SK_z, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_Y, SK_a, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_SELECT, SK_RSHIFT, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_START, SK_RETURN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_UP, SK_UP, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_DOWN, SK_DOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_LEFT, SK_LEFT, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_RIGHT, SK_RIGHT, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_A, SK_x, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_X, SK_s, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L, SK_q, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R, SK_w, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L2, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R2, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L3, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R3, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_B, RETROK_z, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_Y, RETROK_a, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_SELECT, RETROK_RSHIFT, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_START, RETROK_RETURN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_UP, RETROK_UP, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_DOWN, RETROK_DOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_LEFT, RETROK_LEFT, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_RIGHT, RETROK_RIGHT, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_A, RETROK_x, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_X, RETROK_s, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L, RETROK_q, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R, RETROK_w, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L2, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R2, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L3, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R3, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_X_PLUS, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_X_MINUS, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_Y_PLUS, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_Y_MINUS, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_X_PLUS, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_X_MINUS, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_Y_PLUS, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_Y_MINUS, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_X_PLUS, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_X_MINUS, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_X_PLUS, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_X_MINUS, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_FAST_FORWARD_KEY, SK_SPACE, NO_BTN, AXIS_NONE },
{ true, RARCH_FAST_FORWARD_HOLD_KEY, SK_l, NO_BTN, AXIS_NONE },
{ true, RARCH_LOAD_STATE_KEY, SK_F4, NO_BTN, AXIS_NONE },
{ true, RARCH_SAVE_STATE_KEY, SK_F2, NO_BTN, AXIS_NONE },
{ true, RARCH_FULLSCREEN_TOGGLE_KEY, SK_f, NO_BTN, AXIS_NONE },
{ true, RARCH_QUIT_KEY, SK_ESCAPE, NO_BTN, AXIS_NONE },
{ true, RARCH_STATE_SLOT_PLUS, SK_F7, NO_BTN, AXIS_NONE },
{ true, RARCH_STATE_SLOT_MINUS, SK_F6, NO_BTN, AXIS_NONE },
{ true, RARCH_AUDIO_INPUT_RATE_PLUS, SK_KP_PLUS, NO_BTN, AXIS_NONE },
{ true, RARCH_AUDIO_INPUT_RATE_MINUS, SK_KP_MINUS, NO_BTN, AXIS_NONE },
{ true, RARCH_REWIND, SK_r, NO_BTN, AXIS_NONE },
{ true, RARCH_MOVIE_RECORD_TOGGLE, SK_o, NO_BTN, AXIS_NONE },
{ true, RARCH_PAUSE_TOGGLE, SK_p, NO_BTN, AXIS_NONE },
{ true, RARCH_FRAMEADVANCE, SK_k, NO_BTN, AXIS_NONE },
{ true, RARCH_RESET, SK_h, NO_BTN, AXIS_NONE },
{ true, RARCH_SHADER_NEXT, SK_m, NO_BTN, AXIS_NONE },
{ true, RARCH_SHADER_PREV, SK_n, NO_BTN, AXIS_NONE },
{ true, RARCH_CHEAT_INDEX_PLUS, SK_y, NO_BTN, AXIS_NONE },
{ true, RARCH_CHEAT_INDEX_MINUS, SK_t, NO_BTN, AXIS_NONE },
{ true, RARCH_CHEAT_TOGGLE, SK_u, NO_BTN, AXIS_NONE },
{ true, RARCH_SCREENSHOT, SK_F8, NO_BTN, AXIS_NONE },
{ true, RARCH_DSP_CONFIG, SK_c, NO_BTN, AXIS_NONE },
{ true, RARCH_MUTE, SK_F9, NO_BTN, AXIS_NONE },
{ true, RARCH_NETPLAY_FLIP, SK_i, NO_BTN, AXIS_NONE },
{ true, RARCH_SLOWMOTION, SK_e, NO_BTN, AXIS_NONE },
{ true, RARCH_FAST_FORWARD_KEY, RETROK_SPACE, NO_BTN, AXIS_NONE },
{ true, RARCH_FAST_FORWARD_HOLD_KEY, RETROK_l, NO_BTN, AXIS_NONE },
{ true, RARCH_LOAD_STATE_KEY, RETROK_F4, NO_BTN, AXIS_NONE },
{ true, RARCH_SAVE_STATE_KEY, RETROK_F2, NO_BTN, AXIS_NONE },
{ true, RARCH_FULLSCREEN_TOGGLE_KEY, RETROK_f, NO_BTN, AXIS_NONE },
{ true, RARCH_QUIT_KEY, RETROK_ESCAPE, NO_BTN, AXIS_NONE },
{ true, RARCH_STATE_SLOT_PLUS, RETROK_F7, NO_BTN, AXIS_NONE },
{ true, RARCH_STATE_SLOT_MINUS, RETROK_F6, NO_BTN, AXIS_NONE },
{ true, RARCH_AUDIO_INPUT_RATE_PLUS, RETROK_KP_PLUS, NO_BTN, AXIS_NONE },
{ true, RARCH_AUDIO_INPUT_RATE_MINUS, RETROK_KP_MINUS, NO_BTN, AXIS_NONE },
{ true, RARCH_REWIND, RETROK_r, NO_BTN, AXIS_NONE },
{ true, RARCH_MOVIE_RECORD_TOGGLE, RETROK_o, NO_BTN, AXIS_NONE },
{ true, RARCH_PAUSE_TOGGLE, RETROK_p, NO_BTN, AXIS_NONE },
{ true, RARCH_FRAMEADVANCE, RETROK_k, NO_BTN, AXIS_NONE },
{ true, RARCH_RESET, RETROK_h, NO_BTN, AXIS_NONE },
{ true, RARCH_SHADER_NEXT, RETROK_m, NO_BTN, AXIS_NONE },
{ true, RARCH_SHADER_PREV, RETROK_n, NO_BTN, AXIS_NONE },
{ true, RARCH_CHEAT_INDEX_PLUS, RETROK_y, NO_BTN, AXIS_NONE },
{ true, RARCH_CHEAT_INDEX_MINUS, RETROK_t, NO_BTN, AXIS_NONE },
{ true, RARCH_CHEAT_TOGGLE, RETROK_u, NO_BTN, AXIS_NONE },
{ true, RARCH_SCREENSHOT, RETROK_F8, NO_BTN, AXIS_NONE },
{ true, RARCH_DSP_CONFIG, RETROK_c, NO_BTN, AXIS_NONE },
{ true, RARCH_MUTE, RETROK_F9, NO_BTN, AXIS_NONE },
{ true, RARCH_NETPLAY_FLIP, RETROK_i, NO_BTN, AXIS_NONE },
{ true, RARCH_SLOWMOTION, RETROK_e, NO_BTN, AXIS_NONE },
};
// Player 2-5
static const struct retro_keybind retro_keybinds_rest[] = {
{ true, RETRO_DEVICE_ID_JOYPAD_B, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_Y, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_SELECT, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_START, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_UP, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_DOWN, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_LEFT, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_RIGHT, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_A, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_X, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L2, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R2, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L3, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R3, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_B, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_Y, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_SELECT, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_START, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_UP, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_DOWN, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_LEFT, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_RIGHT, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_A, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_X, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L2, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R2, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_L3, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RETRO_DEVICE_ID_JOYPAD_R3, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_X_PLUS, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_X_MINUS, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_Y_PLUS, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_Y_MINUS, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_X_PLUS, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_X_MINUS, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_Y_PLUS, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_Y_MINUS, SK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_X_PLUS, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_X_MINUS, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_LEFT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_X_PLUS, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_X_MINUS, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
{ true, RARCH_ANALOG_RIGHT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, AXIS_NONE },
};
#endif

View File

@ -19,10 +19,10 @@
#include <sys/types.h>
#include "boolean.h"
#include "libretro.h"
#include <stdlib.h>
#include <stdint.h>
#include "msvc/msvc_compat.h"
#include "input/keysym.h"
#ifdef HAVE_CONFIG_H
#include "config.h"
@ -96,7 +96,7 @@ struct retro_keybind
{
bool valid;
int id;
enum rarch_key key;
enum retro_key key;
// PC only uses lower 16-bits.
// Full 64-bit can be used for port-specific purposes, like simplifying multiple binds, etc.

View File

@ -183,7 +183,7 @@ struct rarch_keybind
// Keyboard key. The key values use the SDL 1.2 keysyms,
// which probably need to be transformed to the native format.
// The actual keysyms RetroArch uses are found in input/keysym.h.
// The actual keysyms RetroArch uses are found in libretro.h.
unsigned short key;
// Joypad key. Joypad POV (hats) are embedded into this key as well.

View File

@ -1,171 +0,0 @@
/* RetroArch - A frontend for libretro.
* Copyright (C) 2010-2012 - Hans-Kristian Arntzen
*
* RetroArch 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 Found-
* ation, either version 3 of the License, or (at your option) any later version.
*
* RetroArch 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 RetroArch.
* If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __RARCH_KEYSYM_H
#define __RARCH_KEYSYM_H
// Global keysym table for SSNES.
// As you may have noticed, it's the same as SDL 1.2 since I'm lazy.
enum rarch_key
{
SK_UNKNOWN = 0,
SK_FIRST = 0,
SK_BACKSPACE = 8,
SK_TAB = 9,
SK_CLEAR = 12,
SK_RETURN = 13,
SK_PAUSE = 19,
SK_ESCAPE = 27,
SK_SPACE = 32,
SK_EXCLAIM = 33,
SK_QUOTEDBL = 34,
SK_HASH = 35,
SK_DOLLAR = 36,
SK_AMPERSAND = 38,
SK_QUOTE = 39,
SK_LEFTPAREN = 40,
SK_RIGHTPAREN = 41,
SK_ASTERISK = 42,
SK_PLUS = 43,
SK_COMMA = 44,
SK_MINUS = 45,
SK_PERIOD = 46,
SK_SLASH = 47,
SK_0 = 48,
SK_1 = 49,
SK_2 = 50,
SK_3 = 51,
SK_4 = 52,
SK_5 = 53,
SK_6 = 54,
SK_7 = 55,
SK_8 = 56,
SK_9 = 57,
SK_COLON = 58,
SK_SEMICOLON = 59,
SK_LESS = 60,
SK_EQUALS = 61,
SK_GREATER = 62,
SK_QUESTION = 63,
SK_AT = 64,
SK_LEFTBRACKET = 91,
SK_BACKSLASH = 92,
SK_RIGHTBRACKET = 93,
SK_CARET = 94,
SK_UNDERSCORE = 95,
SK_BACKQUOTE = 96,
SK_a = 97,
SK_b = 98,
SK_c = 99,
SK_d = 100,
SK_e = 101,
SK_f = 102,
SK_g = 103,
SK_h = 104,
SK_i = 105,
SK_j = 106,
SK_k = 107,
SK_l = 108,
SK_m = 109,
SK_n = 110,
SK_o = 111,
SK_p = 112,
SK_q = 113,
SK_r = 114,
SK_s = 115,
SK_t = 116,
SK_u = 117,
SK_v = 118,
SK_w = 119,
SK_x = 120,
SK_y = 121,
SK_z = 122,
SK_DELETE = 127,
SK_KP0 = 256,
SK_KP1 = 257,
SK_KP2 = 258,
SK_KP3 = 259,
SK_KP4 = 260,
SK_KP5 = 261,
SK_KP6 = 262,
SK_KP7 = 263,
SK_KP8 = 264,
SK_KP9 = 265,
SK_KP_PERIOD = 266,
SK_KP_DIVIDE = 267,
SK_KP_MULTIPLY = 268,
SK_KP_MINUS = 269,
SK_KP_PLUS = 270,
SK_KP_ENTER = 271,
SK_KP_EQUALS = 272,
SK_UP = 273,
SK_DOWN = 274,
SK_RIGHT = 275,
SK_LEFT = 276,
SK_INSERT = 277,
SK_HOME = 278,
SK_END = 279,
SK_PAGEUP = 280,
SK_PAGEDOWN = 281,
SK_F1 = 282,
SK_F2 = 283,
SK_F3 = 284,
SK_F4 = 285,
SK_F5 = 286,
SK_F6 = 287,
SK_F7 = 288,
SK_F8 = 289,
SK_F9 = 290,
SK_F10 = 291,
SK_F11 = 292,
SK_F12 = 293,
SK_F13 = 294,
SK_F14 = 295,
SK_F15 = 296,
SK_NUMLOCK = 300,
SK_CAPSLOCK = 301,
SK_SCROLLOCK = 302,
SK_RSHIFT = 303,
SK_LSHIFT = 304,
SK_RCTRL = 305,
SK_LCTRL = 306,
SK_RALT = 307,
SK_LALT = 308,
SK_RMETA = 309,
SK_LMETA = 310,
SK_LSUPER = 311,
SK_RSUPER = 312,
SK_MODE = 313,
SK_COMPOSE = 314,
SK_HELP = 315,
SK_PRINT = 316,
SK_SYSREQ = 317,
SK_BREAK = 318,
SK_MENU = 319,
SK_POWER = 320,
SK_EURO = 321,
SK_UNDO = 322,
SK_LAST
};
#endif

View File

@ -32,116 +32,116 @@ static struct termios oldTerm, newTerm;
struct key_bind
{
uint8_t x;
enum rarch_key sk;
enum retro_key sk;
};
static unsigned keysym_lut[SK_LAST];
static unsigned keysym_lut[RETROK_LAST];
static const struct key_bind lut_binds[] = {
{ KEY_ESC, SK_ESCAPE },
{ KEY_1, SK_1 },
{ KEY_2, SK_2 },
{ KEY_3, SK_3},
{ KEY_4, SK_4 },
{ KEY_5, SK_5 },
{ KEY_6, SK_6 },
{ KEY_7, SK_7 },
{ KEY_8, SK_8 },
{ KEY_9, SK_9 },
{ KEY_0, SK_0 },
{ KEY_MINUS, SK_MINUS },
{ KEY_EQUAL, SK_EQUALS },
{ KEY_BACKSPACE, SK_BACKSPACE },
{ KEY_TAB, SK_TAB },
{ KEY_Q, SK_q },
{ KEY_W, SK_w },
{ KEY_E, SK_e },
{ KEY_R, SK_r },
{ KEY_T, SK_t },
{ KEY_Y, SK_y },
{ KEY_U, SK_u },
{ KEY_I, SK_i },
{ KEY_O, SK_o },
{ KEY_P, SK_p },
{ KEY_LEFTBRACE, SK_LEFTBRACKET },
{ KEY_RIGHTBRACE, SK_RIGHTBRACKET },
{ KEY_ENTER, SK_RETURN },
{ KEY_LEFTCTRL, SK_LCTRL },
{ KEY_A, SK_a },
{ KEY_S, SK_s },
{ KEY_D, SK_d },
{ KEY_F, SK_f },
{ KEY_G, SK_g },
{ KEY_H, SK_h },
{ KEY_J, SK_j },
{ KEY_K, SK_k },
{ KEY_L, SK_l },
{ KEY_SEMICOLON, SK_SEMICOLON },
{ KEY_APOSTROPHE, SK_QUOTE },
{ KEY_GRAVE, SK_BACKQUOTE },
{ KEY_LEFTSHIFT, SK_LSHIFT },
{ KEY_BACKSLASH, SK_BACKSLASH },
{ KEY_Z, SK_z },
{ KEY_X, SK_x },
{ KEY_C, SK_c },
{ KEY_V, SK_v },
{ KEY_B, SK_b },
{ KEY_N, SK_n },
{ KEY_M, SK_m },
{ KEY_COMMA, SK_COMMA },
{ KEY_DOT, SK_PERIOD },
{ KEY_SLASH, SK_SLASH },
{ KEY_RIGHTSHIFT, SK_RSHIFT },
{ KEY_KPASTERISK, SK_KP_MULTIPLY },
{ KEY_LEFTALT, SK_LALT },
{ KEY_SPACE, SK_SPACE },
{ KEY_CAPSLOCK, SK_CAPSLOCK },
{ KEY_F1, SK_F1 },
{ KEY_F2, SK_F2 },
{ KEY_F3, SK_F3 },
{ KEY_F4, SK_F4 },
{ KEY_F5, SK_F5 },
{ KEY_F6, SK_F6 },
{ KEY_F7, SK_F7 },
{ KEY_F8, SK_F8 },
{ KEY_F9, SK_F9 },
{ KEY_F10, SK_F10 },
{ KEY_NUMLOCK, SK_NUMLOCK },
{ KEY_SCROLLLOCK, SK_SCROLLOCK },
{ KEY_KP7, SK_KP7 },
{ KEY_KP8, SK_KP8 },
{ KEY_KP9, SK_KP9 },
{ KEY_KPMINUS, SK_KP_MINUS },
{ KEY_KP4, SK_KP4 },
{ KEY_KP5, SK_KP5 },
{ KEY_KP6, SK_KP6 },
{ KEY_KPPLUS, SK_KP_PLUS },
{ KEY_KP1, SK_KP1 },
{ KEY_KP2, SK_KP2 },
{ KEY_KP3, SK_KP3 },
{ KEY_KP0, SK_KP0 },
{ KEY_KPDOT, SK_KP_PERIOD },
{ KEY_ESC, RETROK_ESCAPE },
{ KEY_1, RETROK_1 },
{ KEY_2, RETROK_2 },
{ KEY_3, RETROK_3},
{ KEY_4, RETROK_4 },
{ KEY_5, RETROK_5 },
{ KEY_6, RETROK_6 },
{ KEY_7, RETROK_7 },
{ KEY_8, RETROK_8 },
{ KEY_9, RETROK_9 },
{ KEY_0, RETROK_0 },
{ KEY_MINUS, RETROK_MINUS },
{ KEY_EQUAL, RETROK_EQUALS },
{ KEY_BACKSPACE, RETROK_BACKSPACE },
{ KEY_TAB, RETROK_TAB },
{ KEY_Q, RETROK_q },
{ KEY_W, RETROK_w },
{ KEY_E, RETROK_e },
{ KEY_R, RETROK_r },
{ KEY_T, RETROK_t },
{ KEY_Y, RETROK_y },
{ KEY_U, RETROK_u },
{ KEY_I, RETROK_i },
{ KEY_O, RETROK_o },
{ KEY_P, RETROK_p },
{ KEY_LEFTBRACE, RETROK_LEFTBRACKET },
{ KEY_RIGHTBRACE, RETROK_RIGHTBRACKET },
{ KEY_ENTER, RETROK_RETURN },
{ KEY_LEFTCTRL, RETROK_LCTRL },
{ KEY_A, RETROK_a },
{ KEY_S, RETROK_s },
{ KEY_D, RETROK_d },
{ KEY_F, RETROK_f },
{ KEY_G, RETROK_g },
{ KEY_H, RETROK_h },
{ KEY_J, RETROK_j },
{ KEY_K, RETROK_k },
{ KEY_L, RETROK_l },
{ KEY_SEMICOLON, RETROK_SEMICOLON },
{ KEY_APOSTROPHE, RETROK_QUOTE },
{ KEY_GRAVE, RETROK_BACKQUOTE },
{ KEY_LEFTSHIFT, RETROK_LSHIFT },
{ KEY_BACKSLASH, RETROK_BACKSLASH },
{ KEY_Z, RETROK_z },
{ KEY_X, RETROK_x },
{ KEY_C, RETROK_c },
{ KEY_V, RETROK_v },
{ KEY_B, RETROK_b },
{ KEY_N, RETROK_n },
{ KEY_M, RETROK_m },
{ KEY_COMMA, RETROK_COMMA },
{ KEY_DOT, RETROK_PERIOD },
{ KEY_SLASH, RETROK_SLASH },
{ KEY_RIGHTSHIFT, RETROK_RSHIFT },
{ KEY_KPASTERISK, RETROK_KP_MULTIPLY },
{ KEY_LEFTALT, RETROK_LALT },
{ KEY_SPACE, RETROK_SPACE },
{ KEY_CAPSLOCK, RETROK_CAPSLOCK },
{ KEY_F1, RETROK_F1 },
{ KEY_F2, RETROK_F2 },
{ KEY_F3, RETROK_F3 },
{ KEY_F4, RETROK_F4 },
{ KEY_F5, RETROK_F5 },
{ KEY_F6, RETROK_F6 },
{ KEY_F7, RETROK_F7 },
{ KEY_F8, RETROK_F8 },
{ KEY_F9, RETROK_F9 },
{ KEY_F10, RETROK_F10 },
{ KEY_NUMLOCK, RETROK_NUMLOCK },
{ KEY_SCROLLLOCK, RETROK_SCROLLOCK },
{ KEY_KP7, RETROK_KP7 },
{ KEY_KP8, RETROK_KP8 },
{ KEY_KP9, RETROK_KP9 },
{ KEY_KPMINUS, RETROK_KP_MINUS },
{ KEY_KP4, RETROK_KP4 },
{ KEY_KP5, RETROK_KP5 },
{ KEY_KP6, RETROK_KP6 },
{ KEY_KPPLUS, RETROK_KP_PLUS },
{ KEY_KP1, RETROK_KP1 },
{ KEY_KP2, RETROK_KP2 },
{ KEY_KP3, RETROK_KP3 },
{ KEY_KP0, RETROK_KP0 },
{ KEY_KPDOT, RETROK_KP_PERIOD },
{ KEY_F11, SK_F11 },
{ KEY_F12, SK_F12 },
{ KEY_F11, RETROK_F11 },
{ KEY_F12, RETROK_F12 },
{ KEY_KPENTER, SK_KP_ENTER },
{ KEY_RIGHTCTRL, SK_RCTRL },
{ KEY_KPSLASH, SK_KP_DIVIDE },
{ KEY_SYSRQ, SK_PRINT },
{ KEY_RIGHTALT, SK_RALT },
{ KEY_KPENTER, RETROK_KP_ENTER },
{ KEY_RIGHTCTRL, RETROK_RCTRL },
{ KEY_KPSLASH, RETROK_KP_DIVIDE },
{ KEY_SYSRQ, RETROK_PRINT },
{ KEY_RIGHTALT, RETROK_RALT },
{ KEY_HOME, SK_HOME },
{ KEY_UP, SK_UP },
{ KEY_PAGEUP, SK_PAGEUP },
{ KEY_LEFT, SK_LEFT },
{ KEY_RIGHT, SK_RIGHT },
{ KEY_END, SK_END },
{ KEY_DOWN, SK_DOWN },
{ KEY_PAGEDOWN, SK_PAGEDOWN },
{ KEY_INSERT, SK_INSERT },
{ KEY_DELETE, SK_DELETE },
{ KEY_HOME, RETROK_HOME },
{ KEY_UP, RETROK_UP },
{ KEY_PAGEUP, RETROK_PAGEUP },
{ KEY_LEFT, RETROK_LEFT },
{ KEY_RIGHT, RETROK_RIGHT },
{ KEY_END, RETROK_END },
{ KEY_DOWN, RETROK_DOWN },
{ KEY_PAGEDOWN, RETROK_PAGEDOWN },
{ KEY_INSERT, RETROK_INSERT },
{ KEY_DELETE, RETROK_DELETE },
{ KEY_PAUSE, SK_PAUSE },
{ KEY_PAUSE, RETROK_PAUSE },
};
static void init_lut(void)

View File

@ -22,100 +22,99 @@
#include <stdlib.h>
#include "../libretro.h"
#include "rarch_sdl_input.h"
#include "keysym.h"
struct key_bind
{
unsigned sdl;
enum rarch_key sk;
enum retro_key sk;
};
static unsigned keysym_lut[SK_LAST];
static unsigned keysym_lut[RETROK_LAST];
static const struct key_bind lut_binds[] = {
{ SDLK_LEFT, SK_LEFT },
{ SDLK_RIGHT, SK_RIGHT },
{ SDLK_UP, SK_UP },
{ SDLK_DOWN, SK_DOWN },
{ SDLK_RETURN, SK_RETURN },
{ SDLK_TAB, SK_TAB },
{ SDLK_INSERT, SK_INSERT },
{ SDLK_DELETE, SK_DELETE },
{ SDLK_RSHIFT, SK_RSHIFT },
{ SDLK_LSHIFT, SK_LSHIFT },
{ SDLK_LCTRL, SK_LCTRL },
{ SDLK_END, SK_END },
{ SDLK_HOME, SK_HOME },
{ SDLK_PAGEDOWN, SK_PAGEDOWN },
{ SDLK_PAGEUP, SK_PAGEUP },
{ SDLK_LALT, SK_LALT },
{ SDLK_SPACE, SK_SPACE },
{ SDLK_ESCAPE, SK_ESCAPE },
{ SDLK_BACKSPACE, SK_BACKSPACE },
{ SDLK_KP_ENTER, SK_KP_ENTER },
{ SDLK_KP_PLUS, SK_KP_PLUS },
{ SDLK_KP_MINUS, SK_KP_MINUS },
{ SDLK_KP_MULTIPLY, SK_KP_MULTIPLY },
{ SDLK_KP_DIVIDE, SK_KP_DIVIDE },
{ SDLK_BACKQUOTE, SK_BACKQUOTE },
{ SDLK_PAUSE, SK_PAUSE },
{ SDLK_KP0, SK_KP0 },
{ SDLK_KP1, SK_KP1 },
{ SDLK_KP2, SK_KP2 },
{ SDLK_KP3, SK_KP3 },
{ SDLK_KP4, SK_KP4 },
{ SDLK_KP5, SK_KP5 },
{ SDLK_KP6, SK_KP6 },
{ SDLK_KP7, SK_KP7 },
{ SDLK_KP8, SK_KP8 },
{ SDLK_KP9, SK_KP9 },
{ SDLK_0, SK_0 },
{ SDLK_1, SK_1 },
{ SDLK_2, SK_2 },
{ SDLK_3, SK_3 },
{ SDLK_4, SK_4 },
{ SDLK_5, SK_5 },
{ SDLK_6, SK_6 },
{ SDLK_7, SK_7 },
{ SDLK_8, SK_8 },
{ SDLK_9, SK_9 },
{ SDLK_F1, SK_F1 },
{ SDLK_F2, SK_F2 },
{ SDLK_F3, SK_F3 },
{ SDLK_F4, SK_F4 },
{ SDLK_F5, SK_F5 },
{ SDLK_F6, SK_F6 },
{ SDLK_F7, SK_F7 },
{ SDLK_F8, SK_F8 },
{ SDLK_F9, SK_F9 },
{ SDLK_F10, SK_F10 },
{ SDLK_F11, SK_F11 },
{ SDLK_F12, SK_F12 },
{ SDLK_a, SK_a },
{ SDLK_b, SK_b },
{ SDLK_c, SK_c },
{ SDLK_d, SK_d },
{ SDLK_e, SK_e },
{ SDLK_f, SK_f },
{ SDLK_g, SK_g },
{ SDLK_h, SK_h },
{ SDLK_i, SK_i },
{ SDLK_j, SK_j },
{ SDLK_k, SK_k },
{ SDLK_l, SK_l },
{ SDLK_m, SK_m },
{ SDLK_n, SK_n },
{ SDLK_o, SK_o },
{ SDLK_p, SK_p },
{ SDLK_q, SK_q },
{ SDLK_r, SK_r },
{ SDLK_s, SK_s },
{ SDLK_t, SK_t },
{ SDLK_u, SK_u },
{ SDLK_v, SK_v },
{ SDLK_w, SK_w },
{ SDLK_x, SK_x },
{ SDLK_y, SK_y },
{ SDLK_z, SK_z },
{ 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_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_0, RETROK_0 },
{ SDLK_1, RETROK_1 },
{ SDLK_2, RETROK_2 },
{ SDLK_3, RETROK_3 },
{ SDLK_4, RETROK_4 },
{ SDLK_5, RETROK_5 },
{ SDLK_6, RETROK_6 },
{ 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_a, RETROK_a },
{ SDLK_b, RETROK_b },
{ SDLK_c, RETROK_c },
{ SDLK_d, RETROK_d },
{ SDLK_e, RETROK_e },
{ SDLK_f, RETROK_f },
{ SDLK_g, RETROK_g },
{ SDLK_h, RETROK_h },
{ SDLK_i, RETROK_i },
{ SDLK_j, RETROK_j },
{ SDLK_k, RETROK_k },
{ SDLK_l, RETROK_l },
{ SDLK_m, RETROK_m },
{ SDLK_n, RETROK_n },
{ SDLK_o, RETROK_o },
{ SDLK_p, RETROK_p },
{ SDLK_q, RETROK_q },
{ SDLK_r, RETROK_r },
{ SDLK_s, RETROK_s },
{ SDLK_t, RETROK_t },
{ SDLK_u, RETROK_u },
{ SDLK_v, RETROK_v },
{ SDLK_w, RETROK_w },
{ SDLK_x, RETROK_x },
{ SDLK_y, RETROK_y },
{ SDLK_z, RETROK_z },
};
static void init_lut(void)
@ -183,7 +182,7 @@ static void *sdl_input_init(void)
static bool sdl_key_pressed(int key)
{
return gfx_ctx_key_pressed(keysym_lut[key]);
return key < RETROK_LAST && gfx_ctx_key_pressed(keysym_lut[key]);
}
#ifndef HAVE_DINPUT
@ -365,6 +364,11 @@ static int16_t sdl_analog_device_state(sdl_input_t *sdl, const struct retro_keyb
return digital_right + digital_left;
}
static int16_t sdl_keyboard_device_state(sdl_input_t *sdl, unsigned id)
{
return sdl->use_keyboard && sdl_key_pressed(id);
}
static int16_t sdl_mouse_device_state(sdl_input_t *sdl, unsigned id)
{
switch (id)
@ -416,6 +420,8 @@ static int16_t sdl_input_state(void *data_, const struct retro_keybind **binds,
return sdl_analog_device_state(data, binds, port, index, id);
case RETRO_DEVICE_MOUSE:
return sdl_mouse_device_state(data, id);
case RETRO_DEVICE_KEYBOARD:
return sdl_keyboard_device_state(data, id);
case RETRO_DEVICE_LIGHTGUN:
return sdl_lightgun_device_state(data, id);

View File

@ -21,7 +21,6 @@
#include <stdint.h>
#include <stdlib.h>
#include "rarch_sdl_input.h"
#include "keysym.h"
#include <X11/Xlib.h>
#include <X11/Xutil.h>
@ -37,95 +36,95 @@ typedef struct x11_input
struct key_bind
{
unsigned x;
enum rarch_key sk;
enum retro_key sk;
};
static unsigned keysym_lut[SK_LAST];
static unsigned keysym_lut[RETROK_LAST];
static const struct key_bind lut_binds[] = {
{ XK_Left, SK_LEFT },
{ XK_Right, SK_RIGHT },
{ XK_Up, SK_UP },
{ XK_Down, SK_DOWN },
{ XK_Return, SK_RETURN },
{ XK_Tab, SK_TAB },
{ XK_Insert, SK_INSERT },
{ XK_Home, SK_HOME },
{ XK_End, SK_END },
{ XK_Page_Up, SK_PAGEUP },
{ XK_Page_Down, SK_PAGEDOWN },
{ XK_Delete, SK_DELETE },
{ XK_Shift_R, SK_RSHIFT },
{ XK_Shift_L, SK_LSHIFT },
{ XK_Control_L, SK_LCTRL },
{ XK_Alt_L, SK_LALT },
{ XK_space, SK_SPACE },
{ XK_Escape, SK_ESCAPE },
{ XK_BackSpace, SK_BACKSPACE },
{ XK_KP_Enter, SK_KP_ENTER },
{ XK_KP_Add, SK_KP_PLUS },
{ XK_KP_Subtract, SK_KP_MINUS },
{ XK_KP_Multiply, SK_KP_MULTIPLY },
{ XK_KP_Divide, SK_KP_DIVIDE },
{ XK_grave, SK_BACKQUOTE },
{ XK_Pause, SK_PAUSE },
{ XK_KP_0, SK_KP0 },
{ XK_KP_1, SK_KP1 },
{ XK_KP_2, SK_KP2 },
{ XK_KP_3, SK_KP3 },
{ XK_KP_4, SK_KP4 },
{ XK_KP_5, SK_KP5 },
{ XK_KP_6, SK_KP6 },
{ XK_KP_7, SK_KP7 },
{ XK_KP_8, SK_KP8 },
{ XK_KP_9, SK_KP9 },
{ XK_0, SK_0 },
{ XK_1, SK_1 },
{ XK_2, SK_2 },
{ XK_3, SK_3 },
{ XK_4, SK_4 },
{ XK_5, SK_5 },
{ XK_6, SK_6 },
{ XK_7, SK_7 },
{ XK_8, SK_8 },
{ XK_9, SK_9 },
{ XK_F1, SK_F1 },
{ XK_F2, SK_F2 },
{ XK_F3, SK_F3 },
{ XK_F4, SK_F4 },
{ XK_F5, SK_F5 },
{ XK_F6, SK_F6 },
{ XK_F7, SK_F7 },
{ XK_F8, SK_F8 },
{ XK_F9, SK_F9 },
{ XK_F10, SK_F10 },
{ XK_F11, SK_F11 },
{ XK_F12, SK_F12 },
{ XK_a, SK_a },
{ XK_b, SK_b },
{ XK_c, SK_c },
{ XK_d, SK_d },
{ XK_e, SK_e },
{ XK_f, SK_f },
{ XK_g, SK_g },
{ XK_h, SK_h },
{ XK_i, SK_i },
{ XK_j, SK_j },
{ XK_k, SK_k },
{ XK_l, SK_l },
{ XK_m, SK_m },
{ XK_n, SK_n },
{ XK_o, SK_o },
{ XK_p, SK_p },
{ XK_q, SK_q },
{ XK_r, SK_r },
{ XK_s, SK_s },
{ XK_t, SK_t },
{ XK_u, SK_u },
{ XK_v, SK_v },
{ XK_w, SK_w },
{ XK_x, SK_x },
{ XK_y, SK_y },
{ XK_z, SK_z },
{ 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_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_0, RETROK_0 },
{ XK_1, RETROK_1 },
{ XK_2, RETROK_2 },
{ XK_3, RETROK_3 },
{ XK_4, RETROK_4 },
{ XK_5, RETROK_5 },
{ XK_6, RETROK_6 },
{ 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_a, RETROK_a },
{ XK_b, RETROK_b },
{ XK_c, RETROK_c },
{ XK_d, RETROK_d },
{ XK_e, RETROK_e },
{ XK_f, RETROK_f },
{ XK_g, RETROK_g },
{ XK_h, RETROK_h },
{ XK_i, RETROK_i },
{ XK_j, RETROK_j },
{ XK_k, RETROK_k },
{ XK_l, RETROK_l },
{ XK_m, RETROK_m },
{ XK_n, RETROK_n },
{ XK_o, RETROK_o },
{ XK_p, RETROK_p },
{ XK_q, RETROK_q },
{ XK_r, RETROK_r },
{ XK_s, RETROK_s },
{ XK_t, RETROK_t },
{ XK_u, RETROK_u },
{ XK_v, RETROK_v },
{ XK_w, RETROK_w },
{ XK_x, RETROK_x },
{ XK_y, RETROK_y },
{ XK_z, RETROK_z },
};
static void init_lut(void)
@ -163,6 +162,9 @@ static void *x_input_init(void)
static bool x_key_pressed(x11_input_t *x11, int key)
{
if (key >= RETROK_LAST)
return false;
key = keysym_lut[key];
int keycode = XKeysymToKeycode(x11->display, key);
bool ret = x11->state[keycode >> 3] & (1 << (keycode & 7));
@ -197,6 +199,9 @@ static int16_t x_input_state(void *data, const struct retro_keybind **binds, uns
return x_is_pressed(x11, binds[port], id) ||
input_sdl.input_state(x11->sdl, binds, port, device, index, id);
case RETRO_DEVICE_KEYBOARD:
return x_key_pressed(x11, id);
case RETRO_DEVICE_ANALOG:
return input_sdl.input_state(x11->sdl, binds, port, device, index, id);

View File

@ -87,6 +87,153 @@ extern "C" {
#define RETRO_GAME_TYPE_SUFAMI_TURBO 0x103
#define RETRO_GAME_TYPE_SUPER_GAME_BOY 0x104
enum retro_key
{
RETROK_UNKNOWN = 0,
RETROK_FIRST = 0,
RETROK_BACKSPACE = 8,
RETROK_TAB = 9,
RETROK_CLEAR = 12,
RETROK_RETURN = 13,
RETROK_PAUSE = 19,
RETROK_ESCAPE = 27,
RETROK_SPACE = 32,
RETROK_EXCLAIM = 33,
RETROK_QUOTEDBL = 34,
RETROK_HASH = 35,
RETROK_DOLLAR = 36,
RETROK_AMPERSAND = 38,
RETROK_QUOTE = 39,
RETROK_LEFTPAREN = 40,
RETROK_RIGHTPAREN = 41,
RETROK_ASTERISK = 42,
RETROK_PLUS = 43,
RETROK_COMMA = 44,
RETROK_MINUS = 45,
RETROK_PERIOD = 46,
RETROK_SLASH = 47,
RETROK_0 = 48,
RETROK_1 = 49,
RETROK_2 = 50,
RETROK_3 = 51,
RETROK_4 = 52,
RETROK_5 = 53,
RETROK_6 = 54,
RETROK_7 = 55,
RETROK_8 = 56,
RETROK_9 = 57,
RETROK_COLON = 58,
RETROK_SEMICOLON = 59,
RETROK_LESS = 60,
RETROK_EQUALS = 61,
RETROK_GREATER = 62,
RETROK_QUESTION = 63,
RETROK_AT = 64,
RETROK_LEFTBRACKET = 91,
RETROK_BACKSLASH = 92,
RETROK_RIGHTBRACKET = 93,
RETROK_CARET = 94,
RETROK_UNDERSCORE = 95,
RETROK_BACKQUOTE = 96,
RETROK_a = 97,
RETROK_b = 98,
RETROK_c = 99,
RETROK_d = 100,
RETROK_e = 101,
RETROK_f = 102,
RETROK_g = 103,
RETROK_h = 104,
RETROK_i = 105,
RETROK_j = 106,
RETROK_k = 107,
RETROK_l = 108,
RETROK_m = 109,
RETROK_n = 110,
RETROK_o = 111,
RETROK_p = 112,
RETROK_q = 113,
RETROK_r = 114,
RETROK_s = 115,
RETROK_t = 116,
RETROK_u = 117,
RETROK_v = 118,
RETROK_w = 119,
RETROK_x = 120,
RETROK_y = 121,
RETROK_z = 122,
RETROK_DELETE = 127,
RETROK_KP0 = 256,
RETROK_KP1 = 257,
RETROK_KP2 = 258,
RETROK_KP3 = 259,
RETROK_KP4 = 260,
RETROK_KP5 = 261,
RETROK_KP6 = 262,
RETROK_KP7 = 263,
RETROK_KP8 = 264,
RETROK_KP9 = 265,
RETROK_KP_PERIOD = 266,
RETROK_KP_DIVIDE = 267,
RETROK_KP_MULTIPLY = 268,
RETROK_KP_MINUS = 269,
RETROK_KP_PLUS = 270,
RETROK_KP_ENTER = 271,
RETROK_KP_EQUALS = 272,
RETROK_UP = 273,
RETROK_DOWN = 274,
RETROK_RIGHT = 275,
RETROK_LEFT = 276,
RETROK_INSERT = 277,
RETROK_HOME = 278,
RETROK_END = 279,
RETROK_PAGEUP = 280,
RETROK_PAGEDOWN = 281,
RETROK_F1 = 282,
RETROK_F2 = 283,
RETROK_F3 = 284,
RETROK_F4 = 285,
RETROK_F5 = 286,
RETROK_F6 = 287,
RETROK_F7 = 288,
RETROK_F8 = 289,
RETROK_F9 = 290,
RETROK_F10 = 291,
RETROK_F11 = 292,
RETROK_F12 = 293,
RETROK_F13 = 294,
RETROK_F14 = 295,
RETROK_F15 = 296,
RETROK_NUMLOCK = 300,
RETROK_CAPSLOCK = 301,
RETROK_SCROLLOCK = 302,
RETROK_RSHIFT = 303,
RETROK_LSHIFT = 304,
RETROK_RCTRL = 305,
RETROK_LCTRL = 306,
RETROK_RALT = 307,
RETROK_LALT = 308,
RETROK_RMETA = 309,
RETROK_LMETA = 310,
RETROK_LSUPER = 311,
RETROK_RSUPER = 312,
RETROK_MODE = 313,
RETROK_COMPOSE = 314,
RETROK_HELP = 315,
RETROK_PRINT = 316,
RETROK_SYSREQ = 317,
RETROK_BREAK = 318,
RETROK_MENU = 319,
RETROK_POWER = 320,
RETROK_EURO = 321,
RETROK_UNDO = 322,
RETROK_LAST
};
// Environment commands.
#define RETRO_ENVIRONMENT_SET_ROTATION 1 // const unsigned * --

View File

@ -16,7 +16,6 @@
#include "general.h"
#include "conf/config_file.h"
#include "conf/config_file_macros.h"
#include "input/keysym.h"
#include "compat/strl.h"
#include "config.def.h"
#include "file.h"
@ -604,73 +603,73 @@ struct key_map
// Edit: Not portable to different input systems atm. Might move this map into the driver itself or something.
// However, this should map nicely over to other systems aswell since the definition are mostly the same anyways.
static const struct key_map sk_map[] = {
{ "left", SK_LEFT },
{ "right", SK_RIGHT },
{ "up", SK_UP },
{ "down", SK_DOWN },
{ "enter", SK_RETURN },
{ "kp_enter", SK_KP_ENTER },
{ "tab", SK_TAB },
{ "insert", SK_INSERT },
{ "del", SK_DELETE },
{ "end", SK_END },
{ "home", SK_HOME },
{ "rshift", SK_RSHIFT },
{ "shift", SK_LSHIFT },
{ "ctrl", SK_LCTRL },
{ "alt", SK_LALT },
{ "space", SK_SPACE },
{ "escape", SK_ESCAPE },
{ "add", SK_KP_PLUS },
{ "subtract", SK_KP_MINUS },
{ "kp_plus", SK_KP_PLUS },
{ "kp_minus", SK_KP_MINUS },
{ "f1", SK_F1 },
{ "f2", SK_F2 },
{ "f3", SK_F3 },
{ "f4", SK_F4 },
{ "f5", SK_F5 },
{ "f6", SK_F6 },
{ "f7", SK_F7 },
{ "f8", SK_F8 },
{ "f9", SK_F9 },
{ "f10", SK_F10 },
{ "f11", SK_F11 },
{ "f12", SK_F12 },
{ "num0", SK_0 },
{ "num1", SK_1 },
{ "num2", SK_2 },
{ "num3", SK_3 },
{ "num4", SK_4 },
{ "num5", SK_5 },
{ "num6", SK_6 },
{ "num7", SK_7 },
{ "num8", SK_8 },
{ "num9", SK_9 },
{ "pageup", SK_PAGEUP },
{ "pagedown", SK_PAGEDOWN },
{ "keypad0", SK_KP0 },
{ "keypad1", SK_KP1 },
{ "keypad2", SK_KP2 },
{ "keypad3", SK_KP3 },
{ "keypad4", SK_KP4 },
{ "keypad5", SK_KP5 },
{ "keypad6", SK_KP6 },
{ "keypad7", SK_KP7 },
{ "keypad8", SK_KP8 },
{ "keypad9", SK_KP9 },
{ "period", SK_PERIOD },
{ "capslock", SK_CAPSLOCK },
{ "numlock", SK_NUMLOCK },
{ "backspace", SK_BACKSPACE },
{ "multiply", SK_KP_MULTIPLY },
{ "divide", SK_KP_DIVIDE },
{ "print_screen", SK_PRINT },
{ "scroll_lock", SK_SCROLLOCK },
{ "tilde", SK_BACKQUOTE },
{ "backquote", SK_BACKQUOTE },
{ "pause", SK_PAUSE },
{ "nul", SK_UNKNOWN },
{ "left", RETROK_LEFT },
{ "right", RETROK_RIGHT },
{ "up", RETROK_UP },
{ "down", RETROK_DOWN },
{ "enter", RETROK_RETURN },
{ "kp_enter", RETROK_KP_ENTER },
{ "tab", RETROK_TAB },
{ "insert", RETROK_INSERT },
{ "del", RETROK_DELETE },
{ "end", RETROK_END },
{ "home", RETROK_HOME },
{ "rshift", RETROK_RSHIFT },
{ "shift", RETROK_LSHIFT },
{ "ctrl", RETROK_LCTRL },
{ "alt", RETROK_LALT },
{ "space", RETROK_SPACE },
{ "escape", RETROK_ESCAPE },
{ "add", RETROK_KP_PLUS },
{ "subtract", RETROK_KP_MINUS },
{ "kp_plus", RETROK_KP_PLUS },
{ "kp_minus", RETROK_KP_MINUS },
{ "f1", RETROK_F1 },
{ "f2", RETROK_F2 },
{ "f3", RETROK_F3 },
{ "f4", RETROK_F4 },
{ "f5", RETROK_F5 },
{ "f6", RETROK_F6 },
{ "f7", RETROK_F7 },
{ "f8", RETROK_F8 },
{ "f9", RETROK_F9 },
{ "f10", RETROK_F10 },
{ "f11", RETROK_F11 },
{ "f12", RETROK_F12 },
{ "num0", RETROK_0 },
{ "num1", RETROK_1 },
{ "num2", RETROK_2 },
{ "num3", RETROK_3 },
{ "num4", RETROK_4 },
{ "num5", RETROK_5 },
{ "num6", RETROK_6 },
{ "num7", RETROK_7 },
{ "num8", RETROK_8 },
{ "num9", RETROK_9 },
{ "pageup", RETROK_PAGEUP },
{ "pagedown", RETROK_PAGEDOWN },
{ "keypad0", RETROK_KP0 },
{ "keypad1", RETROK_KP1 },
{ "keypad2", RETROK_KP2 },
{ "keypad3", RETROK_KP3 },
{ "keypad4", RETROK_KP4 },
{ "keypad5", RETROK_KP5 },
{ "keypad6", RETROK_KP6 },
{ "keypad7", RETROK_KP7 },
{ "keypad8", RETROK_KP8 },
{ "keypad9", RETROK_KP9 },
{ "period", RETROK_PERIOD },
{ "capslock", RETROK_CAPSLOCK },
{ "numlock", RETROK_NUMLOCK },
{ "backspace", RETROK_BACKSPACE },
{ "multiply", RETROK_KP_MULTIPLY },
{ "divide", RETROK_KP_DIVIDE },
{ "print_screen", RETROK_PRINT },
{ "scroll_lock", RETROK_SCROLLOCK },
{ "tilde", RETROK_BACKQUOTE },
{ "backquote", RETROK_BACKQUOTE },
{ "pause", RETROK_PAUSE },
{ "nul", RETROK_UNKNOWN },
};
static struct retro_keybind *find_retro_bind(unsigned port, int id)
@ -693,7 +692,7 @@ static int find_sk_bind(const char *str)
static int find_sk_key(const char *str)
{
if (strlen(str) == 1 && isalpha(*str))
return (int)SK_a + (tolower(*str) - (int)'a');
return (int)RETROK_a + (tolower(*str) - (int)'a');
else
return find_sk_bind(str);
}
@ -708,7 +707,7 @@ static void read_keybinds_keyboard(config_file_t *conf, unsigned player, unsigne
int key = find_sk_key(tmp);
if (key >= 0)
bind->key = (enum rarch_key)key;
bind->key = (enum retro_key)key;
}
}
@ -814,8 +813,8 @@ static void save_keybind_key(config_file_t *conf,
char ascii[2] = {0};
const char *btn = ascii;
if (bind->key >= SK_a && bind->key <= SK_z)
ascii[0] = 'a' + (bind->key - SK_a);
if (bind->key >= RETROK_a && bind->key <= RETROK_z)
ascii[0] = 'a' + (bind->key - RETROK_a);
else
{
for (unsigned i = 0; i < sizeof(sk_map) / sizeof(sk_map[0]); i++)