The Steam Frame Controllers have the same capabilities as your standard console gaming controllers plus touch states, grip buttons, capacitive finger tracking, and 6-DOF spatial tracking. This gives you many more options on how to let players interact with your titles. It also allows users to play non-VR content on the headset without a separate device.

VR Compatibility
While you will always get a better user experience by tailoring your title to the Frame Controllers specifically, our controller compatibility modes have become quite robust. SteamVR will always use a Frame Controller binding by default but in the case one is not available it will first look for a
OpenXR Generic Controller binding, then an
Oculus Touch binding, and remap those to the Frame Controller layout.
- The menu button on Oculus Touch will map to the View button at the top of the Steam Frame Controller.
- The top button of the Oculus Touch controllers (B / Y) will map to all three top buttons of the Steam Frame Controllers (Dpad Left, Dpad Up, Dpad Right / X, Y, B).
Non-VR Compatibility
When playing Non-VR titles locally or via streaming the Frame Controllers take full advantage of
Steam Input. Depending on the game and the configured bindings it will show up as a generic gamepad or keyboard/mouse.
OpenXR Interaction Profile
You'll find an OpenXR Interaction Profile included in each Game Engine plugin (or in the case of Godot in the engine itself). If you have your own custom engine you can add support via our extension detailed on the
Custom Engines documentation page.
OpenVR Bindings
You can bind to the Steam Frame Controllers like you would any other OpenVR controller type. Its controller_type is "frame_controller". They support finger tracking via the
Skeletal Input API and all of the controls listed above. You can create bindings for it in the SteamVR Binding UI.