From 4ed249fe182064d1e9301652a1ec9697830e463e Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 25 Jul 2012 19:35:21 +0200 Subject: [PATCH] (RARCH_CONSOLE) Split up input code into retroarch_console_input.c - beter segregation of input code --- 360/xinput_360_input.c | 37 ++++ console/griffin/griffin.c | 1 + console/retroarch_console.c | 340 ------------------------------ console/retroarch_console.h | 21 -- console/retroarch_console_input.c | 222 +++++++++++++++++++ console/retroarch_console_input.h | 16 ++ ps3/ps3_input.c | 37 ++++ wii/input.c | 34 +++ xbox1/xinput_xbox_input.c | 37 ++++ 9 files changed, 384 insertions(+), 361 deletions(-) create mode 100644 console/retroarch_console_input.c diff --git a/360/xinput_360_input.c b/360/xinput_360_input.c index 0345e6c5c6..71da9458e2 100644 --- a/360/xinput_360_input.c +++ b/360/xinput_360_input.c @@ -27,6 +27,43 @@ static uint64_t state[4]; static unsigned pads_connected; +const struct platform_bind platform_keys[] = { + { XINPUT_GAMEPAD_B, "B button" }, + { XINPUT_GAMEPAD_A, "A button" }, + { XINPUT_GAMEPAD_Y, "Y button" }, + { XINPUT_GAMEPAD_X, "X button" }, + { XINPUT_GAMEPAD_DPAD_UP, "D-Pad Up" }, + { XINPUT_GAMEPAD_DPAD_DOWN, "D-Pad Down" }, + { XINPUT_GAMEPAD_DPAD_LEFT, "D-Pad Left" }, + { XINPUT_GAMEPAD_DPAD_RIGHT, "D-Pad Right" }, + { XINPUT_GAMEPAD_BACK, "Back button" }, + { XINPUT_GAMEPAD_START, "Start button" }, + { XINPUT_GAMEPAD_LEFT_SHOULDER, "Left Shoulder" }, + { XINPUT_GAMEPAD_LEFT_TRIGGER, "Left Trigger" }, + { XINPUT_GAMEPAD_LEFT_THUMB, "Left Thumb" }, + { XINPUT_GAMEPAD_RIGHT_SHOULDER, "Right Shoulder" }, + { XINPUT_GAMEPAD_RIGHT_TRIGGER, "Right Trigger" }, + { XINPUT_GAMEPAD_RIGHT_THUMB, "Right Thumb" }, + { XINPUT_GAMEPAD_LSTICK_LEFT_MASK, "LStick Left" }, + { XINPUT_GAMEPAD_LSTICK_RIGHT_MASK, "LStick Right" }, + { XINPUT_GAMEPAD_LSTICK_UP_MASK, "LStick Up" }, + { XINPUT_GAMEPAD_LSTICK_DOWN_MASK, "LStick Down" }, + { XINPUT_GAMEPAD_DPAD_LEFT | XINPUT_GAMEPAD_LSTICK_LEFT_MASK, "LStick D-Pad Left" }, + { XINPUT_GAMEPAD_DPAD_RIGHT | XINPUT_GAMEPAD_LSTICK_RIGHT_MASK, "LStick D-Pad Right" }, + { XINPUT_GAMEPAD_DPAD_UP | XINPUT_GAMEPAD_LSTICK_UP_MASK, "LStick D-Pad Up" }, + { XINPUT_GAMEPAD_DPAD_DOWN | XINPUT_GAMEPAD_LSTICK_DOWN_MASK, "LStick D-Pad Down" }, + { XINPUT_GAMEPAD_RSTICK_LEFT_MASK, "RStick Left" }, + { XINPUT_GAMEPAD_RSTICK_RIGHT_MASK, "RStick Right" }, + { XINPUT_GAMEPAD_RSTICK_UP_MASK, "RStick Up" }, + { XINPUT_GAMEPAD_RSTICK_DOWN_MASK, "RStick Down" }, + { XINPUT_GAMEPAD_DPAD_LEFT | XINPUT_GAMEPAD_RSTICK_LEFT_MASK, "RStick D-Pad Left" }, + { XINPUT_GAMEPAD_DPAD_RIGHT | XINPUT_GAMEPAD_RSTICK_RIGHT_MASK, "RStick D-Pad Right" }, + { XINPUT_GAMEPAD_DPAD_UP | XINPUT_GAMEPAD_RSTICK_UP_MASK, "RStick D-Pad Up" }, + { XINPUT_GAMEPAD_DPAD_DOWN | XINPUT_GAMEPAD_RSTICK_DOWN_MASK, "RStick D-Pad Down" }, +}; + +const unsigned int platform_keys_size = sizeof(platform_keys); + static void xinput_input_poll(void *data) { (void)data; diff --git a/console/griffin/griffin.c b/console/griffin/griffin.c index ce0e65a102..0b5c308209 100644 --- a/console/griffin/griffin.c +++ b/console/griffin/griffin.c @@ -22,6 +22,7 @@ CONSOLE EXTENSIONS ============================================================ */ #include "../retroarch_console.c" +#include "../retroarch_console_input.c" #ifdef HAVE_ZLIB #include "../retroarch_rzlib.c" diff --git a/console/retroarch_console.c b/console/retroarch_console.c index 8417e2d917..ff51d33af2 100644 --- a/console/retroarch_console.c +++ b/console/retroarch_console.c @@ -100,346 +100,6 @@ void rarch_console_name_from_id(char *name, size_t size) } } -/*============================================================ - INPUT EXTENSIONS -============================================================ */ - -#include "retroarch_console_input.h" - -struct platform_bind -{ - uint64_t joykey; - const char *label; -}; - -uint64_t rarch_default_keybind_lut[RARCH_FIRST_META_KEY]; - -char rarch_default_libretro_keybind_name_lut[RARCH_FIRST_META_KEY][256] = { - "RetroPad Button B", /* RETRO_DEVICE_ID_JOYPAD_B */ - "RetroPad Button Y", /* RETRO_DEVICE_ID_JOYPAD_Y */ - "RetroPad Button Select", /* RETRO_DEVICE_ID_JOYPAD_SELECT */ - "RetroPad Button Start", /* RETRO_DEVICE_ID_JOYPAD_START */ - "RetroPad D-Pad Up", /* RETRO_DEVICE_ID_JOYPAD_UP */ - "RetroPad D-Pad Down", /* RETRO_DEVICE_ID_JOYPAD_DOWN */ - "RetroPad D-Pad Left", /* RETRO_DEVICE_ID_JOYPAD_LEFT */ - "RetroPad D-Pad Right", /* RETRO_DEVICE_ID_JOYPAD_RIGHT */ - "RetroPad Button A", /* RETRO_DEVICE_ID_JOYPAD_A */ - "RetroPad Button X", /* RETRO_DEVICE_ID_JOYPAD_X */ - "RetroPad Button L1", /* RETRO_DEVICE_ID_JOYPAD_L */ - "RetroPad Button R1", /* RETRO_DEVICE_ID_JOYPAD_R */ - "RetroPad Button L2", /* RETRO_DEVICE_ID_JOYPAD_L2 */ - "RetroPad Button R2", /* RETRO_DEVICE_ID_JOYPAD_R2 */ - "RetroPad Button L3", /* RETRO_DEVICE_ID_JOYPAD_L3 */ - "RetroPad Button R3", /* RETRO_DEVICE_ID_JOYPAD_R3 */ -}; - -#if defined(__CELLOS_LV2__) -static const struct platform_bind platform_keys[] = { - { CTRL_CIRCLE_MASK, "Circle button" }, - { CTRL_CROSS_MASK, "Cross button" }, - { CTRL_TRIANGLE_MASK, "Triangle button" }, - { CTRL_SQUARE_MASK, "Square button" }, - { CTRL_UP_MASK, "D-Pad Up" }, - { CTRL_DOWN_MASK, "D-Pad Down" }, - { CTRL_LEFT_MASK, "D-Pad Left" }, - { CTRL_RIGHT_MASK, "D-Pad Right" }, - { CTRL_SELECT_MASK, "Select button" }, - { CTRL_START_MASK, "Start button" }, - { CTRL_L1_MASK, "L1 button" }, - { CTRL_L2_MASK, "L2 button" }, - { CTRL_L3_MASK, "L3 button" }, - { CTRL_R1_MASK, "R1 button" }, - { CTRL_R2_MASK, "R2 button" }, - { CTRL_R3_MASK, "R3 button" }, - { CTRL_LSTICK_LEFT_MASK, "LStick Left" }, - { CTRL_LSTICK_RIGHT_MASK, "LStick Right" }, - { CTRL_LSTICK_UP_MASK, "LStick Up" }, - { CTRL_LSTICK_DOWN_MASK, "LStick Down" }, - { CTRL_LEFT_MASK | CTRL_LSTICK_LEFT_MASK, "LStick D-Pad Left" }, - { CTRL_RIGHT_MASK | CTRL_LSTICK_RIGHT_MASK, "LStick D-Pad Right" }, - { CTRL_UP_MASK | CTRL_LSTICK_UP_MASK, "LStick D-Pad Up" }, - { CTRL_DOWN_MASK | CTRL_LSTICK_DOWN_MASK, "LStick D-Pad Down" }, - { CTRL_RSTICK_LEFT_MASK, "RStick Left" }, - { CTRL_RSTICK_RIGHT_MASK, "RStick Right" }, - { CTRL_RSTICK_UP_MASK, "RStick Up" }, - { CTRL_RSTICK_DOWN_MASK, "RStick Down" }, - { CTRL_LEFT_MASK | CTRL_RSTICK_LEFT_MASK, "RStick D-Pad Left" }, - { CTRL_RIGHT_MASK | CTRL_RSTICK_RIGHT_MASK, "RStick D-Pad Right" }, - { CTRL_UP_MASK | CTRL_RSTICK_UP_MASK, "RStick D-Pad Up" }, - { CTRL_DOWN_MASK | CTRL_RSTICK_DOWN_MASK, "RStick D-Pad Down" }, -}; -#elif defined(_XBOX360) -static const struct platform_bind platform_keys[] = { - { XINPUT_GAMEPAD_B, "B button" }, - { XINPUT_GAMEPAD_A, "A button" }, - { XINPUT_GAMEPAD_Y, "Y button" }, - { XINPUT_GAMEPAD_X, "X button" }, - { XINPUT_GAMEPAD_DPAD_UP, "D-Pad Up" }, - { XINPUT_GAMEPAD_DPAD_DOWN, "D-Pad Down" }, - { XINPUT_GAMEPAD_DPAD_LEFT, "D-Pad Left" }, - { XINPUT_GAMEPAD_DPAD_RIGHT, "D-Pad Right" }, - { XINPUT_GAMEPAD_BACK, "Back button" }, - { XINPUT_GAMEPAD_START, "Start button" }, - { XINPUT_GAMEPAD_LEFT_SHOULDER, "Left Shoulder" }, - { XINPUT_GAMEPAD_LEFT_TRIGGER, "Left Trigger" }, - { XINPUT_GAMEPAD_LEFT_THUMB, "Left Thumb" }, - { XINPUT_GAMEPAD_RIGHT_SHOULDER, "Right Shoulder" }, - { XINPUT_GAMEPAD_RIGHT_TRIGGER, "Right Trigger" }, - { XINPUT_GAMEPAD_RIGHT_THUMB, "Right Thumb" }, - { XINPUT_GAMEPAD_LSTICK_LEFT_MASK, "LStick Left" }, - { XINPUT_GAMEPAD_LSTICK_RIGHT_MASK, "LStick Right" }, - { XINPUT_GAMEPAD_LSTICK_UP_MASK, "LStick Up" }, - { XINPUT_GAMEPAD_LSTICK_DOWN_MASK, "LStick Down" }, - { XINPUT_GAMEPAD_DPAD_LEFT | XINPUT_GAMEPAD_LSTICK_LEFT_MASK, "LStick D-Pad Left" }, - { XINPUT_GAMEPAD_DPAD_RIGHT | XINPUT_GAMEPAD_LSTICK_RIGHT_MASK, "LStick D-Pad Right" }, - { XINPUT_GAMEPAD_DPAD_UP | XINPUT_GAMEPAD_LSTICK_UP_MASK, "LStick D-Pad Up" }, - { XINPUT_GAMEPAD_DPAD_DOWN | XINPUT_GAMEPAD_LSTICK_DOWN_MASK, "LStick D-Pad Down" }, - { XINPUT_GAMEPAD_RSTICK_LEFT_MASK, "RStick Left" }, - { XINPUT_GAMEPAD_RSTICK_RIGHT_MASK, "RStick Right" }, - { XINPUT_GAMEPAD_RSTICK_UP_MASK, "RStick Up" }, - { XINPUT_GAMEPAD_RSTICK_DOWN_MASK, "RStick Down" }, - { XINPUT_GAMEPAD_DPAD_LEFT | XINPUT_GAMEPAD_RSTICK_LEFT_MASK, "RStick D-Pad Left" }, - { XINPUT_GAMEPAD_DPAD_RIGHT | XINPUT_GAMEPAD_RSTICK_RIGHT_MASK, "RStick D-Pad Right" }, - { XINPUT_GAMEPAD_DPAD_UP | XINPUT_GAMEPAD_RSTICK_UP_MASK, "RStick D-Pad Up" }, - { XINPUT_GAMEPAD_DPAD_DOWN | XINPUT_GAMEPAD_RSTICK_DOWN_MASK, "RStick D-Pad Down" }, -}; -#elif defined(_XBOX1) -static const struct platform_bind platform_keys[] = { - { XINPUT1_GAMEPAD_B, "B button" }, - { XINPUT1_GAMEPAD_A, "A button" }, - { XINPUT1_GAMEPAD_Y, "Y button" }, - { XINPUT1_GAMEPAD_X, "X button" }, - { XINPUT1_GAMEPAD_DPAD_UP, "D-Pad Up" }, - { XINPUT1_GAMEPAD_DPAD_DOWN, "D-Pad Down" }, - { XINPUT1_GAMEPAD_DPAD_LEFT, "D-Pad Left" }, - { XINPUT1_GAMEPAD_DPAD_RIGHT, "D-Pad Right" }, - { XINPUT1_GAMEPAD_BACK, "Back button" }, - { XINPUT1_GAMEPAD_START, "Start button" }, - { XINPUT1_GAMEPAD_WHITE, "White button" }, - { XINPUT1_GAMEPAD_LEFT_TRIGGER, "Left Trigger" }, - { XINPUT1_GAMEPAD_LEFT_THUMB, "Left Thumb" }, - { XINPUT1_GAMEPAD_BLACK, "Black button" }, - { XINPUT1_GAMEPAD_RIGHT_TRIGGER, "Right Trigger" }, - { XINPUT1_GAMEPAD_RIGHT_THUMB, "Right Thumb" }, - { XINPUT1_GAMEPAD_LSTICK_LEFT_MASK, "LStick Left" }, - { XINPUT1_GAMEPAD_LSTICK_RIGHT_MASK, "LStick Right" }, - { XINPUT1_GAMEPAD_LSTICK_UP_MASK, "LStick Up" }, - { XINPUT1_GAMEPAD_LSTICK_DOWN_MASK, "LStick Down" }, - { XINPUT1_GAMEPAD_DPAD_LEFT | XINPUT1_GAMEPAD_LSTICK_LEFT_MASK, "LStick D-Pad Left" }, - { XINPUT1_GAMEPAD_DPAD_RIGHT | XINPUT1_GAMEPAD_LSTICK_RIGHT_MASK, "LStick D-Pad Right" }, - { XINPUT1_GAMEPAD_DPAD_UP | XINPUT1_GAMEPAD_LSTICK_UP_MASK, "LStick D-Pad Up" }, - { XINPUT1_GAMEPAD_DPAD_DOWN | XINPUT1_GAMEPAD_LSTICK_DOWN_MASK, "LStick D-Pad Down" }, - { XINPUT1_GAMEPAD_RSTICK_LEFT_MASK, "RStick Left" }, - { XINPUT1_GAMEPAD_RSTICK_RIGHT_MASK, "RStick Right" }, - { XINPUT1_GAMEPAD_RSTICK_UP_MASK, "RStick Up" }, - { XINPUT1_GAMEPAD_RSTICK_DOWN_MASK, "RStick Down" }, - { XINPUT1_GAMEPAD_DPAD_LEFT | XINPUT1_GAMEPAD_RSTICK_LEFT_MASK, "RStick D-Pad Left" }, - { XINPUT1_GAMEPAD_DPAD_RIGHT | XINPUT1_GAMEPAD_RSTICK_RIGHT_MASK, "RStick D-Pad Right" }, - { XINPUT1_GAMEPAD_DPAD_UP | XINPUT1_GAMEPAD_RSTICK_UP_MASK, "RStick D-Pad Up" }, - { XINPUT1_GAMEPAD_DPAD_DOWN | XINPUT1_GAMEPAD_RSTICK_DOWN_MASK, "RStick D-Pad Down" }, -}; -#elif defined(GEKKO) -static const struct platform_bind platform_keys[] = { - { PAD_BUTTON_B, "(NGC) B button" }, - { PAD_BUTTON_A, "(NGC) A button" }, - { PAD_BUTTON_Y, "(NGC) Y button" }, - { PAD_BUTTON_X, "(NGC) X button" }, - { PAD_BUTTON_UP, "(NGC) D-Pad Up" }, - { PAD_BUTTON_DOWN, "(NGC) D-Pad Down" }, - { PAD_BUTTON_LEFT, "(NGC) D-Pad Left" }, - { PAD_BUTTON_RIGHT, "(NGC) D-Pad Right" }, - { PAD_TRIGGER_Z, "(NGC) Z trigger" }, - { PAD_BUTTON_START, "(NGC) Start button" }, - { PAD_TRIGGER_L, "(NGC) Left Trigger" }, - { PAD_TRIGGER_R, "(NGC) Right Trigger" }, -#ifdef HW_RVL - { WPAD_CLASSIC_BUTTON_B, "(Wii Classici) B button" }, - { WPAD_CLASSIC_BUTTON_A, "(Wii Classic) A button" }, - { WPAD_CLASSIC_BUTTON_Y, "(Wii Classic) Y button" }, - { WPAD_CLASSIC_BUTTON_X, "(Wii Classic) X button" }, - { WPAD_CLASSIC_BUTTON_UP, "(Wii Classic) D-Pad Up" }, - { WPAD_CLASSIC_BUTTON_DOWN, "(Wii Classic) D-Pad Down" }, - { WPAD_CLASSIC_BUTTON_LEFT, "(Wii Classic) D-Pad Left" }, - { WPAD_CLASSIC_BUTTON_RIGHT, "(Wii Classic) D-Pad Right" }, - { WPAD_CLASSIC_BUTTON_MINUS, "(Wii Classic) Select/Minus button" }, - { WPAD_CLASSIC_BUTTON_PLUS, "(Wii Classic) Start/Plus button" }, - { WPAD_CLASSIC_BUTTON_HOME, "(Wii Classic) Home button" }, - { WPAD_CLASSIC_BUTTON_FULL_L, "(Wii Classic) Left Trigger" }, - { WPAD_CLASSIC_BUTTON_FULL_R, "(Wii Classic) Right Trigger" }, - { WPAD_CLASSIC_BUTTON_ZL, "(Wii Classic) ZL button" }, - { WPAD_CLASSIC_BUTTON_ZR, "(Wii Classic) ZR button" }, -#endif -}; -#endif - -#ifdef HAVE_DEFAULT_RETROPAD_INPUT - -uint64_t rarch_input_find_previous_platform_key(uint64_t joykey) -{ - size_t arr_size = sizeof(platform_keys) / sizeof(platform_keys[0]); - - if (platform_keys[0].joykey == joykey) - return joykey; - - for (size_t i = 1; i < arr_size; i++) - { - if (platform_keys[i].joykey == joykey) - return platform_keys[i - 1].joykey; - } - - return NO_BTN; -} - -uint64_t rarch_input_find_next_platform_key(uint64_t joykey) -{ - size_t arr_size = sizeof(platform_keys) / sizeof(platform_keys[0]); - if (platform_keys[arr_size - 1].joykey == joykey) - return joykey; - - for (size_t i = 0; i < arr_size - 1; i++) - { - if (platform_keys[i].joykey == joykey) - return platform_keys[i + 1].joykey; - } - - return NO_BTN; -} - -const char *rarch_input_find_platform_key_label(uint64_t joykey) -{ - if (joykey == NO_BTN) - return "No button"; - - size_t arr_size = sizeof(platform_keys) / sizeof(platform_keys[0]); - for (size_t i = 0; i < arr_size; i++) - { - if (platform_keys[i].joykey == joykey) - return platform_keys[i].label; - } - - return "Unknown"; -} - - -void rarch_input_set_keybind(unsigned player, unsigned keybind_action, uint64_t default_retro_joypad_id) -{ - uint64_t *key = &g_settings.input.binds[player][default_retro_joypad_id].joykey; - - switch (keybind_action) - { - case KEYBIND_DECREMENT: - *key = rarch_input_find_previous_platform_key(*key); - break; - - case KEYBIND_INCREMENT: - *key = rarch_input_find_next_platform_key(*key); - break; - - case KEYBIND_DEFAULT: - *key = rarch_default_keybind_lut[default_retro_joypad_id]; - break; - - default: - break; - } -} - -void rarch_input_set_default_keybinds(unsigned player) -{ - for (unsigned i = 0; i < RARCH_FIRST_META_KEY; i++) - { - g_settings.input.binds[player][i].id = i; - g_settings.input.binds[player][i].joykey = rarch_default_keybind_lut[i]; - } - g_settings.input.dpad_emulation[player] = DPAD_EMULATION_LSTICK; -} - -void rarch_input_set_controls_default (void) -{ -#if defined(__CELLOS_LV2__) - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_B] = platform_keys[PS3_DEVICE_ID_JOYPAD_CROSS].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_Y] = platform_keys[PS3_DEVICE_ID_JOYPAD_SQUARE].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_SELECT] = platform_keys[PS3_DEVICE_ID_JOYPAD_SELECT].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_START] = platform_keys[PS3_DEVICE_ID_JOYPAD_START].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_UP] = platform_keys[PS3_DEVICE_ID_JOYPAD_UP].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_DOWN] = platform_keys[PS3_DEVICE_ID_JOYPAD_DOWN].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_LEFT] = platform_keys[PS3_DEVICE_ID_JOYPAD_LEFT].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_RIGHT] = platform_keys[PS3_DEVICE_ID_JOYPAD_RIGHT].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_A] = platform_keys[PS3_DEVICE_ID_JOYPAD_CIRCLE].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_X] = platform_keys[PS3_DEVICE_ID_JOYPAD_TRIANGLE].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_L] = platform_keys[PS3_DEVICE_ID_JOYPAD_L1].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_R] = platform_keys[PS3_DEVICE_ID_JOYPAD_R1].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_R2] = platform_keys[PS3_DEVICE_ID_JOYPAD_R2].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_R3] = platform_keys[PS3_DEVICE_ID_JOYPAD_R3].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_L2] = platform_keys[PS3_DEVICE_ID_JOYPAD_L2].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_L3] = platform_keys[PS3_DEVICE_ID_JOYPAD_L3].joykey; -#elif defined(_XBOX) - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_B] = platform_keys[XDK_DEVICE_ID_JOYPAD_A].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_Y] = platform_keys[XDK_DEVICE_ID_JOYPAD_X].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_SELECT] = platform_keys[XDK_DEVICE_ID_JOYPAD_BACK].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_START] = platform_keys[XDK_DEVICE_ID_JOYPAD_START].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_UP] = platform_keys[XDK_DEVICE_ID_JOYPAD_UP].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_DOWN] = platform_keys[XDK_DEVICE_ID_JOYPAD_DOWN].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_LEFT] = platform_keys[XDK_DEVICE_ID_JOYPAD_LEFT].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_RIGHT] = platform_keys[XDK_DEVICE_ID_JOYPAD_RIGHT].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_A] = platform_keys[XDK_DEVICE_ID_JOYPAD_B].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_X] = platform_keys[XDK_DEVICE_ID_JOYPAD_Y].joykey; -#if defined(_XBOX1) - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_L] = platform_keys[XDK_DEVICE_ID_JOYPAD_LEFT_TRIGGER].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_R] = platform_keys[XDK_DEVICE_ID_JOYPAD_RIGHT_TRIGGER].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_L2] = platform_keys[XDK_DEVICE_ID_JOYPAD_LB].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_R2] = platform_keys[XDK_DEVICE_ID_JOYPAD_RB].joykey; -#elif defined(_XBOX360) - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_L] = platform_keys[XDK_DEVICE_ID_JOYPAD_LB].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_R] = platform_keys[XDK_DEVICE_ID_JOYPAD_RB].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_L2] = platform_keys[XDK_DEVICE_ID_JOYPAD_LEFT_TRIGGER].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_R2] = platform_keys[XDK_DEVICE_ID_JOYPAD_RIGHT_TRIGGER].joykey; -#endif - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_L3] = platform_keys[XDK_DEVICE_ID_LSTICK_THUMB].joykey; - rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_R3] = platform_keys[XDK_DEVICE_ID_RSTICK_THUMB].joykey; -#endif - for(uint32_t x = 0; x < MAX_PLAYERS; x++) - rarch_input_set_default_keybinds(x); -} - -const char *rarch_input_get_default_keybind_name(unsigned id) -{ - return rarch_default_libretro_keybind_name_lut[id]; -} - -#endif - -void rarch_input_set_default_keybind_names_for_emulator(void) -{ - struct retro_system_info info; -#ifdef ANDROID - pretro_get_system_info(&info); -#else - retro_get_system_info(&info); -#endif - const char *id = info.library_name ? info.library_name : "Unknown"; - - // Genesis Plus GX/Next - if (strstr(id, "Genesis Plus GX")) - { - strlcpy(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_B], - "B button", sizeof(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_B])); - strlcpy(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_A], - "C button", sizeof(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_A])); - strlcpy(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_X], - "Y button", sizeof(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_X])); - strlcpy(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_Y], - "A button", sizeof(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_Y])); - strlcpy(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_L], - "X button", sizeof(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_L])); - strlcpy(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_R], - "Z button", sizeof(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_R])); - strlcpy(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_SELECT], - "Mode button", sizeof(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_SELECT])); - } -} - - /*============================================================ VIDEO EXTENSIONS ============================================================ */ diff --git a/console/retroarch_console.h b/console/retroarch_console.h index 3de981fd1f..4de103b1af 100644 --- a/console/retroarch_console.h +++ b/console/retroarch_console.h @@ -170,27 +170,6 @@ const char *rarch_console_get_rom_ext(void); // Transforms a library id to a name suitable as a pathname. void rarch_console_name_from_id(char *name, size_t size); -/*============================================================ - INPUT EXTENSIONS -============================================================ */ - -#ifdef HAVE_DEFAULT_RETROPAD_INPUT -const char *rarch_input_find_platform_key_label(uint64_t joykey); -uint64_t rarch_input_find_previous_platform_key(uint64_t joykey); -uint64_t rarch_input_find_next_platform_key(uint64_t joykey); - -// Sets custom default keybind names (some systems emulated by the emulator -// will need different keybind names for buttons, etc.) -void rarch_input_set_default_keybind_names_for_emulator(void); -void rarch_input_set_default_keybinds(unsigned player); - -void rarch_input_set_keybind(unsigned player, unsigned keybind_action, uint64_t default_retro_joypad_id); - -void rarch_input_set_controls_default (void); -const char *rarch_input_get_default_keybind_name (unsigned id); -#endif - - /*============================================================ RetroArch ============================================================ */ diff --git a/console/retroarch_console_input.c b/console/retroarch_console_input.c new file mode 100644 index 0000000000..3ac556add0 --- /dev/null +++ b/console/retroarch_console_input.c @@ -0,0 +1,222 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2012 - Hans-Kristian Arntzen + * Copyright (C) 2011-2012 - Daniel De Matteis + * + * 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 . + */ + +#include +#include +#include +#include +#include "../boolean.h" +#include "retroarch_console_input.h" + +struct platform_bind +{ + uint64_t joykey; + const char *label; +}; + +uint64_t rarch_default_keybind_lut[RARCH_FIRST_META_KEY]; + +char rarch_default_libretro_keybind_name_lut[RARCH_FIRST_META_KEY][256] = { + "RetroPad Button B", /* RETRO_DEVICE_ID_JOYPAD_B */ + "RetroPad Button Y", /* RETRO_DEVICE_ID_JOYPAD_Y */ + "RetroPad Button Select", /* RETRO_DEVICE_ID_JOYPAD_SELECT */ + "RetroPad Button Start", /* RETRO_DEVICE_ID_JOYPAD_START */ + "RetroPad D-Pad Up", /* RETRO_DEVICE_ID_JOYPAD_UP */ + "RetroPad D-Pad Down", /* RETRO_DEVICE_ID_JOYPAD_DOWN */ + "RetroPad D-Pad Left", /* RETRO_DEVICE_ID_JOYPAD_LEFT */ + "RetroPad D-Pad Right", /* RETRO_DEVICE_ID_JOYPAD_RIGHT */ + "RetroPad Button A", /* RETRO_DEVICE_ID_JOYPAD_A */ + "RetroPad Button X", /* RETRO_DEVICE_ID_JOYPAD_X */ + "RetroPad Button L1", /* RETRO_DEVICE_ID_JOYPAD_L */ + "RetroPad Button R1", /* RETRO_DEVICE_ID_JOYPAD_R */ + "RetroPad Button L2", /* RETRO_DEVICE_ID_JOYPAD_L2 */ + "RetroPad Button R2", /* RETRO_DEVICE_ID_JOYPAD_R2 */ + "RetroPad Button L3", /* RETRO_DEVICE_ID_JOYPAD_L3 */ + "RetroPad Button R3", /* RETRO_DEVICE_ID_JOYPAD_R3 */ +}; + +#ifdef HAVE_DEFAULT_RETROPAD_INPUT + +extern const struct platform_bind platform_keys[]; +extern const unsigned int platform_keys_size; + +uint64_t rarch_input_find_previous_platform_key(uint64_t joykey) +{ + size_t arr_size = platform_keys_size / sizeof(platform_keys[0]); + + if (platform_keys[0].joykey == joykey) + return joykey; + + for (size_t i = 1; i < arr_size; i++) + { + if (platform_keys[i].joykey == joykey) + return platform_keys[i - 1].joykey; + } + + return NO_BTN; +} + +uint64_t rarch_input_find_next_platform_key(uint64_t joykey) +{ + size_t arr_size = platform_keys_size / sizeof(platform_keys[0]); + + if (platform_keys[arr_size - 1].joykey == joykey) + return joykey; + + for (size_t i = 0; i < arr_size - 1; i++) + { + if (platform_keys[i].joykey == joykey) + return platform_keys[i + 1].joykey; + } + + return NO_BTN; +} + +const char *rarch_input_find_platform_key_label(uint64_t joykey) +{ + if (joykey == NO_BTN) + return "No button"; + + size_t arr_size = platform_keys_size / sizeof(platform_keys[0]); + for (size_t i = 0; i < arr_size; i++) + { + if (platform_keys[i].joykey == joykey) + return platform_keys[i].label; + } + + return "Unknown"; +} + + +void rarch_input_set_keybind(unsigned player, unsigned keybind_action, uint64_t default_retro_joypad_id) +{ + uint64_t *key = &g_settings.input.binds[player][default_retro_joypad_id].joykey; + + switch (keybind_action) + { + case KEYBIND_DECREMENT: + *key = rarch_input_find_previous_platform_key(*key); + break; + + case KEYBIND_INCREMENT: + *key = rarch_input_find_next_platform_key(*key); + break; + + case KEYBIND_DEFAULT: + *key = rarch_default_keybind_lut[default_retro_joypad_id]; + break; + + default: + break; + } +} + +void rarch_input_set_default_keybinds(unsigned player) +{ + for (unsigned i = 0; i < RARCH_FIRST_META_KEY; i++) + { + g_settings.input.binds[player][i].id = i; + g_settings.input.binds[player][i].joykey = rarch_default_keybind_lut[i]; + } + g_settings.input.dpad_emulation[player] = DPAD_EMULATION_LSTICK; +} + +void rarch_input_set_controls_default (void) +{ +#if defined(__CELLOS_LV2__) + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_B] = platform_keys[PS3_DEVICE_ID_JOYPAD_CROSS].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_Y] = platform_keys[PS3_DEVICE_ID_JOYPAD_SQUARE].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_SELECT] = platform_keys[PS3_DEVICE_ID_JOYPAD_SELECT].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_START] = platform_keys[PS3_DEVICE_ID_JOYPAD_START].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_UP] = platform_keys[PS3_DEVICE_ID_JOYPAD_UP].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_DOWN] = platform_keys[PS3_DEVICE_ID_JOYPAD_DOWN].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_LEFT] = platform_keys[PS3_DEVICE_ID_JOYPAD_LEFT].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_RIGHT] = platform_keys[PS3_DEVICE_ID_JOYPAD_RIGHT].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_A] = platform_keys[PS3_DEVICE_ID_JOYPAD_CIRCLE].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_X] = platform_keys[PS3_DEVICE_ID_JOYPAD_TRIANGLE].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_L] = platform_keys[PS3_DEVICE_ID_JOYPAD_L1].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_R] = platform_keys[PS3_DEVICE_ID_JOYPAD_R1].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_R2] = platform_keys[PS3_DEVICE_ID_JOYPAD_R2].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_R3] = platform_keys[PS3_DEVICE_ID_JOYPAD_R3].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_L2] = platform_keys[PS3_DEVICE_ID_JOYPAD_L2].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_L3] = platform_keys[PS3_DEVICE_ID_JOYPAD_L3].joykey; +#elif defined(_XBOX) + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_B] = platform_keys[XDK_DEVICE_ID_JOYPAD_A].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_Y] = platform_keys[XDK_DEVICE_ID_JOYPAD_X].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_SELECT] = platform_keys[XDK_DEVICE_ID_JOYPAD_BACK].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_START] = platform_keys[XDK_DEVICE_ID_JOYPAD_START].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_UP] = platform_keys[XDK_DEVICE_ID_JOYPAD_UP].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_DOWN] = platform_keys[XDK_DEVICE_ID_JOYPAD_DOWN].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_LEFT] = platform_keys[XDK_DEVICE_ID_JOYPAD_LEFT].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_RIGHT] = platform_keys[XDK_DEVICE_ID_JOYPAD_RIGHT].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_A] = platform_keys[XDK_DEVICE_ID_JOYPAD_B].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_X] = platform_keys[XDK_DEVICE_ID_JOYPAD_Y].joykey; +#if defined(_XBOX1) + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_L] = platform_keys[XDK_DEVICE_ID_JOYPAD_LEFT_TRIGGER].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_R] = platform_keys[XDK_DEVICE_ID_JOYPAD_RIGHT_TRIGGER].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_L2] = platform_keys[XDK_DEVICE_ID_JOYPAD_LB].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_R2] = platform_keys[XDK_DEVICE_ID_JOYPAD_RB].joykey; +#elif defined(_XBOX360) + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_L] = platform_keys[XDK_DEVICE_ID_JOYPAD_LB].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_R] = platform_keys[XDK_DEVICE_ID_JOYPAD_RB].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_L2] = platform_keys[XDK_DEVICE_ID_JOYPAD_LEFT_TRIGGER].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_R2] = platform_keys[XDK_DEVICE_ID_JOYPAD_RIGHT_TRIGGER].joykey; +#endif + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_L3] = platform_keys[XDK_DEVICE_ID_LSTICK_THUMB].joykey; + rarch_default_keybind_lut[RETRO_DEVICE_ID_JOYPAD_R3] = platform_keys[XDK_DEVICE_ID_RSTICK_THUMB].joykey; +#endif + for(uint32_t x = 0; x < MAX_PLAYERS; x++) + rarch_input_set_default_keybinds(x); +} + +const char *rarch_input_get_default_keybind_name(unsigned id) +{ + return rarch_default_libretro_keybind_name_lut[id]; +} + +#endif + +/* TODO: Hackish, try to do this in a cleaner, more extensible and less hardcoded way */ + +void rarch_input_set_default_keybind_names_for_emulator(void) +{ + struct retro_system_info info; +#ifdef ANDROID + pretro_get_system_info(&info); +#else + retro_get_system_info(&info); +#endif + const char *id = info.library_name ? info.library_name : "Unknown"; + + // Genesis Plus GX/Next + if (strstr(id, "Genesis Plus GX")) + { + strlcpy(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_B], + "B button", sizeof(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_B])); + strlcpy(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_A], + "C button", sizeof(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_A])); + strlcpy(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_X], + "Y button", sizeof(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_X])); + strlcpy(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_Y], + "A button", sizeof(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_Y])); + strlcpy(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_L], + "X button", sizeof(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_L])); + strlcpy(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_R], + "Z button", sizeof(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_R])); + strlcpy(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_SELECT], + "Mode button", sizeof(rarch_default_libretro_keybind_name_lut[RETRO_DEVICE_ID_JOYPAD_SELECT])); + } +} diff --git a/console/retroarch_console_input.h b/console/retroarch_console_input.h index bf4af5ad86..206c2ca76f 100644 --- a/console/retroarch_console_input.h +++ b/console/retroarch_console_input.h @@ -138,4 +138,20 @@ enum xdk_device_id extern uint64_t rarch_default_keybind_lut[RARCH_FIRST_META_KEY]; extern char rarch_default_libretro_keybind_name_lut[RARCH_FIRST_META_KEY][256]; +#ifdef HAVE_DEFAULT_RETROPAD_INPUT +const char *rarch_input_find_platform_key_label(uint64_t joykey); +uint64_t rarch_input_find_previous_platform_key(uint64_t joykey); +uint64_t rarch_input_find_next_platform_key(uint64_t joykey); + +// Sets custom default keybind names (some systems emulated by the emulator +// will need different keybind names for buttons, etc.) +void rarch_input_set_default_keybind_names_for_emulator(void); +void rarch_input_set_default_keybinds(unsigned player); + +void rarch_input_set_keybind(unsigned player, unsigned keybind_action, uint64_t default_retro_joypad_id); + +void rarch_input_set_controls_default (void); +const char *rarch_input_get_default_keybind_name (unsigned id); +#endif + #endif diff --git a/ps3/ps3_input.c b/ps3/ps3_input.c index 24b1511367..232063661c 100644 --- a/ps3/ps3_input.c +++ b/ps3/ps3_input.c @@ -97,6 +97,43 @@ CellMouseData ps3_mouse_input_poll_device(uint32_t id) #define MAP(x) (x & 0xFF) +const struct platform_bind platform_keys[] = { + { CTRL_CIRCLE_MASK, "Circle button" }, + { CTRL_CROSS_MASK, "Cross button" }, + { CTRL_TRIANGLE_MASK, "Triangle button" }, + { CTRL_SQUARE_MASK, "Square button" }, + { CTRL_UP_MASK, "D-Pad Up" }, + { CTRL_DOWN_MASK, "D-Pad Down" }, + { CTRL_LEFT_MASK, "D-Pad Left" }, + { CTRL_RIGHT_MASK, "D-Pad Right" }, + { CTRL_SELECT_MASK, "Select button" }, + { CTRL_START_MASK, "Start button" }, + { CTRL_L1_MASK, "L1 button" }, + { CTRL_L2_MASK, "L2 button" }, + { CTRL_L3_MASK, "L3 button" }, + { CTRL_R1_MASK, "R1 button" }, + { CTRL_R2_MASK, "R2 button" }, + { CTRL_R3_MASK, "R3 button" }, + { CTRL_LSTICK_LEFT_MASK, "LStick Left" }, + { CTRL_LSTICK_RIGHT_MASK, "LStick Right" }, + { CTRL_LSTICK_UP_MASK, "LStick Up" }, + { CTRL_LSTICK_DOWN_MASK, "LStick Down" }, + { CTRL_LEFT_MASK | CTRL_LSTICK_LEFT_MASK, "LStick D-Pad Left" }, + { CTRL_RIGHT_MASK | CTRL_LSTICK_RIGHT_MASK, "LStick D-Pad Right" }, + { CTRL_UP_MASK | CTRL_LSTICK_UP_MASK, "LStick D-Pad Up" }, + { CTRL_DOWN_MASK | CTRL_LSTICK_DOWN_MASK, "LStick D-Pad Down" }, + { CTRL_RSTICK_LEFT_MASK, "RStick Left" }, + { CTRL_RSTICK_RIGHT_MASK, "RStick Right" }, + { CTRL_RSTICK_UP_MASK, "RStick Up" }, + { CTRL_RSTICK_DOWN_MASK, "RStick Down" }, + { CTRL_LEFT_MASK | CTRL_RSTICK_LEFT_MASK, "RStick D-Pad Left" }, + { CTRL_RIGHT_MASK | CTRL_RSTICK_RIGHT_MASK, "RStick D-Pad Right" }, + { CTRL_UP_MASK | CTRL_RSTICK_UP_MASK, "RStick D-Pad Up" }, + { CTRL_DOWN_MASK | CTRL_RSTICK_DOWN_MASK, "RStick D-Pad Down" }, +}; + +const unsigned int platform_keys_size = sizeof(platform_keys); + static uint64_t state[MAX_PADS]; static unsigned pads_connected; #ifdef HAVE_MOUSE diff --git a/wii/input.c b/wii/input.c index f1a4ca8a52..6fe63fc4a0 100644 --- a/wii/input.c +++ b/wii/input.c @@ -30,6 +30,40 @@ static bool pad_state[5][RARCH_FIRST_META_KEY]; /* Gamecube pads */ static bool wpad_state[5][RARCH_FIRST_META_KEY]; /* Wii Classic pads */ #endif +const struct platform_bind platform_keys[] = { + { PAD_BUTTON_B, "(NGC) B button" }, + { PAD_BUTTON_A, "(NGC) A button" }, + { PAD_BUTTON_Y, "(NGC) Y button" }, + { PAD_BUTTON_X, "(NGC) X button" }, + { PAD_BUTTON_UP, "(NGC) D-Pad Up" }, + { PAD_BUTTON_DOWN, "(NGC) D-Pad Down" }, + { PAD_BUTTON_LEFT, "(NGC) D-Pad Left" }, + { PAD_BUTTON_RIGHT, "(NGC) D-Pad Right" }, + { PAD_TRIGGER_Z, "(NGC) Z trigger" }, + { PAD_BUTTON_START, "(NGC) Start button" }, + { PAD_TRIGGER_L, "(NGC) Left Trigger" }, + { PAD_TRIGGER_R, "(NGC) Right Trigger" }, +#ifdef HW_RVL + { WPAD_CLASSIC_BUTTON_B, "(Wii Classici) B button" }, + { WPAD_CLASSIC_BUTTON_A, "(Wii Classic) A button" }, + { WPAD_CLASSIC_BUTTON_Y, "(Wii Classic) Y button" }, + { WPAD_CLASSIC_BUTTON_X, "(Wii Classic) X button" }, + { WPAD_CLASSIC_BUTTON_UP, "(Wii Classic) D-Pad Up" }, + { WPAD_CLASSIC_BUTTON_DOWN, "(Wii Classic) D-Pad Down" }, + { WPAD_CLASSIC_BUTTON_LEFT, "(Wii Classic) D-Pad Left" }, + { WPAD_CLASSIC_BUTTON_RIGHT, "(Wii Classic) D-Pad Right" }, + { WPAD_CLASSIC_BUTTON_MINUS, "(Wii Classic) Select/Minus button" }, + { WPAD_CLASSIC_BUTTON_PLUS, "(Wii Classic) Start/Plus button" }, + { WPAD_CLASSIC_BUTTON_HOME, "(Wii Classic) Home button" }, + { WPAD_CLASSIC_BUTTON_FULL_L, "(Wii Classic) Left Trigger" }, + { WPAD_CLASSIC_BUTTON_FULL_R, "(Wii Classic) Right Trigger" }, + { WPAD_CLASSIC_BUTTON_ZL, "(Wii Classic) ZL button" }, + { WPAD_CLASSIC_BUTTON_ZR, "(Wii Classic) ZR button" }, +#endif +}; + +const unsigned int platform_keys_size = sizeof(platform_keys); + static bool g_quit; static int16_t wii_input_state(void *data, const struct retro_keybind **binds, diff --git a/xbox1/xinput_xbox_input.c b/xbox1/xinput_xbox_input.c index df0a7ab40a..5510a7163d 100644 --- a/xbox1/xinput_xbox_input.c +++ b/xbox1/xinput_xbox_input.c @@ -32,6 +32,43 @@ DWORD dwDeviceMask; bool bInserted[4]; bool bRemoved[4]; +const struct platform_bind platform_keys[] = { + { XINPUT1_GAMEPAD_B, "B button" }, + { XINPUT1_GAMEPAD_A, "A button" }, + { XINPUT1_GAMEPAD_Y, "Y button" }, + { XINPUT1_GAMEPAD_X, "X button" }, + { XINPUT1_GAMEPAD_DPAD_UP, "D-Pad Up" }, + { XINPUT1_GAMEPAD_DPAD_DOWN, "D-Pad Down" }, + { XINPUT1_GAMEPAD_DPAD_LEFT, "D-Pad Left" }, + { XINPUT1_GAMEPAD_DPAD_RIGHT, "D-Pad Right" }, + { XINPUT1_GAMEPAD_BACK, "Back button" }, + { XINPUT1_GAMEPAD_START, "Start button" }, + { XINPUT1_GAMEPAD_WHITE, "White button" }, + { XINPUT1_GAMEPAD_LEFT_TRIGGER, "Left Trigger" }, + { XINPUT1_GAMEPAD_LEFT_THUMB, "Left Thumb" }, + { XINPUT1_GAMEPAD_BLACK, "Black button" }, + { XINPUT1_GAMEPAD_RIGHT_TRIGGER, "Right Trigger" }, + { XINPUT1_GAMEPAD_RIGHT_THUMB, "Right Thumb" }, + { XINPUT1_GAMEPAD_LSTICK_LEFT_MASK, "LStick Left" }, + { XINPUT1_GAMEPAD_LSTICK_RIGHT_MASK, "LStick Right" }, + { XINPUT1_GAMEPAD_LSTICK_UP_MASK, "LStick Up" }, + { XINPUT1_GAMEPAD_LSTICK_DOWN_MASK, "LStick Down" }, + { XINPUT1_GAMEPAD_DPAD_LEFT | XINPUT1_GAMEPAD_LSTICK_LEFT_MASK, "LStick D-Pad Left" }, + { XINPUT1_GAMEPAD_DPAD_RIGHT | XINPUT1_GAMEPAD_LSTICK_RIGHT_MASK, "LStick D-Pad Right" }, + { XINPUT1_GAMEPAD_DPAD_UP | XINPUT1_GAMEPAD_LSTICK_UP_MASK, "LStick D-Pad Up" }, + { XINPUT1_GAMEPAD_DPAD_DOWN | XINPUT1_GAMEPAD_LSTICK_DOWN_MASK, "LStick D-Pad Down" }, + { XINPUT1_GAMEPAD_RSTICK_LEFT_MASK, "RStick Left" }, + { XINPUT1_GAMEPAD_RSTICK_RIGHT_MASK, "RStick Right" }, + { XINPUT1_GAMEPAD_RSTICK_UP_MASK, "RStick Up" }, + { XINPUT1_GAMEPAD_RSTICK_DOWN_MASK, "RStick Down" }, + { XINPUT1_GAMEPAD_DPAD_LEFT | XINPUT1_GAMEPAD_RSTICK_LEFT_MASK, "RStick D-Pad Left" }, + { XINPUT1_GAMEPAD_DPAD_RIGHT | XINPUT1_GAMEPAD_RSTICK_RIGHT_MASK, "RStick D-Pad Right" }, + { XINPUT1_GAMEPAD_DPAD_UP | XINPUT1_GAMEPAD_RSTICK_UP_MASK, "RStick D-Pad Up" }, + { XINPUT1_GAMEPAD_DPAD_DOWN | XINPUT1_GAMEPAD_RSTICK_DOWN_MASK, "RStick D-Pad Down" }, +}; + +const unsigned int platform_keys_size = sizeof(platform_keys); + #define DEADZONE (16000) static unsigned pads_connected;