Community:SteamVR Bindings: Difference between revisions
m (Multiple actions per control source) |
(Expanding Glossary) |
||
Line 29: | Line 29: | ||
# Open the main menu | # Open the main menu | ||
# Go to Controls | # Navigate to [[Settings]] | ||
# Select | #Go to [[Settings#Controls|Controls]] | ||
#Select '''Open SteamVR Input Bindings Panel''' | |||
==Glossary== | ==Glossary== | ||
{| class="wikitable" | {| class="wikitable" | ||
!Terms | !Terms | ||
!Explanation | !Explanation | ||
Line 44: | Line 44: | ||
|Behavior that can be bound to inputs or chords, like movement, selection, or bringing up the camera or personal mirror. | |Behavior that can be bound to inputs or chords, like movement, selection, or bringing up the camera or personal mirror. | ||
|- | |- | ||
|Action | |Action set | ||
|A group of actions that corresponds to a specific context, like using the menu or action menu, or global actions that are available in any context. | |A group of actions that corresponds to a specific context, like using the menu or action menu, or global actions that are available in any context. | ||
|- | |- | ||
|Control | |Control source | ||
|A specific actuator on a controller, like a joystick, trigger, button, or trackpad. | |A specific '''physical''' actuator on a controller, like a joystick, trigger, button, or trackpad. | ||
|- | |- | ||
|Control source mode | |Control source mode | ||
''(Use control as)'' | |||
|A mapping that defines how a control source's movements or sensors are interpreted as inputs. | |A mapping that defines how a control source's movements or sensors are interpreted as inputs. | ||
For example, a trackpad can be mapped as dpad or a button, and a joystick can be mapped as joystick or scroll wheel. | For example, a trackpad can be mapped as dpad or a button, and a joystick can be mapped as joystick or scroll wheel. | ||
Line 59: | Line 60: | ||
|} | |} | ||
<sup>Mostly from the [https://docs.vrchat.com/docs/steamvr-input-20#bindings-glossary official docs] but with some edits for clarity.</sup> | |||
{| class="wikitable" | |||
!Control Source Mode | |||
! | |||
|- | |||
|Button | |||
| Uses control as if it was a trigger. Touch (or any press), Click if there is a physical click at the end of the trigger, and the ammount (0-1) the trigger is depressed) | |||
|- | |||
|Trigger | |||
| | |||
|- | |||
|Joystick | |||
| | |||
|- | |||
|Trackpad | |||
| | |||
|} | |||
=== VRChat Actions === | |||
{| class="wikitable mw-collapsible mw-collapsed" | |||
! Action | |||
!Action Set | |||
!Description | |||
!Type | |||
!Requirement | |||
|- | |||
|Menu | |||
|Global, 1H | |||
|Dual purpose action. One activation opens the quick menu. Holding it opens the action menu. Double press opens the main menu (If enabled) | |||
|boolean | |||
|suggested | |||
|- | |||
|Main Menu | |||
|Global | |||
|Opens the Main menu | |||
|boolean | |||
|optional | |||
|- | |||
|Quick Menu | |||
|Global | |||
|Opens the quick menu | |||
|boolean | |||
|optional | |||
|- | |||
|Action Menu | |||
|Global | |||
|Opens the Action menu | |||
|boolean | |||
|optional | |||
|- | |||
|Interact | |||
|Global, 1H | |||
|Interact with world objects and poses physbones | |||
|boolean | |||
| | |||
|- | |||
|Grab | |||
|Global, 1H | |||
|Picks up grabbable world objects | |||
|boolean | |||
| | |||
|- | |||
|Drop | |||
|Global, 1H | |||
|Drops held item. If bound this will enable auto hold functionality. (Items will not be dropped until this is used) | |||
|boolean | |||
|optional | |||
|- | |||
|Move | |||
|Global, 1H | |||
|Player movement | |||
|vector2 | |||
| | |||
|- | |||
|Jump | |||
|Global, 1H | |||
|Jump! | |||
|boolean | |||
| | |||
|- | |||
|Rotate | |||
|Global | |||
|Player rotation | |||
|vector2 | |||
| | |||
|- | |||
|Start Move (Advanced) | |||
|Global | |||
|When this is clicked, begin moving. | |||
|boolean | |||
|optional | |||
|- | |||
|Start Rotate (Advanced) | |||
|Global | |||
|When this is clicked, begin rotating | |||
|boolean | |||
|optional | |||
|- | |||
|Continue Move (Advanced) | |||
|Global | |||
|After Start Move is released, as long as this is still active (usually via touch) movement will continue. | |||
|boolean | |||
|optional | |||
|- | |||
|Continue Rotate (Advanced) | |||
|Global | |||
|After Start Rotate is released, as long as this is still active (usually via touch) rotation will continue. | |||
|boolean | |||
|optional | |||
|- | |||
|No_Gesture_After_Move | |||
|Global | |||
|Prevents gestures after Start move click is released | |||
|boolean | |||
|optional | |||
|- | |||
|No_Gesture_After_Rotate | |||
|Global | |||
|Prevents gestures after Start rotate click is released | |||
|boolean | |||
|optional | |||
|- | |||
! colspan="5" |Extra | |||
|- | |||
|Toggle Microphone | |||
|Global, 1H | |||
|Toggles the microphone | |||
|boolean | |||
| | |||
|- | |||
|Gesture Toggle | |||
|Global, 1H | |||
|Toggles Gestures | |||
|boolean | |||
|optional | |||
|- | |||
|Cycle Nameplate Mode | |||
|Global | |||
|Cycles through the [[Nameplates#Nameplate element visibility|nameplates modes]] | |||
|boolean | |||
|optional | |||
|- | |||
|Toggle HUD | |||
|Global | |||
|Toggles the hud | |||
|boolean | |||
|optional | |||
|- | |||
|Open Chatbox | |||
|Global | |||
|Opens the Chatbox | |||
|boolean | |||
|optional | |||
|- | |||
|Toggle Personal Mirror | |||
|Global | |||
|Toggles the Personal Mirror | |||
|boolean | |||
|optional | |||
|- | |||
|Toggle Earmuffs | |||
|Global | |||
|Toggles Earmuffs | |||
|boolean | |||
|optional | |||
|- | |||
|Open Camera | |||
|Global | |||
|Toggles the camera | |||
|boolean | |||
|optional | |||
|- | |||
|Activate Safe Mode | |||
|Global | |||
|Activates Safe mode | |||
|boolean | |||
|suggested | |||
|- | |||
|Proximity Sensor | |||
|Global | |||
|When active, trigger AFK in VRChat | |||
|boolean | |||
|optional | |||
|- | |||
! colspan="5" |One Handed | |||
|- | |||
|Move & Rotate (One Handed) | |||
|One_Hand | |||
|Combined movement & rotation | |||
|vector2 | |||
|suggested | |||
|- | |||
|Start Move & Rotate (Advanced) | |||
|One_Hand | |||
|When clicked begin Move & Rotate | |||
|boolean | |||
|optional | |||
|- | |||
|Continue Move & Rotate (Advanced) | |||
|One_Hand | |||
|When Start Move & Rotate released, continue as long as this is active. | |||
|boolean | |||
|optional | |||
|- | |||
|No_Gesture_After_Move_Rotate | |||
|One_Hand | |||
|Prevents gestures afterMove & Rotate is released | |||
|boolean | |||
|optional | |||
|- | |||
! colspan="5" |Udon | |||
|- | |||
|Udon Menu | |||
|Global, 1H | |||
|Registerable by VRChat worlds with Udon. | |||
|boolean | |||
|optional | |||
|- | |||
|Udon Trigger Axis | |||
|Global, 1H | |||
|Registerable by VRChat worlds with Udon. | |||
|vector1 | |||
|optional | |||
|- | |||
|Udon Grip Axis | |||
|Global, 1H | |||
|Registerable by VRChat worlds with Udon. | |||
|vector1 | |||
|optional | |||
|- | |||
|Udon Stick Click | |||
|Global, 1H | |||
|Registerable by VRChat worlds with Udon. | |||
|boolean | |||
|optional | |||
|- | |||
! colspan="5" |Menu | |||
|- | |||
|Confirm | |||
|Menu | |||
|Clicks on menu items | |||
|boolean | |||
|suggested | |||
|- | |||
|Back | |||
|Menu | |||
|Returns to the previous page (or closes the menu?) | |||
|boolean | |||
|optional | |||
|- | |||
|Tab | |||
|Menu | |||
|(?) | |||
|boolean | |||
|optional | |||
|- | |||
|Scroll | |||
|Menu | |||
|Scrolls in the menu | |||
|vector2 | |||
| | |||
|- | |||
|Close Quick Menu | |||
|Menu | |||
|Closes the quick menu | |||
|boolean | |||
|optional | |||
|- | |||
|Drag | |||
|Menu | |||
|(?) | |||
|boolean | |||
|optional | |||
|- | |||
! colspan="5" |Action Menu | |||
|- | |||
|Axis | |||
|Action Menu | |||
|Directional control in the action menu | |||
|vector2 | |||
|suggested | |||
|- | |||
|Select | |||
|Action Menu | |||
|Select hovering item in the action menu | |||
|boolean | |||
| | |||
|- | |||
! colspan="5" |(?) | |||
|- | |||
|Pose Data | |||
|Global | |||
|(?) | |||
|pose | |||
| | |||
|- | |||
|SkeletonLeftHand | |||
|Global | |||
|Tracking data for Steam Skeletal input on the left hand | |||
|skeleton | |||
|suggested | |||
|- | |||
|SkeletonRightHand | |||
|Global | |||
|Tracking data for Steam Skeletal input on the right hand | |||
|skeleton | |||
| | |||
|- | |||
|Haptics | |||
|Global, 1H | |||
|Used to apply various haptics to the controller. (Such as when hovering over menu elements or the personal mirror) | |||
|vibration | |||
| | |||
|- | |||
! colspan="5" |Gesture Activators | |||
|- | |||
|Gesture_Activator_Thumb | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Activator_Thumb_Inner_Upper | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Activator_Thumb_Inner_Lower | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Activator_Thumb_Outer | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Activator_Index | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Activator_Grip | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Trigger_Axis | |||
|Global | |||
| | |||
|vector1 | |||
|optional | |||
|- | |||
|Gesture_Grip_Axis | |||
|Global | |||
| | |||
|vector1 | |||
|optional | |||
|- | |||
|Gesture_Activator_Stick_Deflection | |||
|Global | |||
| | |||
|vector2 | |||
|optional | |||
|- | |||
! colspan="5" |Gesture Direct | |||
|- | |||
|Gesture_Direct_Neutral_Left | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Direct_Fist_Left | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Direct_Open_Left | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Direct_Peace_Left | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Direct_Horns_Left | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Direct_Finger_Gun_Left | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Direct_Thumbs_Up_Left | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Direct_Point_Left | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Direct_Neutral_Right | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Direct_Fist_Right | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Direct_Open_Right | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Direct_Peace_Right | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Direct_Horns_Right | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Direct_Finger_Gun_Right | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Direct_Thumbs_Up_Right | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Direct_Point_Right | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
! colspan="5" |Gesture Wheel | |||
|- | |||
|Gesture_Wheel_Left | |||
|Global | |||
| | |||
|vector2 | |||
|optional | |||
|- | |||
|Gesture_Wheel_Select_Left | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Wheel_Soft_Select_Left | |||
|Global | |||
| | |||
|vector1 | |||
|optional | |||
|- | |||
|Gesture_Wheel_Weight_Left | |||
|Global | |||
| | |||
|vector1 | |||
|optional | |||
|- | |||
|Gesture_Wheel_Direct_Left | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Wheel_Direct_Stay_Left | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Wheel_Cancel_Left | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Wheel_Cancel_Open_Left | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Wheel_Held_Left | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Wheel_Right | |||
|Global | |||
| | |||
|vector2 | |||
|optional | |||
|- | |||
|Gesture_Wheel_Select_Right | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Wheel_Soft_Select_Right | |||
|Global | |||
| | |||
|vector1 | |||
|optional | |||
|- | |||
|Gesture_Wheel_Weight_Right | |||
|Global | |||
| | |||
|vector1 | |||
|optional | |||
|- | |||
|Gesture_Wheel_Direct_Right | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Wheel_Direct_Stay_Right | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Wheel_Cancel_Right | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Wheel_Cancel_Open_Right | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Gesture_Wheel_Held_Right | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Disable_Gesture_Tracked | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Disable_Gesture_Wheel_Move_Left | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Disable_Gesture_Wheel_Rotate_Left | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Disable_Gesture_Wheel_Move_Right | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|- | |||
|Disable_Gesture_Wheel_Rotate_Right | |||
|Global | |||
| | |||
|boolean | |||
|optional | |||
|} | |||
===Button === | |||
{| class="wikitable" | |||
!Mappings | |||
! Description | |||
|- | |||
|Click | |||
| | |||
|- | |||
|Single | |||
| | |||
|- | |||
| Double | |||
| | |||
|- | |||
| Long | |||
| | |||
|- | |||
| Held | |||
| | |||
|} | |||
=== Trigger=== | |||
===Joystick=== | |||
===Trackpad=== | |||
==Walkthroughs== | ==Walkthroughs== | ||
=== Adding new inputs === | ===Adding new inputs=== | ||
TODO | TODO | ||
=== Double tap menu === | === Double tap menu=== | ||
TODO | TODO | ||
=== Creating Chords === | === Creating Chords=== | ||
TODO | TODO | ||
=== Dead zones === | ===Dead zones=== | ||
TODO | TODO | ||
=== Trigger thresholds === | ===Trigger thresholds=== | ||
TODO | TODO | ||
=== Changing haptics === | ===Changing haptics=== | ||
TODO | TODO | ||
=== DPAD overlap percentage === | ===DPAD overlap percentage=== | ||
TODO | TODO | ||
==Don'ts== | |||
There's certain things you can do to bindings that can cause issues. Try to avoid them when possible | |||
===Multiple actions per control source=== | |||
When you bind multiple actions like this, it stops them from functioning instantaneously and can make them unpredictable. <ref name=":0" /> | |||
=== Multiple actions per control source === | |||
When you bind multiple actions like this, it stops them from functioning instantaneously and | |||
[[File:Multiple actions per controller.png|alt=Bad vs Good method for multiple actions via one control source|800x800px]] | [[File:Multiple actions per controller.png|alt=Bad vs Good method for multiple actions via one control source|800x800px]] | ||
A functional use case would be setting '''action menu''' to Single and '''quick menu''' to Double; this will introduces a small delay after the single press input which can be interrupted by a double click to open the quick menu without accidentally opening the action menu. | |||
==Controller info & fixes== | |||
== Controller info & fixes == | |||
=== All === | ===All=== | ||
==== Can't do gestures at all ==== | ====Can't do gestures at all==== | ||
By default coming into the Input 2.0 update, gestures were set to disabled. | By default coming into the Input 2.0 update, gestures were set to disabled. | ||
TODO: walkthrough showing how to enable them in the radial menu | TODO: walkthrough showing how to enable them in the radial menu | ||
==== Disabling new hand poses / finger tracking ==== | ====Disabling new hand poses / finger tracking==== | ||
TODO: add an image pointing out the toggle in the controls section of the main menu. | TODO: add an image pointing out the toggle in the controls section of the main menu. | ||
==== Default & Community bindings ==== | ====Default & Community bindings==== | ||
TODO: guide to the binding select page with an image. | TODO: guide to the binding select page with an image. | ||
TODO: Link to SteamVR beta for a fix on community bindings (remove later when fixed) | TODO: Link to SteamVR beta for a fix on community bindings (remove later when fixed) | ||
==== Hard bindings reset ==== | ====Hard bindings reset ==== | ||
In rare cases, a full hard reset of your bindings may be needed due to issues with SteamVR. | In rare cases, a full hard reset of your bindings may be needed due to issues with SteamVR. | ||
TODO | TODO | ||
=== Vive === | ===Vive=== | ||
Vive is a little special, two default binding modes are available with different feature sets. (TODO: write about them) | Vive is a little special, two default binding modes are available with different feature sets. (TODO: write about them) | ||
==== No touch to move / Emotes are "sticky" ==== | ====No touch to move / Emotes are "sticky"==== | ||
It's likely that you previously used Vive Advanced controls before Input 2.0. You can restore Advanced behavior you're used to by switching from '''Default Bindings''' over to the '''Default Advanced Bindings''' which can be found on the bindings select page. | It's likely that you previously used Vive Advanced controls before Input 2.0. You can restore Advanced behavior you're used to by switching from '''Default Bindings''' over to the '''Default Advanced Bindings''' which can be found on the bindings select page. | ||
==== Difficulty moving ==== | ====Difficulty moving==== | ||
The default thresholds for movement on Vive controllers require you to hit the very edges of the touchpad. This can be changed by adjusting Dead zones. | The default thresholds for movement on Vive controllers require you to hit the very edges of the touchpad. This can be changed by adjusting Dead zones. | ||
TODO: Recommended values for Simple & Advanced | TODO: Recommended values for Simple & Advanced | ||
==== Accidental jumping ==== | ====Accidental jumping==== | ||
With a mix of adjustments to Overlap percentage & Dead zone on the Trackpad DPADs, you can restore pre-Input 2.0 behavior. | With a mix of adjustments to Overlap percentage & Dead zone on the Trackpad DPADs, you can restore pre-Input 2.0 behavior. | ||
TODO: Recommended values for both | TODO: Recommended values for both | ||
==== Grip isn't doing hand open / Isn't clearing gestures ==== | ====Grip isn't doing hand open / Isn't clearing gestures==== | ||
This seems to be an oversight with Vive Advanced Bindings, you'll need to add the Gesture_wheel_cancel_open_left & right actions to your grips as a Button press inputs. | This seems to be an oversight with Vive Advanced Bindings, you'll need to add the Gesture_wheel_cancel_open_left & right actions to your grips as a Button press inputs. | ||
TODO: image showing what the newly added button should look like | TODO: image showing what the newly added button should look like | ||
=== Index === | ===Index=== | ||
==== Easier item holding / Auto Hold ==== | ====Easier item holding / Auto Hold==== | ||
=== HP Reverb G2 === | ===HP Reverb G2=== | ||
Line 151: | Line 785: | ||
TODO: More controller types, need users with more experience on other types. | TODO: More controller types, need users with more experience on other types. | ||
== References == | ==References== | ||
<references /> | <references /> |
Revision as of 07:13, 29 August 2024
[Reason: No reason provided.]
SteamVR input is a universal keybind system for all controllers usable in SteamVR. Instead of binding keys like "space" to jump, VR game developers provide actions we can directly bind to inputs on SteamVR controllers. The UI also provides a way for users to find or share community bindings. [1]
Official VRChat SteamVR Input 2.0 documentation[2]
Official VRChat SteamVR input 2.0 FAQ[3]
Where
Standard method
- Open SteamVR
- Find Settings
- Select Controllers
- Set Advanced Setting to Show
- Select Show Binding UI
- Select VRChat from the list of applications
Via web browser
- Go to http://localhost:27062/dashboard/controllerbinding.html while SteamVR is running
- Select VRChat from the list of applications
Via VRChat
Glossary
Terms | Explanation |
---|---|
Bindings | A complete set of bindings between inputs and actions that can be saved and shared in the Steam Workshop. |
Action | Behavior that can be bound to inputs or chords, like movement, selection, or bringing up the camera or personal mirror. |
Action set | A group of actions that corresponds to a specific context, like using the menu or action menu, or global actions that are available in any context. |
Control source | A specific physical actuator on a controller, like a joystick, trigger, button, or trackpad. |
Control source mode
(Use control as) |
A mapping that defines how a control source's movements or sensors are interpreted as inputs.
For example, a trackpad can be mapped as dpad or a button, and a joystick can be mapped as joystick or scroll wheel. |
Input | A specific movement or sensor reading from a control, interpreted through a control source mode.
For example, a button's control source mode might provide touch, press, hold, or double-press inputs. |
Mostly from the official docs but with some edits for clarity.
Control Source Mode | |
---|---|
Button | Uses control as if it was a trigger. Touch (or any press), Click if there is a physical click at the end of the trigger, and the ammount (0-1) the trigger is depressed) |
Trigger | |
Joystick | |
Trackpad |
VRChat Actions
Action | Action Set | Description | Type | Requirement |
---|---|---|---|---|
Menu | Global, 1H | Dual purpose action. One activation opens the quick menu. Holding it opens the action menu. Double press opens the main menu (If enabled) | boolean | suggested |
Main Menu | Global | Opens the Main menu | boolean | optional |
Quick Menu | Global | Opens the quick menu | boolean | optional |
Action Menu | Global | Opens the Action menu | boolean | optional |
Interact | Global, 1H | Interact with world objects and poses physbones | boolean | |
Grab | Global, 1H | Picks up grabbable world objects | boolean | |
Drop | Global, 1H | Drops held item. If bound this will enable auto hold functionality. (Items will not be dropped until this is used) | boolean | optional |
Move | Global, 1H | Player movement | vector2 | |
Jump | Global, 1H | Jump! | boolean | |
Rotate | Global | Player rotation | vector2 | |
Start Move (Advanced) | Global | When this is clicked, begin moving. | boolean | optional |
Start Rotate (Advanced) | Global | When this is clicked, begin rotating | boolean | optional |
Continue Move (Advanced) | Global | After Start Move is released, as long as this is still active (usually via touch) movement will continue. | boolean | optional |
Continue Rotate (Advanced) | Global | After Start Rotate is released, as long as this is still active (usually via touch) rotation will continue. | boolean | optional |
No_Gesture_After_Move | Global | Prevents gestures after Start move click is released | boolean | optional |
No_Gesture_After_Rotate | Global | Prevents gestures after Start rotate click is released | boolean | optional |
Extra | ||||
Toggle Microphone | Global, 1H | Toggles the microphone | boolean | |
Gesture Toggle | Global, 1H | Toggles Gestures | boolean | optional |
Cycle Nameplate Mode | Global | Cycles through the nameplates modes | boolean | optional |
Toggle HUD | Global | Toggles the hud | boolean | optional |
Open Chatbox | Global | Opens the Chatbox | boolean | optional |
Toggle Personal Mirror | Global | Toggles the Personal Mirror | boolean | optional |
Toggle Earmuffs | Global | Toggles Earmuffs | boolean | optional |
Open Camera | Global | Toggles the camera | boolean | optional |
Activate Safe Mode | Global | Activates Safe mode | boolean | suggested |
Proximity Sensor | Global | When active, trigger AFK in VRChat | boolean | optional |
One Handed | ||||
Move & Rotate (One Handed) | One_Hand | Combined movement & rotation | vector2 | suggested |
Start Move & Rotate (Advanced) | One_Hand | When clicked begin Move & Rotate | boolean | optional |
Continue Move & Rotate (Advanced) | One_Hand | When Start Move & Rotate released, continue as long as this is active. | boolean | optional |
No_Gesture_After_Move_Rotate | One_Hand | Prevents gestures afterMove & Rotate is released | boolean | optional |
Udon | ||||
Udon Menu | Global, 1H | Registerable by VRChat worlds with Udon. | boolean | optional |
Udon Trigger Axis | Global, 1H | Registerable by VRChat worlds with Udon. | vector1 | optional |
Udon Grip Axis | Global, 1H | Registerable by VRChat worlds with Udon. | vector1 | optional |
Udon Stick Click | Global, 1H | Registerable by VRChat worlds with Udon. | boolean | optional |
Menu | ||||
Confirm | Menu | Clicks on menu items | boolean | suggested |
Back | Menu | Returns to the previous page (or closes the menu?) | boolean | optional |
Tab | Menu | (?) | boolean | optional |
Scroll | Menu | Scrolls in the menu | vector2 | |
Close Quick Menu | Menu | Closes the quick menu | boolean | optional |
Drag | Menu | (?) | boolean | optional |
Action Menu | ||||
Axis | Action Menu | Directional control in the action menu | vector2 | suggested |
Select | Action Menu | Select hovering item in the action menu | boolean | |
(?) | ||||
Pose Data | Global | (?) | pose | |
SkeletonLeftHand | Global | Tracking data for Steam Skeletal input on the left hand | skeleton | suggested |
SkeletonRightHand | Global | Tracking data for Steam Skeletal input on the right hand | skeleton | |
Haptics | Global, 1H | Used to apply various haptics to the controller. (Such as when hovering over menu elements or the personal mirror) | vibration | |
Gesture Activators | ||||
Gesture_Activator_Thumb | Global | boolean | optional | |
Gesture_Activator_Thumb_Inner_Upper | Global | boolean | optional | |
Gesture_Activator_Thumb_Inner_Lower | Global | boolean | optional | |
Gesture_Activator_Thumb_Outer | Global | boolean | optional | |
Gesture_Activator_Index | Global | boolean | optional | |
Gesture_Activator_Grip | Global | boolean | optional | |
Gesture_Trigger_Axis | Global | vector1 | optional | |
Gesture_Grip_Axis | Global | vector1 | optional | |
Gesture_Activator_Stick_Deflection | Global | vector2 | optional | |
Gesture Direct | ||||
Gesture_Direct_Neutral_Left | Global | boolean | optional | |
Gesture_Direct_Fist_Left | Global | boolean | optional | |
Gesture_Direct_Open_Left | Global | boolean | optional | |
Gesture_Direct_Peace_Left | Global | boolean | optional | |
Gesture_Direct_Horns_Left | Global | boolean | optional | |
Gesture_Direct_Finger_Gun_Left | Global | boolean | optional | |
Gesture_Direct_Thumbs_Up_Left | Global | boolean | optional | |
Gesture_Direct_Point_Left | Global | boolean | optional | |
Gesture_Direct_Neutral_Right | Global | boolean | optional | |
Gesture_Direct_Fist_Right | Global | boolean | optional | |
Gesture_Direct_Open_Right | Global | boolean | optional | |
Gesture_Direct_Peace_Right | Global | boolean | optional | |
Gesture_Direct_Horns_Right | Global | boolean | optional | |
Gesture_Direct_Finger_Gun_Right | Global | boolean | optional | |
Gesture_Direct_Thumbs_Up_Right | Global | boolean | optional | |
Gesture_Direct_Point_Right | Global | boolean | optional | |
Gesture Wheel | ||||
Gesture_Wheel_Left | Global | vector2 | optional | |
Gesture_Wheel_Select_Left | Global | boolean | optional | |
Gesture_Wheel_Soft_Select_Left | Global | vector1 | optional | |
Gesture_Wheel_Weight_Left | Global | vector1 | optional | |
Gesture_Wheel_Direct_Left | Global | boolean | optional | |
Gesture_Wheel_Direct_Stay_Left | Global | boolean | optional | |
Gesture_Wheel_Cancel_Left | Global | boolean | optional | |
Gesture_Wheel_Cancel_Open_Left | Global | boolean | optional | |
Gesture_Wheel_Held_Left | Global | boolean | optional | |
Gesture_Wheel_Right | Global | vector2 | optional | |
Gesture_Wheel_Select_Right | Global | boolean | optional | |
Gesture_Wheel_Soft_Select_Right | Global | vector1 | optional | |
Gesture_Wheel_Weight_Right | Global | vector1 | optional | |
Gesture_Wheel_Direct_Right | Global | boolean | optional | |
Gesture_Wheel_Direct_Stay_Right | Global | boolean | optional | |
Gesture_Wheel_Cancel_Right | Global | boolean | optional | |
Gesture_Wheel_Cancel_Open_Right | Global | boolean | optional | |
Gesture_Wheel_Held_Right | Global | boolean | optional | |
Disable_Gesture_Tracked | Global | boolean | optional | |
Disable_Gesture_Wheel_Move_Left | Global | boolean | optional | |
Disable_Gesture_Wheel_Rotate_Left | Global | boolean | optional | |
Disable_Gesture_Wheel_Move_Right | Global | boolean | optional | |
Disable_Gesture_Wheel_Rotate_Right | Global | boolean | optional |
Button
Mappings | Description |
---|---|
Click | |
Single | |
Double | |
Long | |
Held |
Trigger
Joystick
Trackpad
Walkthroughs
Adding new inputs
TODO
TODO
Creating Chords
TODO
Dead zones
TODO
Trigger thresholds
TODO
Changing haptics
TODO
DPAD overlap percentage
TODO
Don'ts
There's certain things you can do to bindings that can cause issues. Try to avoid them when possible
Multiple actions per control source
When you bind multiple actions like this, it stops them from functioning instantaneously and can make them unpredictable. [1]
A functional use case would be setting action menu to Single and quick menu to Double; this will introduces a small delay after the single press input which can be interrupted by a double click to open the quick menu without accidentally opening the action menu.
Controller info & fixes
All
Can't do gestures at all
By default coming into the Input 2.0 update, gestures were set to disabled.
TODO: walkthrough showing how to enable them in the radial menu
Disabling new hand poses / finger tracking
TODO: add an image pointing out the toggle in the controls section of the main menu.
Default & Community bindings
TODO: guide to the binding select page with an image.
TODO: Link to SteamVR beta for a fix on community bindings (remove later when fixed)
Hard bindings reset
In rare cases, a full hard reset of your bindings may be needed due to issues with SteamVR.
TODO
Vive
Vive is a little special, two default binding modes are available with different feature sets. (TODO: write about them)
No touch to move / Emotes are "sticky"
It's likely that you previously used Vive Advanced controls before Input 2.0. You can restore Advanced behavior you're used to by switching from Default Bindings over to the Default Advanced Bindings which can be found on the bindings select page.
Difficulty moving
The default thresholds for movement on Vive controllers require you to hit the very edges of the touchpad. This can be changed by adjusting Dead zones.
TODO: Recommended values for Simple & Advanced
Accidental jumping
With a mix of adjustments to Overlap percentage & Dead zone on the Trackpad DPADs, you can restore pre-Input 2.0 behavior.
TODO: Recommended values for both
Grip isn't doing hand open / Isn't clearing gestures
This seems to be an oversight with Vive Advanced Bindings, you'll need to add the Gesture_wheel_cancel_open_left & right actions to your grips as a Button press inputs.
TODO: image showing what the newly added button should look like
Index
Easier item holding / Auto Hold
HP Reverb G2
TODO: More controller types, need users with more experience on other types.