Disable Xbox axis deadzone handling by default

Fixes https://github.com/libsdl-org/SDL/issues/5227
This commit is contained in:
Sam Lantinga 2022-01-16 09:01:56 -08:00
parent 2a0cde8fd5
commit 85961b61a1

View file

@ -40,6 +40,12 @@
/* Define this if you want to log all packets from the controller */ /* Define this if you want to log all packets from the controller */
/*#define DEBUG_XBOX_PROTOCOL*/ /*#define DEBUG_XBOX_PROTOCOL*/
/* Define this if you want deadzone filtering done at this level.
* This introduces several issues, so this is disabled by default:
* https://github.com/libsdl-org/SDL/issues/5227
*/
/* #define ENABLE_AXIS_FILTERING */
#define CONTROLLER_NEGOTIATION_TIMEOUT_MS 300 #define CONTROLLER_NEGOTIATION_TIMEOUT_MS 300
#define CONTROLLER_PREPARE_INPUT_TIMEOUT_MS 50 #define CONTROLLER_PREPARE_INPUT_TIMEOUT_MS 50
@ -480,25 +486,31 @@ HIDAPI_DriverXboxOne_SetJoystickSensorsEnabled(SDL_HIDAPI_Device *device, SDL_Jo
static Sint16 FilterLeftThumb(Sint16 axis) static Sint16 FilterLeftThumb(Sint16 axis)
{ {
#ifdef ENABLE_AXIS_FILTERING
if (axis <= XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE && axis >= -XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE) { if (axis <= XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE && axis >= -XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE) {
return 0; return 0;
} }
#endif
return axis; return axis;
} }
static Sint16 FilterRightThumb(Sint16 axis) static Sint16 FilterRightThumb(Sint16 axis)
{ {
#ifdef ENABLE_AXIS_FILTERING
if (axis <= XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE && axis >= -XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE) { if (axis <= XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE && axis >= -XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE) {
return 0; return 0;
} }
#endif
return axis; return axis;
} }
static Sint16 FilterTrigger(Sint16 axis) static Sint16 FilterTrigger(Sint16 axis)
{ {
#ifdef ENABLE_AXIS_FILTERING
if (axis <= XINPUT_GAMEPAD_TRIGGER_THRESHOLD) { if (axis <= XINPUT_GAMEPAD_TRIGGER_THRESHOLD) {
return SDL_MIN_SINT16; return SDL_MIN_SINT16;
} }
#endif
return axis; return axis;
} }