Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add more known controllers to testevdev #7791

Merged
merged 10 commits into from
Jun 8, 2023
Merged

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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
Thanks to Jeremy Whiting.

Signed-off-by: Simon McVittie <[email protected]>
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 <[email protected]>
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 <[email protected]>
Thanks to Jeremy Whiting.

Signed-off-by: Simon McVittie <[email protected]>
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