mirror of
https://github.com/libretro/RetroArch
synced 2025-02-28 22:13:51 +00:00
save and load keymaps from file
This commit is contained in:
parent
654db9caac
commit
efce234dc4
@ -66,37 +66,6 @@ input_mapper_t *input_mapper_new(uint16_t port)
|
|||||||
|
|
||||||
if (!handle)
|
if (!handle)
|
||||||
return NULL;
|
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;
|
handle->port = port;
|
||||||
mapper_ptr = handle;
|
mapper_ptr = handle;
|
||||||
return handle;
|
return handle;
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include "input_remapping.h"
|
#include "input_remapping.h"
|
||||||
#include "../configuration.h"
|
#include "../configuration.h"
|
||||||
#include "../retroarch.h"
|
#include "../retroarch.h"
|
||||||
|
#include "../verbosity.h"
|
||||||
|
|
||||||
static unsigned old_analog_dpad_mode[MAX_USERS];
|
static unsigned old_analog_dpad_mode[MAX_USERS];
|
||||||
static unsigned old_libretro_device[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++)
|
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 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] =
|
char key_strings[RARCH_FIRST_CUSTOM_BIND + 4][128] =
|
||||||
{ "b", "y", "select", "start",
|
{ "b", "y", "select", "start",
|
||||||
"up", "down", "left", "right",
|
"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_analog_dpad_mode[i] = settings->uints.input_analog_dpad_mode[i];
|
||||||
old_libretro_device[i] = settings->uints.input_libretro_device[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++)
|
for (j = 0; j < RARCH_FIRST_CUSTOM_BIND + 4; j++)
|
||||||
{
|
{
|
||||||
int key_remap = -1;
|
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]));
|
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)
|
if (config_get_int(conf, key_ident[j], &key_remap)
|
||||||
&& key_remap < RARCH_FIRST_CUSTOM_BIND)
|
&& key_remap < RARCH_FIRST_CUSTOM_BIND)
|
||||||
settings->uints.input_remap_ids[i][j] = key_remap;
|
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++)
|
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],
|
snprintf(key_ident[RARCH_FIRST_CUSTOM_BIND + j],
|
||||||
sizeof(key_ident[RARCH_FIRST_CUSTOM_BIND + j]),
|
sizeof(key_ident[RARCH_FIRST_CUSTOM_BIND + j]),
|
||||||
"%s_%s",
|
"%s_%s",
|
||||||
buf_tmp,
|
s1,
|
||||||
key_strings[RARCH_FIRST_CUSTOM_BIND + j]);
|
key_strings[RARCH_FIRST_CUSTOM_BIND + j]);
|
||||||
|
|
||||||
if (config_get_int(conf, key_ident[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;
|
key_remap;
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(buf_tmp, sizeof(buf_tmp), "input_player%u_analog_dpad_mode", i + 1);
|
snprintf(s1, sizeof(s1), "input_player%u_analog_dpad_mode", i + 1);
|
||||||
CONFIG_GET_INT_BASE(conf, settings, uints.input_analog_dpad_mode[i], buf_tmp);
|
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);
|
snprintf(s1, sizeof(s1), "input_libretro_device_p%u", i + 1);
|
||||||
CONFIG_GET_INT_BASE(conf, settings, uints.input_libretro_device[i], buf_tmp);
|
CONFIG_GET_INT_BASE(conf, settings, uints.input_libretro_device[i], s1);
|
||||||
}
|
}
|
||||||
|
|
||||||
config_file_free(conf);
|
config_file_free(conf);
|
||||||
@ -144,21 +170,26 @@ bool input_remapping_save_file(const char *path)
|
|||||||
|
|
||||||
for (i = 0; i < max_users; i++)
|
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 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] = {
|
char key_strings[RARCH_FIRST_CUSTOM_BIND + 4][128] = {
|
||||||
"b", "y", "select", "start",
|
"b", "y", "select", "start",
|
||||||
"up", "down", "left", "right",
|
"up", "down", "left", "right",
|
||||||
"a", "x", "l", "r", "l2", "r2",
|
"a", "x", "l", "r", "l2", "r2",
|
||||||
"l3", "r3", "l_x", "l_y", "r_x", "r_y" };
|
"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++)
|
for (j = 0; j < RARCH_FIRST_CUSTOM_BIND + 4; j++)
|
||||||
{
|
{
|
||||||
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]));
|
key_strings[j], '_', sizeof(key_ident[j]));
|
||||||
|
|
||||||
/* only save values that have been modified */
|
/* only save values that have been modified */
|
||||||
@ -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]);
|
config_set_int(conf, key_ident[j], settings->uints.input_remap_ids[i][j]);
|
||||||
else
|
else
|
||||||
config_unset(conf,key_ident[j]);
|
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
|
else
|
||||||
{
|
{
|
||||||
@ -177,10 +212,10 @@ bool input_remapping_save_file(const char *path)
|
|||||||
config_unset(conf,key_ident[j]);
|
config_unset(conf,key_ident[j]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf(buf_tmp, sizeof(buf_tmp), "input_libretro_device_p%u", i + 1);
|
snprintf(s1, sizeof(s1), "input_libretro_device_p%u", i + 1);
|
||||||
config_set_int(conf, buf_tmp, input_config_get_device(i));
|
config_set_int(conf, s1, input_config_get_device(i));
|
||||||
snprintf(buf_tmp, sizeof(buf_tmp), "input_player%u_analog_dpad_mode", i + 1);
|
snprintf(s1, sizeof(s1), "input_player%u_analog_dpad_mode", i + 1);
|
||||||
config_set_int(conf, buf_tmp, settings->uints.input_analog_dpad_mode[i]);
|
config_set_int(conf, s1, settings->uints.input_analog_dpad_mode[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = config_file_write(conf, remap_file);
|
ret = config_file_write(conf, remap_file);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user