From 811abcf6122b0c42849b61553ac9daed95aaf08a Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 25 Jul 2012 21:02:01 +0200 Subject: [PATCH] (RARCH_CONSOLE) Further Input rewrite for console ports --- 360/xinput_360_input.c | 28 +++++++++ 360/xinput_360_input.h | 38 ++++++++++++ console/console_settings.c | 4 +- console/console_settings.h | 2 +- console/libretro_mgmt.c | 4 +- console/libretro_mgmt.h | 3 +- console/retroarch_console_input.c | 46 +-------------- console/retroarch_console_input.h | 96 +------------------------------ driver.h | 3 + input/null.c | 5 ++ ps3/frontend/main.c | 4 +- ps3/ps3_input.c | 21 +++++++ ps3/ps3_input.h | 38 ++++++++++++ wii/input.c | 6 +- xbox1/xinput_xbox_input.c | 28 +++++++++ xbox1/xinput_xbox_input.h | 38 ++++++++++++ xdk/frontend/main.c | 4 +- 17 files changed, 219 insertions(+), 149 deletions(-) diff --git a/360/xinput_360_input.c b/360/xinput_360_input.c index 71da9458e2..7b9b6aed62 100644 --- a/360/xinput_360_input.c +++ b/360/xinput_360_input.c @@ -197,6 +197,33 @@ static bool xinput_input_key_pressed(void *data, int key) return retval; } +static void xinput_set_default_keybind_lut(void) +{ + 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; +} + const input_driver_t input_xinput = { xinput_input_init, @@ -204,5 +231,6 @@ const input_driver_t input_xinput = xinput_input_state, xinput_input_key_pressed, xinput_input_free_input, + xinput_set_default_keybind_lut, "xinput" }; diff --git a/360/xinput_360_input.h b/360/xinput_360_input.h index 229aafb025..1c83129cd7 100644 --- a/360/xinput_360_input.h +++ b/360/xinput_360_input.h @@ -30,6 +30,44 @@ enum { XINPUT_GAMEPAD_RIGHT_TRIGGER = 1 << 25 }; +enum xdk_device_id +{ + XDK_DEVICE_ID_JOYPAD_B = 0, + XDK_DEVICE_ID_JOYPAD_A, + XDK_DEVICE_ID_JOYPAD_Y, + XDK_DEVICE_ID_JOYPAD_X, + XDK_DEVICE_ID_JOYPAD_UP, + XDK_DEVICE_ID_JOYPAD_DOWN, + XDK_DEVICE_ID_JOYPAD_LEFT, + XDK_DEVICE_ID_JOYPAD_RIGHT, + XDK_DEVICE_ID_JOYPAD_BACK, + XDK_DEVICE_ID_JOYPAD_START, + XDK_DEVICE_ID_JOYPAD_LB, + XDK_DEVICE_ID_JOYPAD_LEFT_TRIGGER, + XDK_DEVICE_ID_LSTICK_THUMB, + XDK_DEVICE_ID_JOYPAD_RB, + XDK_DEVICE_ID_JOYPAD_RIGHT_TRIGGER, + XDK_DEVICE_ID_RSTICK_THUMB, + XDK_DEVICE_ID_LSTICK_LEFT, + XDK_DEVICE_ID_LSTICK_RIGHT, + XDK_DEVICE_ID_LSTICK_UP, + XDK_DEVICE_ID_LSTICK_DOWN, + XDK_DEVICE_ID_LSTICK_LEFT_DPAD, + XDK_DEVICE_ID_LSTICK_RIGHT_DPAD, + XDK_DEVICE_ID_LSTICK_UP_DPAD, + XDK_DEVICE_ID_LSTICK_DOWN_DPAD, + XDK_DEVICE_ID_RSTICK_LEFT, + XDK_DEVICE_ID_RSTICK_RIGHT, + XDK_DEVICE_ID_RSTICK_UP, + XDK_DEVICE_ID_RSTICK_DOWN, + XDK_DEVICE_ID_RSTICK_LEFT_DPAD, + XDK_DEVICE_ID_RSTICK_RIGHT_DPAD, + XDK_DEVICE_ID_RSTICK_UP_DPAD, + XDK_DEVICE_ID_RSTICK_DOWN_DPAD, + + RARCH_LAST_PLATFORM_KEY +}; + #define DEADZONE (16000) extern void xdk360_input_map_dpad_to_stick(uint32_t map_dpad_enum, uint32_t controller_id); diff --git a/console/console_settings.c b/console/console_settings.c index d494e40611..8d5fe67323 100644 --- a/console/console_settings.c +++ b/console/console_settings.c @@ -296,7 +296,7 @@ void rarch_settings_create_menu_item_label(char * str, unsigned setting, size_t } } -void rarch_settings_set_default (void) +void rarch_settings_set_default (const input_driver_t *input) { // g_settings g_settings.rewind_enable = false; @@ -323,7 +323,7 @@ void rarch_settings_set_default (void) g_settings.video.msg_pos_y = 0.90f; g_settings.video.aspect_ratio = -1.0f; - rarch_input_set_controls_default(); + rarch_input_set_controls_default(input); // g_console g_console.block_config_read = true; diff --git a/console/console_settings.h b/console/console_settings.h index a7022cfe32..fa0affb200 100644 --- a/console/console_settings.h +++ b/console/console_settings.h @@ -105,7 +105,7 @@ enum void rarch_settings_change(unsigned setting); void rarch_settings_default(unsigned setting); void rarch_settings_msg(unsigned setting, unsigned delay); -void rarch_settings_set_default (void); +void rarch_settings_set_default (const input_driver_t *input); void rarch_settings_create_menu_item_label(char * str, unsigned setting, size_t size); void rarch_settings_create_menu_item_label_w(wchar_t *strwbuf, unsigned setting, size_t size); diff --git a/console/libretro_mgmt.c b/console/libretro_mgmt.c index 3dd0ef9958..3362be5ff5 100644 --- a/console/libretro_mgmt.c +++ b/console/libretro_mgmt.c @@ -140,7 +140,7 @@ end: dir_list_free(dir_list); } -void rarch_configure_libretro(const char *path_prefix, const char * extension) +void rarch_configure_libretro(const input_driver_t *input, const char *path_prefix, const char * extension) { char full_path[1024]; snprintf(full_path, sizeof(full_path), "%sCORE%s", path_prefix, extension); @@ -148,7 +148,7 @@ void rarch_configure_libretro(const char *path_prefix, const char * extension) bool find_libretro_file = rarch_configure_libretro_core(full_path, path_prefix, path_prefix, default_paths.config_file, extension); - rarch_settings_set_default(); + rarch_settings_set_default(input); rarch_config_load(default_paths.config_file, path_prefix, extension, find_libretro_file); init_libretro_sym(); } diff --git a/console/libretro_mgmt.h b/console/libretro_mgmt.h index 936f31106b..e7713f07eb 100644 --- a/console/libretro_mgmt.h +++ b/console/libretro_mgmt.h @@ -18,6 +18,7 @@ #define LIBRETRO_MGMT_H__ #include "../boolean.h" +#include "../driver.h" enum { @@ -30,6 +31,6 @@ enum void rarch_manage_libretro_set_first_file(char *first_file, size_t size_of_first_file, const char *libretro_path, const char * exe_ext); bool rarch_configure_libretro_core(const char *full_path, const char *tmp_path, const char *libretro_path, const char *config_path, const char *extension); -void rarch_configure_libretro(const char *path_prefix, const char * extension); +void rarch_configure_libretro(const input_driver_t *input, const char *path_prefix, const char * extension); #endif diff --git a/console/retroarch_console_input.c b/console/retroarch_console_input.c index 3ac556add0..a86977449a 100644 --- a/console/retroarch_console_input.c +++ b/console/retroarch_console_input.c @@ -134,50 +134,10 @@ void rarch_input_set_default_keybinds(unsigned player) g_settings.input.dpad_emulation[player] = DPAD_EMULATION_LSTICK; } -void rarch_input_set_controls_default (void) +void rarch_input_set_controls_default (const input_driver_t *input) { -#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 + input->set_default_keybind_lut(); + for(uint32_t x = 0; x < MAX_PLAYERS; x++) rarch_input_set_default_keybinds(x); } diff --git a/console/retroarch_console_input.h b/console/retroarch_console_input.h index 206c2ca76f..3063bf57a8 100644 --- a/console/retroarch_console_input.h +++ b/console/retroarch_console_input.h @@ -41,100 +41,6 @@ enum DPAD_EMULATION_RSTICK }; -#ifdef _XBOX360 -#include "../360/xinput_360_input.h" -#endif - -#if defined(__CELLOS_LV2__) -#include "../ps3/ps3_input.h" -enum ps3_device_id -{ - PS3_DEVICE_ID_JOYPAD_CIRCLE = 0, - PS3_DEVICE_ID_JOYPAD_CROSS, - PS3_DEVICE_ID_JOYPAD_TRIANGLE, - PS3_DEVICE_ID_JOYPAD_SQUARE, - PS3_DEVICE_ID_JOYPAD_UP, - PS3_DEVICE_ID_JOYPAD_DOWN, - PS3_DEVICE_ID_JOYPAD_LEFT, - PS3_DEVICE_ID_JOYPAD_RIGHT, - PS3_DEVICE_ID_JOYPAD_SELECT, - PS3_DEVICE_ID_JOYPAD_START, - PS3_DEVICE_ID_JOYPAD_L1, - PS3_DEVICE_ID_JOYPAD_L2, - PS3_DEVICE_ID_JOYPAD_L3, - PS3_DEVICE_ID_JOYPAD_R1, - PS3_DEVICE_ID_JOYPAD_R2, - PS3_DEVICE_ID_JOYPAD_R3, - PS3_DEVICE_ID_LSTICK_LEFT, - PS3_DEVICE_ID_LSTICK_RIGHT, - PS3_DEVICE_ID_LSTICK_UP, - PS3_DEVICE_ID_LSTICK_DOWN, - PS3_DEVICE_ID_LSTICK_LEFT_DPAD, - PS3_DEVICE_ID_LSTICK_RIGHT_DPAD, - PS3_DEVICE_ID_LSTICK_UP_DPAD, - PS3_DEVICE_ID_LSTICK_DOWN_DPAD, - PS3_DEVICE_ID_RSTICK_LEFT, - PS3_DEVICE_ID_RSTICK_RIGHT, - PS3_DEVICE_ID_RSTICK_UP, - PS3_DEVICE_ID_RSTICK_DOWN, - PS3_DEVICE_ID_RSTICK_LEFT_DPAD, - PS3_DEVICE_ID_RSTICK_RIGHT_DPAD, - PS3_DEVICE_ID_RSTICK_UP_DPAD, - PS3_DEVICE_ID_RSTICK_DOWN_DPAD, - - RARCH_LAST_PLATFORM_KEY -}; - -#elif defined(_XBOX) - -enum xdk_device_id -{ - XDK_DEVICE_ID_JOYPAD_B = 0, - XDK_DEVICE_ID_JOYPAD_A, - XDK_DEVICE_ID_JOYPAD_Y, - XDK_DEVICE_ID_JOYPAD_X, - XDK_DEVICE_ID_JOYPAD_UP, - XDK_DEVICE_ID_JOYPAD_DOWN, - XDK_DEVICE_ID_JOYPAD_LEFT, - XDK_DEVICE_ID_JOYPAD_RIGHT, - XDK_DEVICE_ID_JOYPAD_BACK, - XDK_DEVICE_ID_JOYPAD_START, - XDK_DEVICE_ID_JOYPAD_LB, - XDK_DEVICE_ID_JOYPAD_LEFT_TRIGGER, - XDK_DEVICE_ID_LSTICK_THUMB, - XDK_DEVICE_ID_JOYPAD_RB, - XDK_DEVICE_ID_JOYPAD_RIGHT_TRIGGER, - XDK_DEVICE_ID_RSTICK_THUMB, - XDK_DEVICE_ID_LSTICK_LEFT, - XDK_DEVICE_ID_LSTICK_RIGHT, - XDK_DEVICE_ID_LSTICK_UP, - XDK_DEVICE_ID_LSTICK_DOWN, - XDK_DEVICE_ID_LSTICK_LEFT_DPAD, - XDK_DEVICE_ID_LSTICK_RIGHT_DPAD, - XDK_DEVICE_ID_LSTICK_UP_DPAD, - XDK_DEVICE_ID_LSTICK_DOWN_DPAD, - XDK_DEVICE_ID_RSTICK_LEFT, - XDK_DEVICE_ID_RSTICK_RIGHT, - XDK_DEVICE_ID_RSTICK_UP, - XDK_DEVICE_ID_RSTICK_DOWN, - XDK_DEVICE_ID_RSTICK_LEFT_DPAD, - XDK_DEVICE_ID_RSTICK_RIGHT_DPAD, - XDK_DEVICE_ID_RSTICK_UP_DPAD, - XDK_DEVICE_ID_RSTICK_DOWN_DPAD, - - RARCH_LAST_PLATFORM_KEY -}; - -#ifdef _XBOX1 -#include "../xbox1/xinput_xbox_input.h" -#endif -#elif defined(GEKKO) -#include -#ifdef HW_RVL -#include -#endif -#endif - extern uint64_t rarch_default_keybind_lut[RARCH_FIRST_META_KEY]; extern char rarch_default_libretro_keybind_name_lut[RARCH_FIRST_META_KEY][256]; @@ -150,7 +56,7 @@ 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); +void rarch_input_set_controls_default (const input_driver_t *input); const char *rarch_input_get_default_keybind_name (unsigned id); #endif diff --git a/driver.h b/driver.h index 3399e22196..3fdf20befe 100644 --- a/driver.h +++ b/driver.h @@ -159,6 +159,9 @@ typedef struct input_driver int16_t (*input_state)(void *data, const struct retro_keybind **retro_keybinds, unsigned port, unsigned device, unsigned index, unsigned id); bool (*key_pressed)(void *data, int key); void (*free)(void *data); +#ifdef RARCH_CONSOLE + void (*set_default_keybind_lut)(void); +#endif const char *ident; } input_driver_t; diff --git a/input/null.c b/input/null.c index a861b63d4b..4b228b4ad0 100644 --- a/input/null.c +++ b/input/null.c @@ -51,12 +51,17 @@ static void null_input_free(void *data) (void)data; } +static void null_set_default_keybind_lut(void) { } + const input_driver_t input_null = { null_input_init, null_input_poll, null_input_state, null_input_key_pressed, null_input_free, +#ifdef RARCH_CONSOLE + null_set_default_keybind_lut, +#endif "null", }; diff --git a/ps3/frontend/main.c b/ps3/frontend/main.c index fa15f3ddf5..082c82fb95 100644 --- a/ps3/frontend/main.c +++ b/ps3/frontend/main.c @@ -240,10 +240,11 @@ int main(int argc, char *argv[]) get_environment_settings(argc, argv); config_set_defaults(); + input_ps3.init(); char tmp_path[PATH_MAX]; snprintf(tmp_path, sizeof(tmp_path), "%s/", default_paths.core_dir); - rarch_configure_libretro(tmp_path, default_paths.executable_extension); + rarch_configure_libretro(&input_ps3, tmp_path, default_paths.executable_extension); #if(CELL_SDK_VERSION > 0x340000) if (g_console.screenshots_enable) @@ -268,7 +269,6 @@ int main(int argc, char *argv[]) video_gl.start(); - input_ps3.init(); #ifdef HAVE_OSKUTIL oskutil_init(&g_console.oskutil_handle, 0); diff --git a/ps3/ps3_input.c b/ps3/ps3_input.c index 232063661c..9a6454a484 100644 --- a/ps3/ps3_input.c +++ b/ps3/ps3_input.c @@ -470,12 +470,33 @@ static bool ps3_key_pressed(void *data, int key) } } +static void ps3_set_default_keybind_lut(void) +{ + 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; +} + const input_driver_t input_ps3 = { .init = ps3_input_initialize, .poll = ps3_input_poll, .input_state = ps3_input_state, .key_pressed = ps3_key_pressed, .free = ps3_free_input, + .set_default_keybind_lut = ps3_set_default_keybind_lut, .ident = "ps3", }; diff --git a/ps3/ps3_input.h b/ps3/ps3_input.h index 66cdb5c7b1..5e4436168a 100644 --- a/ps3/ps3_input.h +++ b/ps3/ps3_input.h @@ -156,6 +156,44 @@ typedef struct CellOskDialogParam dialogParam; } oskutil_params; +enum ps3_device_id +{ + PS3_DEVICE_ID_JOYPAD_CIRCLE = 0, + PS3_DEVICE_ID_JOYPAD_CROSS, + PS3_DEVICE_ID_JOYPAD_TRIANGLE, + PS3_DEVICE_ID_JOYPAD_SQUARE, + PS3_DEVICE_ID_JOYPAD_UP, + PS3_DEVICE_ID_JOYPAD_DOWN, + PS3_DEVICE_ID_JOYPAD_LEFT, + PS3_DEVICE_ID_JOYPAD_RIGHT, + PS3_DEVICE_ID_JOYPAD_SELECT, + PS3_DEVICE_ID_JOYPAD_START, + PS3_DEVICE_ID_JOYPAD_L1, + PS3_DEVICE_ID_JOYPAD_L2, + PS3_DEVICE_ID_JOYPAD_L3, + PS3_DEVICE_ID_JOYPAD_R1, + PS3_DEVICE_ID_JOYPAD_R2, + PS3_DEVICE_ID_JOYPAD_R3, + PS3_DEVICE_ID_LSTICK_LEFT, + PS3_DEVICE_ID_LSTICK_RIGHT, + PS3_DEVICE_ID_LSTICK_UP, + PS3_DEVICE_ID_LSTICK_DOWN, + PS3_DEVICE_ID_LSTICK_LEFT_DPAD, + PS3_DEVICE_ID_LSTICK_RIGHT_DPAD, + PS3_DEVICE_ID_LSTICK_UP_DPAD, + PS3_DEVICE_ID_LSTICK_DOWN_DPAD, + PS3_DEVICE_ID_RSTICK_LEFT, + PS3_DEVICE_ID_RSTICK_RIGHT, + PS3_DEVICE_ID_RSTICK_UP, + PS3_DEVICE_ID_RSTICK_DOWN, + PS3_DEVICE_ID_RSTICK_LEFT_DPAD, + PS3_DEVICE_ID_RSTICK_RIGHT_DPAD, + PS3_DEVICE_ID_RSTICK_UP_DPAD, + PS3_DEVICE_ID_RSTICK_DOWN_DPAD, + + RARCH_LAST_PLATFORM_KEY +}; + void oskutil_write_message(oskutil_params *params, const wchar_t* msg); void oskutil_write_initial_message(oskutil_params *params, const wchar_t* msg); void oskutil_init(oskutil_params *params, unsigned int containersize); diff --git a/wii/input.c b/wii/input.c index 6fe63fc4a0..219e97ba82 100644 --- a/wii/input.c +++ b/wii/input.c @@ -188,12 +188,16 @@ static bool wii_key_pressed(void *data, int key) } } +static void wii_set_default_keybind_lut(void) +{ +} + const input_driver_t input_wii = { .init = wii_input_initialize, .poll = wii_input_poll, .input_state = wii_input_state, .key_pressed = wii_key_pressed, .free = wii_free_input, + .set_default_keybind_lut = wii_set_default_keybind_lut, .ident = "wii", }; - diff --git a/xbox1/xinput_xbox_input.c b/xbox1/xinput_xbox_input.c index 5510a7163d..c680c5072d 100644 --- a/xbox1/xinput_xbox_input.c +++ b/xbox1/xinput_xbox_input.c @@ -191,6 +191,33 @@ static bool xinput_input_key_pressed(void *data, int key) return retval; } +static void xinput_set_default_keybind_lut(void) +{ + 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; +} + const input_driver_t input_xinput = { xinput_input_init, @@ -198,5 +225,6 @@ const input_driver_t input_xinput = xinput_input_state, xinput_input_key_pressed, xinput_input_free_input, + xinput_set_default_keybind_lut, "xinput" }; diff --git a/xbox1/xinput_xbox_input.h b/xbox1/xinput_xbox_input.h index 34bf1a8719..be7bc64782 100644 --- a/xbox1/xinput_xbox_input.h +++ b/xbox1/xinput_xbox_input.h @@ -44,4 +44,42 @@ enum { XINPUT1_GAMEPAD_RSTICK_DOWN_MASK = 1 << 23, }; +enum xdk_device_id +{ + XDK_DEVICE_ID_JOYPAD_B = 0, + XDK_DEVICE_ID_JOYPAD_A, + XDK_DEVICE_ID_JOYPAD_Y, + XDK_DEVICE_ID_JOYPAD_X, + XDK_DEVICE_ID_JOYPAD_UP, + XDK_DEVICE_ID_JOYPAD_DOWN, + XDK_DEVICE_ID_JOYPAD_LEFT, + XDK_DEVICE_ID_JOYPAD_RIGHT, + XDK_DEVICE_ID_JOYPAD_BACK, + XDK_DEVICE_ID_JOYPAD_START, + XDK_DEVICE_ID_JOYPAD_LB, + XDK_DEVICE_ID_JOYPAD_LEFT_TRIGGER, + XDK_DEVICE_ID_LSTICK_THUMB, + XDK_DEVICE_ID_JOYPAD_RB, + XDK_DEVICE_ID_JOYPAD_RIGHT_TRIGGER, + XDK_DEVICE_ID_RSTICK_THUMB, + XDK_DEVICE_ID_LSTICK_LEFT, + XDK_DEVICE_ID_LSTICK_RIGHT, + XDK_DEVICE_ID_LSTICK_UP, + XDK_DEVICE_ID_LSTICK_DOWN, + XDK_DEVICE_ID_LSTICK_LEFT_DPAD, + XDK_DEVICE_ID_LSTICK_RIGHT_DPAD, + XDK_DEVICE_ID_LSTICK_UP_DPAD, + XDK_DEVICE_ID_LSTICK_DOWN_DPAD, + XDK_DEVICE_ID_RSTICK_LEFT, + XDK_DEVICE_ID_RSTICK_RIGHT, + XDK_DEVICE_ID_RSTICK_UP, + XDK_DEVICE_ID_RSTICK_DOWN, + XDK_DEVICE_ID_RSTICK_LEFT_DPAD, + XDK_DEVICE_ID_RSTICK_RIGHT_DPAD, + XDK_DEVICE_ID_RSTICK_UP_DPAD, + XDK_DEVICE_ID_RSTICK_DOWN_DPAD, + + RARCH_LAST_PLATFORM_KEY +}; + #endif diff --git a/xdk/frontend/main.c b/xdk/frontend/main.c index a66adc334c..59c33fcf75 100644 --- a/xdk/frontend/main.c +++ b/xdk/frontend/main.c @@ -121,14 +121,14 @@ int main(int argc, char *argv[]) config_set_defaults(); - rarch_configure_libretro(default_paths.filesystem_root_dir, default_paths.executable_extension); + input_xinput.init(); + rarch_configure_libretro(&input_xinput, default_paths.filesystem_root_dir, default_paths.executable_extension); #if defined(HAVE_D3D8) || defined(HAVE_D3D9) video_xdk_d3d.start(); #else video_null.start(); #endif - input_xinput.init(); rarch_input_set_default_keybind_names_for_emulator();