diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 10f53edf51..e608a1524d 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -206,6 +206,24 @@ static void menu_input_key_event(bool down, unsigned keycode, menu_entry_action(NULL, 0, MENU_ACTION_SEARCH); } +void menu_driver_toggle_binds(bool latch) +{ + settings_t *settings = config_get_ptr(); + if (!settings) + return; + + if (latch) + { + memcpy(settings->input.binds[0], retro_keybinds_menu, + sizeof(retro_keybinds_1)); + } + else + { + memcpy(settings->input.binds[0], retro_keybinds_1, + sizeof(retro_keybinds_1)); + } +} + static void menu_driver_toggle(bool latch) { retro_keyboard_event_t *key_event = NULL; @@ -245,10 +263,8 @@ static void menu_driver_toggle(bool latch) runloop_ctl(RUNLOOP_CTL_SET_FRAME_TIME_LAST, NULL); } - - if (settings) - memcpy(settings->input.binds[0], retro_keybinds_menu, - sizeof(retro_keybinds_1)); + + menu_driver_toggle_binds(true); } else { @@ -265,9 +281,7 @@ static void menu_driver_toggle(bool latch) if (key_event && frontend_key_event) *key_event = *frontend_key_event; - if (settings) - memcpy(settings->input.binds[0], retro_keybinds_1, - sizeof(retro_keybinds_1)); + menu_driver_toggle_binds(false); } } diff --git a/menu/menu_driver.h b/menu/menu_driver.h index a706ac8123..7fb0d1f7c8 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -421,6 +421,8 @@ extern unsigned int rdb_entry_start_game_selection_ptr; bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data); +void menu_driver_toggle_binds(bool latch); + extern menu_ctx_driver_t menu_ctx_xui; extern menu_ctx_driver_t menu_ctx_rgui; extern menu_ctx_driver_t menu_ctx_mui;