diff --git a/input/input_mapper.c b/input/input_mapper.c index 08436ea61b..fd0c7a8754 100644 --- a/input/input_mapper.c +++ b/input/input_mapper.c @@ -66,37 +66,6 @@ input_mapper_t *input_mapper_new(uint16_t port) if (!handle) return NULL; - - /* testing values for mgs */ - - settings->uints.input_keymapper_ids[0] = RETROK_n; - settings->uints.input_keymapper_ids[1] = RETROK_SPACE; - settings->uints.input_keymapper_ids[2] = RETROK_F1; - settings->uints.input_keymapper_ids[3] = RETROK_RETURN; - settings->uints.input_keymapper_ids[4] = RETROK_UP; - settings->uints.input_keymapper_ids[5] = RETROK_DOWN; - settings->uints.input_keymapper_ids[6] = RETROK_LEFT; - settings->uints.input_keymapper_ids[7] = RETROK_RIGHT; - settings->uints.input_keymapper_ids[8] = RETROK_F1; - settings->uints.input_keymapper_ids[9] = RETROK_F2; - settings->uints.input_keymapper_ids[10] = RETROK_F3; - settings->uints.input_keymapper_ids[11] = RETROK_F4; - settings->uints.input_keymapper_ids[12] = RETROK_F5; - settings->uints.input_keymapper_ids[13] = RETROK_F6; - settings->uints.input_keymapper_ids[14] = RETROK_F7; - settings->uints.input_keymapper_ids[15] = RETROK_F8; - - /* testing values for keen5 */ - /*settings->uints.input_keymapper_ids[0] = RETROK_LCTRL; - settings->uints.input_keymapper_ids[1] = RETROK_SPACE; - settings->uints.input_keymapper_ids[2] = RETROK_ESCAPE; - settings->uints.input_keymapper_ids[3] = RETROK_RETURN; - settings->uints.input_keymapper_ids[4] = RETROK_UP; - settings->uints.input_keymapper_ids[5] = RETROK_DOWN; - settings->uints.input_keymapper_ids[6] = RETROK_LEFT; - settings->uints.input_keymapper_ids[7] = RETROK_RIGHT; - settings->uints.input_keymapper_ids[8] = RETROK_F1; - */ handle->port = port; mapper_ptr = handle; return handle; diff --git a/input/input_remapping.c b/input/input_remapping.c index 2f3bf3cb85..1b459c27af 100644 --- a/input/input_remapping.c +++ b/input/input_remapping.c @@ -23,6 +23,7 @@ #include "input_remapping.h" #include "../configuration.h" #include "../retroarch.h" +#include "../verbosity.h" static unsigned old_analog_dpad_mode[MAX_USERS]; static unsigned old_libretro_device[MAX_USERS]; @@ -50,8 +51,9 @@ bool input_remapping_load_file(void *data, const char *path) for (i = 0; i < MAX_USERS; i++) { - char buf_tmp[64]; + char s1[64], s2[64]; char key_ident[RARCH_FIRST_CUSTOM_BIND + 4][128] = {{0}}; + char keymapper_ident[RARCH_FIRST_CUSTOM_BIND + 4][128] = {{0}}; char key_strings[RARCH_FIRST_CUSTOM_BIND + 4][128] = { "b", "y", "select", "start", "up", "down", "left", "right", @@ -61,17 +63,41 @@ bool input_remapping_load_file(void *data, const char *path) old_analog_dpad_mode[i] = settings->uints.input_analog_dpad_mode[i]; old_libretro_device[i] = settings->uints.input_libretro_device[i]; - snprintf(buf_tmp, sizeof(buf_tmp), "input_player%u", i + 1); + s1[0] = '\0'; + s2[0] = '\0'; + + snprintf(s1, sizeof(s1), "input_player%u", i + 1); + snprintf(s2, sizeof(s2), "input_player%u_key", i + 1); for (j = 0; j < RARCH_FIRST_CUSTOM_BIND + 4; j++) { int key_remap = -1; - fill_pathname_join_delim(key_ident[j], buf_tmp, + fill_pathname_join_delim(key_ident[j], s1, key_strings[j], '_', sizeof(key_ident[j])); + fill_pathname_join_delim(keymapper_ident[j], s2, + key_strings[j], '_', sizeof(key_ident[j])); + if (config_get_int(conf, key_ident[j], &key_remap) && key_remap < RARCH_FIRST_CUSTOM_BIND) settings->uints.input_remap_ids[i][j] = key_remap; + + key_remap = -1; + + if (settings->uints.keyboard_mapper_port == i) + { + if (config_get_int(conf, keymapper_ident[j], &key_remap)) + { + settings->uints.input_keymapper_ids[j] = key_remap; +#if 0 + RARCH_LOG ("%s: %u\n", keymapper_ident[j], settings->uints.input_keymapper_ids[j]); +#endif + } + else + settings->uints.input_keymapper_ids[j] = RETROK_UNKNOWN; + } + + } for (j = 0; j < 4; j++) @@ -81,7 +107,7 @@ bool input_remapping_load_file(void *data, const char *path) snprintf(key_ident[RARCH_FIRST_CUSTOM_BIND + j], sizeof(key_ident[RARCH_FIRST_CUSTOM_BIND + j]), "%s_%s", - buf_tmp, + s1, key_strings[RARCH_FIRST_CUSTOM_BIND + j]); if (config_get_int(conf, key_ident[RARCH_FIRST_CUSTOM_BIND + j], @@ -90,11 +116,11 @@ bool input_remapping_load_file(void *data, const char *path) key_remap; } - snprintf(buf_tmp, sizeof(buf_tmp), "input_player%u_analog_dpad_mode", i + 1); - CONFIG_GET_INT_BASE(conf, settings, uints.input_analog_dpad_mode[i], buf_tmp); + snprintf(s1, sizeof(s1), "input_player%u_analog_dpad_mode", i + 1); + CONFIG_GET_INT_BASE(conf, settings, uints.input_analog_dpad_mode[i], s1); - snprintf(buf_tmp, sizeof(buf_tmp), "input_libretro_device_p%u", i + 1); - CONFIG_GET_INT_BASE(conf, settings, uints.input_libretro_device[i], buf_tmp); + snprintf(s1, sizeof(s1), "input_libretro_device_p%u", i + 1); + CONFIG_GET_INT_BASE(conf, settings, uints.input_libretro_device[i], s1); } config_file_free(conf); @@ -144,22 +170,27 @@ bool input_remapping_save_file(const char *path) for (i = 0; i < max_users; i++) { - char buf_tmp[64]; + char s1[64], s2[64]; char key_ident[RARCH_FIRST_CUSTOM_BIND + 4][128] = {{0}}; + char keymapper_ident[RARCH_FIRST_CUSTOM_BIND + 4][128] = {{0}}; char key_strings[RARCH_FIRST_CUSTOM_BIND + 4][128] = { "b", "y", "select", "start", "up", "down", "left", "right", "a", "x", "l", "r", "l2", "r2", "l3", "r3", "l_x", "l_y", "r_x", "r_y" }; - buf_tmp[0] = '\0'; + s1[0] = '\0'; + s2[0] = '\0'; - snprintf(buf_tmp, sizeof(buf_tmp), "input_player%u", i + 1); + snprintf(s1, sizeof(s1), "input_player%u", i + 1); + snprintf(s2, sizeof(s2), "input_player%u_key", i + 1); for (j = 0; j < RARCH_FIRST_CUSTOM_BIND + 4; j++) { - fill_pathname_join_delim(key_ident[j], buf_tmp, - key_strings[j], '_', sizeof(key_ident[j])); + fill_pathname_join_delim(key_ident[j], s1, + key_strings[j], '_', sizeof(key_ident[j])); + fill_pathname_join_delim(keymapper_ident[j], s2, + key_strings[j], '_', sizeof(key_ident[j])); /* only save values that have been modified */ if(j < RARCH_FIRST_CUSTOM_BIND) @@ -168,6 +199,10 @@ bool input_remapping_save_file(const char *path) config_set_int(conf, key_ident[j], settings->uints.input_remap_ids[i][j]); else config_unset(conf,key_ident[j]); + + if (settings->uints.keyboard_mapper_port == i && + settings->uints.input_keymapper_ids[j] != RETROK_UNKNOWN) + config_set_int(conf, keymapper_ident[j], settings->uints.input_keymapper_ids[j]); } else { @@ -177,10 +212,10 @@ bool input_remapping_save_file(const char *path) config_unset(conf,key_ident[j]); } } - snprintf(buf_tmp, sizeof(buf_tmp), "input_libretro_device_p%u", i + 1); - config_set_int(conf, buf_tmp, input_config_get_device(i)); - snprintf(buf_tmp, sizeof(buf_tmp), "input_player%u_analog_dpad_mode", i + 1); - config_set_int(conf, buf_tmp, settings->uints.input_analog_dpad_mode[i]); + snprintf(s1, sizeof(s1), "input_libretro_device_p%u", i + 1); + config_set_int(conf, s1, input_config_get_device(i)); + snprintf(s1, sizeof(s1), "input_player%u_analog_dpad_mode", i + 1); + config_set_int(conf, s1, settings->uints.input_analog_dpad_mode[i]); } ret = config_file_write(conf, remap_file);