UnityRef is currently in early development. Some features may be incomplete and/or not functioning.

UNITYREF

Your Pit Stop For Solving ANYTHING in Unity

architecture

[Steam Deck] Mapping Back Buttons and Touchpads in Input System

Solution

inputcontroller supportinput systemgamepad

Unity 2021.3.x - Unity 6.3.x

Published Fri, Mar 27

Issue

 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.

Explanation

To ensure full compatibility with the Steam Deck hardware within the InputSystem, the following procedures are recommended:

  1. The InputSystem Action Asset is configured to ensure all primary controls are mapped to the generic Gamepad device to leverage the Steam Input translation layer.
  2. Project Settings > Input System Package are accessed to verify that Supported Devices is either empty or explicitly includes Gamepad and HID types.
  3. 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.
  4. The Vector2 output of the Dpad control 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.DualShockGamepad layout 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.