Fix triggers being recognized as negative analog stick values when assigning an input if the axis is moved too slowly.

This commit is contained in:
Nadia Holmquist Pedersen 2022-07-07 23:16:28 +02:00
parent 35cbda9001
commit f5c1094d03
1 changed files with 13 additions and 11 deletions

View File

@ -245,19 +245,21 @@ protected:
Sint16 axisval = SDL_JoystickGetAxis(joy, i);
int diff = abs(axisval - axesRest[i]);
if (axesRest[i] < -16384 && axisval >= 0)
if (diff >= 16384)
{
*mapping = (oldmap & 0xFFFF) | 0x10000 | (2 << 20) | (i << 24);
click();
return;
}
else if (diff > 16384)
{
int axistype;
if (axisval > 0) axistype = 0;
else axistype = 1;
if (axesRest[i] < -16384) // Trigger
{
*mapping = (oldmap & 0xFFFF) | 0x10000 | (2 << 20) | (i << 24);
}
else // Analog stick
{
int axistype;
if (axisval > 0) axistype = 0;
else axistype = 1;
*mapping = (oldmap & 0xFFFF) | 0x10000 | (axistype << 20) | (i << 24);
}
*mapping = (oldmap & 0xFFFF) | 0x10000 | (axistype << 20) | (i << 24);
click();
return;
}