Steam Input started its life as an API and configuration utility specifically for the Steam Controller. Valve later opened up configuration to other controllers, and these days Steam Input supports the Steam Controller, Xbox controllers, Sony's DualShock 4, Sony's DualShock 3 (with the driver from the PlayStation Now service), Sony's new DualSense controller, Switch Pro controllers, and many 3rd party variations of each. It also supports generic controllers that use DInput, though the user will typically have to map their inputs to the corresponding Xbox controller inputs before rebinding them.
Steam Input is a software utility within the Steam platform. When a supported controller is connected, Steam Input prompts you to opt into support for the controller. Steam Input then provides a controller rebinding suite with loads of functionality. With some configuration, you can command your entire PC with just a controller.
Steam Input has two components: input emulation and an input API for developers. The input emulation controls inputs like keyboard/mouse and a gamepad, and the input API allows developers to implement tighter controller support in their games.
Steam Input solves many controller compatibility issues on PC.
While there are other programs that can manage controller inputs, Steam Input handles controller support within Steam and needs no other programs to function.
The Steam Input Configurator allows you to rebind and make profiles for your controllers so you can tailor your gaming experience. These profiles include a desktop configuration for general PC use, a configuration for navigating Steam's Big Picture mode, and profiles on a per game basis. Lastly, there is a "guide chord" configuration. This configuration can be swapped to at any time by holding the guide or home button on the controller. Full break downs on each type of config are on the page for the Steam Input Configurator.
By taking advantage of all the profiles, Steam Input allows you to use your controller in every aspect of your PC.
Steam Input has two potential downsides.
First, Steam Input requires Steam to be running to function, and your games have to be launched through Steam. Games can be purchased elsewhere, but will have to be added to Steam for Steam Input compatibility.
Second, games that do not accept software input (such as the Steam Overlay) will not work with Steam Input. If a game does not accept the Steam Overlay to hook into the game, it will likely not work with Steam Input. (There are some ways around this.) Some games do not allow any software input at all (Valorant, for example). There are no work arounds for this, and Steam Input simply will not work for that game.
While it is a good idea to have native controller support when possible in a game, the Steam Input can be a helpful tool for developers with handling controller support. Steam Input can provide a shortcut for easily supporting a variety of controllers if the user opts in. To utilize this feature, ensure the Steam Overlay can hook into your game and use software inputs.
The Steam Input API also allows other helpful features for controller support within a game. For example:
Your Steam release can benefit from these features and improve accessibility for your game with the Steam Input.
An important note regarding the Steam Deck: Developers should note that compatibility with the Steam Input is necessary for a game to be played on the Steam Deck. The Steam Deck's native controls use Steam Input. To ensure your game functions on the Steam Deck, make sure that the Steam Overlay can hook into your game and talk to it over SendInput.
To use the previous example, Valorant's anti-cheat software currently does not allow software inputs. Because the Steam Deck uses Steam Input, the anti-cheat software will prevent Deck users from playing Valorant on the Steam Deck without plugging in external hardware.
Valve made an input API to go along with Steam Input’s configurator. An API is a set of code/tools developers can implement into their games to accomplish a variety of goals. Steam Input is an Input API for handling player input to the game. Another example of an input API is XInput, the highly standardized Xbox controller input system that is ubiquitous in PC gaming.
To understand the Steam Input API (SIAPI), lets quickly talk about XInput.
XInput defines a set of buttons and analog controls. A, B, X, Y, the D-pad, 2 joysticks, 2 bumpers, 2 triggers, and Start/Select/Home. When a developer implements XInput into their game, the game can understand and use those inputs. For instance, the developer takes the A button and tells the game what to do when receiving that input: "Jump" in action games.
SIAPI functions a little differently, and can be viewed as the reverse of XInput. Instead of defining inputs, SIAPI allows the developer to define a list of actions or input styles that can be used. For example, "Jump" can be defined as an action that is bound to whatever button input the developer (or user) sets it to.
Previously (and this is still the case with non-SIAPI), if a user rebinds their controls, they have 2 options.
In a game that has SIAPI implemented, Steam Input provides a much more robust rebinding interface than most in-game solutions. With SIAPI, if an action is bound to a different button, the in-game prompts can automatically adjust to match. That is the real benefit of binding the “Jump” action over binding the “A” button; the button prompts will also line up with whatever customizations you as a player have done.
A good SIAPI implementation will also have automatic context based Action Set swapping. More on action sets in chapter 4, but remember the previously mentioned dilemma of rebinding where the user would need to balance in game and in menu controls? Action Sets solve that problem entirely, and instead of having to manually swap action sets the developer who implements SIAPI can implement a different action set for each context the game has (in menu, on foot, in vehicle, etc) and have the configuration swap to the appropriate set automatically. So… The user gains a theoretically seamless controller experience, no matter what controller they are using and more importantly; how they’ve customized or rebound their controls to better suit them. Are there any catches?
Well, unfortunately there are 2.
For the first, as with basic Steam Input itself, SIAPI does require Steam to use. This isnt quite the same as with using the basic remapping side of Steam Input. There you can still buy your games from other stores and add to steam to take advantage of steam inputs remapping. Here, SIAPI can be found only on steam versions of the game.
The second one though… unfortunately, as a relatively new API, not all developers actually implement it well. When not implemented well, SIAPI can actually be a burden on the player by preventing them from customizing their experience to fit their needs. While there will be a chapter going more in depth on games that have implemented SIAPI, I want to highlight 2 games that are opposites of each other.
Horizon: Zero Dawn’s implementation leaves a lot to be desired. It has no actual mouse input style for touch pad or gyro users and doesnt work with mixed inputs. It also hard codes the Steam Controllers left touch pad as a dpad, preventing the player from customizing it to their needs.
No Man’s Sky… as yet another feather in the cap of their redemption story, Hello Games absolutely knocked it out of the park with their SIAPI implementation. It's still not 100% perfect, but in my opinion it's the gold standard of what SIAPI implementations should be. It has action sets for every context with an extensive list of bindable actions, and it all works pretty flawlessly. It's actually one of my favorite games to play because the controls are so well done.
As mentioned, implementing siapi ensures support with a wide variety of controllers.
It can also help ensure a very good experience for the people who play your games with controllers (if implemented well).
Now for the downsides for developers;
It was established earlier that SIAPI is pretty new as an input API. As a result, it can be a bit tricky or otherwise weird to implement. Valve has released documentation to help, which will be discussed in a further chapter. This could eat up dev time more than simply slapping the universal XInput into your game and calling it a day, especially because of the next reason.
SIAPI is locked to Steamworks, meaning you MUST release your game on Steam to take advantage of SIAPI. This is different from the basic remapping side of Steam Input. While you dont need to implement SIAPI to release on Steam, if you do, only Steam customers will be able to use it. Release elsewhere? Well, then you'll need to implement other APIs, such as XInput, or otherwise do the work to natively support the controllers you think your players will be using. Therefore implementing SIAPI is spending dev time for a feature not everyone will be able to use.
If you are a dev and find that downside too much to bother with, that's understandable. However instead of clicking out of this wiki all together there is some info in chapter 2 that I'd highly recommend you looking at. It concerns something called "mixed input", using gamepad and mouse inputs at the same time to play games, and it impacts more than just Steam Controller users.
One final note for this section; many players in the Steam Controller and Steam Input community actually do not like how Valve has tied SIAPI to Steam. For all the benefits the API represents, and in the context of the modern age where "competition" is a buzz word such that SIAPI makes steam more valuable as a platform, its hindered by design by not being universal like XInput. It's sad that for their VR stuff, Valve went open source. It would have been amazing for SIAPI to have been given the same treatment.