Add Steam Controller touchpads, capacitive touch for sticks, and grip sense#15528
Conversation
|
How does this behave with and without the Steam Client running in the background? What about gyro? |
A tester confirmed that it works fine with or without Steam running. Gyro was already supported prior to this PR but I asked two testers to check and they confirmed that it works as expected. |
Has this been tested on SteamOS gaming mode? With how the Steam Deck's embedded controller device behaves in this environment (it gets proxied by Steam Virtual Gamepad), I had made the assumption that the Steam Controller would exhibit the exact same behaviour. |
It has not. If you want, you could make a build that combines this PR with the updated testcontroller PR and have someone try it out. I won't receive my controller until next week. |
|
@ceski-1, I'm moving this to draft until you get your controller and can test directly. |
| } else if (SDL_IsJoystickSteamTriton(vendor, product)) { | ||
| // Second generation Steam controllers have 4 back paddle buttons | ||
| SDL_strlcat(mapping_string, "misc1:b11,paddle1:b12,paddle2:b13,paddle3:b14,paddle4:b15", sizeof(mapping_string)); | ||
| SDL_strlcat(mapping_string, "misc1:b11,paddle1:b12,paddle2:b13,paddle3:b14,paddle4:b15,touchpad:b16,misc2:b17,misc3:b18,misc4:b19,misc5:b20,misc6:b21", sizeof(mapping_string)); |
There was a problem hiding this comment.
Presumably a misc is being used as the second touchpad? Maybe work a comment.
|
Tested on Linux with With Steam running, Steam still sends the desktop profile inputs in addition to SDL seeing the gamepad inputs. With Steam not running, it successfully disables lizard mode so it's not sending any keyboard/mouse inputs while SDL is reading it as a gamepad, and once I close |
Did you check specifically on SteamOS in Gaming mode? Or just generic Linux + generic steam client? It's important to test functionality in gaming mode, as this has caused issues in the past with other Valve hardware. |
Playing around with a Steam Controller Puck plugged into a Steam Deck and |
Gentoo Linux with the regular steam client. I don't have any devices with SteamOS to test on. |
|
@ceski-1, this generally looks good. I'm not sure that we want to map everything to the misc buttons the way you've done it. If you'd like to pull the mapping changes out to a separate PR for discussion, we can merge the core hidapi changes once you've tested them with your own controller. |
|
does this controller need libusb for gyro on windows? |
No, it doesn't. |
Fixed in fa16d07 |
|
@slouken Okay, I tested with a new Steam Controller and the changes made by this PR work fine. Using testcontroller, the touchpads (click, touch, x, y, pressure), capacitive touch for sticks, and grip sense are all functional. The mapping has been removed for now, though, so of those features, only partial touchpad support remains (touch, x, y, and pressure). The features that were already present prior to this PR are fine too (back buttons, gyro/accel, and QAM button). What's not addressed by this PR, because it's a separate topic, is the long running problem of Steam Input interfering in various ways. See here for details: #15471 (comment) |
|
Great! This is merged, thanks! |

Description
Existing Issue(s)
#15471