VR Controller support is missing. Please add in addition to 3D mouse

If you have a wireless headset, that is.

1 Like

What nearly all posts in this topic are about is:
→ controlling the switches, knobs, levers, etc… as if you’d action them directly with you hand.

I’ve no doubt some/many/nearly everyone? are wanting the VR controller to replace the need for physical controllers, allowing to “play” flightsim in the living room for example like you’d play HLA, but I believe the video in the 1st message of this topic is clearly showing the need has nothing to do whatsoever to that at all.

I’m upvoting the subject for ‘VR controller support’ more than a desire to ‘feel clicks of knobs’, for if hand controller support is added that is useful as well, but walking before running would be actually getting controller support which does not require mouse or joysticks. Consider the original post and mine as mutually exclusive in the context of voting for development and introduction seems… unnecessary?
I’d love it if they shipped haptic feedback gloves (so long as they are nomex flight gloves!) for the deep immersion but it’s a bit of an overreach I think.

2 Likes

Well according to the updated roadmap it seems we can finally expect to get VR controller support by sim update 7 so excited to fly this simulator with VR controllers as I find it disturbing to use a 3d mouse.

Yes indeed. Good news :slight_smile:

By the way, VR controller input mapping is in the game deliverables since at least v1.16.2.

The files are located in the app “Input” subfolder (not in the “Official” folder). For example:

HP_Mixed_Reality_Controller_Left.xml
<?xml version="1.0" encoding="utf-8"?>
<DefaulftInput Primary="1">
  <Version Num="1787" />
  <Device DeviceName="HP Mixed Reality Controller Left" GUID="43b7baed-76bb-4266-b745-be5671c8b073" ProductID="2706">
    <Axes>
      <Axis AxisName="X" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="Y" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="SliderX" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="SliderY" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="Z" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="rX" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="rY" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="rZ" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
    </Axes>
    <Context ContextName="ALWAYS">
      <Action ActionName="KEY_VR_MENU" Flag="2" ValueEvent="0">
        <Primary>
          <KEY Information="Y_CLICK">27</KEY>
        </Primary>
      </Action>
      <Action ActionName="KEY_VR_RESET_VIEW" Flag="2" ValueEvent="0">
        <Primary>
          <KEY Information="X_CLICK">25</KEY>
        </Primary>
      </Action>
      <Action ActionName="KEY_VR_SELECT" Flag="2" ValueEvent="0">
        <Primary>
          <KEY Information="TRIGGER_VALUE">24</KEY>
        </Primary>
      </Action>
      <Action ActionName="KEY_VR_SWITCH_PROXIMITY_RAYCAST" Flag="2" ValueEvent="0">
        <Primary>
          <KEY Information="SQUEEZE_VALUE">9</KEY>
        </Primary>
      </Action>
    </Context>
  </Device>
</DefaulftInput>
HTC_Vive_Controller_Left.xml
<?xml version="1.0" encoding="utf-8"?>
<DefaulftInput Primary="1">
  <Version Num="1787" />
  <Device DeviceName="HTC Vive Controller Left" GUID="43b7baed-76bb-4266-b745-be5671c8b073" ProductID="2706">
    <Axes>
      <Axis AxisName="X" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="Y" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="SliderX" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="SliderY" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="Z" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="rX" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="rY" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="rZ" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
    </Axes>
    <Context ContextName="ALWAYS">
      <Action ActionName="KEY_VR_DISPLAY_TOOLTIP" Flag="2" ValueEvent="0">
        <Primary>
          <KEY Information="TRACKPAD_UP_CLICK">32</KEY>
        </Primary>
      </Action>
      <Action ActionName="KEY_VR_MENU" Flag="2" ValueEvent="0">
        <Primary>
          <KEY Information="MENU_CLICK">5</KEY>
        </Primary>
      </Action>
      <Action ActionName="KEY_VR_RESET_VIEW" Flag="2" ValueEvent="0">
        <Primary>
          <KEY Information="TRACKPAD_DOWN_CLICK">31</KEY>
        </Primary>
      </Action>
      <Action ActionName="KEY_VR_SELECT" Flag="2" ValueEvent="0">
        <Primary>
          <KEY Information="TRIGGER_CLICK">22</KEY>
        </Primary>
      </Action>
      <Action ActionName="KEY_VR_SWITCH_PROXIMITY_RAYCAST" Flag="2" ValueEvent="0">
        <Primary>
          <KEY Information="SQUEEZE_CLICK">7</KEY>
        </Primary>
      </Action>
    </Context>
  </Device>
</DefaulftInput>
Oculus_touch_Controller_Left.xml
<?xml version="1.0" encoding="utf-8"?>
<DefaulftInput Primary="1">
  <Version Num="1787" />
  <Device DeviceName="Oculus touch Controller Left" GUID="43b7baed-76bb-4266-b745-be5671c8b073" ProductID="2706">
    <Axes>
      <Axis AxisName="X" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="Y" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="SliderX" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="SliderY" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="Z" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="rX" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="rY" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="rZ" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
    </Axes>
    <Context ContextName="ALWAYS">
      <Action ActionName="KEY_VR_RESET_VIEW" Flag="2" ValueEvent="0">
        <Primary>
          <KEY Information="X_CLICK">25</KEY>
        </Primary>
      </Action>
      <Action ActionName="KEY_VR_SELECT" Flag="2" ValueEvent="0">
        <Primary>
          <KEY Information="TRIGGER_VALUE">24</KEY>
        </Primary>
      </Action>
      <Action ActionName="KEY_VR_SWITCH_PROXIMITY_RAYCAST" Flag="2" ValueEvent="0">
        <Primary>
          <KEY Information="SQUEEZE_VALUE">9</KEY>
        </Primary>
      </Action>
    </Context>
    <Context ContextName="MODE_PAUSE">
      <Action ActionName="KEY_PAUSE_TOGGLE" Flag="2" ValueEvent="0">
        <Primary>
          <KEY Information="Y_CLICK">27</KEY>
        </Primary>
      </Action>
    </Context>
  </Device>
</DefaulftInput>
Valve_Index_Controller_Left.xml
<?xml version="1.0" encoding="utf-8"?>
<DefaulftInput Primary="1">
  <Version Num="1787" />
  <Device DeviceName="Valve Index Controller Left" GUID="43b7baed-76bb-4266-b745-be5671c8b073" ProductID="2706">
    <Axes>
      <Axis AxisName="X" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="Y" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="SliderX" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="SliderY" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="Z" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="rX" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="rY" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="rZ" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
    </Axes>
    <Context ContextName="ALWAYS">
      <Action ActionName="KEY_VR_MENU" Flag="2" ValueEvent="0">
        <Primary>
          <KEY Information="B_CLICK">2</KEY>
        </Primary>
      </Action>
      <Action ActionName="KEY_VR_RESET_VIEW" Flag="2" ValueEvent="0">
        <Primary>
          <KEY Information="A_CLICK">0</KEY>
        </Primary>
      </Action>
      <Action ActionName="KEY_VR_SELECT" Flag="2" ValueEvent="0">
        <Primary>
          <KEY Information="TRIGGER_CLICK">22</KEY>
        </Primary>
      </Action>
      <Action ActionName="KEY_VR_SWITCH_PROXIMITY_RAYCAST" Flag="2" ValueEvent="0">
        <Primary>
          <KEY Information="SQUEEZE_FORCE">8</KEY>
        </Primary>
      </Action>
    </Context>
  </Device>
</DefaulftInput>
WMR_Controller_Left.xml
<?xml version="1.0" encoding="utf-8"?>
<DefaulftInput Primary="1">
  <Version Num="1787" />
  <Device DeviceName="WMR Controller Left" GUID="43b7baed-76bb-4266-b745-be5671c8b073" ProductID="2706">
    <Axes>
      <Axis AxisName="X" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="Y" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="SliderX" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="SliderY" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="Z" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="rX" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="rY" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
      <Axis AxisName="rZ" AxisSensitivy="0" AxisSensitivyMinus="0" AxisDeadZone="0" AxisOutDeadZone="0" AxisNeutral="0" AxisResponseRate="-1" />
    </Axes>
    <Context ContextName="ALWAYS">
      <Action ActionName="KEY_VR_DISPLAY_TOOLTIP" Flag="2" ValueEvent="0">
        <Primary>
          <KEY Information="TRACKPAD_UP_CLICK">32</KEY>
        </Primary>
      </Action>
      <Action ActionName="KEY_VR_MENU" Flag="2" ValueEvent="0">
        <Primary>
          <KEY Information="MENU_CLICK">5</KEY>
        </Primary>
      </Action>
      <Action ActionName="KEY_VR_RESET_VIEW" Flag="2" ValueEvent="0">
        <Primary>
          <KEY Information="TRACKPAD_DOWN_CLICK">31</KEY>
        </Primary>
      </Action>
      <Action ActionName="KEY_VR_SELECT" Flag="2" ValueEvent="0">
        <Primary>
          <KEY Information="TRIGGER_VALUE">24</KEY>
        </Primary>
      </Action>
      <Action ActionName="KEY_VR_SWITCH_PROXIMITY_RAYCAST" Flag="2" ValueEvent="0">
        <Primary>
          <KEY Information="SQUEEZE_CLICK">7</KEY>
        </Primary>
      </Action>
    </Context>
  </Device>
</DefaulftInput>

I’ll let you see the “right” variants!

I like the look of the “raycast” binding. That suggests similar to XP in terms of being able to “point” at the control you wish to manipulate.

Can anyone tell me (as I haven’t tried and don’t have a chance right now) - can you use the mouse to control the yoke by manual means? What I mean by that is not e.g. binding ailerons to mouse x-axis in the settings but by click-and-drag on the yoke when in the cockpit?

Please tell me there is hand tracking mention in the Oculus file :drooling_face:

Pimax headsets also have hand tracking so I hope they will consider this option as well. Perfect scenario for me is using a yoke and throttle along side using hand tracking for knobs and buttons in the flight deck.

It looks like the top post is due for another update. If what internet says is true, we should see hand tracking released mid-November!

1 Like

Why? What does internet say? As much as I’d love to see hand tracking, I haven’t seen a single mainstream PC VR HMD that has it implemented and working in any mainstream PC game. Why should we expect it in MSFS? I think you’re just setting yourself for disappointment. I suspect the hardware isn’t build for this and camera passthrough that gets to PC for processing isn’t present, or is too bad to use. That’s why the only mainstream HMD that has hand tracking (in theory, though it wasn’t widely accepted) is Oculus Quest, because it has on-board CPU that has access to cameras feed. Anyway, I’d love to be mistaken, but I don’t expect hand-tracking without external cameras etc. any time soon on PCVR. I’m afraid HMD has to be designed with hand tracking in mind - maybe in near future…

1 Like

Although i haven’t personally used it, i hear there’s a 737 mod for Xplane that implements VR controllers really well. Maybe not VTOL VR level interaction but a certain step in the right direction. So the people that gush over this mod say.

But that’s like literally it as far as i’m concerned. DCS does have vr controller support but it’s janky…

I was talking specifically about hand tracking, responding to another remark about hand tracking, not just VR controller support. Does X-Plane support hand tracking? You just said it supports “VR controllers”, which I do actually show in video in my main post above.

There is some Quest games, ie: Top 10 Best Oculus Quest Hand Tracking Games & Apps

But to have a proper hand tracking system, you need to have a game that’d use it well. Most of the games are more hand tracking experiences than real games unfortunately.

I think Flight Simulator would be a perfect candidate. :pray:

Ah, that’s exactly what I was talking about: those are Quest games, they run on internal Quest CPU, not on PC. Quest CPU has access to its cameras and a hand tracking API. Even when you play the same Quest as PCVR - there is no hand tracking games on PC, as far as I know. I don’t think that camera data is even passed to PC at all. That’s why hand tracking is only available on Quest - because of its internal CPU that’s both powerful enough to process hand tracking AND has access to camera’s feed. It’s not looking like this will happen on PCVR any time soon, unless it involves a separate external camera or cameras to manage the video feed for PC to process.

Oh sorry, it’s true that the linked article was only about Quest native games.
But yes, there is. Blade and Sorcery for example is a PCVR game that uses hand tracking.

I didn’t know that. I looked it up. Apparently it’s a kind of a hack: “Hand tracking works with blade and sorcery through virtual desktop”, so it uses a 3rd party app, and it’s only for Quest anyway. Apparently the app manages to pass through the hand tracking data from Quest. Not applicable to any other HMDs like G2 then. Best case scenario is Quest support, but because it’s not even native to Quest official flow, I very much doubt Asobo would even try to implement it…

Interesting, I didn’t know that.
Well in that case it won’t happen until Oculus gives us native hand tracking support for PCVR games indeed.

oh hand tracking like what the quest 2 got n stuff. my bad dude lol

add controller support!