mirror of
https://github.com/libretro/RetroArch
synced 2025-02-23 15:40:35 +00:00
(RARCH_CONSOLE) Split up input code into retroarch_console_input.c -
beter segregation of input code
This commit is contained in:
parent
86067e3aeb
commit
4ed249fe18
@ -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;
|
||||
|
@ -22,6 +22,7 @@
|
||||
CONSOLE EXTENSIONS
|
||||
============================================================ */
|
||||
#include "../retroarch_console.c"
|
||||
#include "../retroarch_console_input.c"
|
||||
|
||||
#ifdef HAVE_ZLIB
|
||||
#include "../retroarch_rzlib.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
|
||||
============================================================ */
|
||||
|
@ -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
|
||||
============================================================ */
|
||||
|
222
console/retroarch_console_input.c
Normal file
222
console/retroarch_console_input.c
Normal file
@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
#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]));
|
||||
}
|
||||
}
|
@ -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
|
||||
|
@ -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
|
||||
|
34
wii/input.c
34
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,
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user