diff --git a/input/input_common.c b/input/input_common.c index 1ca2585a70..2960a410e5 100644 --- a/input/input_common.c +++ b/input/input_common.c @@ -1,6 +1,6 @@ /* RetroArch - A frontend for libretro. * Copyright (C) 2010-2014 - Hans-Kristian Arntzen - * + * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. @@ -934,6 +934,60 @@ const struct input_key_map input_config_key_map[] = { { "tilde", RETROK_BACKQUOTE }, { "backquote", RETROK_BACKQUOTE }, { "pause", RETROK_PAUSE }, + + /* Keys that weren't mappable before */ + { "quote", RETROK_QUOTE }, + { "comma", RETROK_COMMA }, + { "minus", RETROK_MINUS }, + { "slash", RETROK_SLASH }, + { "semicolon", RETROK_SEMICOLON }, + { "equals", RETROK_EQUALS }, + { "leftbracket", RETROK_LEFTBRACKET }, + { "backslash", RETROK_BACKSLASH }, + { "rightbracket", RETROK_RIGHTBRACKET }, + { "kp_period", RETROK_KP_PERIOD }, + { "kp_equals", RETROK_KP_EQUALS }, + { "rctrl", RETROK_RCTRL }, + { "ralt", RETROK_RALT }, + + /* Keys not referenced in any keyboard mapping (except perhaps apple_key_map_hidusage) */ + { "caret", RETROK_CARET }, + { "underscore", RETROK_UNDERSCORE }, + { "exclaim", RETROK_EXCLAIM }, + { "quotedbl", RETROK_QUOTEDBL }, + { "hash", RETROK_HASH }, + { "dollar", RETROK_DOLLAR }, + { "ampersand", RETROK_AMPERSAND }, + { "leftparen", RETROK_LEFTPAREN }, + { "rightparen", RETROK_RIGHTPAREN }, + { "asterisk", RETROK_ASTERISK }, + { "plus", RETROK_PLUS }, + { "colon", RETROK_COLON }, + { "less", RETROK_LESS }, + { "greater", RETROK_GREATER }, + { "question", RETROK_QUESTION }, + { "at", RETROK_AT }, + + { "f13", RETROK_F13 }, + { "f14", RETROK_F14 }, + { "f15", RETROK_F15 }, + + { "rmeta", RETROK_RMETA }, + { "lmeta", RETROK_LMETA }, + { "lsuper", RETROK_LSUPER }, + { "rsuper", RETROK_RSUPER }, + { "mode", RETROK_MODE }, + { "compose", RETROK_COMPOSE }, + + { "help", RETROK_HELP }, + { "sysreq", RETROK_SYSREQ }, + { "break", RETROK_BREAK }, + { "menu", RETROK_MENU }, + { "power", RETROK_POWER }, + { "euro", RETROK_EURO }, + { "undo", RETROK_UNDO }, + { "clear", RETROK_CLEAR }, + { "nul", RETROK_UNKNOWN }, { NULL, RETROK_UNKNOWN }, }; @@ -947,10 +1001,11 @@ static enum retro_key find_sk_bind(const char *str) return input_config_key_map[i].key; } + RARCH_WARN("Key name %s not found.\n", str); return RETROK_UNKNOWN; } -static enum retro_key find_sk_key(const char *str) +enum retro_key input_find_sk_key(const char *str) { if (strlen(str) == 1 && isalpha(*str)) return (enum retro_key)(RETROK_a + (tolower(*str) - (int)'a')); @@ -966,7 +1021,7 @@ void input_config_parse_key(config_file_t *conf, const char *prefix, const char snprintf(key, sizeof(key), "%s_%s", prefix, btn); if (config_get_array(conf, key, tmp, sizeof(tmp))) - bind->key = find_sk_key(tmp); + bind->key = input_find_sk_key(tmp); } const char *input_config_get_prefix(unsigned player, bool meta) @@ -1076,12 +1131,12 @@ static bool input_try_autoconfigure_joypad_from_conf(config_file_t *conf, unsign { if (!conf) return false; - + char ident[1024]; char input_driver[1024]; - + *ident = *input_driver = '\0'; - + config_get_array(conf, "input_device", ident, sizeof(ident)); config_get_array(conf, "input_driver", input_driver, sizeof(input_driver)); @@ -1139,14 +1194,14 @@ void input_config_autoconfigure_joypad(unsigned index, const char *name, const c break; } #endif - + // Now try files if (!internal_only) { struct string_list *list = dir_list_new(g_settings.input.autoconfig_dir, "cfg", false); if (!list) return; - + for (i = 0; i < list->size; i++) { config_file_t *conf = config_file_new(list->elems[i].data); @@ -1157,7 +1212,7 @@ void input_config_autoconfigure_joypad(unsigned index, const char *name, const c if (success) break; } - + string_list_free(list); } } diff --git a/input/input_common.h b/input/input_common.h index e68139b4c1..aae4571a1b 100644 --- a/input/input_common.h +++ b/input/input_common.h @@ -1,6 +1,6 @@ /* RetroArch - A frontend for libretro. * Copyright (C) 2010-2014 - Hans-Kristian Arntzen - * + * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. @@ -155,6 +155,8 @@ extern const char* const input_builtin_autoconfs[]; const char *input_config_get_prefix(unsigned player, bool meta); unsigned input_translate_str_to_bind_id(const char *str); // Returns RARCH_BIND_LIST_END on not found. +enum retro_key input_find_sk_key(const char *str); + void input_config_parse_key(config_file_t *conf, const char *prefix, const char *btn, struct retro_keybind *bind); diff --git a/input/overlay.c b/input/overlay.c index 800fb40a56..a23218674e 100644 --- a/input/overlay.c +++ b/input/overlay.c @@ -1,6 +1,6 @@ /* RetroArch - A frontend for libretro. * Copyright (C) 2010-2014 - Hans-Kristian Arntzen - * + * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. @@ -105,168 +105,6 @@ struct input_overlay char *overlay_path; }; -struct str_to_bind_map -{ - const char *str; - unsigned bind; -}; - -static const struct str_to_bind_map str_to_keyboard[] = { - { "retrok_backspace", RETROK_BACKSPACE }, - { "retrok_tab", RETROK_TAB }, - { "retrok_clear", RETROK_CLEAR }, - { "retrok_return", RETROK_RETURN }, - { "retrok_pause", RETROK_PAUSE }, - { "retrok_escape", RETROK_ESCAPE }, - { "retrok_space", RETROK_SPACE }, - { "retrok_exclaim", RETROK_EXCLAIM }, - { "retrok_quotedbl", RETROK_QUOTEDBL }, - { "retrok_hash", RETROK_HASH }, - { "retrok_dollar", RETROK_DOLLAR }, - { "retrok_ampersand", RETROK_AMPERSAND }, - { "retrok_quote", RETROK_QUOTE }, - { "retrok_leftparen", RETROK_LEFTPAREN }, - { "retrok_rightparen", RETROK_RIGHTPAREN }, - { "retrok_asterisk", RETROK_ASTERISK }, - { "retrok_plus", RETROK_PLUS }, - { "retrok_comma", RETROK_COMMA }, - { "retrok_minus", RETROK_MINUS }, - { "retrok_period", RETROK_PERIOD }, - { "retrok_slash", RETROK_SLASH }, - { "retrok_0", RETROK_0 }, - { "retrok_1", RETROK_1 }, - { "retrok_2", RETROK_2 }, - { "retrok_3", RETROK_3 }, - { "retrok_4", RETROK_4 }, - { "retrok_5", RETROK_5 }, - { "retrok_6", RETROK_6 }, - { "retrok_7", RETROK_7 }, - { "retrok_8", RETROK_8 }, - { "retrok_9", RETROK_9 }, - { "retrok_colon", RETROK_COLON }, - { "retrok_semicolon", RETROK_SEMICOLON }, - { "retrok_less", RETROK_LESS }, - { "retrok_equals", RETROK_EQUALS }, - { "retrok_greater", RETROK_GREATER }, - { "retrok_question", RETROK_QUESTION }, - { "retrok_at", RETROK_AT }, - { "retrok_leftbracket", RETROK_LEFTBRACKET }, - { "retrok_backslash", RETROK_BACKSLASH }, - { "retrok_rightbracket", RETROK_RIGHTBRACKET }, - { "retrok_caret", RETROK_CARET }, - { "retrok_underscore", RETROK_UNDERSCORE }, - { "retrok_backquote", RETROK_BACKQUOTE }, - { "retrok_a", RETROK_a }, - { "retrok_b", RETROK_b }, - { "retrok_c", RETROK_c }, - { "retrok_d", RETROK_d }, - { "retrok_e", RETROK_e }, - { "retrok_f", RETROK_f }, - { "retrok_g", RETROK_g }, - { "retrok_h", RETROK_h }, - { "retrok_i", RETROK_i }, - { "retrok_j", RETROK_j }, - { "retrok_k", RETROK_k }, - { "retrok_l", RETROK_l }, - { "retrok_m", RETROK_m }, - { "retrok_n", RETROK_n }, - { "retrok_o", RETROK_o }, - { "retrok_p", RETROK_p }, - { "retrok_q", RETROK_q }, - { "retrok_r", RETROK_r }, - { "retrok_s", RETROK_s }, - { "retrok_t", RETROK_t }, - { "retrok_u", RETROK_u }, - { "retrok_v", RETROK_v }, - { "retrok_w", RETROK_w }, - { "retrok_x", RETROK_x }, - { "retrok_y", RETROK_y }, - { "retrok_z", RETROK_z }, - { "retrok_delete", RETROK_DELETE }, - - { "retrok_kp0", RETROK_KP0 }, - { "retrok_kp1", RETROK_KP1 }, - { "retrok_kp2", RETROK_KP2 }, - { "retrok_kp3", RETROK_KP3 }, - { "retrok_kp4", RETROK_KP4 }, - { "retrok_kp5", RETROK_KP5 }, - { "retrok_kp6", RETROK_KP6 }, - { "retrok_kp7", RETROK_KP7 }, - { "retrok_kp8", RETROK_KP8 }, - { "retrok_kp9", RETROK_KP9 }, - { "retrok_kp_period", RETROK_KP_PERIOD }, - { "retrok_kp_divide", RETROK_KP_DIVIDE }, - { "retrok_kp_multiply", RETROK_KP_MULTIPLY }, - { "retrok_kp_minus", RETROK_KP_MINUS }, - { "retrok_kp_plus", RETROK_KP_PLUS }, - { "retrok_kp_enter", RETROK_KP_ENTER }, - { "retrok_kp_equals", RETROK_KP_EQUALS }, - - { "retrok_up", RETROK_UP }, - { "retrok_down", RETROK_DOWN }, - { "retrok_right", RETROK_RIGHT }, - { "retrok_left", RETROK_LEFT }, - { "retrok_insert", RETROK_INSERT }, - { "retrok_home", RETROK_HOME }, - { "retrok_end", RETROK_END }, - { "retrok_pageup", RETROK_PAGEUP }, - { "retrok_pagedown", RETROK_PAGEDOWN }, - - { "retrok_f1", RETROK_F1 }, - { "retrok_f2", RETROK_F2 }, - { "retrok_f3", RETROK_F3 }, - { "retrok_f4", RETROK_F4 }, - { "retrok_f5", RETROK_F5 }, - { "retrok_f6", RETROK_F6 }, - { "retrok_f7", RETROK_F7 }, - { "retrok_f8", RETROK_F8 }, - { "retrok_f9", RETROK_F9 }, - { "retrok_f10", RETROK_F10 }, - { "retrok_f11", RETROK_F11 }, - { "retrok_f12", RETROK_F12 }, - { "retrok_f13", RETROK_F13 }, - { "retrok_f14", RETROK_F14 }, - { "retrok_f15", RETROK_F15 }, - - { "retrok_numlock", RETROK_NUMLOCK }, - { "retrok_capslock", RETROK_CAPSLOCK }, - { "retrok_scrollock", RETROK_SCROLLOCK }, - { "retrok_rshift", RETROK_RSHIFT }, - { "retrok_lshift", RETROK_LSHIFT }, - { "retrok_rctrl", RETROK_RCTRL }, - { "retrok_lctrl", RETROK_LCTRL }, - { "retrok_ralt", RETROK_RALT }, - { "retrok_lalt", RETROK_LALT }, - { "retrok_rmeta", RETROK_RMETA }, - { "retrok_lmeta", RETROK_LMETA }, - { "retrok_lsuper", RETROK_LSUPER }, - { "retrok_rsuper", RETROK_RSUPER }, - { "retrok_mode", RETROK_MODE }, - { "retrok_compose", RETROK_COMPOSE }, - - { "retrok_help", RETROK_HELP }, - { "retrok_print", RETROK_PRINT }, - { "retrok_sysreq", RETROK_SYSREQ }, - { "retrok_break", RETROK_BREAK }, - { "retrok_menu", RETROK_MENU }, - { "retrok_power", RETROK_POWER }, - { "retrok_euro", RETROK_EURO }, - { "retrok_undo", RETROK_UNDO }, -}; - -static unsigned input_str_to_keyboard(const char *str) -{ - unsigned i; - for (i = 0; i < ARRAY_SIZE(str_to_keyboard); i++) - { - if (!strcmp(str_to_keyboard[i].str, str)) - return str_to_keyboard[i].bind; - } - - RARCH_ERR("[Overlay] Unknown keyboard key: %s.\n", str); - return RETROK_UNKNOWN; -} - static void input_overlay_scale(struct overlay *overlay, float scale) { size_t i; @@ -411,7 +249,7 @@ static bool input_overlay_load_desc(input_overlay_t *ol, config_file_t *conf, st else if (strstr(key, "retrok_") == key) { desc->type = OVERLAY_TYPE_KEYBOARD; - desc->key_mask = input_str_to_keyboard(key); + desc->key_mask = input_find_sk_key(key + 7); } else { @@ -795,7 +633,7 @@ static bool inside_hitbox(const struct overlay_desc *desc, float x, float y) float sq_dist = x_dist * x_dist + y_dist * y_dist; return sq_dist <= 1.0f; } - + case OVERLAY_HITBOX_RECT: return (fabs(x - desc->x) <= desc->range_x_mod) && (fabs(y - desc->y) <= desc->range_y_mod); diff --git a/media/overlays/qwerty/qwerty.cfg b/media/overlays/qwerty/qwerty.cfg index d765e18106..004de3c645 100644 --- a/media/overlays/qwerty/qwerty.cfg +++ b/media/overlays/qwerty/qwerty.cfg @@ -17,20 +17,20 @@ overlay0_desc9 = "retrok_f9,0.506944,0.784722,rect,0.020833,0.015625" overlay0_desc10 = "retrok_f10,0.550926,0.784722,rect,0.020833,0.015625" overlay0_desc11 = "retrok_f11,0.594907,0.784722,rect,0.020833,0.015625" overlay0_desc12 = "retrok_f12,0.638889,0.784722,rect,0.020833,0.015625" -overlay0_desc13 = "retrok_print,0.699074,0.784722,rect,0.020833,0.015625" -overlay0_desc14 = "retrok_scrollock,0.743056,0.784722,rect,0.020833,0.015625" +overlay0_desc13 = "retrok_print_screen,0.699074,0.784722,rect,0.020833,0.015625" +overlay0_desc14 = "retrok_scroll_lock,0.743056,0.784722,rect,0.020833,0.015625" overlay0_desc15 = "retrok_pause,0.787037,0.784722,rect,0.020833,0.015625" overlay0_desc16 = "retrok_tilde,0.020833,0.852431,rect,0.020833,0.015625" -overlay0_desc17 = "retrok_1,0.064815,0.852431,rect,0.020833,0.015625" -overlay0_desc18 = "retrok_2,0.108796,0.852431,rect,0.020833,0.015625" -overlay0_desc19 = "retrok_3,0.152778,0.852431,rect,0.020833,0.015625" -overlay0_desc20 = "retrok_4,0.196759,0.852431,rect,0.020833,0.015625" -overlay0_desc21 = "retrok_5,0.240741,0.852431,rect,0.020833,0.015625" -overlay0_desc22 = "retrok_6,0.284722,0.852431,rect,0.020833,0.015625" -overlay0_desc23 = "retrok_7,0.328704,0.852431,rect,0.020833,0.015625" -overlay0_desc24 = "retrok_8,0.372685,0.852431,rect,0.020833,0.015625" -overlay0_desc25 = "retrok_9,0.416667,0.852431,rect,0.020833,0.015625" -overlay0_desc26 = "retrok_0,0.460648,0.852431,rect,0.020833,0.015625" +overlay0_desc17 = "retrok_num1,0.064815,0.852431,rect,0.020833,0.015625" +overlay0_desc18 = "retrok_num2,0.108796,0.852431,rect,0.020833,0.015625" +overlay0_desc19 = "retrok_num3,0.152778,0.852431,rect,0.020833,0.015625" +overlay0_desc20 = "retrok_num4,0.196759,0.852431,rect,0.020833,0.015625" +overlay0_desc21 = "retrok_num5,0.240741,0.852431,rect,0.020833,0.015625" +overlay0_desc22 = "retrok_num6,0.284722,0.852431,rect,0.020833,0.015625" +overlay0_desc23 = "retrok_num7,0.328704,0.852431,rect,0.020833,0.015625" +overlay0_desc24 = "retrok_num8,0.372685,0.852431,rect,0.020833,0.015625" +overlay0_desc25 = "retrok_num9,0.416667,0.852431,rect,0.020833,0.015625" +overlay0_desc26 = "retrok_num0,0.460648,0.852431,rect,0.020833,0.015625" overlay0_desc27 = "retrok_minus,0.504630,0.852431,rect,0.020833,0.015625" overlay0_desc28 = "retrok_equals,0.548611,0.852431,rect,0.020833,0.015625" overlay0_desc29 = "retrok_backspace,0.615741,0.852431,rect,0.043981,0.015625" @@ -60,8 +60,8 @@ overlay0_desc52 = "retrok_k,0.407407,0.918403,rect,0.020833,0.015625" overlay0_desc53 = "retrok_l,0.451389,0.918403,rect,0.020833,0.015625" overlay0_desc54 = "retrok_semicolon,0.495370,0.918403,rect,0.020833,0.015625" overlay0_desc55 = "retrok_quote,0.539352,0.918403,rect,0.020833,0.015625" -overlay0_desc56 = "retrok_return,0.611111,0.918403,rect,0.048611,0.015625" -overlay0_desc57 = "retrok_lshift,0.048611,0.951389,rect,0.048611,0.015625" +overlay0_desc56 = "retrok_enter,0.611111,0.918403,rect,0.048611,0.015625" +overlay0_desc57 = "retrok_shift,0.048611,0.951389,rect,0.048611,0.015625" overlay0_desc58 = "retrok_z,0.120370,0.951389,rect,0.020833,0.015625" overlay0_desc59 = "retrok_x,0.164352,0.951389,rect,0.020833,0.015625" overlay0_desc60 = "retrok_c,0.208333,0.951389,rect,0.020833,0.015625" @@ -73,15 +73,15 @@ overlay0_desc65 = "retrok_comma,0.428241,0.951389,rect,0.020833,0.015625" overlay0_desc66 = "retrok_period,0.472222,0.951389,rect,0.020833,0.015625" overlay0_desc67 = "retrok_slash,0.516204,0.951389,rect,0.020833,0.015625" overlay0_desc68 = "retrok_rshift,0.599537,0.951389,rect,0.060185,0.015625" -overlay0_desc69 = "retrok_lctrl,0.031250,0.984375,rect,0.031250,0.015625" -overlay0_desc70 = "retrok_lalt,0.142361,0.984375,rect,0.031250,0.015625" +overlay0_desc69 = "retrok_ctrl,0.031250,0.984375,rect,0.031250,0.015625" +overlay0_desc70 = "retrok_alt,0.142361,0.984375,rect,0.031250,0.015625" overlay0_desc71 = "retrok_space,0.329861,0.984375,rect,0.153935,0.015625" overlay0_desc72 = "retrok_ralt,0.517361,0.984375,rect,0.031250,0.015625" overlay0_desc73 = "retrok_rctrl,0.628472,0.984375,rect,0.031250,0.015625" overlay0_desc74 = "retrok_insert,0.699074,0.852431,rect,0.020833,0.015625" overlay0_desc75 = "retrok_home,0.743056,0.852431,rect,0.020833,0.015625" overlay0_desc76 = "retrok_pageup,0.787037,0.852431,rect,0.020833,0.015625" -overlay0_desc77 = "retrok_delete,0.699074,0.885417,rect,0.020833,0.015625" +overlay0_desc77 = "retrok_del,0.699074,0.885417,rect,0.020833,0.015625" overlay0_desc78 = "retrok_end,0.743056,0.885417,rect,0.020833,0.015625" overlay0_desc79 = "retrok_pagedown,0.787037,0.885417,rect,0.020833,0.015625" overlay0_desc80 = "retrok_up,0.743056,0.951389,rect,0.020833,0.015625" @@ -89,19 +89,19 @@ overlay0_desc81 = "retrok_left,0.699074,0.984375,rect,0.020833,0.015625" overlay0_desc82 = "retrok_down,0.743056,0.984375,rect,0.020833,0.015625" overlay0_desc83 = "retrok_right,0.787037,0.984375,rect,0.020833,0.015625" overlay0_desc84 = "retrok_numlock,0.847222,0.852431,rect,0.020833,0.015625" -overlay0_desc85 = "retrok_kp_divide,0.891204,0.852431,rect,0.020833,0.015625" -overlay0_desc86 = "retrok_kp_multiply,0.935185,0.852431,rect,0.020833,0.015625" +overlay0_desc85 = "retrok_divide,0.891204,0.852431,rect,0.020833,0.015625" +overlay0_desc86 = "retrok_multiply,0.935185,0.852431,rect,0.020833,0.015625" overlay0_desc87 = "retrok_kp_minus,0.979167,0.852431,rect,0.020833,0.015625" -overlay0_desc88 = "retrok_kp7,0.847222,0.885417,rect,0.020833,0.015625" -overlay0_desc89 = "retrok_kp8,0.891204,0.885417,rect,0.020833,0.015625" -overlay0_desc90 = "retrok_kp9,0.935185,0.885417,rect,0.020833,0.015625" +overlay0_desc88 = "retrok_keypad7,0.847222,0.885417,rect,0.020833,0.015625" +overlay0_desc89 = "retrok_keypad8,0.891204,0.885417,rect,0.020833,0.015625" +overlay0_desc90 = "retrok_keypad9,0.935185,0.885417,rect,0.020833,0.015625" overlay0_desc91 = "retrok_kp_plus,0.979167,0.901910,rect,0.020833,0.032118" -overlay0_desc92 = "retrok_kp4,0.847222,0.918403,rect,0.020833,0.015625" -overlay0_desc93 = "retrok_kp5,0.891204,0.918403,rect,0.020833,0.015625" -overlay0_desc94 = "retrok_kp6,0.935185,0.918403,rect,0.020833,0.015625" -overlay0_desc95 = "retrok_kp1,0.847222,0.951389,rect,0.020833,0.015625" -overlay0_desc96 = "retrok_kp2,0.891204,0.951389,rect,0.020833,0.015625" -overlay0_desc97 = "retrok_kp3,0.935185,0.951389,rect,0.020833,0.015625" +overlay0_desc92 = "retrok_keypad4,0.847222,0.918403,rect,0.020833,0.015625" +overlay0_desc93 = "retrok_keypad5,0.891204,0.918403,rect,0.020833,0.015625" +overlay0_desc94 = "retrok_keypad6,0.935185,0.918403,rect,0.020833,0.015625" +overlay0_desc95 = "retrok_keypad1,0.847222,0.951389,rect,0.020833,0.015625" +overlay0_desc96 = "retrok_keypad2,0.891204,0.951389,rect,0.020833,0.015625" +overlay0_desc97 = "retrok_keypad3,0.935185,0.951389,rect,0.020833,0.015625" overlay0_desc98 = "retrok_kp_enter,0.979167,0.967882,rect,0.020833,0.032118" -overlay0_desc99 = "retrok_kp0,0.869213,0.984375,rect,0.042824,0.015625" +overlay0_desc99 = "retrok_keypad0,0.869213,0.984375,rect,0.042824,0.015625" overlay0_desc100 = "retrok_kp_equals,0.935185,0.984375,rect,0.020833,0.015625"