diff --git a/menu/menu_cbs.h b/menu/menu_cbs.h index 81213cdaa4..0b4936f702 100644 --- a/menu/menu_cbs.h +++ b/menu/menu_cbs.h @@ -33,15 +33,6 @@ RETRO_BEGIN_DECLS -typedef struct key_desc -{ - /* libretro key id */ - unsigned key; - - /* description */ - char desc[32]; -} key_desc_t; - enum { ACTION_OK_DL_DEFAULT = 0, diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 6b0dcaaf57..49d780921d 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -54,6 +54,228 @@ #include "../input/input_remapping.h" #include "../performance_counters.h" +struct key_desc key_descriptors[RARCH_MAX_KEYS] = +{ + {RETROK_FIRST, "Unmapped"}, + {RETROK_BACKSPACE, "Backspace"}, + {RETROK_TAB, "Tab"}, + {RETROK_CLEAR, "Clear"}, + {RETROK_RETURN, "Return"}, + {RETROK_PAUSE, "Pause"}, + {RETROK_ESCAPE, "Escape"}, + {RETROK_SPACE, "Space"}, + {RETROK_EXCLAIM, "!"}, + {RETROK_QUOTEDBL, "\""}, + {RETROK_HASH, "#"}, + {RETROK_DOLLAR, "$"}, + {RETROK_AMPERSAND, "&"}, + {RETROK_QUOTE, "\'"}, + {RETROK_LEFTPAREN, "("}, + {RETROK_RIGHTPAREN, ")"}, + {RETROK_ASTERISK, "*"}, + {RETROK_PLUS, "+"}, + {RETROK_COMMA, ","}, + {RETROK_MINUS, "-"}, + {RETROK_PERIOD, "."}, + {RETROK_SLASH, "/"}, + {RETROK_0, "0"}, + {RETROK_1, "1"}, + {RETROK_2, "2"}, + {RETROK_3, "3"}, + {RETROK_4, "4"}, + {RETROK_5, "5"}, + {RETROK_6, "6"}, + {RETROK_7, "7"}, + {RETROK_8, "8"}, + {RETROK_9, "9"}, + {RETROK_COLON, ":"}, + {RETROK_SEMICOLON, ";"}, + {RETROK_LESS, "<"}, + {RETROK_EQUALS, "="}, + {RETROK_GREATER, ">"}, + {RETROK_QUESTION, "?"}, + {RETROK_AT, "@"}, + {RETROK_LEFTBRACKET, "["}, + {RETROK_BACKSLASH, "\\"}, + {RETROK_RIGHTBRACKET, "]"}, + {RETROK_CARET, "^"}, + {RETROK_UNDERSCORE, "_"}, + {RETROK_BACKQUOTE, "`"}, + {RETROK_a, "A"}, + {RETROK_b, "B"}, + {RETROK_c, "C"}, + {RETROK_d, "D"}, + {RETROK_e, "E"}, + {RETROK_f, "F"}, + {RETROK_g, "G"}, + {RETROK_h, "H"}, + {RETROK_i, "I"}, + {RETROK_j, "J"}, + {RETROK_k, "K"}, + {RETROK_l, "L"}, + {RETROK_m, "M"}, + {RETROK_n, "N"}, + {RETROK_o, "O"}, + {RETROK_p, "P"}, + {RETROK_q, "Q"}, + {RETROK_r, "R"}, + {RETROK_s, "S"}, + {RETROK_t, "T"}, + {RETROK_u, "U"}, + {RETROK_v, "V"}, + {RETROK_w, "W"}, + {RETROK_x, "X"}, + {RETROK_y, "Y"}, + {RETROK_z, "Z"}, + {RETROK_DELETE, "Delete"}, + + {RETROK_KP0, "Numpad 0"}, + {RETROK_KP1, "Numpad 1"}, + {RETROK_KP2, "Numpad 2"}, + {RETROK_KP3, "Numpad 3"}, + {RETROK_KP4, "Numpad 4"}, + {RETROK_KP5, "Numpad 5"}, + {RETROK_KP6, "Numpad 6"}, + {RETROK_KP7, "Numpad 7"}, + {RETROK_KP8, "Numpad 8"}, + {RETROK_KP9, "Numpad 9"}, + {RETROK_KP_PERIOD, "Numpad ."}, + {RETROK_KP_DIVIDE, "Numpad /"}, + {RETROK_KP_MULTIPLY, "Numpad *"}, + {RETROK_KP_MINUS, "Numpad -"}, + {RETROK_KP_PLUS, "Numpad +"}, + {RETROK_KP_ENTER, "Numpad Enter"}, + {RETROK_KP_EQUALS, "Numpad ="}, + + {RETROK_UP, "Up"}, + {RETROK_DOWN, "Down"}, + {RETROK_RIGHT, "Right"}, + {RETROK_LEFT, "Left"}, + {RETROK_INSERT, "Insert"}, + {RETROK_HOME, "Home"}, + {RETROK_END, "End"}, + {RETROK_PAGEUP, "Page Up"}, + {RETROK_PAGEDOWN, "Page Down"}, + + {RETROK_F1, "F1"}, + {RETROK_F2, "F2"}, + {RETROK_F3, "F3"}, + {RETROK_F4, "F4"}, + {RETROK_F5, "F5"}, + {RETROK_F6, "F6"}, + {RETROK_F7, "F7"}, + {RETROK_F8, "F8"}, + {RETROK_F9, "F9"}, + {RETROK_F10, "F10"}, + {RETROK_F11, "F11"}, + {RETROK_F12, "F12"}, + {RETROK_F13, "F13"}, + {RETROK_F14, "F14"}, + {RETROK_F15, "F15"}, + + {RETROK_NUMLOCK, "Num Lock"}, + {RETROK_CAPSLOCK, "Caps Lock"}, + {RETROK_SCROLLOCK, "Scroll Lock"}, + {RETROK_RSHIFT, "Right Shift"}, + {RETROK_LSHIFT, "Left Shift"}, + {RETROK_RCTRL, "Right Control"}, + {RETROK_LCTRL, "Left Control"}, + {RETROK_RALT, "Right Alt"}, + {RETROK_LALT, "Left Alt"}, + {RETROK_RMETA, "Right Meta"}, + {RETROK_LMETA, "Left Meta"}, + {RETROK_RSUPER, "Right Super"}, + {RETROK_LSUPER, "Left Super"}, + {RETROK_MODE, "Mode"}, + {RETROK_COMPOSE, "Compose"}, + + {RETROK_HELP, "Help"}, + {RETROK_PRINT, "Print"}, + {RETROK_SYSREQ, "Sys Req"}, + {RETROK_BREAK, "Break"}, + {RETROK_MENU, "Menu"}, + {RETROK_POWER, "Power"}, + {RETROK_EURO, {-30, -126, -84, 0}}, /* "�" */ + {RETROK_UNDO, "Undo"}, + {RETROK_OEM_102, "OEM-102"} +}; + +static void *null_menu_init(void **userdata, bool video_is_threaded) +{ + menu_handle_t *menu = (menu_handle_t*)calloc(1, sizeof(*menu)); + if (!menu) + return NULL; + return menu; +} + +static int null_menu_list_bind_init(menu_file_list_cbs_t *cbs, + const char *path, const char *label, unsigned type, size_t idx) { return 0; } + +static menu_ctx_driver_t menu_ctx_null = { + NULL, /* set_texture */ + NULL, /* render_messagebox */ + NULL, /* render */ + NULL, /* frame */ + null_menu_init, + NULL, /* free */ + NULL, /* context_reset */ + NULL, /* context_destroy */ + NULL, /* populate_entries */ + NULL, /* toggle */ + NULL, /* navigation_clear */ + NULL, /* navigation_decrement */ + NULL, /* navigation_increment */ + NULL, /* navigation_set */ + NULL, /* navigation_set_last */ + NULL, /* navigation_descend_alphabet */ + NULL, /* navigation_ascend_alphabet */ + NULL, /* lists_init */ + NULL, /* list_insert */ + NULL, /* list_prepend */ + NULL, /* list_delete */ + NULL, /* list_clear */ + NULL, /* list_cache */ + NULL, /* list_push */ + NULL, /* list_get_selection */ + NULL, /* list_get_size */ + NULL, /* list_get_entry */ + NULL, /* list_set_selection */ + null_menu_list_bind_init, + NULL, /* load_image */ + "null", + NULL, /* environ */ + NULL, /* update_thumbnail_path */ + NULL, /* update_thumbnail_image */ + NULL, /* refresh_thumbnail_image */ + NULL, /* set_thumbnail_system */ + NULL, /* get_thumbnail_system */ + NULL, /* set_thumbnail_content */ + NULL, /* osk_ptr_at_pos */ + NULL, /* update_savestate_thumbnail_path */ + NULL, /* update_savestate_thumbnail_image */ + NULL, /* pointer_down */ + NULL, /* pointer_up */ + NULL /* entry_action */ +}; + +/* Menu drivers */ +const menu_ctx_driver_t *menu_ctx_drivers[] = { +#if defined(HAVE_MATERIALUI) + &menu_ctx_mui, +#endif +#if defined(HAVE_OZONE) + &menu_ctx_ozone, +#endif +#if defined(HAVE_RGUI) + &menu_ctx_rgui, +#endif +#if defined(HAVE_XMB) + &menu_ctx_xmb, +#endif + &menu_ctx_null, + NULL +}; + static bool menu_should_pop_stack(const char *label) { /* > Info box */ @@ -4659,3 +4881,16 @@ void menu_input_set_pointer_y_accel(float y_accel) menu_input->pointer.y_accel = y_accel; } + +bool menu_input_key_bind_set_min_max(menu_input_ctx_bind_limits_t *lim) +{ + struct menu_state *menu_st = menu_state_get_ptr(); + struct menu_bind_state *binds = &menu_st->input_binds; + if (!lim) + return false; + + binds->begin = lim->min; + binds->last = lim->max; + + return true; +} diff --git a/menu/menu_driver.h b/menu/menu_driver.h index bbe893405b..a05dac760b 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -432,6 +432,8 @@ struct menu_state retro_time_t input_last_time_us; menu_input_t input_state; /* retro_time_t alignment */ + struct menu_bind_state input_binds; /* uint64_t alignment */ + menu_handle_t *driver_data; void *userdata; const menu_ctx_driver_t *driver_ctx; @@ -833,6 +835,8 @@ extern menu_ctx_driver_t menu_ctx_stripes; void menu_input_search_cb(void *userdata, const char *str); +extern const menu_ctx_driver_t *menu_ctx_drivers[]; + RETRO_END_DECLS #endif diff --git a/menu/menu_input.h b/menu/menu_input.h index 1fc1269103..3e4caebaac 100644 --- a/menu/menu_input.h +++ b/menu/menu_input.h @@ -225,6 +225,18 @@ typedef struct menu_input_ctx_hitbox int32_t y2; } menu_input_ctx_hitbox_t; +typedef struct key_desc +{ + /* libretro key id */ + unsigned key; + + /* description */ + char desc[32]; +} key_desc_t; + +/* TODO/FIXME - public global variables */ +extern struct key_desc key_descriptors[RARCH_MAX_KEYS]; + /** * Copy parameters from the global menu_input_state to a menu_input_pointer_t * in order to provide access to all pointer device parameters. diff --git a/retroarch.c b/retroarch.c index 23faac23d8..336c9112bc 100644 --- a/retroarch.c +++ b/retroarch.c @@ -562,8 +562,9 @@ static bool menu_input_key_bind_custom_bind_keyboard_cb( { uint64_t current_usec; struct rarch_state *p_rarch = &rarch_st; + struct menu_state *menu_st = menu_state_get_ptr(); settings_t *settings = p_rarch->configuration_settings; - struct menu_bind_state *binds = &p_rarch->menu_input_binds; + struct menu_bind_state *binds = &menu_st->input_binds; uint64_t input_bind_hold_us = settings->uints.input_bind_hold * 1000000; uint64_t input_bind_timeout_us = settings->uints.input_bind_timeout * 1000000; @@ -619,7 +620,7 @@ bool menu_input_key_bind_set_mode( struct menu_state *menu_st = menu_state_get_ptr(); menu_input_t *menu_input = &menu_st->input_state; settings_t *settings = p_rarch->configuration_settings; - struct menu_bind_state *binds = &p_rarch->menu_input_binds; + struct menu_bind_state *binds = &menu_st->input_binds; uint64_t input_bind_hold_us = settings->uints.input_bind_hold * 1000000; uint64_t input_bind_timeout_us = settings->uints.input_bind_timeout @@ -675,19 +676,6 @@ bool menu_input_key_bind_set_mode( return true; } -bool menu_input_key_bind_set_min_max(menu_input_ctx_bind_limits_t *lim) -{ - struct rarch_state *p_rarch = &rarch_st; - struct menu_bind_state *binds = &p_rarch->menu_input_binds; - if (!lim) - return false; - - binds->begin = lim->min; - binds->last = lim->max; - - return true; -} - static bool menu_input_key_bind_iterate( struct rarch_state *p_rarch, settings_t *settings, @@ -696,7 +684,7 @@ static bool menu_input_key_bind_iterate( { bool timed_out = false; struct menu_state *menu_st = menu_state_get_ptr(); - struct menu_bind_state *_binds = &p_rarch->menu_input_binds; + struct menu_bind_state *_binds = &menu_st->input_binds; menu_input_t *menu_input = &menu_st->input_state; uint64_t input_bind_hold_us = settings->uints.input_bind_hold * 1000000; uint64_t input_bind_timeout_us = settings->uints.input_bind_timeout * 1000000; diff --git a/retroarch_data.h b/retroarch_data.h index 6a6c5923d0..56ccf8ab17 100644 --- a/retroarch_data.h +++ b/retroarch_data.h @@ -1157,9 +1157,6 @@ struct rarch_state #endif #ifdef HAVE_GFX_WIDGETS dispgfx_widget_t dispwidget_st; /* uint64_t alignment */ -#endif -#ifdef HAVE_MENU - struct menu_bind_state menu_input_binds; /* uint64_t alignment */ #endif struct retro_core_t current_core; /* uint64_t alignment */ #if defined(HAVE_RUNAHEAD) @@ -1781,228 +1778,3 @@ unsigned subsystem_current_count = 0; struct retro_keybind input_config_binds[MAX_USERS][RARCH_BIND_LIST_END]; struct retro_keybind input_autoconf_binds[MAX_USERS][RARCH_BIND_LIST_END]; struct retro_subsystem_info subsystem_data[SUBSYSTEM_MAX_SUBSYSTEMS]; - -#ifdef HAVE_MENU -/* TODO/FIXME - public global variables */ -struct key_desc key_descriptors[RARCH_MAX_KEYS] = -{ - {RETROK_FIRST, "Unmapped"}, - {RETROK_BACKSPACE, "Backspace"}, - {RETROK_TAB, "Tab"}, - {RETROK_CLEAR, "Clear"}, - {RETROK_RETURN, "Return"}, - {RETROK_PAUSE, "Pause"}, - {RETROK_ESCAPE, "Escape"}, - {RETROK_SPACE, "Space"}, - {RETROK_EXCLAIM, "!"}, - {RETROK_QUOTEDBL, "\""}, - {RETROK_HASH, "#"}, - {RETROK_DOLLAR, "$"}, - {RETROK_AMPERSAND, "&"}, - {RETROK_QUOTE, "\'"}, - {RETROK_LEFTPAREN, "("}, - {RETROK_RIGHTPAREN, ")"}, - {RETROK_ASTERISK, "*"}, - {RETROK_PLUS, "+"}, - {RETROK_COMMA, ","}, - {RETROK_MINUS, "-"}, - {RETROK_PERIOD, "."}, - {RETROK_SLASH, "/"}, - {RETROK_0, "0"}, - {RETROK_1, "1"}, - {RETROK_2, "2"}, - {RETROK_3, "3"}, - {RETROK_4, "4"}, - {RETROK_5, "5"}, - {RETROK_6, "6"}, - {RETROK_7, "7"}, - {RETROK_8, "8"}, - {RETROK_9, "9"}, - {RETROK_COLON, ":"}, - {RETROK_SEMICOLON, ";"}, - {RETROK_LESS, "<"}, - {RETROK_EQUALS, "="}, - {RETROK_GREATER, ">"}, - {RETROK_QUESTION, "?"}, - {RETROK_AT, "@"}, - {RETROK_LEFTBRACKET, "["}, - {RETROK_BACKSLASH, "\\"}, - {RETROK_RIGHTBRACKET, "]"}, - {RETROK_CARET, "^"}, - {RETROK_UNDERSCORE, "_"}, - {RETROK_BACKQUOTE, "`"}, - {RETROK_a, "A"}, - {RETROK_b, "B"}, - {RETROK_c, "C"}, - {RETROK_d, "D"}, - {RETROK_e, "E"}, - {RETROK_f, "F"}, - {RETROK_g, "G"}, - {RETROK_h, "H"}, - {RETROK_i, "I"}, - {RETROK_j, "J"}, - {RETROK_k, "K"}, - {RETROK_l, "L"}, - {RETROK_m, "M"}, - {RETROK_n, "N"}, - {RETROK_o, "O"}, - {RETROK_p, "P"}, - {RETROK_q, "Q"}, - {RETROK_r, "R"}, - {RETROK_s, "S"}, - {RETROK_t, "T"}, - {RETROK_u, "U"}, - {RETROK_v, "V"}, - {RETROK_w, "W"}, - {RETROK_x, "X"}, - {RETROK_y, "Y"}, - {RETROK_z, "Z"}, - {RETROK_DELETE, "Delete"}, - - {RETROK_KP0, "Numpad 0"}, - {RETROK_KP1, "Numpad 1"}, - {RETROK_KP2, "Numpad 2"}, - {RETROK_KP3, "Numpad 3"}, - {RETROK_KP4, "Numpad 4"}, - {RETROK_KP5, "Numpad 5"}, - {RETROK_KP6, "Numpad 6"}, - {RETROK_KP7, "Numpad 7"}, - {RETROK_KP8, "Numpad 8"}, - {RETROK_KP9, "Numpad 9"}, - {RETROK_KP_PERIOD, "Numpad ."}, - {RETROK_KP_DIVIDE, "Numpad /"}, - {RETROK_KP_MULTIPLY, "Numpad *"}, - {RETROK_KP_MINUS, "Numpad -"}, - {RETROK_KP_PLUS, "Numpad +"}, - {RETROK_KP_ENTER, "Numpad Enter"}, - {RETROK_KP_EQUALS, "Numpad ="}, - - {RETROK_UP, "Up"}, - {RETROK_DOWN, "Down"}, - {RETROK_RIGHT, "Right"}, - {RETROK_LEFT, "Left"}, - {RETROK_INSERT, "Insert"}, - {RETROK_HOME, "Home"}, - {RETROK_END, "End"}, - {RETROK_PAGEUP, "Page Up"}, - {RETROK_PAGEDOWN, "Page Down"}, - - {RETROK_F1, "F1"}, - {RETROK_F2, "F2"}, - {RETROK_F3, "F3"}, - {RETROK_F4, "F4"}, - {RETROK_F5, "F5"}, - {RETROK_F6, "F6"}, - {RETROK_F7, "F7"}, - {RETROK_F8, "F8"}, - {RETROK_F9, "F9"}, - {RETROK_F10, "F10"}, - {RETROK_F11, "F11"}, - {RETROK_F12, "F12"}, - {RETROK_F13, "F13"}, - {RETROK_F14, "F14"}, - {RETROK_F15, "F15"}, - - {RETROK_NUMLOCK, "Num Lock"}, - {RETROK_CAPSLOCK, "Caps Lock"}, - {RETROK_SCROLLOCK, "Scroll Lock"}, - {RETROK_RSHIFT, "Right Shift"}, - {RETROK_LSHIFT, "Left Shift"}, - {RETROK_RCTRL, "Right Control"}, - {RETROK_LCTRL, "Left Control"}, - {RETROK_RALT, "Right Alt"}, - {RETROK_LALT, "Left Alt"}, - {RETROK_RMETA, "Right Meta"}, - {RETROK_LMETA, "Left Meta"}, - {RETROK_RSUPER, "Right Super"}, - {RETROK_LSUPER, "Left Super"}, - {RETROK_MODE, "Mode"}, - {RETROK_COMPOSE, "Compose"}, - - {RETROK_HELP, "Help"}, - {RETROK_PRINT, "Print"}, - {RETROK_SYSREQ, "Sys Req"}, - {RETROK_BREAK, "Break"}, - {RETROK_MENU, "Menu"}, - {RETROK_POWER, "Power"}, - {RETROK_EURO, {-30, -126, -84, 0}}, /* "�" */ - {RETROK_UNDO, "Undo"}, - {RETROK_OEM_102, "OEM-102"} -}; - -static void *null_menu_init(void **userdata, bool video_is_threaded) -{ - menu_handle_t *menu = (menu_handle_t*)calloc(1, sizeof(*menu)); - if (!menu) - return NULL; - return menu; -} - -static int null_menu_list_bind_init(menu_file_list_cbs_t *cbs, - const char *path, const char *label, unsigned type, size_t idx) { return 0; } - -static menu_ctx_driver_t menu_ctx_null = { - NULL, /* set_texture */ - NULL, /* render_messagebox */ - NULL, /* render */ - NULL, /* frame */ - null_menu_init, - NULL, /* free */ - NULL, /* context_reset */ - NULL, /* context_destroy */ - NULL, /* populate_entries */ - NULL, /* toggle */ - NULL, /* navigation_clear */ - NULL, /* navigation_decrement */ - NULL, /* navigation_increment */ - NULL, /* navigation_set */ - NULL, /* navigation_set_last */ - NULL, /* navigation_descend_alphabet */ - NULL, /* navigation_ascend_alphabet */ - NULL, /* lists_init */ - NULL, /* list_insert */ - NULL, /* list_prepend */ - NULL, /* list_delete */ - NULL, /* list_clear */ - NULL, /* list_cache */ - NULL, /* list_push */ - NULL, /* list_get_selection */ - NULL, /* list_get_size */ - NULL, /* list_get_entry */ - NULL, /* list_set_selection */ - null_menu_list_bind_init, - NULL, /* load_image */ - "null", - NULL, /* environ */ - NULL, /* update_thumbnail_path */ - NULL, /* update_thumbnail_image */ - NULL, /* refresh_thumbnail_image */ - NULL, /* set_thumbnail_system */ - NULL, /* get_thumbnail_system */ - NULL, /* set_thumbnail_content */ - NULL, /* osk_ptr_at_pos */ - NULL, /* update_savestate_thumbnail_path */ - NULL, /* update_savestate_thumbnail_image */ - NULL, /* pointer_down */ - NULL, /* pointer_up */ - NULL /* entry_action */ -}; - -/* Menu drivers */ -static const menu_ctx_driver_t *menu_ctx_drivers[] = { -#if defined(HAVE_MATERIALUI) - &menu_ctx_mui, -#endif -#if defined(HAVE_OZONE) - &menu_ctx_ozone, -#endif -#if defined(HAVE_RGUI) - &menu_ctx_rgui, -#endif -#if defined(HAVE_XMB) - &menu_ctx_xmb, -#endif - &menu_ctx_null, - NULL -}; -#endif