diff --git a/input/input_driver.c b/input/input_driver.c index 1607311420..2dfda9d95f 100644 --- a/input/input_driver.c +++ b/input/input_driver.c @@ -17,7 +17,7 @@ #include #include "input_driver.h" - +#include "input_keyboard.h" #include "input_remapping.h" #include "../retroarch.h" @@ -639,7 +639,6 @@ bool input_driver_ctl(enum rarch_input_ctl_state state, void *data) static bool input_driver_block_hotkey = false; static bool input_driver_block_libretro_input = false; static bool input_driver_osk_enabled = false; - static bool input_driver_keyboard_linefeed_enable = false; static bool input_driver_nonblock_state = false; static bool input_driver_flushing_input = false; static bool input_driver_data_own = false; @@ -677,9 +676,9 @@ bool input_driver_ctl(enum rarch_input_ctl_state state, void *data) current_input_data = NULL; break; case RARCH_INPUT_CTL_DESTROY: + input_keyboard_ctl(RARCH_INPUT_KEYBOARD_CTL_DESTROY, NULL); input_driver_block_hotkey = false; input_driver_block_libretro_input = false; - input_driver_keyboard_linefeed_enable = false; input_driver_nonblock_state = false; input_driver_flushing_input = false; input_driver_data_own = false; @@ -778,14 +777,6 @@ bool input_driver_ctl(enum rarch_input_ctl_state state, void *data) break; case RARCH_INPUT_CTL_IS_OSK_ENABLED: return input_driver_osk_enabled; - case RARCH_INPUT_CTL_SET_KEYBOARD_LINEFEED_ENABLED: - input_driver_keyboard_linefeed_enable = true; - break; - case RARCH_INPUT_CTL_UNSET_KEYBOARD_LINEFEED_ENABLED: - input_driver_keyboard_linefeed_enable = false; - break; - case RARCH_INPUT_CTL_IS_KEYBOARD_LINEFEED_ENABLED: - return input_driver_keyboard_linefeed_enable; case RARCH_INPUT_CTL_COMMAND_INIT: #ifdef HAVE_COMMAND if (!settings->stdin_cmd_enable && !settings->network_cmd_enable) diff --git a/input/input_driver.h b/input/input_driver.h index b38976f7c3..207893c612 100644 --- a/input/input_driver.h +++ b/input/input_driver.h @@ -75,9 +75,6 @@ enum rarch_input_ctl_state RARCH_INPUT_CTL_SET_OSK_ENABLED, RARCH_INPUT_CTL_UNSET_OSK_ENABLED, RARCH_INPUT_CTL_IS_OSK_ENABLED, - RARCH_INPUT_CTL_SET_KEYBOARD_LINEFEED_ENABLED, - RARCH_INPUT_CTL_UNSET_KEYBOARD_LINEFEED_ENABLED, - RARCH_INPUT_CTL_IS_KEYBOARD_LINEFEED_ENABLED, RARCH_INPUT_CTL_COMMAND_INIT, RARCH_INPUT_CTL_COMMAND_DEINIT, RARCH_INPUT_CTL_REMOTE_INIT, diff --git a/input/input_keyboard.c b/input/input_keyboard.c index cc17e343d7..62f3b302a9 100644 --- a/input/input_keyboard.c +++ b/input/input_keyboard.c @@ -52,9 +52,9 @@ static void input_keyboard_line_toggle_osk(bool enable) return; if (enable) - input_driver_ctl(RARCH_INPUT_CTL_SET_KEYBOARD_LINEFEED_ENABLED, NULL); + input_driver_ctl(RARCH_INPUT_KEYBOARD_CTL_SET_LINEFEED_ENABLED, NULL); else - input_driver_ctl(RARCH_INPUT_CTL_UNSET_KEYBOARD_LINEFEED_ENABLED, NULL); + input_driver_ctl(RARCH_INPUT_KEYBOARD_CTL_UNSET_LINEFEED_ENABLED, NULL); } /** @@ -298,8 +298,21 @@ void input_keyboard_event(bool down, unsigned code, bool input_keyboard_ctl(enum rarch_input_keyboard_ctl_state state, void *data) { + static bool input_driver_keyboard_linefeed_enable = false; + switch (state) { + case RARCH_INPUT_KEYBOARD_CTL_DESTROY: + input_driver_keyboard_linefeed_enable = false; + break; + case RARCH_INPUT_KEYBOARD_CTL_SET_LINEFEED_ENABLED: + input_driver_keyboard_linefeed_enable = true; + break; + case RARCH_INPUT_KEYBOARD_CTL_UNSET_LINEFEED_ENABLED: + input_driver_keyboard_linefeed_enable = false; + break; + case RARCH_INPUT_KEYBOARD_CTL_IS_LINEFEED_ENABLED: + return input_driver_keyboard_linefeed_enable; case RARCH_INPUT_KEYBOARD_CTL_NONE: default: break; diff --git a/input/input_keyboard.h b/input/input_keyboard.h index e92a19eb49..8dd27982e3 100644 --- a/input/input_keyboard.h +++ b/input/input_keyboard.h @@ -29,7 +29,11 @@ extern "C" { enum rarch_input_keyboard_ctl_state { - RARCH_INPUT_KEYBOARD_CTL_NONE = 0 + RARCH_INPUT_KEYBOARD_CTL_NONE = 0, + RARCH_INPUT_KEYBOARD_CTL_DESTROY, + RARCH_INPUT_KEYBOARD_CTL_SET_LINEFEED_ENABLED, + RARCH_INPUT_KEYBOARD_CTL_UNSET_LINEFEED_ENABLED, + RARCH_INPUT_KEYBOARD_CTL_IS_LINEFEED_ENABLED, }; /* Keyboard line reader. Handles textual input in a direct fashion. */ diff --git a/runloop.c b/runloop.c index 3932a3c060..8fa42f62c4 100644 --- a/runloop.c +++ b/runloop.c @@ -688,13 +688,13 @@ bool runloop_ctl(enum runloop_ctl_state state, void *data) if (runloop_cmd_triggered(cmd, RARCH_OSK)) { - if (input_driver_ctl( - RARCH_INPUT_CTL_IS_KEYBOARD_LINEFEED_ENABLED, NULL)) - input_driver_ctl( - RARCH_INPUT_CTL_UNSET_KEYBOARD_LINEFEED_ENABLED, NULL); + if (input_keyboard_ctl( + RARCH_INPUT_KEYBOARD_CTL_IS_LINEFEED_ENABLED, NULL)) + input_keyboard_ctl( + RARCH_INPUT_KEYBOARD_CTL_UNSET_LINEFEED_ENABLED, NULL); else - input_driver_ctl( - RARCH_INPUT_CTL_SET_KEYBOARD_LINEFEED_ENABLED, NULL); + input_keyboard_ctl( + RARCH_INPUT_KEYBOARD_CTL_SET_LINEFEED_ENABLED, NULL); } if (runloop_cmd_press(cmd, RARCH_VOLUME_UP)) @@ -1191,15 +1191,15 @@ static void runloop_iterate_linefeed_overlay(settings_t *settings) static char prev_overlay_restore = false; bool osk_enable = input_driver_ctl(RARCH_INPUT_CTL_IS_OSK_ENABLED, NULL); - if (osk_enable && !input_driver_ctl( - RARCH_INPUT_CTL_IS_KEYBOARD_LINEFEED_ENABLED, NULL)) + if (osk_enable && !input_keyboard_ctl( + RARCH_INPUT_KEYBOARD_CTL_IS_LINEFEED_ENABLED, NULL)) { input_driver_ctl(RARCH_INPUT_CTL_UNSET_OSK_ENABLED, NULL); prev_overlay_restore = true; event_cmd_ctl(EVENT_CMD_OVERLAY_DEINIT, NULL); } - else if (!osk_enable && input_driver_ctl( - RARCH_INPUT_CTL_IS_KEYBOARD_LINEFEED_ENABLED, NULL)) + else if (!osk_enable && input_keyboard_ctl( + RARCH_INPUT_KEYBOARD_CTL_IS_LINEFEED_ENABLED, NULL)) { input_driver_ctl(RARCH_INPUT_CTL_SET_OSK_ENABLED, NULL); prev_overlay_restore = false;