Guides:SteamVR Bindings: Difference between revisions
(Completed some more guides) |
|||
Line 1: | Line 1: | ||
{{Noticebox/Community}} | {{Noticebox/Community}} | ||
{{Stub|Still missing guides & need more input from various controller types}} | |||
{{Noticebox/wip|}} | {{Noticebox/wip|}} | ||
Line 10: | Line 11: | ||
==Where== | ==Where== | ||
=== Standard method === | ===Standard method=== | ||
# Open SteamVR | #Open SteamVR | ||
# Find '''Settings''' | #Find '''Settings''' | ||
# Select '''Controllers''' | #Select '''Controllers''' | ||
# Set '''Advanced Setting''' to '''Show''' | #Set '''Advanced Setting''' to '''Show''' | ||
# Select '''Show Binding UI''' | #Select '''Show Binding UI''' | ||
# Select '''VRChat''' from the list of applications | #Select '''VRChat''' from the list of applications | ||
[[File:Accessing VRChat Bindings.png]] | [[File:SteamVR Input - Accessing VRChat Bindings.png]] | ||
=== Via web browser === | ===Via web browser=== | ||
# Go to http://localhost:27062/dashboard/controllerbinding.html while S'''teamVR is running''' | #Go to http://localhost:27062/dashboard/controllerbinding.html while S'''teamVR is running''' | ||
# Select '''<code>VRChat</code>''' from the list of applications | #Select '''<code>VRChat</code>''' from the list of applications | ||
=== Via VRChat === | ===Via VRChat=== | ||
# Open the main menu | #Open the main menu | ||
# Navigate to [[Settings]] | #Navigate to [[Settings]] | ||
#Go to [[Settings#Controls|Controls]] | #Go to [[Settings#Controls|Controls]] | ||
#Select '''<code>Open SteamVR Input Bindings Panel</code>''' | #Select '''<code>Open SteamVR Input Bindings Panel</code>''' | ||
Line 35: | Line 36: | ||
==Glossary== | ==Glossary== | ||
{| class="wikitable" | {| class="wikitable" | ||
!Terms | ! Terms | ||
!Explanation | !Explanation | ||
|- | |- | ||
|Bindings | |Bindings | ||
|A complete set of bindings between inputs and actions that can be saved and shared in the Steam Workshop. | |A complete set of bindings between inputs and actions that can be saved and shared in the Steam Workshop. | ||
|- | |- | ||
Line 45: | Line 46: | ||
|- | |- | ||
|Action set | |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 source | |Control source | ||
|A specific '''physical''' 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)'' | ''(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. | ||
|- | |- | ||
|Input | |Input | ||
|A specific movement or sensor reading from a control, interpreted through a control source mode. | |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. | For example, a button's control source mode might provide touch, press, hold, or double-press inputs. | ||
|- | |||
|Chords | |||
|Bindings that combine two or more inputs to execute one action | |||
|- | |||
| | |||
| | |||
|} | |} | ||
<sup>Mostly from the [https://docs.vrchat.com/docs/steamvr-input-20#bindings-glossary official docs] but with some edits for clarity.</sup> | <sup>Mostly from the [https://docs.vrchat.com/docs/steamvr-input-20#bindings-glossary official docs] but with some edits for clarity.</sup> | ||
=== Control Source Modes === | ===Control Source Modes=== | ||
{| class="wikitable mw-collapsible mw-collapsed" | {| class="wikitable mw-collapsible mw-collapsed" | ||
!Control Source Mode | !Control Source Mode | ||
!Provided Inputs | !Provided Inputs | ||
|- | |- | ||
|Button | |Button | ||
| Touches, Clicks, Holds, Double clicks, and Long presses | |Touches, Clicks, Holds, Double clicks, and Long presses | ||
|- | |- | ||
|Trigger | |Trigger | ||
Line 74: | Line 80: | ||
|- | |- | ||
|Joystick | |Joystick | ||
|XY Positioning, touches, and presses | | XY Positioning, touches, and presses | ||
|- | |- | ||
|Trackpad | | Trackpad | ||
|XY Positioning, touches, and presses | |XY Positioning, touches, and presses | ||
|- | |- | ||
|DPAD | |DPAD | ||
|Splits the the XY control source into North, East, South, and West quadrants. Can be used in touch or click mode. | | Splits the the XY control source into North, East, South, and West quadrants. Can be used in touch or click mode. | ||
|- | |- | ||
|Grab | |Grab | ||
|Combines capacitive sensors and force sensors to report a more reliable grab | |Combines capacitive sensors and force sensors to report a more reliable grab | ||
|- | |- | ||
|Force Sensor | |Force Sensor | ||
|Gives analog actions a 0-1 value indicating how much force the user is applying to the control | |Gives analog actions a 0-1 value indicating how much force the user is applying to the control | ||
|- | |- | ||
|Set analog Action | |Set analog Action | ||
Line 98: | Line 105: | ||
|} | |} | ||
=== Input Methods === | ===Input Methods=== | ||
{| class="wikitable mw-collapsible mw-collapsed" | {| class="wikitable mw-collapsible mw-collapsed" | ||
!Input | !Input | ||
Line 107: | Line 114: | ||
|Click | |Click | ||
|Pressing the control | |Pressing the control | ||
|boolean | |boolean | ||
|Any | |Any | ||
|- | |- | ||
Line 117: | Line 124: | ||
|Single | |Single | ||
|Pressing the control once | |Pressing the control once | ||
|boolean | | boolean | ||
|Button | |Button | ||
|- | |- | ||
|Double | |Double | ||
|A quick double press of the control | | A quick double press of the control | ||
|boolean | |boolean | ||
|Button | |Button | ||
|- | |- | ||
|Long | |Long | ||
|Hold the control for 0.5 seconds (?) | |Hold the control for 0.5 seconds (?) | ||
|boolean | |boolean | ||
|Button | |Button | ||
Line 135: | Line 142: | ||
|Button | |Button | ||
|- | |- | ||
|Pull | | Pull | ||
|Value 0-1 representing what percentage the trigger is depressed | |Value 0-1 representing what percentage the trigger is depressed | ||
|vector1 | |vector1 | ||
|Trigger | |Trigger | ||
|- | |- | ||
|Position | | Position | ||
|The position you are touching on a touchpad or the position you've pushed a joystick to. | |The position you are touching on a touchpad or the position you've pushed a joystick to. | ||
|vector2 | |vector2 | ||
Line 146: | Line 153: | ||
|} | |} | ||
=== Actions === | ===Actions=== | ||
Every bindable Action for SteamVR controllers in VRChat. Found in <code>VRChat\VRChat_Data\StreamingAssets\SteamVR\actions.json</code> (Descriptions are community created) | Every bindable Action for SteamVR controllers in VRChat. Found in <code>VRChat\VRChat_Data\StreamingAssets\SteamVR\actions.json</code> (Descriptions are community created) | ||
{| class="wikitable mw-collapsible mw-collapsed" | {| class="wikitable mw-collapsible mw-collapsed" | ||
Line 162: | Line 169: | ||
|- | |- | ||
|Main Menu | |Main Menu | ||
|Global | |Global | ||
|[[Main Menu|Opens the Main Menu]] | |[[Main Menu|Opens the Main Menu]] | ||
|boolean | |boolean | ||
|optional | |optional | ||
Line 169: | Line 176: | ||
|Quick Menu | |Quick Menu | ||
|Global | |Global | ||
|[[Quick Menu|Opens the Quick Menu]] | |[[Quick Menu|Opens the Quick Menu]] | ||
|boolean | |boolean | ||
|optional | | optional | ||
|- | |- | ||
|Action Menu | |Action Menu | ||
Line 199: | Line 206: | ||
|Move | |Move | ||
|Global, 1H | |Global, 1H | ||
|Player movement | | Player movement | ||
|vector2 | |vector2 | ||
| | | | ||
|- | |- | ||
|Jump | |Jump | ||
|Global, 1H | |Global, 1H | ||
|Jump! | |Jump! | ||
|boolean | |boolean | ||
| | | | ||
Line 221: | Line 228: | ||
|Global | |Global | ||
|When this is clicked, begin moving. | |When this is clicked, begin moving. | ||
|boolean | | boolean | ||
|optional | |optional | ||
|- | |- | ||
Line 231: | Line 238: | ||
|- | |- | ||
|Continue Move (Advanced) | |Continue Move (Advanced) | ||
|Global | | Global | ||
|If Start move is released, as long as this is active, movement will continue. | |If Start move is released, as long as this is active, movement will continue. | ||
|boolean | |boolean | ||
Line 266: | Line 273: | ||
|Global, 1H | |Global, 1H | ||
|Toggles [[Gestures]] | |Toggles [[Gestures]] | ||
|boolean | | boolean | ||
|optional | |optional | ||
|- | |- | ||
Line 272: | Line 279: | ||
|Global | |Global | ||
|Cycles through [[Nameplates#Nameplate element visibility|Nameplates Modes]] | |Cycles through [[Nameplates#Nameplate element visibility|Nameplates Modes]] | ||
|boolean | | boolean | ||
|optional | | optional | ||
|- | |- | ||
|Toggle HUD | |Toggle HUD | ||
Line 300: | Line 307: | ||
|- | |- | ||
|Open Camera | |Open Camera | ||
|Global | | Global | ||
|Toggles the [[Camera]] | | Toggles the [[Camera]] | ||
|boolean | |boolean | ||
|optional | |optional | ||
|- | |- | ||
|Activate Safe Mode | | Activate Safe Mode | ||
|Global | |Global | ||
|Activates [[Safe mode]] | |Activates [[Safe mode]] | ||
|boolean | |boolean | ||
|suggested | |suggested | ||
|- | |- | ||
|Proximity Sensor | |Proximity Sensor | ||
|Global | |Global | ||
|When active, trigger AFK in VRChat | |When active, trigger AFK in VRChat | ||
Line 317: | Line 324: | ||
|optional | |optional | ||
|- | |- | ||
! colspan="2" |One Handed | ! colspan="2" | One Handed | ||
! colspan="3" |Specifically for the one handed action set | ! colspan="3" |Specifically for the one handed action set | ||
|- | |- | ||
|Move & Rotate | |Move & Rotate | ||
|One_Hand | | One_Hand | ||
|Combined movement & rotation | |Combined movement & rotation | ||
|vector2 | |vector2 | ||
Line 330: | Line 337: | ||
|When clicked begin Move & Rotate | |When clicked begin Move & Rotate | ||
|boolean | |boolean | ||
|optional | | optional | ||
|- | |- | ||
|Continue Move & Rotate | | Continue Move & Rotate | ||
|One_Hand | |One_Hand | ||
|When Start Move & Rotate released, continue as long as this is active. | |When Start Move & Rotate released, continue as long as this is active. | ||
Line 338: | Line 345: | ||
|optional | |optional | ||
|- | |- | ||
|No Gesture After Move & Rotate | |No Gesture After Move & Rotate | ||
|One_Hand | | One_Hand | ||
|Prevents gestures afterMove & Rotate is released | |Prevents gestures afterMove & Rotate is released | ||
|boolean | |boolean | ||
Line 353: | Line 360: | ||
|optional | |optional | ||
|- | |- | ||
|Udon Trigger Axis | | Udon Trigger Axis | ||
|Global, 1H | |Global, 1H | ||
|Registerable by VRChat worlds with Udon. | |Registerable by VRChat worlds with Udon. | ||
Line 363: | Line 370: | ||
|Registerable by VRChat worlds with Udon. | |Registerable by VRChat worlds with Udon. | ||
|vector1 | |vector1 | ||
|optional | | optional | ||
|- | |- | ||
|Udon Stick Click | | Udon Stick Click | ||
|Global, 1H | |Global, 1H | ||
|Registerable by VRChat worlds with Udon. | |Registerable by VRChat worlds with Udon. | ||
Line 382: | Line 389: | ||
|Back | |Back | ||
|Menu | |Menu | ||
|Returns to the previous page (or closes the menu?) | |Returns to the previous page (or closes the menu?) | ||
|boolean | |boolean | ||
|optional | |optional | ||
Line 394: | Line 401: | ||
|Scroll | |Scroll | ||
|Menu | |Menu | ||
|Scrolls in the menu | | Scrolls in the menu | ||
|vector2 | |vector2 | ||
| | | | ||
|- | |- | ||
|Close Quick Menu | |Close Quick Menu | ||
|Menu | | Menu | ||
|[[Quick Menu|Closes the Quick Menu]] | |[[Quick Menu|Closes the Quick Menu]] | ||
|boolean | |boolean | ||
|optional | |optional | ||
|- | |- | ||
|Drag | |Drag | ||
|Menu | |Menu | ||
|(?) | |(?) | ||
|boolean | |boolean | ||
Line 414: | Line 421: | ||
|- | |- | ||
|Axis | |Axis | ||
|Action | | Action | ||
|Directional control in the action menu | |Directional control in the action menu | ||
|vector2 | |vector2 | ||
Line 421: | Line 428: | ||
|Select | |Select | ||
|Action | |Action | ||
|Select hovering item in the action menu | | Select hovering item in the action menu | ||
|boolean | |boolean | ||
| | | | ||
Line 429: | Line 436: | ||
|- | |- | ||
|Pose Data | |Pose Data | ||
|Global | |Global | ||
|The 6-DOF position and orientation of a device tracked device. | |The 6-DOF position and orientation of a device tracked device. | ||
|pose | |pose | ||
Line 437: | Line 444: | ||
|Global | |Global | ||
| rowspan="2" |Used to retrieve bone transform data from the related controllers | | rowspan="2" |Used to retrieve bone transform data from the related controllers | ||
|skeleton | | skeleton | ||
|suggested | |suggested | ||
|- | |- | ||
|SkeletonRightHand | | SkeletonRightHand | ||
|Global | |Global | ||
|skeleton | |skeleton | ||
Line 460: | Line 467: | ||
|optional | |optional | ||
|- | |- | ||
|GA (Thumb Inner-Upper) | | GA (Thumb Inner-Upper) | ||
|Global | |Global | ||
| | | | ||
|boolean | |boolean | ||
|optional | |optional | ||
|- | |- | ||
|GA (Thumb, Inner-Lower) | |GA (Thumb, Inner-Lower) | ||
Line 470: | Line 477: | ||
| | | | ||
|boolean | |boolean | ||
|optional | | optional | ||
|- | |- | ||
|GA (Thumb, Outer) | |GA (Thumb, Outer) | ||
Line 476: | Line 483: | ||
| | | | ||
|boolean | |boolean | ||
|optional | |optional | ||
|- | |- | ||
|GA (Index Finger) | |GA (Index Finger) | ||
Line 502: | Line 509: | ||
|Global | |Global | ||
| | | | ||
|vector1 | |vector1 | ||
|optional | |optional | ||
|- | |- | ||
Line 512: | Line 519: | ||
|- | |- | ||
! colspan="2" |<nowiki>Gesture Direct | Use Gesture (UG)</nowiki> | ! colspan="2" |<nowiki>Gesture Direct | Use Gesture (UG)</nowiki> | ||
! colspan="3" |Used to directly set the integer values of [https://creators.vrchat.com/avatars/animator-parameters/#gestureleft-and-gestureright-values GestureLeft/GestureRight] | ! colspan="3" | Used to directly set the integer values of [https://creators.vrchat.com/avatars/animator-parameters/#gestureleft-and-gestureright-values GestureLeft/GestureRight] | ||
|- | |- | ||
|UG - Neutral (Left/Right) | |UG - Neutral (Left/Right) | ||
Line 522: | Line 529: | ||
|UG - Fist (Left/Right) | |UG - Fist (Left/Right) | ||
|Global | |Global | ||
|Sets Gesture(Left/Right) to <code>1 (Fist)</code> | |Sets Gesture(Left/Right) to <code>1 (Fist)</code> | ||
|boolean | |boolean | ||
|optional | |optional | ||
|- | |- | ||
|UG - Open (Left/Right) | |UG - Open (Left/Right) | ||
Line 550: | Line 557: | ||
|optional | |optional | ||
|- | |- | ||
|UG - Finger Gun (Left/Right) | | UG - Finger Gun (Left/Right) | ||
|Global | |Global | ||
|Sets Gesture(Left/Right) to <code>6 (HandGun)</code> | |Sets Gesture(Left/Right) to <code>6 (HandGun)</code> | ||
Line 557: | Line 564: | ||
|- | |- | ||
|UG - Thumbs Up (Left/Right) | |UG - Thumbs Up (Left/Right) | ||
|Global | | Global | ||
|Sets Gesture(Left/Right) to <code>7 (Thumbsup)</code> | |Sets Gesture(Left/Right) to <code>7 (Thumbsup)</code> | ||
|boolean | |boolean | ||
|optional | |optional | ||
|- | |- | ||
Line 566: | Line 573: | ||
|- | |- | ||
|GW (Left/Right) | |GW (Left/Right) | ||
|Global, Act, 1H | |Global, Act, 1H | ||
|The XY position of the gesture wheel | |The XY position of the gesture wheel | ||
|vector2 | |vector2 | ||
|optional | | optional | ||
|- | |- | ||
|GW Select (Left/Right) | |GW Select (Left/Right) | ||
|Global, Act, 1H | |Global, Act, 1H | ||
|Selects a gesture that will be released after activation stops | |Selects a gesture that will be released after activation stops | ||
|boolean | |boolean | ||
|optional | |optional | ||
|- | |- | ||
|GW Held (Left/Right) | |GW Held (Left/Right) | ||
|Global, Act, 1H | |Global, Act, 1H | ||
|Selects a gesture that will remain after activation stops | |Selects a gesture that will remain after activation stops | ||
|boolean | |boolean | ||
Line 584: | Line 591: | ||
|- | |- | ||
|GW Direct (Left/Right) | |GW Direct (Left/Right) | ||
|Global, Act, 1H | |Global, Act, 1H | ||
|(?) | |(?) | ||
|boolean | |boolean | ||
|optional | |optional | ||
|- | |- | ||
|GW Direct Stay (Left/Right) | |GW Direct Stay (Left/Right) | ||
|Global, Act, 1H | |Global, Act, 1H | ||
|(?) | |(?) | ||
|boolean | |boolean | ||
Line 596: | Line 603: | ||
|- | |- | ||
|GW Soft Select (Left/Right) | |GW Soft Select (Left/Right) | ||
|Global, Act, 1H | | Global, Act, 1H | ||
|Selects a gesture which can be used with Gesture wheel Weight | | Selects a gesture which can be used with Gesture wheel Weight | ||
|vector1 | |vector1 | ||
|optional | |optional | ||
|- | |- | ||
|GW Weight (Left/Right) | | GW Weight (Left/Right) | ||
|Global, Act, 1H | |Global, Act, 1H | ||
|Analog driving value of the current gesture | |Analog driving value of the current gesture | ||
|vector1 | |vector1 | ||
Line 608: | Line 615: | ||
|- | |- | ||
|GW Cancel (Left/Right) | |GW Cancel (Left/Right) | ||
|Global, Act, 1H | |Global, Act, 1H | ||
|Sets the current gesture to <code>1 (Fist)</code> and <code>0 (neutral)</code> after release | |Sets the current gesture to <code>1 (Fist)</code> and <code>0 (neutral)</code> after release | ||
|boolean | |boolean | ||
Line 614: | Line 621: | ||
|- | |- | ||
|GW Cancel Open (Left/Right) | |GW Cancel Open (Left/Right) | ||
|Global, Act, 1H | |Global, Act, 1H | ||
|Sets the current gesture to <code>2 (HandOpen)</code> and <code>0 (neutral)</code> after release | |Sets the current gesture to <code>2 (HandOpen)</code> and <code>0 (neutral)</code> after release | ||
|boolean | |boolean | ||
Line 620: | Line 627: | ||
|- | |- | ||
|GW Disable Move (Left/Right) | |GW Disable Move (Left/Right) | ||
|Global, Act, 1H | |Global, Act, 1H | ||
|Disables gesture wheel while clicked (prevents emotes while walking) | | Disables gesture wheel while clicked (prevents emotes while walking) | ||
|boolean | |boolean | ||
|optional | |optional | ||
|- | |- | ||
|GW Disable Rotate (Left/Right) | |GW Disable Rotate (Left/Right) | ||
|Global, Act, 1H | | Global, Act, 1H | ||
|Disables gesture wheel while clicked (prevents emotes while rotating) | | Disables gesture wheel while clicked (prevents emotes while rotating) | ||
|boolean | | boolean | ||
|optional | |optional | ||
|- | |- | ||
|Disable Gesture Tracked | |Disable Gesture Tracked | ||
|Global, Action | |Global, Action | ||
|Stops gesture wheel from running while clicked. (Prevents inputs while moving) | |Stops gesture wheel from running while clicked. (Prevents inputs while moving) | ||
|boolean | |boolean | ||
Line 645: | Line 652: | ||
==Walkthroughs== | ==Walkthroughs== | ||
===Adding new inputs=== | These walkthroughs require you to first navigate to the [[Community:SteamVR_Bindings#Where|VRChat SteamVR bindings page]]. | ||
===Default Bindings=== | |||
To reset your bindings to default, navigate to the [[Community:SteamVR_Bindings#Where|VRChat SteamVR bindings page]] and select <code>Activate</code> on the official Default Bindings available for your controller. | |||
[[File:SteamVR Input - Default Bindings.png|1100x1100px]] | |||
=== Editing Bindings === | |||
You can enter the bindings editor for a specific controller by selecting <code>Edit</code> on the currently applied Binding. | |||
[TODO Image] | |||
===Changing input settings=== | |||
Almost all inputs can be configured. Find the input you'd like to configure and hover over it, you'll see a pencil icon you can click. After clicking the pencil, to the right side of the input you'll find a cogwheel which will cause a dialogue box with input settings to appear. | |||
[[File:SteamVR Input - Accessing Input Settings.png|border|800x800px]] | |||
=== Adding new inputs=== | |||
TODO | TODO | ||
Line 663: | Line 687: | ||
TODO | TODO | ||
=== DPAD overlap percentage=== | ===DPAD overlap percentage=== | ||
TODO | TODO | ||
Line 672: | Line 696: | ||
When you bind multiple actions like this, it stops them from functioning instantaneously and can make them unpredictable. <ref name=":0" /> | When you bind multiple actions like this, it stops them from functioning instantaneously and can make them unpredictable. <ref name=":0" /> | ||
[[File:Multiple actions per controller.png|alt=Bad vs Good method for multiple actions via one control source|800x800px]] | [[File:SteamVR Input - 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 <code>Single</code> and '''quick menu''' to <code>Double</code>; this will introduces a small delay after the <code>single</code> press input which can be interrupted by a <code>double</code> click to open the '''quick menu''' without accidentally opening the '''action menu'''. | A functional use case would be setting '''action menu''' to <code>Single</code> and '''quick menu''' to <code>Double</code>; this will introduces a small delay after the <code>single</code> press input which can be interrupted by a <code>double</code> click to open the '''quick menu''' without accidentally opening the '''action menu'''. | ||
==Controller info & fixes== | == Controller info & fixes== | ||
===All controllers=== | ===All controllers=== | ||
Various fixes that are potentially globally applicable. | Various fixes that are potentially globally applicable. | ||
<blockquote> | <blockquote> | ||
====Can't do gestures at all==== | ====Can't do gestures at all==== | ||
Line 697: | Line 717: | ||
<blockquote>TODO: Location of toggle in context</blockquote> | <blockquote>TODO: Location of toggle in context</blockquote> | ||
====Disabling finger tracking==== | ====Disabling finger tracking ==== | ||
Skeletal based finger tracking is enabled by default for all controller types. You can disable it in the [[Settings#Controls|Controls]] section of the [[Main Menu]] | Skeletal based finger tracking is enabled by default for all controller types. You can disable it in the [[Settings#Controls|Controls]] section of the [[Main Menu]] | ||
<blockquote>TODO: Location of toggle in context</blockquote> | <blockquote>TODO: Location of toggle in context</blockquote> | ||
Line 707: | Line 727: | ||
<blockquote>TODO: GIF navigating to toggle</blockquote> | <blockquote>TODO: GIF navigating to toggle</blockquote> | ||
====Hands breaking | ====Hands breaking in SteamVR Dashboard is open==== | ||
This is due to a SteamVR feature called Keyboard privacy introduced in [https://store.steampowered.com/news/app/250820/view/4371390626087848465 SteamVR 2.7] which restricts applications from seeing device positions while the Steam keyboard is visible. As of time of writing, this safety feature can only be disabled in the SteamVR Beta. [https://help.steampowered.com/en/faqs/view/4F5E-AD22-7402-2EAD Opt in Instructions] In SteamVR settings navigate to <code>Dashboard</code> and set <code>Keyboard Privacy</code> to '''Disabled.'''<blockquote>TODO: Image of option with menu location context</blockquote> | |||
====Hard Bindings reset ==== | |||
====Hard | |||
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. | ||
<blockquote>TODO: Guide on process</blockquote> | <blockquote>TODO: Guide on process</blockquote> | ||
Line 718: | Line 737: | ||
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) | ||
<blockquote> | <blockquote> | ||
==== | |||
====Advanced Controls==== | |||
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. | ||
<blockquote>TODO: Image of bindings page, focusing on Default/Advanced options </blockquote> | <blockquote>TODO: Image of bindings page, focusing on Default/Advanced options </blockquote> | ||
====No touch to move / Emotes are "sticky"==== | |||
It's likely that you previously used Vive Advanced controls before Input 2.0. Try switching. | |||
====Difficulty moving==== | ====Difficulty moving==== | ||
Line 726: | Line 749: | ||
<blockquote>TODO: Recommended values for Simple & Advanced</blockquote> | <blockquote>TODO: Recommended values for Simple & Advanced</blockquote> | ||
====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. | ||
<blockquote>TODO: Recommended values for both</blockquote> | <blockquote>TODO: Recommended values for both</blockquote> | ||
====Physbone | ====Physbone posing with grip==== | ||
At time of writing (8/30/24) posing physbones is tied to the <code>interact</code> functionality and there's is no way to restore pre-input 2.0 functionality of pose via Grip without sacrificing other functionalities. | At time of writing (8/30/24) posing physbones is tied to the <code>interact</code> functionality and there's is no way to restore pre-input 2.0 functionality of pose via Grip without sacrificing other functionalities. | ||
<blockquote>[https://feedback.vrchat.com/open-beta/p/1501-vive-controllers-unwanted-gesture-behavior-in-action-menu Related Canny]TODO: image showing what the newly added button should look like.</blockquote> | <blockquote>[https://feedback.vrchat.com/open-beta/p/1501-vive-controllers-unwanted-gesture-behavior-in-action-menu Related Canny]TODO: image showing what the newly added button should look like.</blockquote> |
Revision as of 14:00, 31 August 2024
[Reason: Still missing guides & need more input from various controller types]
[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. |
Chords | Bindings that combine two or more inputs to execute one action |
Mostly from the official docs but with some edits for clarity.
Control Source Modes
Control Source Mode | Provided Inputs |
---|---|
Button | Touches, Clicks, Holds, Double clicks, and Long presses |
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) |
Joystick | XY Positioning, touches, and presses |
Trackpad | XY Positioning, touches, and presses |
DPAD | Splits the the XY control source into North, East, South, and West quadrants. Can be used in touch or click mode. |
Grab | Combines capacitive sensors and force sensors to report a more reliable grab |
Force Sensor | Gives analog actions a 0-1 value indicating how much force the user is applying to the control |
Set analog Action | Allows you to use a digital (on/off) control to a set an analog (0-1) value |
Toggle Button | One press for on, one press for off |
Radial Menu | (?) |
Input Methods
Input | Usage | Types | Control Source |
---|---|---|---|
Click | Pressing the control | boolean | Any |
Touch | Touching the assigned control (If it has a touch sensor) | boolean | Any |
Single | Pressing the control once | boolean | Button |
Double | A quick double press of the control | boolean | Button |
Long | Hold the control for 0.5 seconds (?) | boolean | Button |
Held | Sets the action to true while the button is held after the long duration. | boolean | Button |
Pull | Value 0-1 representing what percentage the trigger is depressed | vector1 | Trigger |
Position | The position you are touching on a touchpad or the position you've pushed a joystick to. | vector2 | Trackpad / Joystick |
Actions
Every bindable Action for SteamVR controllers in VRChat. Found in VRChat\VRChat_Data\StreamingAssets\SteamVR\actions.json
(Descriptions are community created)
Action | Action Set | Description | Type | Requirement |
---|---|---|---|---|
Menu | Global, 1H | Dual purpose. One activation opens 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 | suggested |
Grab | Global, 1H | Picks up grabbable world objects | boolean | suggested |
Drop | Global, 1H | Drops held item. Enables Auto Hold. (Prevents item drop unless drop action is triggered) | boolean | optional |
Move | Global, 1H | Player movement | vector2 | |
Jump | Global, 1H | Jump! | boolean | |
Rotate | Global | Player rotation | vector2 | |
Advanced Controls | Alternative movement for touchpads that share the Gesture Wheel | |||
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 | If Start move is released, as long as this is active, movement will continue. | boolean | optional |
Continue Rotate (Advanced) | Global | If Start rotate is released, as long as this is active, rotation will continue. | boolean | optional |
No Gesture After Move | Global | Prevents Gesture Wheel touches after Start move click is released | boolean | optional |
No Gesture After Rotate | Global | Prevents Gestures Wheel touches after Start rotate click is released | boolean | optional |
Miscellaneous | Other optional functionalities | |||
Toggle Microphone | Global, 1H | Toggles Microphone | boolean | optional |
Gesture Toggle | Global, 1H | Toggles Gestures | boolean | optional |
Cycle Nameplate Mode | Global | Cycles through 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 | Specifically for the one handed action set | |||
Move & Rotate | One_Hand | Combined movement & rotation | vector2 | suggested |
Start Move & Rotate | One_Hand | When clicked begin Move & Rotate | boolean | optional |
Continue Move & Rotate | 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 | Inputs used by Udon worlds | |||
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 | Specifically for the menu action set | |||
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 | Specifically for the action menu action set | |||
Axis | Action | Directional control in the action menu | vector2 | suggested |
Select | Action | Select hovering item in the action menu | boolean | |
(?) | (?) | |||
Pose Data | Global | The 6-DOF position and orientation of a device tracked device. | pose | |
SkeletonLeftHand | Global | Used to retrieve bone transform data from the related controllers | skeleton | suggested |
SkeletonRightHand | Global | skeleton | ||
Haptics | Global, 1H | Used to apply various haptics to the device. (Such as when hovering over menu elements or the personal mirror) | vibration | |
Gesture Activator (GA) | Activators for (?) | |||
GA (Thumb) | Global | boolean | optional | |
GA (Thumb Inner-Upper) | Global | boolean | optional | |
GA (Thumb, Inner-Lower) | Global | boolean | optional | |
GA (Thumb, Outer) | Global | boolean | optional | |
GA (Index Finger) | Global | boolean | optional | |
GA (Grip) | Global | boolean | optional | |
GA (Stick Deflection) | Global | vector2 | optional | |
Gesture | (?) | |||
Gesture - Trigger Axis | Global | vector1 | optional | |
Gesture - Grip Axis | Global | vector1 | optional | |
Gesture Direct | Use Gesture (UG) | Used to directly set the integer values of GestureLeft/GestureRight | |||
UG - Neutral (Left/Right) | Global | Sets Gesture(Left/Right) to 0 (Neutral)
|
boolean | optional |
UG - Fist (Left/Right) | Global | Sets Gesture(Left/Right) to 1 (Fist)
|
boolean | optional |
UG - Open (Left/Right) | Global | Sets Gesture(Left/Right) to 2 (HandOpen)
|
boolean | optional |
UG - Point (Left/Right) | Global | Sets Gesture(Left/Right) to 3 (FingerPoint)
|
boolean | optional |
UG - Peace (Left/Right) | Global | Sets Gesture(Left/Right) to 4 (Victory)
|
boolean | optional |
UG - Horns (Left/Right) | Global | Sets Gesture(Left/Right) to 5 (RockNRoll)
|
boolean | optional |
UG - Finger Gun (Left/Right) | Global | Sets Gesture(Left/Right) to 6 (HandGun)
|
boolean | optional |
UG - Thumbs Up (Left/Right) | Global | Sets Gesture(Left/Right) to 7 (Thumbsup)
|
boolean | optional |
Gesture Wheel (GW) | Gesture wheel of emotes based on pre-input 2.0 Vive touchpad Gesture control | |||
GW (Left/Right) | Global, Act, 1H | The XY position of the gesture wheel | vector2 | optional |
GW Select (Left/Right) | Global, Act, 1H | Selects a gesture that will be released after activation stops | boolean | optional |
GW Held (Left/Right) | Global, Act, 1H | Selects a gesture that will remain after activation stops | boolean | optional |
GW Direct (Left/Right) | Global, Act, 1H | (?) | boolean | optional |
GW Direct Stay (Left/Right) | Global, Act, 1H | (?) | boolean | optional |
GW Soft Select (Left/Right) | Global, Act, 1H | Selects a gesture which can be used with Gesture wheel Weight | vector1 | optional |
GW Weight (Left/Right) | Global, Act, 1H | Analog driving value of the current gesture | vector1 | optional |
GW Cancel (Left/Right) | Global, Act, 1H | Sets the current gesture to 1 (Fist) and 0 (neutral) after release
|
boolean | optional |
GW Cancel Open (Left/Right) | Global, Act, 1H | Sets the current gesture to 2 (HandOpen) and 0 (neutral) after release
|
boolean | optional |
GW Disable Move (Left/Right) | Global, Act, 1H | Disables gesture wheel while clicked (prevents emotes while walking) | boolean | optional |
GW Disable Rotate (Left/Right) | Global, Act, 1H | Disables gesture wheel while clicked (prevents emotes while rotating) | boolean | optional |
Disable Gesture Tracked | Global, Action | Stops gesture wheel from running while clicked. (Prevents inputs while moving) | boolean | optional |
________________________________ | ________________ |
Walkthroughs
These walkthroughs require you to first navigate to the VRChat SteamVR bindings page.
Default Bindings
To reset your bindings to default, navigate to the VRChat SteamVR bindings page and select Activate
on the official Default Bindings available for your controller.
Editing Bindings
You can enter the bindings editor for a specific controller by selecting Edit
on the currently applied Binding.
[TODO Image]
Changing input settings
Almost all inputs can be configured. Find the input you'd like to configure and hover over it, you'll see a pencil icon you can click. After clicking the pencil, to the right side of the input you'll find a cogwheel which will cause a dialogue box with input settings to appear.
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 controllers
Various fixes that are potentially globally applicable.
Can't do gestures at all
By default coming into the Input 2.0 update, gestures were set to disabled. You can enable them in them in the Action Menu.
Path: Action Menu ➜ Options ➜ Avatar ➜ Gestures
TODO: GIF navigating to toggle
Double tap is opening the Main Menu
This feature was introduced with Input 2.0. You can disable it in the Controls section of the Main Menu
TODO: Location of toggle in context
Disabling finger tracking
Skeletal based finger tracking is enabled by default for all controller types. You can disable it in the Controls section of the Main Menu
TODO: Location of toggle in context
Reverting to old finger tracking
If you prefer the old finger tracking method, navigate to the Quick Actions section of the Action Menu and enabling Legacy fingers. (this will need to be done on a per-avatar basis)
Path: Action Menu ➜ Expressions ➜ Quick Actions ➜ Legacy Fingers
TODO: GIF navigating to toggle
Hands breaking in SteamVR Dashboard is open
This is due to a SteamVR feature called Keyboard privacy introduced in SteamVR 2.7 which restricts applications from seeing device positions while the Steam keyboard is visible. As of time of writing, this safety feature can only be disabled in the SteamVR Beta. Opt in Instructions In SteamVR settings navigate to
Dashboard
and setKeyboard Privacy
to Disabled.TODO: Image of option with menu location context
Hard Bindings reset
In rare cases, a full hard reset of your bindings may be needed due to issues with SteamVR.
TODO: Guide on process
Vive Wands
Vive is a little special, two default binding modes are available with different feature sets. (TODO: write about them)
Advanced Controls
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.
TODO: Image of bindings page, focusing on Default/Advanced options
No touch to move / Emotes are "sticky"
It's likely that you previously used Vive Advanced controls before Input 2.0. Try switching.
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
Physbone posing with grip
At time of writing (8/30/24) posing physbones is tied to the
interact
functionality and there's is no way to restore pre-input 2.0 functionality of pose via Grip without sacrificing other functionalities.Related CannyTODO: image showing what the newly added button should look like.
Unwanted Action Menu gestures
This is because the Action Menu action set is a copy of the Global action set. If you wish to keep Fist/Open hand functional but prevent the trackpad from firing emotes, you can migrate the actions of
Gesture Wheel - Disable Move
AndGesture Wheel - Disable Rotate
to Touch on their respective Buttons instead of Click. If you want to disable ALL gestures (including fist/open hand) while the action menu is open, you can delete all Gesture Wheel actions from the Action menu action set all together.Related CannyTODO: Image of bind setup
Grip isn't doing hand open / Isn't clearing gestures
You're likely missing the
Gesture Wheel Cancel Open (Left/Right)
actions on your grips as a Button clicks.
Index
Easier Object holding
HP Reverb G2
TODO: More controller types, need users with more experience on other types.