mirror of
https://github.com/libretro/RetroArch
synced 2025-01-30 21:32:45 +00:00
Refactor out input_keyboard_ctl
This commit is contained in:
parent
2f66e3bfd9
commit
b4b77fd6b0
@ -94,24 +94,6 @@ enum input_action
|
|||||||
INPUT_ACTION_MAX_USERS
|
INPUT_ACTION_MAX_USERS
|
||||||
};
|
};
|
||||||
|
|
||||||
enum rarch_input_keyboard_ctl_state
|
|
||||||
{
|
|
||||||
RARCH_INPUT_KEYBOARD_CTL_NONE = 0,
|
|
||||||
RARCH_INPUT_KEYBOARD_CTL_IS_LINEFEED_ENABLED,
|
|
||||||
|
|
||||||
RARCH_INPUT_KEYBOARD_CTL_LINE_FREE,
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Waits for keys to be pressed (used for binding
|
|
||||||
* keys in the menu).
|
|
||||||
* Callback returns false when all polling is done.
|
|
||||||
**/
|
|
||||||
RARCH_INPUT_KEYBOARD_CTL_START_WAIT_KEYS,
|
|
||||||
|
|
||||||
/* Cancels keyboard wait for keys function callback. */
|
|
||||||
RARCH_INPUT_KEYBOARD_CTL_CANCEL_WAIT_KEYS
|
|
||||||
};
|
|
||||||
|
|
||||||
struct retro_keybind
|
struct retro_keybind
|
||||||
{
|
{
|
||||||
char *joykey_label;
|
char *joykey_label;
|
||||||
|
96
retroarch.c
96
retroarch.c
@ -2911,9 +2911,6 @@ static void input_keyboard_line_append(
|
|||||||
static const char **input_keyboard_start_line(void *userdata,
|
static const char **input_keyboard_start_line(void *userdata,
|
||||||
struct rarch_state *p_rarch,
|
struct rarch_state *p_rarch,
|
||||||
input_keyboard_line_complete_t cb);
|
input_keyboard_line_complete_t cb);
|
||||||
static bool input_keyboard_ctl(
|
|
||||||
struct rarch_state *p_rarch,
|
|
||||||
enum rarch_input_keyboard_ctl_state state, void *data);
|
|
||||||
|
|
||||||
static void menu_driver_list_free(
|
static void menu_driver_list_free(
|
||||||
struct rarch_state *p_rarch,
|
struct rarch_state *p_rarch,
|
||||||
@ -3967,7 +3964,6 @@ bool menu_input_key_bind_set_mode(
|
|||||||
enum menu_input_binds_ctl_state state, void *data)
|
enum menu_input_binds_ctl_state state, void *data)
|
||||||
{
|
{
|
||||||
unsigned index_offset;
|
unsigned index_offset;
|
||||||
input_keyboard_ctx_wait_t keys;
|
|
||||||
rarch_setting_t *setting = (rarch_setting_t*)data;
|
rarch_setting_t *setting = (rarch_setting_t*)data;
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
struct rarch_state *p_rarch = &rarch_st;
|
||||||
menu_handle_t *menu = p_rarch->menu_driver_data;
|
menu_handle_t *menu = p_rarch->menu_driver_data;
|
||||||
@ -3999,18 +3995,19 @@ bool menu_input_key_bind_set_mode(
|
|||||||
rarch_timer_begin_new_time_us(
|
rarch_timer_begin_new_time_us(
|
||||||
&binds->timer_timeout, input_bind_timeout_us);
|
&binds->timer_timeout, input_bind_timeout_us);
|
||||||
|
|
||||||
keys.userdata = menu;
|
p_rarch->keyboard_press_cb =
|
||||||
keys.cb = menu_input_key_bind_custom_bind_keyboard_cb;
|
menu_input_key_bind_custom_bind_keyboard_cb;
|
||||||
|
p_rarch->keyboard_press_data = menu;
|
||||||
|
|
||||||
input_keyboard_ctl(p_rarch,
|
/* While waiting for input, we have to block all hotkeys. */
|
||||||
RARCH_INPUT_KEYBOARD_CTL_START_WAIT_KEYS, &keys);
|
p_rarch->keyboard_mapping_blocked = true;
|
||||||
|
|
||||||
/* Upon triggering an input bind operation,
|
/* Upon triggering an input bind operation,
|
||||||
* pointer input must be inhibited - otherwise
|
* pointer input must be inhibited - otherwise
|
||||||
* attempting to bind mouse buttons will cause
|
* attempting to bind mouse buttons will cause
|
||||||
* spurious menu actions */
|
* spurious menu actions */
|
||||||
menu_input->select_inhibit = true;
|
menu_input->select_inhibit = true;
|
||||||
menu_input->cancel_inhibit = true;
|
menu_input->cancel_inhibit = true;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -4079,8 +4076,11 @@ static bool menu_input_key_bind_iterate(
|
|||||||
|
|
||||||
/* We won't be getting any key events, so just cancel early. */
|
/* We won't be getting any key events, so just cancel early. */
|
||||||
if (timed_out)
|
if (timed_out)
|
||||||
input_keyboard_ctl(p_rarch,
|
{
|
||||||
RARCH_INPUT_KEYBOARD_CTL_CANCEL_WAIT_KEYS, NULL);
|
p_rarch->keyboard_press_cb = NULL;
|
||||||
|
p_rarch->keyboard_press_data = NULL;
|
||||||
|
p_rarch->keyboard_mapping_blocked = false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -4146,9 +4146,9 @@ static bool menu_input_key_bind_iterate(
|
|||||||
|
|
||||||
if (new_binds.begin > new_binds.last)
|
if (new_binds.begin > new_binds.last)
|
||||||
{
|
{
|
||||||
input_keyboard_ctl(
|
p_rarch->keyboard_press_cb = NULL;
|
||||||
p_rarch,
|
p_rarch->keyboard_press_data = NULL;
|
||||||
RARCH_INPUT_KEYBOARD_CTL_CANCEL_WAIT_KEYS, NULL);
|
p_rarch->keyboard_mapping_blocked = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -12216,8 +12216,13 @@ bool menu_input_dialog_start_search(void)
|
|||||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SEARCH),
|
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SEARCH),
|
||||||
sizeof(p_rarch->menu_input_dialog_keyboard_label));
|
sizeof(p_rarch->menu_input_dialog_keyboard_label));
|
||||||
|
|
||||||
input_keyboard_ctl(p_rarch,
|
if (p_rarch->keyboard_line)
|
||||||
RARCH_INPUT_KEYBOARD_CTL_LINE_FREE, NULL);
|
{
|
||||||
|
if (p_rarch->keyboard_line->buffer)
|
||||||
|
free(p_rarch->keyboard_line->buffer);
|
||||||
|
free(p_rarch->keyboard_line);
|
||||||
|
}
|
||||||
|
p_rarch->keyboard_line = NULL;
|
||||||
|
|
||||||
#ifdef HAVE_ACCESSIBILITY
|
#ifdef HAVE_ACCESSIBILITY
|
||||||
if (is_accessibility_enabled(p_rarch))
|
if (is_accessibility_enabled(p_rarch))
|
||||||
@ -12254,8 +12259,13 @@ bool menu_input_dialog_start(menu_input_ctx_line_t *line)
|
|||||||
p_rarch->menu_input_dialog_keyboard_type = line->type;
|
p_rarch->menu_input_dialog_keyboard_type = line->type;
|
||||||
p_rarch->menu_input_dialog_keyboard_idx = line->idx;
|
p_rarch->menu_input_dialog_keyboard_idx = line->idx;
|
||||||
|
|
||||||
input_keyboard_ctl(p_rarch,
|
if (p_rarch->keyboard_line)
|
||||||
RARCH_INPUT_KEYBOARD_CTL_LINE_FREE, NULL);
|
{
|
||||||
|
if (p_rarch->keyboard_line->buffer)
|
||||||
|
free(p_rarch->keyboard_line->buffer);
|
||||||
|
free(p_rarch->keyboard_line);
|
||||||
|
}
|
||||||
|
p_rarch->keyboard_line = NULL;
|
||||||
|
|
||||||
#ifdef HAVE_ACCESSIBILITY
|
#ifdef HAVE_ACCESSIBILITY
|
||||||
if (is_accessibility_enabled(p_rarch))
|
if (is_accessibility_enabled(p_rarch))
|
||||||
@ -27439,54 +27449,6 @@ void input_keyboard_event(bool down, unsigned code,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_MENU
|
|
||||||
static bool input_keyboard_ctl(
|
|
||||||
struct rarch_state *p_rarch,
|
|
||||||
enum rarch_input_keyboard_ctl_state state,
|
|
||||||
void *data)
|
|
||||||
{
|
|
||||||
switch (state)
|
|
||||||
{
|
|
||||||
case RARCH_INPUT_KEYBOARD_CTL_LINE_FREE:
|
|
||||||
if (p_rarch->keyboard_line)
|
|
||||||
{
|
|
||||||
if (p_rarch->keyboard_line->buffer)
|
|
||||||
free(p_rarch->keyboard_line->buffer);
|
|
||||||
free(p_rarch->keyboard_line);
|
|
||||||
}
|
|
||||||
p_rarch->keyboard_line = NULL;
|
|
||||||
break;
|
|
||||||
case RARCH_INPUT_KEYBOARD_CTL_START_WAIT_KEYS:
|
|
||||||
{
|
|
||||||
input_keyboard_ctx_wait_t *keys =
|
|
||||||
(input_keyboard_ctx_wait_t*)data;
|
|
||||||
|
|
||||||
if (!keys)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
p_rarch->keyboard_press_cb = keys->cb;
|
|
||||||
p_rarch->keyboard_press_data = keys->userdata;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* While waiting for input, we have to block all hotkeys. */
|
|
||||||
p_rarch->keyboard_mapping_blocked = true;
|
|
||||||
break;
|
|
||||||
case RARCH_INPUT_KEYBOARD_CTL_CANCEL_WAIT_KEYS:
|
|
||||||
p_rarch->keyboard_press_cb = NULL;
|
|
||||||
p_rarch->keyboard_press_data = NULL;
|
|
||||||
p_rarch->keyboard_mapping_blocked = false;
|
|
||||||
break;
|
|
||||||
case RARCH_INPUT_KEYBOARD_CTL_IS_LINEFEED_ENABLED:
|
|
||||||
return p_rarch->input_driver_keyboard_linefeed_enable;
|
|
||||||
case RARCH_INPUT_KEYBOARD_CTL_NONE:
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static bool input_config_bind_map_get_valid(unsigned i)
|
static bool input_config_bind_map_get_valid(unsigned i)
|
||||||
{
|
{
|
||||||
const struct input_bind_map *keybind =
|
const struct input_bind_map *keybind =
|
||||||
|
Loading…
x
Reference in New Issue
Block a user