diff --git a/menu/menu_input.c b/menu/menu_input.c index 9ed2998538..54fa724c81 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -352,7 +352,7 @@ bool menu_input_poll_find_trigger(struct menu_bind_state *state, return false; } -bool menu_input_custom_bind_keyboard_cb(void *data, unsigned code) +static bool menu_input_custom_bind_keyboard_cb(void *data, unsigned code) { menu_handle_t *menu = (menu_handle_t*)data; @@ -368,6 +368,22 @@ bool menu_input_custom_bind_keyboard_cb(void *data, unsigned code) return (menu->binds.begin <= menu->binds.last); } +int menu_input_set_keyboard_bind_mode(void) +{ + menu_handle_t *menu = menu_driver_get_ptr(); + + if (!menu) + return -1; + + menu->binds.timeout_end = + rarch_get_time_usec() + + MENU_KEYBOARD_BIND_TIMEOUT_SECONDS * 1000000; + input_keyboard_wait_keys(menu, + menu_input_custom_bind_keyboard_cb); + + return 0; +} + int menu_input_bind_iterate(void) { char msg[PATH_MAX_LENGTH]; diff --git a/menu/menu_input.h b/menu/menu_input.h index 7d9540019f..4d036a3c7b 100644 --- a/menu/menu_input.h +++ b/menu/menu_input.h @@ -65,8 +65,6 @@ void menu_input_poll_bind_state(struct menu_bind_state *state); bool menu_input_poll_find_trigger(struct menu_bind_state *state, struct menu_bind_state *new_state); -bool menu_input_custom_bind_keyboard_cb(void *data, unsigned code); - int menu_input_bind_iterate(void); int menu_input_bind_iterate_keyboard(void); @@ -78,6 +76,8 @@ void menu_input_post_iterate(int *ret, menu_file_list_cbs_t *cbs, const char *pa void menu_input_search_start(void); +int menu_input_set_keyboard_bind_mode(void); + #ifdef __cplusplus } #endif diff --git a/settings.c b/settings.c index d590ec13e9..b2efa6aeac 100644 --- a/settings.c +++ b/settings.c @@ -876,13 +876,7 @@ static int setting_action_ok_bind_all(void *data, unsigned action) menu->navigation.selection_ptr); if (global->menu.bind_mode_keyboard) - { - menu->binds.timeout_end = - rarch_get_time_usec() + - MENU_KEYBOARD_BIND_TIMEOUT_SECONDS * 1000000; - input_keyboard_wait_keys(menu, - menu_input_custom_bind_keyboard_cb); - } + menu_input_set_keyboard_bind_mode(); else { menu_input_poll_bind_get_rested_axes(&menu->binds); @@ -1090,12 +1084,7 @@ static int setting_bind_action_ok(void *data, unsigned action) menu->navigation.selection_ptr); if (global->menu.bind_mode_keyboard) - { - menu->binds.timeout_end = rarch_get_time_usec() + - MENU_KEYBOARD_BIND_TIMEOUT_SECONDS * 1000000; - input_keyboard_wait_keys(menu, - menu_input_custom_bind_keyboard_cb); - } + menu_input_set_keyboard_bind_mode(); else { menu_input_poll_bind_get_rested_axes(&menu->binds);