Skip to main content
New Participant
January 13, 2020

Hand tracking right index pinch counts as button press?

So I have a VRTK (3.3) teleporter pointer setup to work with the controller left button One press. When I setup hand tracking using the OVRHandPrefab and set the Oculus manager to Hands only for some crazy reason doing a Pinch with my right hand activates the teleporter. I cannot figure out why!! The only scripts related to hand tracking i have are on the prefab. 

And really I want to know HOW its simulating the button press / activating the teleporter so I can use pinches to simulate other button presses!

Anyone have a clue how/why this is happening?

This topic has been closed for replies.

5 replies

Participant
April 22, 2021

Hi have you figured this out? Do you have an update on this? Thanks.

April 27, 2021

Index finger pinch on the "primary" hand generates an OVRInput.Button.One event and index finger pinch on the "secondary" hand generates a OVRInput.Button.Three event. The secondary hand also generates a OVRInput.Button.Start event when you perform a system gesture on that hand.

 

OVRInput.Get[Down/Up](OVRInput.Button.One, OVRInput.Controller.Hands)
OVRInput.Get[Down/Up](OVRInput.Button.Three, OVRInput.Controller.Hands)
OVRInput.Get[Down/Up](OVRInput.Button.Start, OVRInput.Controller.Hands) // System gesture on secondary hand

VRTK must be reading these values somewhere. You can swap which hand is "primary" in the device settings hand tracking options. "Primary" hand is the one with the Oculus icon when you perform a system gesture.

 

Participant
April 30, 2021

Thanks so much. I'll try this out.

Meta Employee
October 1, 2024

Hi craigasanford (and others in this thread).

I have come across this OVRInput.Get issue recently too. It looks like the mask for OVRInput.Get is not working as expected. If you use 

OVRInput.Get(OVRInput.Button.One, OVRInput.Controller.RTouch)

You will still get a Button A press even if it was a pinch, likewise if you do 
```
OVRInput.Get(OVRInput.Button.One, OVRInput.Controller.RHand)
```
You will get a button press in the hand when pressing button A.

It seems this has been the case for a while, but Concurrent Hands have surfaced it more clearly. For now you should be able to check if a Controller is Connected using `OVRInput.GetConnectedControllers()` to decide if the button was a Controller Press or a Hand Pinch. But hopefully the core issue can be remedied soon.