c++openvrsteamvr

SteamVR override Controller inputs?


I want to override my controller inputs. Like swapping controller button actions for example. My approach was creating a custom controller using OpenVR, but then I cannot retrieve my controller inputs and feed them to the controller I created.

I know that I can get controller inputs, just to read. But how do I override them, is it possible? Any help will be appreciated. Thanks.


Solution

  • The hard way

    Making your own wrapper driver, its not gonna be easy, openvr driver API is mostly undocumented(and barely functional on Linux...) and very confusing

    It is possible though, if i understand your question correctly, you want to achieve something like the DecaMove(which can be used with a phone now if i understand the info from their website correctly)

    Now onto how... You'll need to make your own driver that captures the inputs of your headset's driver and modify it, start here and read most of the driver related wiki, you'll need it, read through openvr_driver.h (code comments in it is the latest docs it has)

    Then read through the only official driver example openvr has... Can be found here, use it as a reference, but never base your driver on it!

    That's about it when it comes to documentation, some tips:

    I wish you good luck if you end up choosing to make your own driver

    The easy way

    As mentioned above, DecaMove can be used with a phone instead now, refer to their website for more info

    (I also wanted to recommend openvr input emulator, but after looking at their code i realized how old it is, and it also seems abandoned... so yeah, don't use it)