diff --git a/input/input_luts.c b/input/input_luts.c index f4d396ebb6..c43a8816dc 100644 --- a/input/input_luts.c +++ b/input/input_luts.c @@ -16,9 +16,10 @@ * If not, see . */ -#include +#include #include "input_luts.h" +/* uint64_t default_keybind_lut[SSNES_FIRST_META_KEY]; const char *default_libsnes_keybind_name_lut[SSNES_FIRST_META_KEY] = { @@ -106,225 +107,95 @@ char platform_keybind_name_lut[SSNES_LAST_PLATFORM_KEY][256] = { "RStick D-Pad Up", "RStick D-Pad Down", }; +*/ + +struct platform_bind +{ + uint64_t joykey; + const char *label; +}; + +#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(_XBOX) +#endif uint64_t ssnes_input_find_previous_platform_key(uint64_t joykey) { - switch(joykey) - { - case CTRL_CIRCLE_MASK: - return CTRL_CIRCLE_MASK; - case CTRL_CROSS_MASK: - return CTRL_CIRCLE_MASK; - case CTRL_TRIANGLE_MASK: - return CTRL_CROSS_MASK; - case CTRL_SQUARE_MASK: - return CTRL_TRIANGLE_MASK; - case CTRL_UP_MASK: - return CTRL_SQUARE_MASK; - case CTRL_DOWN_MASK: - return CTRL_UP_MASK; - case CTRL_LEFT_MASK: - return CTRL_DOWN_MASK; - case CTRL_RIGHT_MASK: - return CTRL_LEFT_MASK; - case CTRL_SELECT_MASK: - return CTRL_RIGHT_MASK; - case CTRL_START_MASK: - return CTRL_SELECT_MASK; - case CTRL_L1_MASK: - return CTRL_START_MASK; - case CTRL_L2_MASK: - return CTRL_L1_MASK; - case CTRL_L3_MASK: - return CTRL_L2_MASK; - case CTRL_R1_MASK: - return CTRL_L3_MASK; - case CTRL_R2_MASK: - return CTRL_R1_MASK; - case CTRL_R3_MASK: - return CTRL_R2_MASK; - case CTRL_LSTICK_LEFT_MASK: - return CTRL_R3_MASK; - case CTRL_LSTICK_RIGHT_MASK: - return CTRL_LSTICK_LEFT_MASK; - case CTRL_LSTICK_UP_MASK: - return CTRL_LSTICK_RIGHT_MASK; - case CTRL_LSTICK_DOWN_MASK: - return CTRL_LSTICK_UP_MASK; - case CTRL_LEFT_MASK | CTRL_LSTICK_LEFT_MASK: - return CTRL_LSTICK_DOWN_MASK; - case CTRL_RIGHT_MASK | CTRL_LSTICK_RIGHT_MASK: - return (CTRL_LEFT_MASK | CTRL_LSTICK_LEFT_MASK); - case CTRL_UP_MASK | CTRL_LSTICK_UP_MASK: - return (CTRL_RIGHT_MASK | CTRL_LSTICK_RIGHT_MASK); - case CTRL_DOWN_MASK | CTRL_LSTICK_DOWN_MASK: - return (CTRL_UP_MASK | CTRL_LSTICK_UP_MASK); - case CTRL_RSTICK_LEFT_MASK: - return (CTRL_DOWN_MASK | CTRL_LSTICK_DOWN_MASK); - case CTRL_RSTICK_RIGHT_MASK: - return CTRL_RSTICK_LEFT_MASK; - case CTRL_RSTICK_UP_MASK: - return CTRL_RSTICK_RIGHT_MASK; - case CTRL_RSTICK_DOWN_MASK: - return CTRL_RSTICK_UP_MASK; - case CTRL_LEFT_MASK | CTRL_RSTICK_LEFT_MASK: - return CTRL_RSTICK_DOWN_MASK; - case CTRL_RIGHT_MASK | CTRL_RSTICK_RIGHT_MASK: - return (CTRL_LEFT_MASK | CTRL_RSTICK_LEFT_MASK); - case CTRL_UP_MASK | CTRL_RSTICK_UP_MASK: - return (CTRL_RIGHT_MASK | CTRL_RSTICK_RIGHT_MASK); - case CTRL_DOWN_MASK | CTRL_RSTICK_DOWN_MASK: - return (CTRL_UP_MASK | CTRL_RSTICK_UP_MASK); - } + size_t arr_size = sizeof(platform_keys) / sizeof(platform_keys[0]); - return NO_BTN; + 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 ssnes_input_find_next_platform_key(uint64_t joykey) { - switch(joykey) - { - case CTRL_CIRCLE_MASK: - return CTRL_CROSS_MASK; - case CTRL_CROSS_MASK: - return CTRL_TRIANGLE_MASK; - case CTRL_TRIANGLE_MASK: - return CTRL_SQUARE_MASK; - case CTRL_SQUARE_MASK: - return CTRL_UP_MASK; - case CTRL_UP_MASK: - return CTRL_DOWN_MASK; - case CTRL_DOWN_MASK: - return CTRL_LEFT_MASK; - case CTRL_LEFT_MASK: - return CTRL_RIGHT_MASK; - case CTRL_RIGHT_MASK: - return CTRL_SELECT_MASK; - case CTRL_SELECT_MASK: - return CTRL_START_MASK; - case CTRL_START_MASK: - return CTRL_L1_MASK; - case CTRL_L1_MASK: - return CTRL_L2_MASK; - case CTRL_L2_MASK: - return CTRL_L3_MASK; - case CTRL_L3_MASK: - return CTRL_R1_MASK; - case CTRL_R1_MASK: - return CTRL_R2_MASK; - case CTRL_R2_MASK: - return CTRL_R3_MASK; - case CTRL_R3_MASK: - return CTRL_LSTICK_LEFT_MASK; - case CTRL_LSTICK_LEFT_MASK: - return CTRL_LSTICK_RIGHT_MASK; - case CTRL_LSTICK_RIGHT_MASK: - return CTRL_LSTICK_UP_MASK; - case CTRL_LSTICK_UP_MASK: - return CTRL_LSTICK_DOWN_MASK; - case CTRL_LSTICK_DOWN_MASK: - return (CTRL_LEFT_MASK | CTRL_LSTICK_LEFT_MASK); - case CTRL_LEFT_MASK | CTRL_LSTICK_LEFT_MASK: - return (CTRL_RIGHT_MASK | CTRL_LSTICK_RIGHT_MASK); - case CTRL_RIGHT_MASK | CTRL_LSTICK_RIGHT_MASK: - return (CTRL_UP_MASK | CTRL_LSTICK_UP_MASK); - case CTRL_UP_MASK | CTRL_LSTICK_UP_MASK: - return (CTRL_DOWN_MASK | CTRL_LSTICK_DOWN_MASK); - case CTRL_DOWN_MASK | CTRL_LSTICK_DOWN_MASK: - return CTRL_RSTICK_LEFT_MASK; - case CTRL_RSTICK_LEFT_MASK: - return CTRL_RSTICK_RIGHT_MASK; - case CTRL_RSTICK_RIGHT_MASK: - return CTRL_RSTICK_UP_MASK; - case CTRL_RSTICK_UP_MASK: - return CTRL_RSTICK_DOWN_MASK; - case CTRL_RSTICK_DOWN_MASK: - return (CTRL_LEFT_MASK | CTRL_RSTICK_LEFT_MASK); - case CTRL_LEFT_MASK | CTRL_RSTICK_LEFT_MASK: - return (CTRL_RIGHT_MASK | CTRL_RSTICK_RIGHT_MASK); - case CTRL_RIGHT_MASK | CTRL_RSTICK_RIGHT_MASK: - return (CTRL_UP_MASK | CTRL_RSTICK_UP_MASK); - case CTRL_UP_MASK | CTRL_RSTICK_UP_MASK: - return (CTRL_DOWN_MASK | CTRL_RSTICK_DOWN_MASK); - case CTRL_DOWN_MASK | CTRL_RSTICK_DOWN_MASK: - return (CTRL_DOWN_MASK | CTRL_RSTICK_DOWN_MASK); - } + size_t arr_size = sizeof(platform_keys) / sizeof(platform_keys[0]); + if (platform_keys[arr_size - 1].joykey == joykey) + return joykey; - return NO_BTN; + 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 * ssnes_input_find_platform_key_label(uint64_t joykey) +const char *ssnes_input_find_platform_key_label(uint64_t joykey) { - switch(joykey) - { - case CTRL_CIRCLE_MASK: - return "Circle button"; - case CTRL_CROSS_MASK: - return "Cross button"; - case CTRL_TRIANGLE_MASK: - return "Triangle button"; - case CTRL_SQUARE_MASK: - return "Square button"; - case CTRL_UP_MASK: - return "D-Pad Up"; - case CTRL_DOWN_MASK: - return "D-Pad Down"; - case CTRL_LEFT_MASK: - return "D-Pad Left"; - case CTRL_RIGHT_MASK: - return "D-Pad Right"; - case CTRL_SELECT_MASK: - return "Select button"; - case CTRL_START_MASK: - return "Start button"; - case CTRL_L1_MASK: - return "L1 button"; - case CTRL_L2_MASK: - return "L2 button"; - case CTRL_L3_MASK: - return "L3 button"; - case CTRL_R1_MASK: - return "R1 button"; - case CTRL_R2_MASK: - return "R2 button"; - case CTRL_R3_MASK: - return "R3 button"; - case CTRL_LSTICK_LEFT_MASK: - return "LStick Left"; - case CTRL_LSTICK_RIGHT_MASK: - return "LStick Right"; - case CTRL_LSTICK_UP_MASK: - return "LStick Up"; - case CTRL_LSTICK_DOWN_MASK: - return "LStick Down"; - case CTRL_LEFT_MASK | CTRL_LSTICK_LEFT_MASK: - return "LStick D-Pad Left"; - case CTRL_RIGHT_MASK | CTRL_LSTICK_RIGHT_MASK: - return "LStick D-Pad Right"; - case CTRL_UP_MASK | CTRL_LSTICK_UP_MASK: - return "LStick D-Pad Up"; - case CTRL_DOWN_MASK | CTRL_LSTICK_DOWN_MASK: - return "LStick D-Pad Down"; - case CTRL_RSTICK_LEFT_MASK: - return "RStick Left"; - case CTRL_RSTICK_RIGHT_MASK: - return "RStick Right"; - case CTRL_RSTICK_UP_MASK: - return "RStick Up"; - case CTRL_RSTICK_DOWN_MASK: - return "RStick Down"; - case CTRL_LEFT_MASK | CTRL_RSTICK_LEFT_MASK: - return "RStick D-Pad Left"; - case CTRL_RIGHT_MASK | CTRL_RSTICK_RIGHT_MASK: - return "RStick D-Pad Right"; - case CTRL_UP_MASK | CTRL_RSTICK_UP_MASK: - return "RStick D-Pad Up"; - case CTRL_DOWN_MASK | CTRL_RSTICK_DOWN_MASK: - return "RStick D-Pad Down"; - } + if (joykey == NO_BTN) + return "No button"; - return "Unknown"; + size_t arr_size = sizeof(platform_keys) / sizeof(platform_keys[0]); + for (size_t i = 0; i < arr_size; i++) + { + if (bind_label[i].joykey == joykey) + return bind_label[i].label; + } + + return "Unknown"; } -#elif defined(_XBOX) -#endif diff --git a/input/input_luts.h b/input/input_luts.h index fc3fef6968..750573c26c 100644 --- a/input/input_luts.h +++ b/input/input_luts.h @@ -67,14 +67,16 @@ enum ps3_device_id #elif defined(_XBOX) #endif +#if 0 extern uint64_t platform_keybind_lut[SSNES_LAST_PLATFORM_KEY]; extern char platform_keybind_name_lut[SSNES_LAST_PLATFORM_KEY][256]; extern uint64_t default_keybind_lut[SSNES_FIRST_META_KEY]; extern const char *default_libsnes_keybind_name_lut[SSNES_FIRST_META_KEY]; +#endif -extern const char * ssnes_input_find_platform_key_label(uint64_t joykey); -extern uint64_t ssnes_input_find_previous_platform_key(uint64_t joykey); -extern uint64_t ssnes_input_find_next_platform_key(uint64_t joykey); +const char *ssnes_input_find_platform_key_label(uint64_t joykey); +uint64_t ssnes_input_find_previous_platform_key(uint64_t joykey); +uint64_t ssnes_input_find_next_platform_key(uint64_t joykey); #endif