Skip to content

Commit

Permalink
Better fix for axis sorting with some Android controllers
Browse files Browse the repository at this point in the history
  • Loading branch information
slouken committed May 24, 2018
1 parent 361043a commit 5d1d035
Showing 1 changed file with 15 additions and 1 deletion.
Expand Up @@ -144,7 +144,21 @@ static class SDLJoystick {
static class RangeComparator implements Comparator<InputDevice.MotionRange> {
@Override
public int compare(InputDevice.MotionRange arg0, InputDevice.MotionRange arg1) {
return arg0.getAxis() - arg1.getAxis();
// Some controllers, like the Moga Pro 2, return AXIS_GAS (22) for right trigger and AXIS_BRAKE (23) for left trigger - swap them so they're sorted in the right order for SDL
int arg0Axis = arg0.getAxis();
int arg1Axis = arg1.getAxis();
if (arg0Axis == MotionEvent.AXIS_GAS) {
arg0Axis = MotionEvent.AXIS_BRAKE;
} else if (arg0Axis == MotionEvent.AXIS_BRAKE) {
arg0Axis = MotionEvent.AXIS_GAS;
}
if (arg1Axis == MotionEvent.AXIS_GAS) {
arg1Axis = MotionEvent.AXIS_BRAKE;
} else if (arg1Axis == MotionEvent.AXIS_BRAKE) {
arg1Axis = MotionEvent.AXIS_GAS;
}

return arg0Axis - arg1Axis;
}
}

Expand Down

0 comments on commit 5d1d035

Please sign in to comment.