Comment on Latest Steam Deck update will warn you if an Xbox controller needs upgrading
MudMan@fedia.io 6 days ago
It's hard to fault Steam's controller layer, but I really wish they finally found a way to parse gyro data from third party controllers without having to run them on Switch mode. That goes for Microsoft and their own drivers. At this point it's weird to keep pretending the Windows controller APIs are supposed to work on their first party Xbox controllers only.
JohnEdwa@sopuli.xyz 6 days ago
It’s not possible, xinput doesn’t support gyroscopes, the controller simply doesn’t report that data. The “Switch” mode is setting it to be a standard HID/DirectInput device so that all of those inputs can be accessed, but that requires something (Steam Input) to sit between the controller and the game to map the inputs together.
MudMan@fedia.io 5 days ago
Yes, I'm aware, that's why I'm calling out it's weird that XInput doesn't support gyro, because we're a long way away of it being just based on Xbox controller support and a whole bunch of other controllers with a whole bunch of other features now go through it. If MS doesn't want to add gyro that's up to them, but Windows supporting it natively is way overdue. Of course at that point older controllers would probably need a firmware update, but hey, we'll cross that bridge when we get to it.
In practice the situation we're having is games are defaulting to Xinput and relying on Steam Input as an intermediate layer for additional features, so the end result is that gyro is... not NOT supported, but often not acknowledged at all, so you end up with a bunch of situations where you have to config gyro manually per game as a bit of a Steam-level hack, and then your controller is all wonky anywhere other than Steam because the way Switch/DI/PS input modes get picked up in non-Steam stuff can be weird.
And it gets worse in handhelds where you're absolutely at the mercy of how the manufacturer decided to set up their controller and gyro support, and sometimes need to do a lot of weird stuff to pass it on outside of Steam.
It's the jankiest part of controller set up left on PC gaming, and it's all down to this weird "mom and dad aren't talking" dance where MS keeps pretending PC controllers are fundamentally Xbox controllers at the XInput layer and Steam is the de facto curator of the controller support but has no interest (and to be frank no expectation or need) to have their controller layer work outside their launcher.
JohnEdwa@sopuli.xyz 5 days ago
Researching this a bit more, there is an answer in the “making” already - GameInput.
MudMan@fedia.io 5 days ago
That's interesting, but considering this note:
I'm really not sure this would do what we both want it to do. If everybody has had a GameInput version of their controller support since last-gen and we're still getting limited to the XInput feature set I don't think it sorts out gyro-on-Xinput mode at all. I am not familiar with the behind the scenes of how modern engine controller code is handled, but this sounds like maybe it's how games with native PS controller support are doing that, but not necessarily a new standard that will allow the default XInput PC setting of new controllers to pass gyro input to games detecting them as an XInput device.
It does show that all the tools are in place. MS has control over all the involved APIs. They could expand the Xbox controller feature set tomorrow, whether or not they add the feature to their base controller model. They just... don't. And Steam could deploy a Steam-independent Steam Input driver or software to just take over all controller support on a dedicated full-feature OS layer, but they also don't (on either Windows or Linux, as far as I can tell).
Honestly, there are enough workarounds (add games as non-Steam games, use Switch modes and so on), I just bump against the edge cases of it often because I'm both a controller and handheld nerd, so I'm stuck with a GPD Win handheld that insists on injecting their internal gyro as mouse inputs, along with a bunch of GameSir and Gullikit controllers that do weird things with gyro, like injecting it at the firmware level instead of passing it to the OS. And I mess around with enough emulators to also end up with "oh, this was on DI mode when I booted RetroArch, so now all my buttons are in the wrong places until I quit". It's only dumb for like ten of us... but man, is it dumb.