Hacker Timesnew | past | comments | ask | show | jobs | submitlogin

I'm not sure that's Valve's fault.

Windows is designed for gamepads to emulate an Xbox controller. All those Steam Deck competitors are implemented as an Xbox controller with a partial keyboard grafted on. That's why you need Legion Space or Armoury Crate to make them usable - they tell the controller firmware what keybindings to send for those rear paddles.

InputPlumber serves this purpose on Linux. Without it, you just get ABXY, start, select, nav, and shoulder buttons - the same layout that's been on the Xbox forever, because games don't understand the random partial keyboard that shares an internal USB hub with the Xbox pad clone. Thankfully on Linux, you're not stuck with one durable keybinding per paddle - once InputPlumber unifies that USB hub back into a controller, you can map all its buttons per-game with Steam Input. This controller brings that same convenience to Windows too.

It's not that Valve is making a proprietary controller - it's that the Windows gaming ecosystem assumes a proprietary controller, and Valve doesn't conform to that assumption. Instead, they provide a fully featured controller and let you configure it per-game in Steam. Considering Steam is the launcher most people use for most games, that's a totally reasonable tack.



Answering a now-deleted answer regarding PS4 controllers working out of the box on Windows:

PS4 controller support on Windows used to be a huge hassle, because you had to install DS4Windows to make it work. Nowadays, Windows automatically downloads the proprietary drivers to make it work, but I'm not sure if that covers the PS4 controller-specific features such as the touchpad, gyroscope, lightbar or if it enables XInput support. I think the PS4 controller situation supports what OP above is claiming.


Can Valve do the same with their controller? Release a Windows driver so that I can use it with my emulators?


You may be able to use SC-Controller: https://github.com/C0rn3j/sc-controller

Note: the Windows support is a WIP and the devs don't have the new Steam Controller


You would just need to add your emulators as non-steam games in Steam. Then you get controller support.


But then I would have to install Steam, create an account, have it running in the background. And in case of macOS I would have to install Rosetta as well.

It would be better if they released drivers instead.


The Steam client is free and well-supported on all gaming OSes. It also provides Steam Input, which ensures customization parity with Steam Deck. In Valve's eyes, cross-platform support is already here.

A custom driver could always be made by the community. It feels a little absurd to expect Valve to write and support four different gamepad drivers, when they only need one.


> A custom driver could always be made by the community. It feels a little absurd to expect Valve to write and support four different gamepad drivers, when they only need one.

That is what the entire industry does though. Imagine if you needed an application running in the background for every peripheral you have, for your monitor, for your GPU, for running a hotspot on your smartphone over USB. Imagine having to install a piece of software to access a thumb drive. And that all those applications also needed user accounts. That is the entire point of having drivers.


For complex gamepads, the entire industry most certainly doesn't do that. It's not a class-compliant device, the preexisting OS-level mechanisms for Xinput and DirectInput do not accommodate anything but fight rudimentary fight sticks. The same goes for the original touchpad-based Steam Controller.


I don’t think steam needs Rosetta anymore.


Just checked. Still needs it. I don't have Rosetta installed and I don't want to install Rosetta just to be able to use a game controller with DuckStation or Aethersx2. When I can also connect a PS4 controller and not need any of that.


You have an old Steam.app stub, download the latest one and rosetta will not be necessary.

If you had rosetta it would be able to self-update to the new universal binary, without it you have to do this one update manually.


I downloaded from here and I instantly get a pop-up about requiring Rosetta.

https://store.steampowered.com/about/


Odd if true. It's clearly a universal binary, not sure what's going wrong for you.

$ file steam_osx

steam_osx: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64]

steam_osx (for architecture x86_64): Mach-O 64-bit executable x86_64

steam_osx (for architecture arm64): Mach-O 64-bit executable arm64


This appears to only be in the Steam beta - the version available for download still requires Rosetta. There doesn't seem to be a direct download for the beta - you have to opt into it after installing Steam.


Not the OP, but I just downloaded the latest stub from an M2 MacBook Air using Safari and it appears to be an x86_64-only binary:

  % file /Volumes/Steam/Steam.app/Contents/MacOS/steam_osx 
  /Volumes/Steam/Steam.app/Contents/MacOS/steam_osx: Mach-O universal binary with 1 architecture: [x86_64:Mach-O 64-bit executable x86_64]
  /Volumes/Steam/Steam.app/Contents/MacOS/steam_osx (for architecture x86_64): Mach-O 64-bit executable x86_64


CMD+I on Steam.app says: "Application (Intel)".

% file steam_osx

steam_osx: Mach-O universal binary with 1 architecture: [x86_64:Mach-O 64-bit executable x86_64]

steam_osx (for architecture x86_64): Mach-O 64-bit executable x86_64


Windows supports Generic HID game controllers with 8 axis and 128 buttons already. And a few hat switches. And if your devices needs more than that, you can enumerate as multiple devices if needed. Not sure if there is a HID type for rumble support though. So, there's no reason a Steam Controller couldn't operate without a special driver. Some functionality may require custom software to support though. I have several Virpil controls and the entire setup will function as a simple set of generic HID devices. The only special bit is some software you can optionally run to control advance per-application remapping. I don't have a Steam Controller, so I have no idea if it can show up as a generic HID controller or not.


2 thumbsticks is already 4 axes. Add 2 triggers and it's 6 axes. Add gyroscope and it's 9 axes. That's more than 8. And I haven't mentioned the touchpads.


> you can enumerate as multiple devices if needed

A single physical USB device can enumerate as multiple virtual devices. This lets you easily side-step the limits *if* the game supports input from multiple controllers at the same time. The games I use controllers for allow you to map to multiple controllers, mouse, and keyboard, all at once. The touchpad could simply enumerate as a HID Touchpad. Apparently Windows already has a Touchpad Haptic HID Profile even.

Honestly, if Valve is making you require Steam to fully use the Steam Controller, that's disappointing because, as far as I can tell, nothing it's doing can't be accessed via HID usage.


It's a bit more tricky, a Generic HID just gives you a DirectInput device, while reasonably modern games use Xinput. Microsoft never provided a way to map DirectInput devices to Xinput. For Xinput to work a Microsoft specific USB protocol is needed, not a Generic HID device. Many third party controllers have a switch or button combination to switch between XInput and DirectInput modes for this reason.

Microsoft has a new API with GameInput that addresses this situation and allows mapping Generic HID devices onto game controller via config file, but it doesn't work retroactively, it only works for games that use the new GameInput API.

Valve could of course provide a way to switch and emulate other protocols too, just like other third party vendors do, but there is no USB standard that makes things "just work" in Windows when it comes to gamepads, you always need extra drivers, USB modes or other hacks.

On consoles the situation is even worse, modern consoles deliberately lock out any unlicensed third party controller. Playstation3 was the first and last console that supported standard USB controller, while PS5 doesn't even support PS4 controller.


Just out of curiosity, what modern game won't function with a generic HID game controller?


Most of them I would assume. Everything from 2006 forward started to use Xinput. DirectInput support only shows up in racing sims, flight simulators, fighting games and emulation. But all the big AAA games have been built around Xbox360 style control schemes for two decades.

But it's all a bit theoretical, since most modern gamepads have Xinput support, and the generic HID devices are mostly flightsticks or SNES-style gamepads that wouldn't have enough buttons and axis for modern games in the first place. Another issue is that most games don't offer input remapping for gamepads.

But with SteamInput and homebrew tools like x360ce there are many ways to make generic USB devices compatible Xinput, so it's not like you can't use them. It's just not something that works out of the box.


That may explain it then. I use flight controllers and driving controllers. Both just show up as generic HID devices and both are easily used in the games I play.


> Considering Steam is the launcher most people use for most games, that's a totally reasonable tack.

That's exactly how you create a walled garden. You build a garden. Get people in. Then wall it up.


It's an ecosystem problem though.

If all the games respected HID and Valve did something proprietary, I would understand the skepticism. The truth is that most games are engineered with platform integration (e.g. for achievements, controller mapping, etc.), and fallback to the Xbox API. It's reasonable for Valve to sell a controller that takes full advantage of their platform.

Also, Valve's primary OS is Linux-based. There's surely either already a module upstream in the kernel or one is coming soon. That is: open source software to take full advantage of this controller. That's not the same thing as a walled garden.


Seeing as the original Steam Controllers kernel drivers were community reverse engineered rather than Valve contributed, I don't know if I believe in them to make one for the new one either: https://www.phoronix.com/news/Steam-Controller-RE-Kernel


That surprises me. I knew there was a hid-steam, but I didn't know its provenance.

FWIW, it appears Valve is sponsoring development now. Vicki, one of the maintainers of the SteamOS kernel, is the most recent contributor to https://github.com/torvalds/linux/blob/master/drivers/hid/hi...

It's too annoying to search more recent linux-input submissions to see if anything has been pushed upstream yet specific to the new controller.


That spliced in USB hub looks messy. Does a new controller necessitate Xinput? I assume Windows still supports DirectInput, which was used in the past with more complex controllers. I'd recently brought up "JOY.CPL" in Windows 10. It would hinge on whether DirectInput can talk to games that expect Xinput.


> It would hinge on whether DirectInput can talk to games that expect Xinput.

As far as I know, nope.

Some games also get really confused if you have Xinput and DirectInput devices plugged in at the same time - for me, Silksong (and unity games in general) don't work if I have a throttle+stick plugged in.

And it's worse than just taking input from the wrong thing, the game can't recognize input from any of throttle, stick, or controller. Only controller by itself works.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: