[Steam Deck] Mapping Back Buttons and Touchpads in Input System
Solution
Unity 2021.3.x - Unity 6.3.x
Published Fri, Mar 27
The InputSystem does not natively expose the Steam Deck's unique hardware components, such as the L4/L5 and R4/R5 rear buttons or the dual touchpads. By default, the hardware is identified as a standard InputSystem Gamepad, which limits functionality to standard XInput-equivalent controls and causes the D-Pad to occasionally behave as a discrete Dpad control rather than raw button inputs.
To ensure full compatibility with the Steam Deck hardware within the InputSystem, the following procedures are recommended:
- The InputSystem Action Asset is configured to ensure all primary controls are mapped to the generic
Gamepaddevice to leverage the Steam Input translation layer. Project Settings>Input System Packageare accessed to verify thatSupported Devicesis either empty or explicitly includesGamepadandHIDtypes.- Access to the four rear buttons is obtained through the Steamworks SDK, as these are not standard XInput report members and do not appear in the InputSystem debugger by default.
- The
Vector2output of theDpadcontrol is monitored by your script to handle both discrete presses and directional vectors for more reliable navigation.
Additional Tips
- ‘Steam Input’ is enabled in the Steam game properties to allow the hardware to emulate a standard controller profile.
- The
UnityEngine.InputSystem.DualShockGamepadlayout is used if the InputSystem fails to recognize the device type correctly under Proton layers. - The InputSystem Debugger is utilized while running on the device to confirm which raw HID descriptors are being transmitted by the hardware.
This post may be outdated. Please refer to the listed Unity versions.
TL;DR
Integrating Steam Deck specific inputs requires the InputSystem to be used alongside the Steamworks API or custom HID descriptors. Core controls are handled by the InputSystem Gamepad layout, but extended features require manual mapping.
Related Posts Haven't quite found a solution to your problem? We think these posts might help you.
Content inspired by a Unity discussion post.