diff --git a/configuration.c b/configuration.c index 7b7d2b69d2..2e78b4f38d 100644 --- a/configuration.c +++ b/configuration.c @@ -1642,12 +1642,10 @@ static void read_keybinds_axis(config_file_t *conf, unsigned user, static void read_keybinds_user(config_file_t *conf, unsigned user) { unsigned i; - settings_t *settings = config_get_ptr(); for (i = 0; input_config_bind_map_get_valid(i); i++) { - struct retro_keybind *bind = (struct retro_keybind*) - &settings->input.binds[user][i]; + struct retro_keybind *bind = input_config_get_specific_bind_ptr(user, i); if (!bind->valid) continue; diff --git a/input/input_config.c b/input/input_config.c index d01bbd1c97..021a5a8204 100644 --- a/input/input_config.c +++ b/input/input_config.c @@ -150,6 +150,12 @@ const struct input_bind_map input_config_bind_map[RARCH_BIND_LIST_END_NULL] = { #endif }; +struct retro_keybind *input_config_get_specific_bind_ptr(unsigned i, unsigned j) +{ + settings_t *settings = config_get_ptr(); + return (struct retro_keybind*)&settings->input.binds[i][j]; +} + const struct retro_keybind *input_config_get_specific_bind(unsigned i, unsigned j) { settings_t *settings = config_get_ptr(); diff --git a/input/input_config.h b/input/input_config.h index 469a1c02a9..58bb0daefe 100644 --- a/input/input_config.h +++ b/input/input_config.h @@ -89,6 +89,8 @@ void input_config_set_vid(unsigned port, unsigned vid); int32_t input_config_get_vid(unsigned port); +struct retro_keybind *input_config_get_specific_bind_ptr(unsigned i, unsigned j); + const struct retro_keybind *input_config_get_specific_bind(unsigned i, unsigned j); struct retro_keybind *input_config_get_binds(unsigned i); diff --git a/menu/cbs/menu_cbs_get_value.c b/menu/cbs/menu_cbs_get_value.c index 139a50f1f2..dd4eefa99b 100644 --- a/menu/cbs/menu_cbs_get_value.c +++ b/menu/cbs/menu_cbs_get_value.c @@ -453,8 +453,7 @@ static void menu_action_setting_disp_set_label_input_desc( remap_id = settings->input.remap_ids [inp_desc_user][inp_desc_button_index_offset]; - keybind = (const struct retro_keybind*) - &settings->input.binds[inp_desc_user][remap_id]; + keybind = input_config_get_specific_bind(inp_desc_user, remap_id); auto_bind = (const struct retro_keybind*) input_config_get_bind_auto(inp_desc_user, remap_id); @@ -469,9 +468,12 @@ static void menu_action_setting_disp_set_label_input_desc( descriptor, len); else - strlcpy(s, - msg_hash_to_str(settings->input.binds[inp_desc_user][remap_id].enum_idx), - len); + { + const struct retro_keybind *keyptr = input_config_get_specific_bind(inp_desc_user, + remap_id); + + strlcpy(s, msg_hash_to_str(keyptr->enum_idx), len); + } } diff --git a/menu/cbs/menu_cbs_scan.c b/menu/cbs/menu_cbs_scan.c index a9f2371ddd..51d3960609 100644 --- a/menu/cbs/menu_cbs_scan.c +++ b/menu/cbs/menu_cbs_scan.c @@ -138,7 +138,8 @@ static int action_scan_input_desc(const char *path, else key = input_config_translate_str_to_bind_id(label); - target = (struct retro_keybind*)&settings->input.binds[inp_desc_user][key]; + target = input_config_get_specific_bind_ptr(inp_desc_user, + key); if (target) { diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 7d333f005d..b032f3744e 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -1339,8 +1339,7 @@ static int setting_action_ok_bind_defaults(void *data, bool wraparound) if (!setting) return -1; - target = (struct retro_keybind*) - &settings->input.binds[setting->index_offset][0]; + target = input_config_get_specific_bind_ptr(setting->index_offset, 0); def_binds = (setting->index_offset) ? retro_keybinds_rest : retro_keybinds_1; @@ -2092,7 +2091,7 @@ static bool setting_append_list_input_player_options( CONFIG_BIND_ALT( list, list_info, - &settings->input.binds[user][i], + input_config_get_specific_bind_ptr(user, i), user + 1, user, strdup(name), @@ -4410,7 +4409,8 @@ static bool setting_append_list( CONFIG_BIND_ALT( list, list_info, - &settings->input.binds[0][i], 0, 0, + input_config_get_specific_bind_ptr(0, i), + 0, 0, strdup(input_config_bind_map_get_base(i)), strdup(input_config_bind_map_get_desc(i)), &retro_keybinds_1[i], diff --git a/menu/widgets/menu_input_bind_dialog.c b/menu/widgets/menu_input_bind_dialog.c index 0386285687..9246c78be9 100644 --- a/menu/widgets/menu_input_bind_dialog.c +++ b/menu/widgets/menu_input_bind_dialog.c @@ -117,8 +117,7 @@ static int menu_input_key_bind_set_mode_common( menu_displaylist_ctl(DISPLAYLIST_PROCESS, &info); break; case MENU_INPUT_BINDS_CTL_BIND_ALL: - menu_input_binds.target = &settings->input.binds - [index_offset][0]; + menu_input_binds.target = input_config_get_specific_bind_ptr(index_offset, 0); menu_input_binds.begin = MENU_SETTINGS_BIND_BEGIN; menu_input_binds.last = MENU_SETTINGS_BIND_LAST;