input: fix the mapping (if skip is pressed on keyboard).

This commit is contained in:
sorgelig
2020-02-29 00:45:35 +08:00
parent 9e9048fed9
commit ca515a23e8

View File

@@ -28,6 +28,9 @@ static void trim(char * s)
memmove(s, p, l + 1);
}
static char joy_names[NUMBUTTONS][32];
static int joy_count = 0;
static char joy_nnames[NUMBUTTONS][32];
static char joy_pnames[NUMBUTTONS][32];
static int defaults = 0;
@@ -36,10 +39,10 @@ static void read_buttons()
{
char *p;
memset(joy_bnames, 0, sizeof(joy_bnames));
memset(joy_names, 0, sizeof(joy_names));
memset(joy_nnames, 0, sizeof(joy_nnames));
memset(joy_pnames, 0, sizeof(joy_pnames));
joy_bcount = 0;
joy_count = 0;
defaults = 0;
user_io_read_confstr();
@@ -50,18 +53,18 @@ static void read_buttons()
{
for (int n = 0; n < NUMBUTTONS - DPAD_COUNT; n++)
{
substrcpy(joy_bnames[n], p, n);
if (!joy_bnames[n][0]) break;
substrcpy(joy_names[n], p, n);
if (!joy_names[n][0]) break;
printf("joy_bname[%d] = %s\n", n, joy_bnames[n]);
printf("joy_bname[%d] = %s\n", n, joy_names[n]);
memcpy(joy_nnames[n], joy_bnames[n], sizeof(joy_nnames[0]));
memcpy(joy_nnames[n], joy_names[n], sizeof(joy_nnames[0]));
char *sstr = strchr(joy_nnames[n], '(');
if (sstr) *sstr = 0;
trim(joy_nnames[n]);
if (!joy_nnames[n][0]) break;
joy_bcount++;
joy_count++;
}
printf("\n");
}
@@ -74,7 +77,7 @@ static void read_buttons()
if (p)
{
memset(joy_nnames, 0, sizeof(joy_nnames));
for (int n = 0; n < joy_bcount; n++)
for (int n = 0; n < joy_count; n++)
{
substrcpy(joy_nnames[n], p, n);
trim(joy_nnames[n]);
@@ -88,7 +91,7 @@ static void read_buttons()
if (p)
{
defaults = cfg.gamepad_defaults;
for (int n = 0; n < joy_bcount; n++)
for (int n = 0; n < joy_count; n++)
{
substrcpy(joy_pnames[n], p, n);
trim(joy_pnames[n]);
@@ -100,7 +103,7 @@ static void read_buttons()
static int has_X_button()
{
for (int i = 0; i < joy_bcount; i++)
for (int i = 0; i < joy_count; i++)
{
if (!strcasecmp(joy_nnames[i], "X")) return 1;
}
@@ -153,9 +156,9 @@ void map_joystick(uint32_t *map, uint32_t *mmap)
}
// loop through core requested buttons and construct result map
for (int i=0, n=0; i<joy_bcount; i++)
for (int i=0, n=0; i<joy_count; i++)
{
if (!strcmp(joy_bnames[i], "-")) continue;
if (!strcmp(joy_names[i], "-")) continue;
int idx = i+DPAD_COUNT;
char *btn_name = defaults ? joy_pnames[n] : joy_nnames[n];
@@ -240,7 +243,7 @@ void map_joystick(uint32_t *map, uint32_t *mmap)
if (map[idx] && mapped)
{
strcat(mapinfo, ": ");
strcat(mapinfo, joy_bnames[i]);
strcat(mapinfo, joy_names[i]);
}
n++;
@@ -270,14 +273,14 @@ void map_joystick_show(uint32_t *map, uint32_t *mmap)
mapinfo[0] = 0;
// loop through core requested buttons and construct result map
for (int i = 0; i < joy_bcount; i++)
for (int i = 0; i < joy_count; i++)
{
if (!strcmp(joy_bnames[i], "-")) continue;
if (!strcmp(joy_names[i], "-")) continue;
if(mapinfo[0]) strcat(mapinfo, "\n");
strcat(mapinfo, get_std_name((uint16_t)(map[i + DPAD_COUNT]), mmap));
strcat(mapinfo, ": ");
strcat(mapinfo, joy_bnames[i]);
strcat(mapinfo, joy_names[i]);
}
Info(mapinfo, 4000);