SteamVR 1.26 adds Automatic Controller Rebinding.
Unlike on standalone headsets or PlayStation VR2 where all users have a known controller, the PC-based SteamVR platform supports a wide variety of controllers with different input layouts.
Most VR developers obviously can't actively support every possible controller though, so SteamVR has a robust controller input binding system to allow users to create bindings for different games and share them on Steam Workshop.
Having to manually set or find input schemes just to play a VR game can be quite a hassle though, and a far cry from the "it just works" experience of standalone and console VR. So in the SteamVR 1.26 update released today, Valve has introduced automatic rebinding for OpenXR titles using SteamVR Input.
Here's how Valve describes the feature:
Now, when a game is missing a binding for your controller, SteamVR will automatically create a new binding, configure it based on a more common controller, and set it to simulate that controller type. Controller driver developers can specify a list of different controllers they want to be able to use bindings from, as well as directions on how to remap from one controller to another.
For example, if a game has bindings for Oculus Touch controllers but you're using Windows Mixed Reality controllers, SteamVR will remap actions using the trigger-style grip of the Oculus Touch to the button style grip of the WMR controller. If a developer does decide to create a native binding for your controller, SteamVR will switch to that as soon as its available.
This feature will work for all titles using OpenXR and SteamVR Input.
Full SteamVR 1.26 Changelog
- Added automatic rebinding for controllers without native bindings. For SteamVR Input and OpenXR games we will attempt to rebind to a supported controller type.
- A handle has been added to the dashboard, allowing it to be positioned in space. The position is reset whenever it is summoned.
- Dashboard recenter button now recenters both seated and standing universes, instead of just the current universe of the scene application.
- Fixed a bug that caused audio devices with emojis in the name to break the settings UI.
- Fixed a bug that caused low framerates with 3rd party headsets while using AMD graphics cards if hardware was unplugged/replugged after session start.
- Added new tracker roles: Wrist (L/R), Ankle (L/R)
- Added ‘autoremapping’ to the Automatic Rebinding files to simplify component remapping.
- The binding UI's style has been refreshed.
- Display an error when any required actions haven't been bound, instead of failing silently.
- Improved performance of workshop binding loading.
- Fixed "Show Old Binding UI" button not working in controller settings.
- The recenter button now affects OpenXR applications.
- The XrEventDataReferenceSpaceChangePending event is now sent when the playspace is recentered.
- OpenXR applications that use XR_REFERENCE_SPACE_TYPE_STAGE when calling xrLocateViews will immediately switch to using the same chaperone visiblity rules as OpenVR standing experiences, where the chaperone will appear when the hmd or controllers get close to the origin.
- OpenXR applications that use only XR_REFERENCE_SPACE_TYPE_LOCAL for longer than 3 seconds when calling xrLocateViews will use the same chaperone visibility rules as OpenVR seated experiences, and the chaperone won't display while the user is within a 1m radius of the origin.
- The runtimeVersion instance property is now set to the current SteamVR version.
- Re-enabled instance creation even if there is no active hmd available. This is unrelated to headless mode, and is instead used so that an application can make the appropriate calls to understand that no HMD is currently connected.
- Fixed crash on some Unity games when there is no active hmd available.
- Implemented XR_HTC_vive_wrist_tracker_interaction extension.
- Conformance test fixes (properly check valid but unsupported view config type, correctly recognize negative xrTime input).