From f0606d60d2568211d96caef8a1955d0f32216713 Mon Sep 17 00:00:00 2001 From: denu8thell Date: Tue, 8 Aug 2017 06:50:39 -0500 Subject: [PATCH] Add option and menu setting for viewing inputs on overlay. --- configuration.c | 1 + configuration.h | 1 + input/input_overlay.c | 8 ++++---- intl/msg_hash_lbl.h | 2 ++ intl/msg_hash_us.c | 5 +++++ intl/msg_hash_us.h | 2 ++ menu/menu_displaylist.c | 3 +++ menu/menu_setting.c | 16 ++++++++++++++++ msg_hash.h | 1 + 9 files changed, 35 insertions(+), 4 deletions(-) diff --git a/configuration.c b/configuration.c index 5bebae629e..4ec67a48c5 100644 --- a/configuration.c +++ b/configuration.c @@ -1226,6 +1226,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, #ifdef HAVE_OVERLAY SETTING_BOOL("input_overlay_enable", &settings->bools.input_overlay_enable, true, config_overlay_enable_default(), false); SETTING_BOOL("input_overlay_enable_autopreferred", &settings->bools.input_overlay_enable_autopreferred, true, true, false); + SETTING_BOOL("input_overlay_show_physical_inputs", &settings->bools.input_overlay_show_physical_inputs, true, false, false); SETTING_BOOL("input_overlay_hide_in_menu", &settings->bools.input_overlay_hide_in_menu, true, overlay_hide_in_menu, false); #endif #ifdef HAVE_COMMAND diff --git a/configuration.h b/configuration.h index f5dddca28a..4942464c76 100644 --- a/configuration.h +++ b/configuration.h @@ -88,6 +88,7 @@ typedef struct settings bool input_overlay_enable; bool input_overlay_enable_autopreferred; bool input_overlay_hide_in_menu; + bool input_overlay_show_physical_inputs; bool input_descriptor_label_show; bool input_descriptor_hide_unbound; bool input_all_users_control_menu; diff --git a/input/input_overlay.c b/input/input_overlay.c index 9285cbb9d0..ae656751dc 100644 --- a/input/input_overlay.c +++ b/input/input_overlay.c @@ -705,8 +705,9 @@ void input_poll_overlay(input_overlay_t *ol, float opacity, unsigned analog_dpad default: break; } - - button_pressed = input_overlay_add_inputs(ol, 0, analog_dpad_mode); + if(settings->bools.input_overlay_show_physical_inputs){ + button_pressed = input_overlay_add_inputs(ol, 0, analog_dpad_mode); + } if (button_pressed || polled) input_overlay_post_poll(ol, opacity); else @@ -803,7 +804,7 @@ static bool input_overlay_add_inputs(input_overlay_t *ol, desc->delta_x = dx; desc->delta_y = dy; - /*Maybe use some option here instead orf 0, only display + /*Maybe use some option here instead of 0, only display changes greater than some magnitude. */ if((dx*dx) > 0 || (dy*dy) > 0) @@ -815,7 +816,6 @@ static bool input_overlay_add_inputs(input_overlay_t *ol, desc->updated = true; button_pressed = true; } - break; default: break; diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index 8b25495454..9305c1b051 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -479,6 +479,8 @@ MSG_HASH(MENU_ENUM_LABEL_INPUT_OVERLAY_ENABLE, "input_overlay_enable") MSG_HASH(MENU_ENUM_LABEL_INPUT_OVERLAY_HIDE_IN_MENU, "overlay_hide_in_menu") +MSG_HASH(MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS, + "overlay_show_physical_inputs") MSG_HASH(MENU_ENUM_LABEL_INPUT_PLAYER_ANALOG_DPAD_MODE, "input_player%u_analog_dpad_mode") MSG_HASH(MENU_ENUM_LABEL_INPUT_POLL_TYPE_BEHAVIOR, diff --git a/intl/msg_hash_us.c b/intl/msg_hash_us.c index 45f4d19841..52ad99010b 100644 --- a/intl/msg_hash_us.c +++ b/intl/msg_hash_us.c @@ -572,6 +572,11 @@ int menu_hash_get_help_us_enum(enum msg_hash_enums msg, char *s, size_t len) { "Hide the current overlay from appearing \n" "inside the menu."); break; + case MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS: + snprintf(s, len, + "Show controller button presses on \n" + "the onscreen overlay."); + break; case MENU_ENUM_LABEL_OVERLAY_PRESET: snprintf(s, len, "Path to input overlay."); diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 04e4a5ba52..74e7f3f9c0 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -827,6 +827,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_ENABLE, "Display Overlay") MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU, "Hide Overlay In Menu") +MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS, + "Show Inputs On Overlay") MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR, "Poll Type Behavior") MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR_EARLY, diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 5e5538b6c4..ced6c3b1fa 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -5007,6 +5007,9 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_INPUT_OVERLAY_HIDE_IN_MENU, PARSE_ONLY_BOOL, false); + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS, + PARSE_ONLY_BOOL, false); menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_OVERLAY_PRESET, PARSE_ONLY_PATH, false); diff --git a/menu/menu_setting.c b/menu/menu_setting.c index cbeaf4012d..7664b20c6f 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -4891,6 +4891,22 @@ static bool setting_append_list( ); (*list)[list_info->index - 1].change_handler = overlay_enable_toggle_change_handler; + CONFIG_BOOL( + list, list_info, + &settings->bools.input_overlay_show_physical_inputs, + MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS, + MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS, + false, + MENU_ENUM_LABEL_VALUE_OFF, + MENU_ENUM_LABEL_VALUE_ON, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler, + SD_FLAG_NONE + ); + CONFIG_PATH( list, list_info, settings->paths.path_overlay, diff --git a/msg_hash.h b/msg_hash.h index de83221198..044d5a48e6 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -598,6 +598,7 @@ enum msg_hash_enums MENU_LABEL(INPUT_OSK_OVERLAY_ENABLE), MENU_LABEL(INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO), MENU_LABEL(INPUT_OVERLAY_HIDE_IN_MENU), + MENU_LABEL(INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS), MENU_LABEL(INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE), MENU_LABEL(INPUT_SMALL_KEYBOARD_ENABLE), MENU_LABEL(INPUT_TOUCH_ENABLE),