Disabling the default trigger and grip haptic pulse for OpenXR/SteamVR using XR Interaction Toolkit

Unity 2020.3.43f1
XR Interaction Toolkit v2.1.1
OpenXR Plugin v1.6.0

Game: Snapshot VR, which is built for both SteamVR and Quest standalone, and this issue happens when playing via SteamVR using the Oculus Quest 2 via the Link Cable (it may happen on other devices, but the issue did not repro with Vive Controllers, Index Controllers, or in Quest standalone)

Issue:
I believe my issue is similar to the one mentioned here:

Our players prefer the trigger activation point be closer to the bottom of the trigger pull, so that they can repeatedly pull the trigger without a full trigger release.

We set up a Trigger Action that’s set as Pass Through, Axis
The binding is set to Press, Press Only, Press Point of 0.75.

When entering any scene while running the game via SteamVR, a default haptic pulse is present for both the trigger and grip buttons. The haptic pulse activates on pull and release at the default activation point. This confuses our players because they feel this default haptic and expect the gun to shoot, but the trigger activation point is lower on the axis.

How can we disable this default haptic, and only have the controllers trigger haptics that are explicitly sent from our code via SendHapticImpulse?

Hi jkeogh1413, Did you solve this? I would love to know how to do this its really annoying me

@PigsLord Did you figure it out?

@jkeogh1413 @PigsLord @ArthurVanRemoortel Did any of you figure this one out?

Edit:
Just read the following post:

Apparently it’s a Valve thing they have on by default which they would have an extension for that would allow you to disable it (pretty weird decision making imo, but anyways…). As it’s about 3 years later, I guess this extension should be out by now?

I am facing the exact same issue at the moment trying to get started with my own VR project. The extension that controls the thresholds and haptic feedback controls seems to be called “XR_VALVE_analog_threshold”. I sadly havent found any finished implementation of this and its frankly far above my knowledge grade to implement myself.

Curiously the Unreal Engine seems to disable this automatically, as I havent seen any UE game using OpenXR having these haptic feedbacks.

I also have to add that, like OP said, I find the thresholds Valve picked for their OpenXR bindings to be WAY too sensitive. The tresholds they used as defaults for their SteamVR bindings were perfect, so I dont quite understand why they made it so sensitive for the OpenXR binding.

This already caused problems with some current OpenXR games, because they felt “off” for Index users and the devs had to implement different thresholds just for the Index controllers. The interaction toolkit I am using for my project is doing that for the same reason.

I have dug a little further on this issue:

The default haptic trigger and grip pulse seems to bet set in the “Controller Interaction Profiles” you active in the OpenXR tab of the project settings. These interaction profiles all seem to contain a haptic pulse setting for SteamVR environments (you can see this in the SteamVR controller mappings menu).

We cannot change these profiles in Unity, which is a problem. We can bind the input action inside the engine, but cannot change the bindings, that are suggested by the interaction profile.

As far as I can tell, the Unreal Engine handles this differently: instead of just exposing fixed controller bindings, you can apparently set up your own input actions directly to the buttons. These input actions are then suggested for the controller in the SteamVR environment (you can see the custom name strings f the bindins for each UE game that uses OpenXR in the SteamVR input mapping/rebinding menu).

Luckily you can nowadays change the input mapping for OpenXR games in SteamVR, but this isnt a solution, because this should not be expected to be done by a potentional player/buyer of your game.

IMHO we should be able to adjust the suggested bindings provided by the interaction profiles, instead of having them fixed.