Re: [PATCH 2/2] hid-sony: DS3: Report analog buttons for Sixaxis

From: Max Staudt
Date: Tue Aug 29 2023 - 11:55:17 EST


On 8/27/23 00:21, Max Staudt wrote:
This change exposes these buttons as axes in a way that is as backwards
compatible and as close to the Linux gamepad spec as possible.

[...]

- The D-Pad as ABS_HAT0X/ABS_HAT0Y, -255 to 255


One further idea:

The DualShock 3 reports all 4 D-pad buttons separately, and hid-sony currently reports them as discrete digital buttons to userspace.


Would it be better to do the same with the analog buttons, i.e. to report the 4 measurements as discrete axes, rather than the current patch's approach of merging them into two logical axes?

Of course, this would require 4 more axes, this would not fit into any existing scheme, and since we've run out of ABS_MISC+n at this point, this could be a further reason for officially reserving a range of axes for analog buttons. Something like:


#define ABS_BTN_SOUTH 0x40
#define ABS_BTN_A ABS_BTN_SOUTH
#define ABS_BTN_EAST 0x41
#define ABS_BTN_B ABS_BTN_EAST
#define ABS_BTN_C 0x42
#define ABS_BTN_NORTH 0x43
#define ABS_BTN_X ABS_BTN_NORTH
#define ABS_BTN_WEST 0x44
#define ABS_BTN_Y ABS_BTN_WEST
#define ABS_BTN_Z 0x45

#define ABS_BTN_DPAD_UP 0x46
#define ABS_BTN_DPAD_DOWN 0x47
#define ABS_BTN_DPAD_LEFT 0x48
#define ABS_BTN_DPAD_RIGHT 0x49

#define ABS_MAX 0x4f
#define ABS_CNT (ABS_MAX+1)



Max