Skip to content

superhot-vr: fix grab, menu button (probably fixes #385) - #400

Open
skryvel wants to merge 3 commits into
Supreeeme:mainfrom
skryvel:superhot-vr
Open

superhot-vr: fix grab, menu button (probably fixes #385)#400
skryvel wants to merge 3 commits into
Supreeeme:mainfrom
skryvel:superhot-vr

Conversation

@skryvel

@skryvel skryvel commented Aug 8, 2026

Copy link
Copy Markdown

Grab/menu/throw working with Quest 3 WiVRn Proton setup. Includes quirks subsystem that is on !397; whichever merges first I'll adjust the other. Has the commit from !394 because it's required.

Recording:

shvr1.mp4

@skryvel
skryvel marked this pull request as ready for review August 8, 2026 15:23
@Mr-Zero88

Copy link
Copy Markdown
Contributor

for the HMD report it is very similar to b024a14 but needs to be more generic to allow more headsets and not hardcode for e.i. quest 2 or 3.

@Mr-Zero88

Mr-Zero88 commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

other than that.
LGTM

Some games sniff these to decide which motion controller scheme to
enable, and they typically do it once at startup - before any controller
has connected - so the HMD is the only device that can answer. Empty
strings land such games in their fallback scheme: SUPERHOT VR picks its
Vive scheme, where dropping items needs a trackpad, and Serious Sam 3
ignores controller input entirely.

Games match against the handful of device families SteamVR shipped, so
derive the family from the OpenXR system name instead of hardcoding one
headset, and report the real system name as the model. An unrecognized
system name falls back to Oculus-style strings, since touch-style
controllers are the modern common case.

Implements xrGetSystemProperties in fakexr so the property tests can
exercise it.
SUPERHOT VR binds its menu action to a long press of the X button. The
binding parser did not know the slot and silently dropped it, leaving
the menu unreachable on touch-style controllers. Approximate a long
press as a regular click rather than losing the binding.
Generic trackers identify as Vive Trackers, which some games sniff to
pick a controller scheme: SUPERHOT VR switches to its Vive scheme when
it sees one, where dropping held items requires a trackpad that
touch-style controllers do not have. Add a small quirks table keyed on
the game executable's name (Wine rewrites argv[0] to the .exe path, so
this also works under Proton) and suppress generic trackers for
SUPERHOT VR. XRIZER_MAX_TRACKERS overrides the default either way.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants