Game controller registers all button presses when it's polled via /dev/input/js0, but doesn't when polled via /dev/input/event19

I’ve already posted about this on SuperUser but that didn’t receive any answers. Thus I’m asking here in hopes of valuable openSUSE expertise.

I have a “Saitek Side Panel Control Deck” which I’ve been trying to get to work under Tumbleweed lately (kernels 6.15.2 through 6.15.8). I vaguely recall that I already had it working some time in 2021 (back then, also Tumbleweed though a different install).

The problem is that most games (all I’ve tested with) don’t recognise all button presses. Even worse, KDE settings exhibits this problem too. Opening the “game controller” page of KDE settings correctly recognises the device, showing “Mad Catz Saitek Side Panel Control Deck (/dev/input/event19)” in the device selector and correctly listing all of its buttons. However, upon pressing some of them, they’re either not recognised as pressed or show up as a different button than they should. For example, the button labelled “7” shows up as button 10 when pressed.

If I, on the other hand, test the device using jstest-gtk which seems to read from the device via /dev/input/js0 instead of /dev/input/event19, all buttons work correctly. This also tells me that generally the labels of the buttons on the device correspond to the actual button number.

I have not changed any device settings. It has been this way since I first plugged the device in on this very Tumbleweed installation. If it’s relevant, this is the dmesg output upon connecting it:

[25236.727929] [  T52142] usb 1-2: new full-speed USB device number 10 using xhci_hcd
[25236.853052] [  T52142] usb 1-2: New USB device found, idVendor=0738, idProduct=2218, bcdDevice= 0.01
[25236.853057] [  T52142] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[25236.853059] [  T52142] usb 1-2: Product: Saitek Side Panel Control Deck
[25236.853061] [  T52142] usb 1-2: Manufacturer: Mad Catz
[25236.855397] [  T52142] input: Mad Catz Saitek Side Panel Control Deck as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:0738:2218.0009/input/input29
[25236.855646] [  T52142] hid-generic 0003:0738:2218.0009: input,hidraw5: USB HID v1.10 Gamepad [Mad Catz Saitek Side Panel Control Deck] on usb-0000:00:14.0-2/input0

I’ve checked the device with evemu-record which shows that events for all buttons are generated, showing up as event codes 304-319 and 704-715, respectively, and being labelled as e.g. BTN_SOUTH or other D-Pad or XBox-like buttons or BTN_TRIGGER_HAPPY1 etc. respectively. Events for all buttons show up though, which isn’t the case in KDE System Settings, Wine’s joy.cpl, or in games.

Previously, I thought I had some luck at least with Proton games by setting a specific registry key in that game’s Wine registry I believe forcing Wine to use it as an XInput device which has resulted in all buttons working correctly in that game’s control joy.cpl running via Protontricks, but it has not made a difference in-game. (Sadly, I can’t remember which key it was and I can’t currently find it in regedit, so a Steam update may have wiped it anyway. But it didn’t make a difference in any case.)

The goal is to ultimately make it usable with all games, including those I run under Proton via Steam. How would I go about this, what else could I check? Any pointers are much appreciated!

No change in behaviour with kernel 6.16.1…

No ideas whatsoever on what else I could try to diagnose the problem?

One more breadcrumb: Connecting the device to a Windows VM (under VirtualBox) shows all button presses, so this is not a hardware issue. Any ideas where configuration mapping press events to buttons/actions is stored?

I’ve just checked Wine again and the device shows up twice when running the Joystick Utility:

wine control joy.cpl

One of the two devices shows all buttons though and all of them can actually be pressed. This is very curious. I’m on Wine 10.13 and I guess that the Proton version used by the Steam games I’ve tested with is not there yet.

However, why don’t KDE System Settings register all button presses? Again, I can clearly see all necessary events being generated when inspecting the device with evtest.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.