Skip to content

Add support for Windows Mixed Reality controllers#130

Open
CheesecakeCG wants to merge 15 commits intoSupreeeme:mainfrom
CheesecakeCG:wmr-controller-support
Open

Add support for Windows Mixed Reality controllers#130
CheesecakeCG wants to merge 15 commits intoSupreeeme:mainfrom
CheesecakeCG:wmr-controller-support

Conversation

@CheesecakeCG
Copy link

@CheesecakeCG CheesecakeCG commented Jul 6, 2025

I've only added support for the original WMR controllers so far, and I haven't much tested outside of VRChat and ChilloutVR.

Also, the grip poses in Monado might be flipped... and the ones I'm using here are rotated wrong.
The offsets are now fixed in Beyley's rift-driver-tracking branch and Thaytan's dev-constellation-controller-tracking branch of Monado.

  • OG WMR Controller Support (mostly done)
  • Samsung Odyssey Controller Support
  • HP Reverb G2 Controller Support

I'll need other people to test the last two controllers.

@Supreeeme
Copy link
Owner

Feel free to split odyssey and reverb g2 support into separate PRs, if you'd like.

@CheesecakeCG CheesecakeCG force-pushed the wmr-controller-support branch from 4126f7f to 60bdb2d Compare July 23, 2025 19:44
@CheesecakeCG CheesecakeCG force-pushed the wmr-controller-support branch from 2f0d8c6 to 32f1b19 Compare August 1, 2025 17:08
@CheesecakeCG CheesecakeCG marked this pull request as ready for review August 6, 2025 03:11
Copy link
Owner

@Supreeeme Supreeeme left a comment

Choose a reason for hiding this comment

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

These could use some simple verify_bindings tests. You can look at the ones in the other profiles for inspiration.

Comment on lines +119 to +123
(ControllerType::HPMotionController, &ReverbG2Controller),
(
ControllerType::SamsungOdysseyController,
&SamsungOdysseyController,
),
Copy link
Owner

Choose a reason for hiding this comment

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

Since these controller types are locked behind extensions, we will need to handle the extensions not being available in some way.

Copy link
Owner

@Supreeeme Supreeeme Feb 10, 2026

Choose a reason for hiding this comment

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

#298 adds a mechanism for this, so you can use that once that gets merged.

Copy link
Owner

Choose a reason for hiding this comment

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

Now merged!

@toyowheelin
Copy link

I am not sure if this is a good place for this or not but I built Cheesecakes wmr-controller-support branch and tested it with Xplane11 and ended up with a crash. I was in communication with Supreme in Discord and they were thinking it was likely that Cheesecakes branch just needs to be rebased. I would love to test and am hopeful that Cheesecake will see this and be able to do that. For reference this is the log from the crash https://bin.garudalinux.org/?d2bb0dfa11ef9f74#7uRhUQbjF928BVyHuLm8km9aXs7Cp8WRc6LBzE2YspYC

@CheesecakeCG CheesecakeCG force-pushed the wmr-controller-support branch from 5209b7d to d092b98 Compare October 4, 2025 04:26
@toyowheelin
Copy link

toyowheelin commented Oct 4, 2025

Unfortunately the rebase didn't help and resulted in the same error. https://bin.garudalinux.org/?11a46fbeba5363eb#BAPbEdpGxLu6gvtc8L7AZ5KZQaoYLyPU7XiYnNJQuG6 I will try to compile the default xrizer and make sure it works, as I have only ever used OpenComposite with Xplane11.
EDIT: Good/Bad news, default xrizer works great. So something is broken on the wmr-controller-support branch I guess. Log from default xrizer https://bin.garudalinux.org/?6166151fa5d4a6bc#BfL5Wfp4FAaJo8FUqNQDSAmJCAsG68yZQGzaBUvdynLt

@CheesecakeCG
Copy link
Author

@toyowheelin Which kind of controllers are you using? Reverb G2?

@toyowheelin
Copy link

I have a Samsung Odyssey + setup.

@toyowheelin
Copy link

Let me know if you need any more info to look into this, I would love to help make this work.

@CheesecakeCG
Copy link
Author

Let me know if you need any more info to look into this, I would love to help make this work.

I still need the render_model_name for the Samsung controllers, unless SteamVR doesn't actually show different models for those controllers. I'm not entirely sure where in the SteamVR driver that's defined though, I'm able to see it in the other drivers but not for WMR.

@Supreeeme
Copy link
Owner

It'd be nice to have these in, if you want to move Samsung support to a separate PR.

Comment on lines +28 to +29
left: c"C:\\Users\\steamuser\\AppData\\Local\\Microsoft/Windows/OpenVR\\controller_1642_1118_1\\controller.obj",
right: c"C:\\Users\\steamuser\\AppData\\Local\\Microsoft/Windows/OpenVR\\controller_1642_1118_2\\controller.obj"
Copy link
Owner

Choose a reason for hiding this comment

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

I assume this is what's returned in Windows? Kind of cursed...

Copy link
Author

Choose a reason for hiding this comment

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

It's pretty close to what's returned on Windows, except the user name usually matches the actual user's username. I figured most of the time, people will be running games with XRizer through Proton and that's the username used there.

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.

3 participants