Skip to content

Fix Vive controller bindings on OpenXR - #2376

Merged
JulianGro merged 1 commit into
overte-org:masterfrom
ada-tv:fix/xr-vive-wands
Aug 10, 2026
Merged

Fix Vive controller bindings on OpenXR#2376
JulianGro merged 1 commit into
overte-org:masterfrom
ada-tv:fix/xr-vive-wands

Conversation

@ada-tv

@ada-tv ada-tv commented Jul 31, 2026

Copy link
Copy Markdown
Collaborator

The thumbstick emulation thing I added in #1948 was apparently broken. This gets Vive controllers working again and gives them access to the primary button by clicking the center of the trackpad.

@ada-tv ada-tv added needs CR This pull request needs to be code reviewed needs QA This pull request needs to be tested labels Jul 31, 2026
@SuperPou1

Copy link
Copy Markdown

works for me

@ada-tv ada-tv added QA approved This pull request has been successfully tested and removed needs QA This pull request needs to be tested labels Jul 31, 2026

// TODO: Customisable click threshold?
if (left_trigger.isActive && left_trigger.currentState >= 0.95f) {
if (left_trigger.isActive && left_trigger.currentState >= 0.8f) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are the triggers on the Vive Wands triggered too easily? Or is this unrelated?

At least on my Oculus Quest 1, the change isn't noticeable. I would be more worried about the Vale Index controllers anyway though.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change is so the virtual "click" action is triggered a little before the trigger bottoms out against the physical click button on the Vive controllers. Index controllers hit 1.0 a bit before bottoming out, but Vive controllers bottom out around 0.7-0.8.

@JulianGro JulianGro Aug 10, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess at some point we would want to be able to set different mappings for different controllers.

Though I already see how vaguely the controllers are identified by some runtimes:

LOG in xrGetSystem: Selected devices
	Head: 'WiVRn HMD'
	Eyes: '<none>'
	Left: 'WiVRn left controller'
	Right: 'WiVRn right controller'
	Gamepad: '<none>'
	Hand-Tracking Left (unobstructed): 'WiVRn left controller'
	Hand-Tracking Right (unobstructed): 'WiVRn right controller'
	Hand-Tracking Left (conforming): '<none>'
	Hand-Tracking Right (conforming): '<none>'
[08/10 17:30:04] [INFO] [openxr.context] System name         : Oculus Quest on WiVRn
[08/10 17:30:04] [INFO] [openxr.context] Max layers          : 128
[08/10 17:30:04] [INFO] [openxr.context] Max swapchain size  : 16384x16384
[08/10 17:30:04] [INFO] [openxr.context] Orientation Tracking: 1
[08/10 17:30:04] [INFO] [openxr.context] Position Tracking   : 1

I haven't tested this on the Valve Index's controllers, but it should be good enough, I guess.

@JulianGro JulianGro added CR approved This pull request has been successfully code reviewed and removed needs CR This pull request needs to be code reviewed labels Aug 8, 2026
@JulianGro
JulianGro merged commit 27d9560 into overte-org:master Aug 10, 2026
28 of 32 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CR approved This pull request has been successfully code reviewed QA approved This pull request has been successfully tested

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants