Re: [PATCH] HID: playstation: Remap joystick axes to be centered at 0
From: Jiri Kosina
Date: Fri Oct 31 2025 - 05:00:41 EST
On Fri, 10 Oct 2025, Siarhei Vishniakou wrote:
> The joystick axes (ABS_X, ABS_Y, ABS_RX, ABS_RY) for PlayStation
> gamepads report a neutral state of 128 over HID, with a full range of
> [0, 255]. The driver previously mapped this directly, resulting in an
> evdev range of [0, 255] with a resting point of 128.
>
> This approach is unconventional for Linux gamepad drivers and has several
> drawbacks: it requires userspace applications to be aware of the
> non-zero resting state, and it is incompatible with the input
> subsystem's 'flat' (deadzone) logic, which assumes a resting point of 0.
>
> This patch remaps the four joystick axes to the conventional signed
> 8-bit range of [-128, 127], with 0 as the neutral state. This is
> accomplished by changing their evdev range in ps_gamepad_create() and
> translating the incoming hardware value in the report parsing functions
> by subtracting 128.
>
> The analog trigger axes (ABS_Z, ABS_RZ) are handled separately. Their
> resting state is 0 (un-pressed), and their hardware range of [0, 255]
> is already the conventional representation. They are left unmodified by
> this patch.
>
> This makes the joystick behavior consistent with other gamepad drivers
> while preserving the standard behavior for the triggers.
>
> Signed-off-by: Siarhei Vishniakou <svv@xxxxxxxxxx>
Hmmm ... as I am rather unaware of the existing playstation userspace
ecosystem -- is there any way how we could now be breaking existing
playstation-specific userspace assumptions that have already developed
based on asumptions that we're centered at 128?
Thanks,
--
Jiri Kosina
SUSE Labs