Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Better fix for axis sorting with some Android controllers
Loading branch information
@@ -144,7 +144,21 @@ public void pollInputDevices() {
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;
}
}
Toggle all file notes