diff --git a/intl/msg_hash_us.c b/intl/msg_hash_us.c index bcc8b93e30..724d018d03 100644 --- a/intl/msg_hash_us.c +++ b/intl/msg_hash_us.c @@ -632,12 +632,17 @@ int msg_hash_get_help_us_enum(enum msg_hash_enums msg, char *s, size_t len) " \n" "A value of 0 disables autosave."); break; - case MENU_ENUM_LABEL_INPUT_BIND_DEVICE_TYPE: + case MENU_ENUM_LABEL_VALUE_INPUT_ADC_TYPE: snprintf(s, len, - "Input Device Type. \n" + "Map specified analog stick for D-Pad input. \n" " \n" - "Picks which device type to use. This is \n" - "relevant for the libretro core itself."); + "If core has native analog support, " + "D-Pad mapping will be disabled unless a " + "'(Forced)' option is selected. \n" + " \n" + "If D-Pad mapping is forced, core will " + "receive no analog input from " + "specified stick."); break; case MENU_ENUM_LABEL_LIBRETRO_LOG_LEVEL: snprintf(s, len, diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 3d80a88a35..4939d48fef 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -1052,21 +1052,33 @@ MSG_HASH( "Load Configuration" ) MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESET_TO_DEFAULT_CONFIG, - "Reset to Defaults" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, - "Reset the current configuration to default values." + MENU_ENUM_SUBLABEL_CONFIGURATIONS, + "Load existing configuration and replace current values." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG, "Save Current Configuration" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVE_CURRENT_CONFIG, + "Overwrite current configuration file." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SAVE_NEW_CONFIG, "Save New Configuration" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVE_NEW_CONFIG, + "Save current configuration to separate file." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RESET_TO_DEFAULT_CONFIG, + "Reset to Defaults" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, + "Reset current configuration to default values." + ) /* Main Menu > Help */ @@ -3207,13 +3219,17 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_DEVICE_TYPE, "Device Type" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_DEVICE_TYPE, + "Specifies the emulated controller type." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_ADC_TYPE, "Analog to Digital Type" ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_ADC_TYPE, - "Use specified analog stick for D-Pad input. If core has native analog support, D-Pad mapping will be disabled unless a '(Forced)' option is selected. If D-Pad mapping is forced, core will receive no analog input from specified stick." + "Use specified analog stick for D-Pad input. 'Forced' modes override core native analog input." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_DEVICE_INDEX, @@ -3225,7 +3241,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_REMAP_PORT, - "Specifies which 'core' port (typically player number) will receive input from frontend controller port %u." + "Specifies which core port will receive input from frontend controller port %u." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_BIND_ALL, diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index c1d0f9f4c2..7277811eaa 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -228,11 +228,13 @@ DEFAULT_SUBLABEL_MACRO(menu_action_sublabel_setting_audio_mixer_stream_remove, DEFAULT_SUBLABEL_MACRO(menu_action_sublabel_setting_audio_mixer_stream_volume, MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME) #endif -DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_accessibility_enabled, MENU_ENUM_SUBLABEL_ACCESSIBILITY_ENABLED - ) -DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_accessibility_narrator_speech_speed, MENU_ENUM_SUBLABEL_ACCESSIBILITY_NARRATOR_SPEECH_SPEED - ) -DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_reset_to_default_config, MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG) +DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_accessibility_enabled, MENU_ENUM_SUBLABEL_ACCESSIBILITY_ENABLED) +DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_accessibility_narrator_speech_speed, MENU_ENUM_SUBLABEL_ACCESSIBILITY_NARRATOR_SPEECH_SPEED) + +DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_load_config, MENU_ENUM_SUBLABEL_CONFIGURATIONS) +DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_save_current_config, MENU_ENUM_SUBLABEL_SAVE_CURRENT_CONFIG) +DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_save_new_config, MENU_ENUM_SUBLABEL_SAVE_NEW_CONFIG) +DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_reset_to_default_config, MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quick_menu_override_options, MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quick_menu_start_streaming, MENU_ENUM_SUBLABEL_QUICK_MENU_START_STREAMING) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quick_menu_start_recording, MENU_ENUM_SUBLABEL_QUICK_MENU_START_RECORDING) @@ -437,6 +439,7 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_meta_overlay_next, ME #endif DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_hotkey_block_delay, MENU_ENUM_SUBLABEL_INPUT_HOTKEY_BLOCK_DELAY) +DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_device_type, MENU_ENUM_SUBLABEL_INPUT_DEVICE_TYPE) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_adc_type, MENU_ENUM_SUBLABEL_INPUT_ADC_TYPE) #ifdef HAVE_MATERIALUI DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_materialui_icons_enable, MENU_ENUM_SUBLABEL_MATERIALUI_ICONS_ENABLE) @@ -2062,8 +2065,24 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, return 0; } - /* Mapped input ports require special handling */ - if (type == MENU_SETTINGS_INPUT_INPUT_REMAP_PORT) + /* Quick Menu Port Controls require special handling */ + if ( type >= MENU_SETTINGS_REMAPPING_PORT_BEGIN + && type <= MENU_SETTINGS_REMAPPING_PORT_END) + { + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_user_bind_settings); + return 0; + } + else if (type == MENU_SETTINGS_INPUT_LIBRETRO_DEVICE) + { + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_device_type); + return 0; + } + else if (type == MENU_SETTINGS_INPUT_ANALOG_DPAD_MODE) + { + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_adc_type); + return 0; + } + else if (type == MENU_SETTINGS_INPUT_INPUT_REMAP_PORT) { BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_remap_port); return 0; @@ -3108,6 +3127,15 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_SHADER_OPTIONS: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_shader_options); break; + case MENU_ENUM_LABEL_CONFIGURATIONS: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_load_config); + break; + case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_save_current_config); + break; + case MENU_ENUM_LABEL_SAVE_NEW_CONFIG: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_save_new_config); + break; case MENU_ENUM_LABEL_RESET_TO_DEFAULT_CONFIG: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_reset_to_default_config); break; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index b69057101c..5b90acfeb5 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -9380,12 +9380,6 @@ unsigned menu_displaylist_build_list( MENU_ENUM_LABEL_CONFIGURATIONS, MENU_SETTING_ACTION, 0, 0, NULL)) count++; - if (menu_entries_append(list, - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_RESET_TO_DEFAULT_CONFIG), - msg_hash_to_str(MENU_ENUM_LABEL_RESET_TO_DEFAULT_CONFIG), - MENU_ENUM_LABEL_RESET_TO_DEFAULT_CONFIG, - MENU_SETTING_ACTION, 0, 0, NULL)) - count++; if (menu_entries_append(list, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG), msg_hash_to_str(MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG), @@ -9398,6 +9392,12 @@ unsigned menu_displaylist_build_list( MENU_ENUM_LABEL_SAVE_NEW_CONFIG, MENU_SETTING_ACTION, 0, 0, NULL)) count++; + if (menu_entries_append(list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_RESET_TO_DEFAULT_CONFIG), + msg_hash_to_str(MENU_ENUM_LABEL_RESET_TO_DEFAULT_CONFIG), + MENU_ENUM_LABEL_RESET_TO_DEFAULT_CONFIG, + MENU_SETTING_ACTION, 0, 0, NULL)) + count++; break; case DISPLAYLIST_PRIVACY_SETTINGS_LIST: { diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 4c12643f96..cb3d629061 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -7751,11 +7751,34 @@ static int generic_menu_iterate( menu->menu_state_msg, sizeof(menu->menu_state_msg)); else { - strlcpy(menu->menu_state_msg, - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE), - sizeof(menu->menu_state_msg)); + /* Special handling for input and remap items */ + if ( ( type >= MENU_SETTINGS_REMAPPING_PORT_BEGIN + && type <= MENU_SETTINGS_REMAPPING_PORT_END) + || type == MENU_SETTINGS_INPUT_LIBRETRO_DEVICE + || type == MENU_SETTINGS_INPUT_INPUT_REMAP_PORT) + { + get_current_menu_sublabel( + menu_st, + menu->menu_state_msg, sizeof(menu->menu_state_msg)); - ret = 0; + ret = 0; + } + /* Use detailed help text for 'Analog to Digital', which + * is the first item in global input settings */ + else if (type == MENU_SETTINGS_INPUT_ANALOG_DPAD_MODE + || type == MENU_SETTINGS_INPUT_BEGIN) + { + ret = msg_hash_get_help_enum(MENU_ENUM_LABEL_VALUE_INPUT_ADC_TYPE, + menu->menu_state_msg, sizeof(menu->menu_state_msg)); + } + else + { + strlcpy(menu->menu_state_msg, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE), + sizeof(menu->menu_state_msg)); + + ret = 0; + } } } } diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 43d5dd937e..8b11f701a3 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -9600,16 +9600,6 @@ static bool setting_append_list( parent_group); SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_LAKKA_ADVANCED); - CONFIG_ACTION( - list, list_info, - MENU_ENUM_LABEL_RESET_TO_DEFAULT_CONFIG, - MENU_ENUM_LABEL_VALUE_RESET_TO_DEFAULT_CONFIG, - &group_info, - &subgroup_info, - parent_group); - MENU_SETTINGS_LIST_CURRENT_ADD_CMD(list, list_info, CMD_EVENT_MENU_RESET_TO_DEFAULT_CONFIG); - SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_LAKKA_ADVANCED); - CONFIG_ACTION( list, list_info, MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG, @@ -9630,6 +9620,16 @@ static bool setting_append_list( MENU_SETTINGS_LIST_CURRENT_ADD_CMD(list, list_info, CMD_EVENT_MENU_SAVE_CONFIG); SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_LAKKA_ADVANCED); + CONFIG_ACTION( + list, list_info, + MENU_ENUM_LABEL_RESET_TO_DEFAULT_CONFIG, + MENU_ENUM_LABEL_VALUE_RESET_TO_DEFAULT_CONFIG, + &group_info, + &subgroup_info, + parent_group); + MENU_SETTINGS_LIST_CURRENT_ADD_CMD(list, list_info, CMD_EVENT_MENU_RESET_TO_DEFAULT_CONFIG); + SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_LAKKA_ADVANCED); + CONFIG_ACTION( list, list_info, MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE, diff --git a/msg_hash.h b/msg_hash.h index 54f75f1511..87bc79df61 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -997,6 +997,7 @@ enum msg_hash_enums MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_INDEX, MENU_ENUM_LABEL_VALUE_INPUT_REMAP_PORT, + MENU_ENUM_SUBLABEL_INPUT_DEVICE_TYPE, MENU_ENUM_SUBLABEL_INPUT_ADC_TYPE, MENU_ENUM_SUBLABEL_INPUT_REMAP_PORT,