The Steam Controller has left and right circular trackpads, whereas the PlayStation 4 controller features a single rectangular trackpad in the center. …
The PlayStation 4 and Xbox controllers all feature twin sticks, but the Steam Controller only has one, which is considered the "Left Joystick" in this case. …
Steam Input API is a flexible action-based API that supports all major controller types - Xbox, PlayStation, Nintendo Switch Pro, Steam Controller (2015), Steam Controller (2026), and Steam Deck. See the [doclink=features/steam_controller][/doclink] documentation for more information. …
\n" ); break; case k_ESteamInputType_PS4Controller: printf( "PS4 controller!\n" ); break; case k_ESteamInputType_PS5Controller: printf( "PS5 controller!…
A touch menu is an on-screen overlay of game actions, displayed as a grid of choices selectable with a controller. These are very similar to [doclink=features/steam_controller/radial_menus][/doclink], except that instead of aiming a virtual pointer to select an action, the player must touch a specific location on the input device. …
The method for doing this is identical to the one described in the [doclink=features/steam_controller/radial_menus][/doclink] document. Touch menus and radial menus draw from the exact same source files. [section]Further Reading[/section] [list] [*] [url=http://www.gamasutra.com/blogs/LarsDoucet/20170125/289904/The_Steam_Controller_Configurators_Untapped_Power.php]The Steam Controller Configurator's Untapped Power[/url] [*] [doclink=features/steam_controller/input_source][/doclink] [*] [doclink=features/steam_controller/input_source_modes][/doclink] [*] [doclink=features/steam_controller/mode_shifting][/doclink] [*] [doclink=features/steam_controller/mouse_regions][/doclink] [*] [doclink=features/steam_controller/radial_menus][/doclink] [/list] …
[docimg=toggle_controller_hud.png]toggle_controller_hud.png[/docimg] The shape of the mouse region depends on the controller and input. For example, the PS4 controller has a rectangular trackpad, which creates a rectangular mouse region, whereas the Steam controller has a circular trackpad, which creates circular mouse regions. [table] [tr] [th]Device[/th] [th]Input[/th] [th]Mouse region shape[/th] [/tr] [tr] [td]Generic gamepad[/td] [td]Joystick[/td] [td]Circle[/td] [/tr] [tr] [td]PS4 controller[/td] [td]Trackpad[/td] [td]Rectangle[/td] [/tr] [tr] [td]PS4 controller[/td] [td]Gyro[/td] [td]Rectangle[/td] [/tr] [tr] [td]PS4 controller[/td] [td]Joystick[/td] [td]Circle[/td] [/tr] [tr] [td]Steam controller[/td] [td]Trackpad[/td] [td]Circle[/td] [/tr] [tr] [td]Steam controller[/td] [td]Gyro[/td] [td]Rectangle[/td] [/tr] [tr] [td]Steam controller[/td] [td]Joystick[/td] [td]Circle[/td] [/tr] [tr] [td]Xbox controller[/td] [td]Joystick[/td] [td]Circle[/td] [/tr] [/table] Here's what the mouse region configuration screen looks like: [docimg=mouse_region.png]mouse_region.png[/docimg] [section]Basic Settings[/section] [subsection]Region Size[/subsection] This will scale the size of the region that is mapped to the outer extents of the pad/stick. …
We define full support as the follows: [list] [*] Your game uses the proper controller-specific glyphs when showing in-game input prompts. [*] The Steam Input configurator screen uses in-game actions that the player performs in your game, instead of keys or buttons. [*] You've published an official configuration for the controllers you support. [*] Your game doesn't restrict the user's ability to customize their controls. …
[/callout] You can also download the [url=https://steamcdn-a.akamaihd.net/steam/partner/controller/SteamControllerGlyphs_v1.zip]official controller glyph renders[/url] or their [url=https://steamcdn-a.akamaihd.net/steam/partner/controller/controller_api_icons.psd]PSD source[/url]. …
[subsection]LED[/subsection] The Steam Controller and the PlayStation 4 controller both have a built in LED light on the controller. The Steam Controller's light is always white, but the PlayStation 4 controller features a fully programmable colored LED. Both of these devices will respond to API calls for changing the light color, but the Steam Controller will cast the color to monochrome and simply use it to control brightness, whereas on the PlayStation 4 controller it can be used to control both the color and the brightness. …
[section]Controllers[/section] 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. …
SteamVR will always use a Frame Controller binding by default but in the case one is not available it will first look for a [url=https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XR_KHR_generic_controller]OpenXR Generic Controller[/url] binding, then an [url=https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#semantic-paths-oculus-touch-controller-profile]Oculus Touch[/url] binding, and remap those to the Frame Controller layout. …
[docimg=steamworks_steam_controller_custom3.png]steamworks_steam_controller_custom3.png[/docimg] [*] Publish your app changes in the partner site as usual. [/list] If you'd like, you can also specify multiple official configurations for your game. …
[subsection]Opting Controllers into Steam Input[/subsection] Next, you should set up what kind of controllers use Steam Input - if you are using Steam Input API you'll want to make sure to check the "Any Future Devices" option to make sure new controllers work by default without you having to adjust settings after support ships in Steam. …
Here are some example templates for [doclink=features/steam_controller/iga_file]IGA files[/doclink] that you can use as starting points for your games. None of these are for any specific game, and your game might have specific needs not covered by any of them, so feel free to experiment. …
[code] "In Game Actions" { "actions" { "GameControls" { "title" "#Set_GameControls" "Button" { "Action_Interact" "#Action_Interact" "Action_MoveTo" "#Action_MoveTo" "Action_Examine" "#Action_Examine" "Action_Cancel" "#Action_Cancel" "Action_Menu" "#Action_Menu" "Action_Item" "#Action_Item" } "StickPadGyro" { "MoveCursor" { "title" "#Action_MoveCursor" "input_mode" "absolute_mouse" } } } } "action_layers" { "MenuControls" { "title" "#Layer_MenuControls" "Button" { "Menu_Up" "#Menu_Up" "Menu_Down" "#Menu_Down" "Menu_Left" "#Menu_Left" "Menu_Right" "#Menu_Right" "Menu_Select" "#Menu_Select" "Menu_Cancel" "#Menu_Cancel" } } } "localization" { "english" { "Set_GameControls" "General Controls" "Layer_MenuControls" "Menu Controls" "Action_MoveCursor" "Move cursor" "Action_MoveTo" "Move to location" "Action_Interact" "Interact" "Action_Examine" "Examine" "Action_Cancel" "Cancel/Back" "Action_Menu" "Menu" "Action_Item" "Use Item" "Menu_Up" "Up" "Menu_Down" "Down" "Menu_Left" "Left" "Menu_Right" "Right" "Menu_Select" "Select" "Menu_Cancel" "Cancel" } } } [/code] [section=racing]Racing[/section] A simple racing game where you race manual transmission ("stick shift") cars. …
The developer can upload configuration for multiple different controller types -- such as PlayStation 4 controller, Steam Controller, and Xbox 360/One controllers, and on the first run, Steam will detect your device and select the appropriate configuration. [callout=red] [b]NOTE:[/b] By default, all configurations for controller models other than the one you're currently using are hidden, but you can select "Show Other Controller Types" to force them to appear. …
[/i]) [*][b]controller support[/b]: your game must support Steam Frame's physical controls. The default controller configuration must provide users with the ability to access all content. Players must not need to adjust any in-game settings in order to enable controller support or this configuration. [*][b]controller glyphs[/b]: when using Steam Frame's physical controls, on-screen glyphs must either match Frame button names, or match Xbox 360/One button names. …
[subsection]Power/System Options[/subsection] [docimg=legacy_power.png]legacy_power.png[/docimg] This lets you issue various system commands. Options include: [list] [*] [b]TURN OFF CONTROLLER[/b] [*] [b]OPEN BIG PICTURE[/b] [*] [b]MINIMIZE BIG PICTURE[/b] [*] [b]QUIT BIG PICTURE[/b] [*] [b]SUSPEND HOST PC[/b] [*] [b]SHUTDOWN HOST PC[/b] [*] [b]RESTART HOST PC[/b] [/list] [subsection]Set Light Options[/subsection] [docimg=legacy_light.png]legacy_light.png[/docimg] This lets you control how the controller's LED functions (if it has one). Only PS4 Controllers support colored light options. [list] [*] [b]Default User Setting[/b] No change to how the light functions [*] [b]Default XInput Slot Number Setting[/b] Slots 1-4 are colored red, blue, green, and purple, respectively. [*] [b]Custom Setting[/b] [list] [*][b]Controller Light Color[/b] Change the color of the light [*][b]Controller Light Saturation[/b] Change the intensity of the light [/list] [/list] [subsection]Music[/subsection] [docimg=legacy_music.png]legacy_music.png[/docimg] This lets you control music playback from your Steam music player. …
For more information see https://partner.steamgames.com/doc/features/steam_controller/getting_started_for_players [docimg=TouchBindings.PNG]TouchBindings.PNG[/docimg] [*] On your mobile device start streaming your game, click the [...] button and drag any newly bound controls onto the screen. …
[/olist] If you want to change your official configuration, you have to publish a new config, as you would with the Steam Controller. [section]HOWTO: Advanced Touch Controller Config[/section] If your game has multiple game modes, you can set up an actionset with unique layout for each game mode. …
You can find more information about this in the on the [doclink=steamframe/loadgames][/doclink] page. [section]Steam Frame Controllers[/section] By default the controllers will show up to your games as emulating Oculus Touch, so you can bind to those controls and it will work. If you would like to bind to Frame Controller specific buttons or have Frame Controller specific offsets you can use the Steam Frame Controller OpenXR Interaction Profile or use the Frame Controller OpenVR Controller type: [b]frame_controller[/b]. …
Next, create a "controller_config" directory inside the Steam folder and place the file in the directory. The Steam folder will already have a very similarly named folder so make sure you've put it in the "controller_config" folder and not the "controller_base" folder. …
" ... "controller_type" "controller_xboxone" "controller_caps" "1590271" "major_revision" "1" "minor_revision" "1" "Timestamp" "1761699544" "actions" { ... …
[/i] [docimg=steamframe-stream.png]steamframe-stream.png[/docimg] [callout]You can also stream over your home Wi-Fi, but that tends to be more congested and less reliable than the direct connection the wireless adapter affords.[/callout] [section=PairingControllers]Pairing Controllers[/section] Your controllers should automatically pair when first turned on and are seen by the headset. To turn on your controllers, press the button with the Steam logo. …
Once logged-in, on the dashboard side menu, click the VR Settings icon (HMD) on the left side of the screen. Under this menu, click [b]Controllers[/b], then [b]Pair Controllers[/b]. Put a controller in pairing mode by holding down the Steam button and the thin button at the top of the controller (either View or Menu) at the same time until the controller beeps. …
A radial menu is an on-screen overlay of game actions, displayed as a ring of choices selectable with a controller. These are very similar to [doclink=features/steam_controller/touch_menus][/doclink], except that instead of selecting a specific location on the touch surface, the player must aim the virtual pointer at the option they want and then select it to fire the action. …
Once again, here's the link to configuration: steam://controllerconfig/433340/1360133345 And the IGA file: [docfile=slime_rancher_nested_radial_menus.vdf]slime_rancher_nested_radial_menus.vdf[/docfile] [section]Further Reading[/section] [list] [*] [url=http://www.gamasutra.com/blogs/LarsDoucet/20170125/289904/The_Steam_Controller_Configurators_Untapped_Power.php]The Steam Controller Configurator's Untapped Power[/url] [*] [doclink=features/steam_controller/input_source][/doclink] [*] [doclink=features/steam_controller/input_source_modes][/doclink] [*] [doclink=features/steam_controller/mode_shifting][/doclink] [*] [doclink=features/steam_controller/mouse_regions][/doclink] [*] [doclink=features/steam_controller/touch_menus][/doclink] [/list] …
[b]Returns:[/b] [apitype]steam_api::EVoiceResult[/apitype] [subsection=GetDurationControl]GetDurationControl[/subsection] [code=cpp]SteamAPICall_t GetDurationControl();[/code] Retrieves anti indulgence / duration control for current user / game combination. …
Steam will terminate the game soon[/td][/tr] [/table] [b]Associated Functions:[/b] [api]ISteamUser::GetDurationControl[/api] [api]ISteamUser::BSetDurationControlOnlineState[/api] [subsection=EDurationControlNotification]EDurationControlNotification[/subsection] Describes which notification timer has expired, for steam china duration control feature. …
[/list] [section=audio_recommendations]Audio[/section] [subsection=volume_controls]Custom Volume Controls[/subsection] [h4]Why is this tag important to players?[/h4] Players may need to reduce distracting sounds so that they can focus on sounds that they need to hear. Players can look for this tag to know that they can adjust the relative levels of different types of sound in the game. [h4]Recommendations[/h4] [list] [*] Provide separate volume controls for music, sound effects, ambient audio, and character speech. [*] The more distinct volume controls you can provide, the better. …
If your game submits a suggested input binding for Meta Quest 2 controllers, SteamVR will automatically rebind most controller types so they will work. The following controller profiles should have customized bindings, due to the difficulty in automatically rebinding them: [list] [*] HTC Vive wands [*] Valve Index controllers [*] Windows Mixed Reality controllers [/list] If you build with OpenVR, your application will automatically support any current and future OpenVR-supported head-mounted displays (HMDs), such as the HTC Vive, Oculus Rift, or Windows Mixed Reality family of devices. …
Start with the SDK such as OpenXR or SteamVR and then describe any individual headsets, controllers, and/or room size requirements.…