Skip to content

Conversation

smcv
Copy link
Contributor

@smcv smcv commented Jun 8, 2023

Similar to #7597, having broader test data helps to make sure our heuristic for detecting these won't regress.

A few of these controllers (coincidentally, all from my colleague Jeremy Whiting's collection of test devices) are detected as SDL_UDEV_DEVICE_JOYSTICK | SDL_UDEV_DEVICE_KEYBOARD because one of their buttons has been mapped to what is normally a keyboard key:

  • 8BitDo N30 Pro 2 via Bluetooth (but not via USB!) has KEY_MENU, the "Windows 95 keyboard" right-click-menu key, normally found between right Alt and right Ctrl
  • Google Stadia Controller has volume up/down and media play/pause buttons mapped the same way they would be for a multimedia keyboard or a Bluetooth headset
  • Microsoft Xbox Series S|X Controller has its Share button mapped to KEY_RECORD

I've assumed here that SDL is handling these devices as intended. (Is it?)

Thanks to Jeremy Whiting, Rémi Bernon, Sam Lantinga and apgrc for collecting this information.

@smcv smcv marked this pull request as draft June 8, 2023 16:44
smcv added 10 commits June 8, 2023 17:51
This was reported by Rémi Bernon as an example of older SDL's non-udev
code path going wrong for touchpads when the invoking user happens to
be in the input group, which I believe was fixed by fdd945f.

Signed-off-by: Simon McVittie <smcv@collabora.com>
We don't need to re-test the heuristic with the same input data, but
knowing that another device has equivalent evdev metadata is useful
information to record. Thanks to Jeremy Whiting.

Signed-off-by: Simon McVittie <smcv@collabora.com>
This didn't include any buttons, which I assume was because I
transcribed them incorrectly rather than reflecting reality. Confirmed
against another Switch Pro Controller on a more recent kernel (thanks
to Jeremy Whiting).

Signed-off-by: Simon McVittie <smcv@collabora.com>
A newer evemu-describe transcript has this same controller with its
buttons mapped differently, presumably a result of driver changes in
the Linux kernel. Either way, we should recognise it as a gamepad.
Thanks to Jeremy Whiting.

Signed-off-by: Simon McVittie <smcv@collabora.com>
This is a bit unusual because it has a small number of what would
ordinarily be keyboard keys. Thanks to Jeremy Whiting for recording
this.

Signed-off-by: Simon McVittie <smcv@collabora.com>
Like the Stadia controller, this is unusual because it represents the
Share button as the Record key from a multimedia keyboard (as of Linux
6.2.11 with the xpad driver). Thanks to Jeremy Whiting.

Signed-off-by: Simon McVittie <smcv@collabora.com>
Thanks to Jeremy Whiting.

Signed-off-by: Simon McVittie <smcv@collabora.com>
Also make details of PS4 gamepads (which are very similar from an evdev
point of view) more specific.

Thanks to Sam Lantinga and Jeremy Whiting for recording these.

Signed-off-by: Simon McVittie <smcv@collabora.com>
ValveSoftware/steam-devices#34 lists several
more devices that are functionally equivalent to this one from the
point of view of their evdev metadata. Thanks to apgrc.

Signed-off-by: Simon McVittie <smcv@collabora.com>
Thanks to Jeremy Whiting.

Signed-off-by: Simon McVittie <smcv@collabora.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants