VirtualHMD Oculus Rift bindings

Hello all,

I am trying to use my Oculus rift CV1 (yes it is outdated and I should move on!). However, I am having all sorts of issues with the bindings for it. Has anyone else tried rift/rift s with cloud xr?

Just as a general question, does the virtual HMD Driver always assume that the headset has vive controllers attached to it? I know you do not explicitly state that you support oculus rift CV1 Touch controllers but I think the current default bindings do not fully work as expected. I have tried both Google Earth VR and skyrim VR with mixed results, mostly down to the touch pad I think.

And with regards to the client side would I need to create a windows client binding in the visual studio project for my touch controllers?

Is there a directory which Steam stores its local bindings which you can assign in VR where could I find these json files?


CloudXR does not ship with controller bindings specific to the CV1 Touch Controllers.

CloudXR does allow you to create your own bindings. You would need to create your own bindings file, similar to the bindings_index_controller.json included in the SDK. Then you need to add an entry in cxr_controller_actions.json associated with your new bindings file. Additionally, you might need to modify ClientOpenVR.cpp in if there are additional actions associated with the controller that are not included in the existing index bindings.

SteamVR ships local bindings in the following path: <STEAM_INSTALL_DIR>\steamapps\common\SteamVR\drivers\oculus\resources\input. I do not see the bindings for the Touch Controllers in that directory, but that could be because I do not have these controllers personally, so I have never used them with SteamVR.

I hope this was helpful

Will Rice

1 Like

Thanks Will,

I think I managed to get a solution in the end :). I just use the oculus touch Q2 controller, if CV1 controllers were wanted as the 3D models I assume that’s something you would have to do on your end?

bindings_oculus_touch_controller.json (6.4 KB)

I have included the bindings that I ended up with for the CV1, I have changed to the ClientOpenVR.cpp to include this:

else if (!strcmp(ctrlName, “Oculus Rift CV1”))
m_deviceDesc.ctrlType = cxrControllerType_OculusTouch;

I assume there is not a controller for the oculus touch: as per the enum:

typedef enum
} cxrControllerType;

What I ended up doing to make the bindings easier I just copied the generated bindings after I altered them in VR from the C:\Users\<UserName>\Documents\steamvr\input folder.

The bindings file for the quest2 touch controllers was not in the CloudXR client project folder I don’t know if that’s intentional. I don’t have a quest 2 to test whether these bindings affect the Q2 bindings.