diff --git a/menu/cbs/menu_cbs_title.c b/menu/cbs/menu_cbs_title.c index ef3b65670b..f237c1d12e 100644 --- a/menu/cbs/menu_cbs_title.c +++ b/menu/cbs/menu_cbs_title.c @@ -303,6 +303,11 @@ static int action_get_title_dropdown_item( (enum_idx <= MENU_ENUM_LABEL_INPUT_DEVICE_INDEX_LAST)) enum_idx = MENU_ENUM_LABEL_VALUE_INPUT_DEVICE_INDEX; + /* Mouse Index */ + if ((enum_idx >= MENU_ENUM_LABEL_INPUT_MOUSE_INDEX) && + (enum_idx <= MENU_ENUM_LABEL_INPUT_MOUSE_INDEX_LAST)) + enum_idx = MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_INDEX; + { const char *title = msg_hash_to_str(enum_idx); diff --git a/menu/menu_setting.c b/menu/menu_setting.c index c50a71aa52..a6f1891204 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -5363,11 +5363,11 @@ static int setting_action_left_mouse_index( return -1; if (settings->uints.input_mouse_index[setting->index_offset]) - { --settings->uints.input_mouse_index[setting->index_offset]; - settings->modified = true; - } + else + settings->uints.input_mouse_index[setting->index_offset] = MAX_USERS - 1; + settings->modified = true; return 0; } @@ -6818,6 +6818,18 @@ static int setting_action_start_video_refresh_rate_auto( return 0; } +static int setting_action_start_mouse_index(rarch_setting_t *setting) +{ + settings_t *settings = config_get_ptr(); + + if (!setting) + return -1; + + settings->uints.input_mouse_index[setting->index_offset] = 0; + settings->modified = true; + return 0; +} + /** ******* ACTION TOGGLE CALLBACK FUNCTIONS ******* **/ @@ -6909,9 +6921,12 @@ static int setting_action_right_mouse_index( if (!setting) return -1; - ++settings->uints.input_mouse_index[setting->index_offset]; - settings->modified = true; + if (settings->uints.input_mouse_index[setting->index_offset] < MAX_USERS - 1) + ++settings->uints.input_mouse_index[setting->index_offset]; + else + settings->uints.input_mouse_index[setting->index_offset] = 0; + settings->modified = true; return 0; } @@ -8034,10 +8049,16 @@ static bool setting_append_list_input_player_options( parent_group, general_write_handler, general_read_handler); - (*list)[list_info->index - 1].index = user + 1; - (*list)[list_info->index - 1].index_offset = user; - (*list)[list_info->index - 1].action_left = &setting_action_left_mouse_index; - (*list)[list_info->index - 1].action_right = &setting_action_right_mouse_index; + (*list)[list_info->index - 1].index = user + 1; + (*list)[list_info->index - 1].index_offset = user; + (*list)[list_info->index - 1].action_start = &setting_action_start_mouse_index; + (*list)[list_info->index - 1].action_left = &setting_action_left_mouse_index; + (*list)[list_info->index - 1].action_right = &setting_action_right_mouse_index; + (*list)[list_info->index - 1].action_select = &setting_action_right_mouse_index; + (*list)[list_info->index - 1].action_ok = &setting_action_ok_uint; + menu_settings_list_current_add_range(list, list_info, 0, MAX_USERS - 1, 1.0, true, true); + MENU_SETTINGS_LIST_CURRENT_ADD_ENUM_IDX_PTR(list, list_info, + (enum msg_hash_enums)(MENU_ENUM_LABEL_INPUT_MOUSE_INDEX + user)); } for (i = 0; i < RARCH_BIND_LIST_END; i ++) diff --git a/msg_hash.h b/msg_hash.h index b3e5a1d5b0..a81fda68df 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -731,6 +731,8 @@ enum msg_hash_enums MENU_ENUM_LABEL_INPUT_PLAYER_ANALOG_DPAD_MODE_LAST = MENU_ENUM_LABEL_INPUT_PLAYER_ANALOG_DPAD_MODE + MAX_USERS, MENU_ENUM_LABEL_INPUT_DEVICE_INDEX, MENU_ENUM_LABEL_INPUT_DEVICE_INDEX_LAST = MENU_ENUM_LABEL_INPUT_DEVICE_INDEX + MAX_USERS, + MENU_ENUM_LABEL_INPUT_MOUSE_INDEX, + MENU_ENUM_LABEL_INPUT_MOUSE_INDEX_LAST = MENU_ENUM_LABEL_INPUT_MOUSE_INDEX + MAX_USERS, MENU_ENUM_LABEL_INPUT_SETTINGS_BEGIN, MENU_LABEL(INPUT_HOTKEY_BINDS),