From 640de49c1a8ef158383f77d8b3e273fb2ca632b6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 25 Oct 2015 10:41:53 +0100 Subject: [PATCH] Move Input Hotkey Binds to 'Input Settings' --- menu/cbs/menu_cbs_deferred_push.c | 8 ++++++++ menu/cbs/menu_cbs_ok.c | 16 ++++++++++++++++ menu/intl/menu_hash_us.c | 6 ++++++ menu/menu_cbs.h | 1 + menu/menu_displaylist.c | 27 +++++++++++++++++++++++++++ menu/menu_displaylist.h | 8 +++++--- menu/menu_hash.h | 4 ++++ menu/menu_setting.c | 9 ++++++++- 8 files changed, 75 insertions(+), 4 deletions(-) diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index 5cdc67315b..4d562a9733 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -84,6 +84,11 @@ static int deferred_push_playlist_settings_list(menu_displaylist_info_t *info) return deferred_push_dlist(info, DISPLAYLIST_PLAYLIST_SETTINGS_LIST); } +static int deferred_push_input_hotkey_binds_list(menu_displaylist_info_t *info) +{ + return deferred_push_dlist(info, DISPLAYLIST_INPUT_HOTKEY_BINDS_LIST); +} + static int deferred_push_accounts_cheevos_list(menu_displaylist_info_t *info) { return deferred_push_dlist(info, DISPLAYLIST_ACCOUNTS_CHEEVOS_LIST); @@ -582,6 +587,9 @@ static int menu_cbs_init_bind_deferred_push_compare_label(menu_file_list_cbs_t * case MENU_LABEL_DEFERRED_PLAYLIST_SETTINGS_LIST: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_playlist_settings_list); break; + case MENU_LABEL_DEFERRED_INPUT_HOTKEY_BINDS_LIST: + BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_input_hotkey_binds_list); + break; case MENU_LABEL_DEFERRED_ACCOUNTS_CHEEVOS_LIST: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_accounts_cheevos_list); break; diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index dfcd017779..47ddee6027 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -312,6 +312,12 @@ int generic_action_ok_displaylist_push(const char *path, info_path = path; info_label = menu_hash_to_str(MENU_LABEL_DEFERRED_INPUT_SETTINGS_LIST); break; + case ACTION_OK_DL_INPUT_HOTKEY_BINDS_LIST: + info.directory_ptr = idx; + info.type = type; + info_path = path; + info_label = menu_hash_to_str(MENU_LABEL_DEFERRED_INPUT_HOTKEY_BINDS_LIST); + break; case ACTION_OK_DL_PLAYLIST_SETTINGS_LIST: info.directory_ptr = idx; info.type = type; @@ -1600,6 +1606,13 @@ static int action_ok_push_playlist_settings_list(const char *path, ACTION_OK_DL_PLAYLIST_SETTINGS_LIST); } +static int action_ok_push_input_hotkey_binds_list(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, 0, 0, entry_idx, + ACTION_OK_DL_INPUT_HOTKEY_BINDS_LIST); +} + static int action_ok_push_user_binds_list(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -1925,6 +1938,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, case MENU_LABEL_PLAYLIST_SETTINGS: BIND_ACTION_OK(cbs, action_ok_push_playlist_settings_list); break; + case MENU_LABEL_INPUT_HOTKEY_BINDS: + BIND_ACTION_OK(cbs, action_ok_push_input_hotkey_binds_list); + break; case MENU_LABEL_ACCOUNTS_RETRO_ACHIEVEMENTS: BIND_ACTION_OK(cbs, action_ok_push_accounts_cheevos_list); break; diff --git a/menu/intl/menu_hash_us.c b/menu/intl/menu_hash_us.c index e868b12a1b..02481f144c 100644 --- a/menu/intl/menu_hash_us.c +++ b/menu/intl/menu_hash_us.c @@ -46,6 +46,12 @@ static const char *menu_hash_to_str_us_label(uint32_t hash) return "deferred_input_settings_list"; case MENU_LABEL_ACCOUNTS_LIST: return "accounts_list"; + case MENU_LABEL_DEFERRED_INPUT_HOTKEY_BINDS_LIST: + return "deferred_input_hotkey_binds"; + case MENU_LABEL_INPUT_HOTKEY_BINDS: + return "input_hotkey_binds"; + case MENU_LABEL_INPUT_HOTKEY_BINDS_BEGIN: + return "input_hotkey_binds_begin"; case MENU_LABEL_INPUT_SETTINGS_BEGIN: return "input_settings_begin"; case MENU_LABEL_PLAYLIST_SETTINGS_BEGIN: diff --git a/menu/menu_cbs.h b/menu/menu_cbs.h index 2b758a329d..0045d1f435 100644 --- a/menu/menu_cbs.h +++ b/menu/menu_cbs.h @@ -42,6 +42,7 @@ enum ACTION_OK_DL_PUSH_DEFAULT, ACTION_OK_DL_DOWNLOADS_DIR, ACTION_OK_DL_INPUT_SETTINGS_LIST, + ACTION_OK_DL_INPUT_HOTKEY_BINDS_LIST, ACTION_OK_DL_PLAYLIST_SETTINGS_LIST, ACTION_OK_DL_ACCOUNTS_LIST, ACTION_OK_DL_ACCOUNTS_CHEEVOS_LIST, diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 3842e56148..e69126ccaa 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -33,6 +33,7 @@ #include "../config.features.h" #include "../git_version.h" #include "../file_ext.h" +#include "../input/input_common.h" #ifdef __linux__ #include "../frontend/drivers/platform_linux.h" @@ -1478,6 +1479,9 @@ int menu_displaylist_parse_settings(void *data, menu_displaylist_info_t *info, case PARSE_ONLY_UINT: precond = ST_UINT; break; + case PARSE_ONLY_BIND: + precond = ST_BIND; + break; case PARSE_ONLY_BOOL: precond = ST_BOOL; break; @@ -1525,6 +1529,10 @@ int menu_displaylist_parse_settings(void *data, menu_displaylist_info_t *info, if (type == ST_UINT) break; goto loop; + case PARSE_ONLY_BIND: + if (type == ST_BIND) + break; + goto loop; case PARSE_ONLY_BOOL: if (type == ST_BOOL) break; @@ -1554,6 +1562,7 @@ loop: if (menu_setting_get_type(setting) == precond) time_to_exit = true; break; + case PARSE_ONLY_BIND: case PARSE_ONLY_FLOAT: case PARSE_ONLY_BOOL: case PARSE_ONLY_UINT: @@ -2330,6 +2339,7 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) case DISPLAYLIST_DATABASE_PLAYLISTS: case DISPLAYLIST_DATABASE_PLAYLISTS_HORIZONTAL: case DISPLAYLIST_VIDEO_FILTERS: + case DISPLAYLIST_INPUT_HOTKEY_BINDS_LIST: case DISPLAYLIST_INPUT_SETTINGS_LIST: case DISPLAYLIST_PLAYLIST_SETTINGS_LIST: case DISPLAYLIST_AUDIO_FILTERS: @@ -2483,6 +2493,21 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) menu_hash_to_str(MENU_LABEL_CONTENT_HISTORY_SIZE), PARSE_ONLY_UINT, false); info->need_push = true; break; + case DISPLAYLIST_INPUT_HOTKEY_BINDS_LIST: + { + unsigned i; + + for (i = 0; i < RARCH_BIND_LIST_END; i++) + { + const struct input_bind_map* keybind = (const struct input_bind_map*) + &input_config_bind_map[i]; + ret = menu_displaylist_parse_settings(menu, info, + keybind->base, PARSE_ONLY_BIND, false); + (void)ret; + } + } + info->need_push = true; + break; case DISPLAYLIST_INPUT_SETTINGS_LIST: ret = menu_displaylist_parse_settings(menu, info, menu_hash_to_str(MENU_LABEL_INPUT_MAX_USERS), PARSE_ONLY_UINT, false); @@ -2510,6 +2535,8 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) menu_hash_to_str(MENU_LABEL_INPUT_TURBO_PERIOD), PARSE_ONLY_UINT, false); ret = menu_displaylist_parse_settings(menu, info, menu_hash_to_str(MENU_LABEL_INPUT_DUTY_CYCLE), PARSE_ONLY_UINT, false); + ret = menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_INPUT_HOTKEY_BINDS), PARSE_ACTION, false); { unsigned user; diff --git a/menu/menu_displaylist.h b/menu/menu_displaylist.h index 801307763d..40dba32a6e 100644 --- a/menu/menu_displaylist.h +++ b/menu/menu_displaylist.h @@ -40,9 +40,10 @@ enum PARSE_ONLY_UINT = (1 << 3), PARSE_ONLY_BOOL = (1 << 4), PARSE_ONLY_FLOAT = (1 << 5), - PARSE_ONLY_GROUP = (1 << 6), - PARSE_ONLY_SUB_GROUP = (1 << 7), - PARSE_SUB_GROUP = (1 << 8) + PARSE_ONLY_BIND = (1 << 6), + PARSE_ONLY_GROUP = (1 << 7), + PARSE_ONLY_SUB_GROUP = (1 << 8), + PARSE_SUB_GROUP = (1 << 9) }; enum @@ -94,6 +95,7 @@ enum DISPLAYLIST_USER_BINDS_LIST, DISPLAYLIST_ACCOUNTS_LIST, DISPLAYLIST_INPUT_SETTINGS_LIST, + DISPLAYLIST_INPUT_HOTKEY_BINDS_LIST, DISPLAYLIST_PLAYLIST_SETTINGS_LIST, DISPLAYLIST_ACCOUNTS_CHEEVOS_LIST, DISPLAYLIST_LOAD_CONTENT_LIST, diff --git a/menu/menu_hash.h b/menu/menu_hash.h index 0ef2e05ded..13b25abd3c 100644 --- a/menu/menu_hash.h +++ b/menu/menu_hash.h @@ -22,6 +22,8 @@ extern "C" { #endif +#define MENU_LABEL_INPUT_HOTKEY_BINDS_BEGIN 0x5a56139bU + #define MENU_LABEL_INPUT_SETTINGS 0x78b4a7c5U #define MENU_LABEL_PLAYLIST_SETTINGS_BEGIN 0x80a8d2cbU @@ -188,6 +190,8 @@ extern "C" { #define MENU_LABEL_VIDEO_MESSAGE_POS_Y 0xa133c369U #define MENU_LABEL_VALUE_VIDEO_MESSAGE_POS_Y 0x4f2559beU +#define MENU_LABEL_DEFERRED_INPUT_HOTKEY_BINDS_LIST 0x10b41d97U +#define MENU_LABEL_INPUT_HOTKEY_BINDS 0x1b7ef2d7U #define MENU_LABEL_VALUE_INPUT_HOTKEY_BINDS 0x1cb39c19U #define MENU_LABEL_VALUE_FRAME_THROTTLE_SETTINGS 0x573b8837U diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 7b3c7860d9..31deeff9f9 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -4854,7 +4854,7 @@ static bool setting_append_list_input_hotkey_options( settings_t *settings = config_get_ptr(); START_GROUP(group_info, - menu_hash_to_str(MENU_LABEL_VALUE_INPUT_HOTKEY_BINDS), + menu_hash_to_str(MENU_LABEL_INPUT_HOTKEY_BINDS_BEGIN), parent_group); parent_group = menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS); @@ -5062,6 +5062,13 @@ static bool setting_append_list_input_options( START_SUB_GROUP(list, list_info, "Binds", group_info.name, subgroup_info, parent_group); + CONFIG_ACTION( + menu_hash_to_str(MENU_LABEL_INPUT_HOTKEY_BINDS), + menu_hash_to_str(MENU_LABEL_VALUE_INPUT_HOTKEY_BINDS), + group_info.name, + subgroup_info.name, + parent_group); + for (user = 0; user < MAX_USERS; user++) { static char binds_list[MAX_USERS][PATH_MAX_LENGTH];