diff --git a/input/input_keyboard.c b/input/input_keyboard.c index 578105b482..90ade98ed9 100644 --- a/input/input_keyboard.c +++ b/input/input_keyboard.c @@ -46,6 +46,13 @@ static input_keyboard_press_t g_keyboard_press_cb; static void *g_keyboard_press_data; +static bool return_pressed; + +bool input_keyboard_return_pressed() +{ + return return_pressed; +} + static void input_keyboard_line_toggle_osk(bool enable) { settings_t *settings = config_get_ptr(); @@ -200,6 +207,9 @@ void input_keyboard_event(bool down, unsigned code, { static bool deferred_wait_keys; + if (code == RETROK_RETURN || code == RETROK_UNKNOWN) + return_pressed = down; + if (deferred_wait_keys) { if (down) diff --git a/input/input_keyboard.h b/input/input_keyboard.h index 4c9e0c7ba1..1bd1600c80 100644 --- a/input/input_keyboard.h +++ b/input/input_keyboard.h @@ -96,6 +96,8 @@ const char **input_keyboard_start_line(void *userdata, bool input_keyboard_ctl(enum rarch_input_keyboard_ctl_state state, void *data); +bool input_keyboard_return_pressed(); + RETRO_END_DECLS #endif diff --git a/runloop.c b/runloop.c index 3535fecbcb..821fb96907 100644 --- a/runloop.c +++ b/runloop.c @@ -885,7 +885,7 @@ static enum runloop_state runloop_check_state( menu_ctx_iterate_t iter; bool skip = false; #ifdef HAVE_OVERLAY - skip = osk_enable && BIT64_GET(trigger_input, settings->menu_ok_btn); + skip = osk_enable && input_keyboard_return_pressed(); #endif if (!skip)