cancel
Showing results for 
Search instead for 
Did you mean: 

Will we get the ability to change keybindings on the Oculus Touch

SamaDuune
Explorer
TL;DR: I'm just wondering if a future patch/update for the Rift will have menu options to allow us to map the Touch buttons to keys on the keyboard.


This is actually a feature that I was hoping would be a default part of the Touch setup when it was released.  Did a lot of searching before they came out and couldn't find anything on it at all.  But got them anyway, and I do really like them, for the games that are made for them anyway.  I dislike so far that if a game isn't designed to work for them they don't function at all, this is a large negative for me. I know the Xbox controller has 12 buttons and 2 analog sticks, and the Touch only has 8 buttons and 2 analog sticks.  But there are plenty of games that don't use all 12 buttons and just don't need the tracking part at all.  I'll use The Vanishing of Ethan Carter as an example.  It's a VR game that uses only like 2-3 buttons and 1 analog stick on the Xbox controller. Could easily have the same inputs on just your right hand Touch controller.  I know the game developer could make it work that way if they wanted to as well, but why limit it to only the game developer.

There are tons of games out there that would work just fine in VR if we were just able to map button X with any keyboard button. I find the Touch controllers to be more comfortable than the Xbox controller (I'm actually not a fan of any console's controller really, but the Touch is nice.  Having my hands to the sides rather than directly in front of me is quite comfortable).  The Logitech Game Controllers/Keyboard application for remapping keys on their products is a great example of a starting point to do this in my opinion.  Something very similar could be made in the Rift to do this exact thing.

I have done searches to see if other have asked this question as well, and I do find a few (not nearly as many as I thought though) asking on various sites about this same type of functionality.  The main roadblock being that the Touch doesn't show up in Windows as a Game Controller since it connects to the Rift itself and not to the PC.  I'm sure there are advantages to this method.  If it was a Game Controller this would have been an available feature on day one. I'm hoping that if this isn't a planned function or feature of the Touch that at some point someone who is better with programming and DLL's and what not than I am makes an app to do this.  I'd gladly pay a few dollars for this type of functionality. Of course, if it was built into the Rift system itself I'm sure it would be a lot more stable and easier to distribute.
21 REPLIES 21

TwoHedWlf
Expert Trustee
That would be up to the developers of each app, I would think.

SamaDuune
Explorer

TwoHedWlf said:

That would be up to the developers of each app, I would think.

I know that each developer could allow for button configurations in the game itself, though so far I haven't personally seen any that do yet.  I'm just saying why limit it to only the developer.  If being able to change the button keybinding as part of the device it becomes a much more powerful tool.

nalex66
MVP
MVP
If it could be globally remapped, then there would be a never-ending flood of Support requests complaining that the controls don't work in (x) game.

A global option to emulate the gamepad might work, as long as a game doesn't require the D-pad (most Rift games seem to duplicate input between the D-pad and the left thumbstick, so this wouldn't be an issue for any Rift games that I can think of).

DK2, CV1, Go, Quest, Quest 2, Quest 3.


Try my game: Cyclops Island Demo

kojack
MVP
MVP
I've just been playing around a little. I've made a C dll that wraps around the oculus sdk and provides access to the state of the touch controllers (not tracking, just buttons/triggers/sticks). I'm then calling it from AutoHotKey, a program that can use scripts to inject keyboard/mouse events.

So far I've got my touch controllers controlling the windows mouse cursor using the left thumb stick, left click with the left index trigger and the abxy buttons sending key events ("ABXY"). Not too bad for a little hack.

It's not doing up/down events yet, so holding touch A is like rapidly hitting keyboard A instead of holding it. I do have up/down working for mouse, just not buttons yet.

Hehe, autohotkey is quite powerful. I just made it control the windows volume using the right touch thumbstick x axis. 🙂

Sadly while autohotkey can read joystick events, it can't send them. But I've got an idea for that I'll look at later tonight.

(Note: all this is without even touching (no pun intended) the hmd. My cv1 is just sitting on the desk)
(Note 2: this probably wouldn't work with a VR game, since I need to open a hmd to get access to touch state, and it might not like two apps doing vr at once. I haven't tried yet)

Author: Oculus Monitor,  Auto Oculus Touch,  Forum Dark Mode, Phantom Touch Remover,  X-Plane Fixer
Hardware: Threadripper 1950x, MSI Gaming Trio 2080TI, Asrock X399 Taich
Headsets: Wrap 1200VR, DK1, DK2, CV1, Rift-S, GearVR, Go, Quest, Quest 2, Reverb G2

kojack
MVP
MVP
Now I've got the oculus remote controlling Spotify. 🙂
Author: Oculus Monitor,  Auto Oculus Touch,  Forum Dark Mode, Phantom Touch Remover,  X-Plane Fixer
Hardware: Threadripper 1950x, MSI Gaming Trio 2080TI, Asrock X399 Taich
Headsets: Wrap 1200VR, DK1, DK2, CV1, Rift-S, GearVR, Go, Quest, Quest 2, Reverb G2

SamaDuune
Explorer
Interestingly this weekend I just found out that VorpX released an update that does this exact thing.  I haven't opened VorpX in about a week, week and a half maybe, and when I opened it, it started to run an updated.  And last night when I opened it up to run around in Skyrim SE for a little while BOOM I have touch controllers while in game now and the buttons are key mapped to whatever I want them to be on the keyboard.  

On the note of AutoHotKey, that is the 2nd half of what I wanted.  If I could get the Touch buttons to be key mapped to a keystroke on the keyboard, I could then redo that keystroke with AutoHotKey to do pretty much whatever I want it to do.  

After seeing that update I right away went it to several other games (Skyrim, Doom, WoW, hell even X-com 2, and a few others) just to see what they keymapping was like in them.  Taking a bit of getting used to (Don't recommend X-com in VR, meh) but the other games were really fun using the Touch as a normal controller while in those games. And because VorpX has game profiles each game can have its own keymap without changing it every time.  Bit of extra setup time the 1st time you play a game, but fun in the end. 

On a side note, even though the games themselves don't use the motion tracking of the Touch, the VorpX app still overlays visuals of the Touch controllers into the game if you hold your hands in front of you and it shows you what keys you have mapped to what buttons so if you forgot what is mapped where you can just look at your hands

kojack
MVP
MVP

SamaDuune said:


On the note of AutoHotKey, that is the 2nd half of what I wanted.  If I could get the Touch buttons to be key mapped to a keystroke on the keyboard, I could then redo that keystroke with AutoHotKey to do pretty much whatever I want it to do.  


Here's an example from my current AutoHotkey script. This is the bit that does left mouse button pressing with the left index trigger.
	t:=DllCall("autotouch\getTrigger","Int",0,"Int",0,"Float")
if (t>0.8) and (old<0.8)
Send, {LButton down}
if (t<0.8) and (old>0.8)
Send, {LButton up}
old:=t

The getTrigger function returns the floating point value of a trigger (index or hand, left or right).
There's other ones for thumbsticks and buttons (all buttons are returned in an int as bit flags).
The downside to this method is that it's not event based, it need to poll the touch in a loop. It's not exactly the same as the way you normally specify what happens when a key is pressed. It works fine for a quick hack though.

I'll do a bit more work on it then release something.

My second method should work better (and be suited to games), but I'll start on that later today.
Author: Oculus Monitor,  Auto Oculus Touch,  Forum Dark Mode, Phantom Touch Remover,  X-Plane Fixer
Hardware: Threadripper 1950x, MSI Gaming Trio 2080TI, Asrock X399 Taich
Headsets: Wrap 1200VR, DK1, DK2, CV1, Rift-S, GearVR, Go, Quest, Quest 2, Reverb G2

kojack
MVP
MVP
Ok, time to release something. 🙂
Here's Auto Oculus Touch.

Binary release: https://github.com/rajetic/auto_oculus_touch/releases/download/0.1.1/auto_oculus_touch_v0.1.1.zip
Source repo: https://github.com/rajetic/auto_oculus_touch

It requires the 64 bit version of Autohotkey. (Oculus libraries are 64 bit anyway, so not much choice)

Unzip the archive where ever you want. It contains a dll and an autohotkey script. As long as the dll is in the path or in the directory with the script, they should work anywhere.

No documentation yet, but the script shows every function in use.

Hopefully it won't set any hmds on fire. 🙂

All buttons and triggers of the touch and remote are supported. No touching touch events (the proximity sensors) yet, but I can add that later.

The current sample has the following behaviour:
Right touch stick controls the mouse cursor.
Right touch index trigger is the left mouse button.
Left touch X button is also left mouse button. (I put two things on left mouse to show the difference between buttons and triggers)
Oculus remote up and down cycle media (in spotify, etc).

I should note: untested in games. I'm just using it on the desktop.
Also, you don't need to wear the cv1 or have the touch visible to cameras. But you might need to press the A or X buttons to power them up before the thumbsticks work.

Author: Oculus Monitor,  Auto Oculus Touch,  Forum Dark Mode, Phantom Touch Remover,  X-Plane Fixer
Hardware: Threadripper 1950x, MSI Gaming Trio 2080TI, Asrock X399 Taich
Headsets: Wrap 1200VR, DK1, DK2, CV1, Rift-S, GearVR, Go, Quest, Quest 2, Reverb G2

cybereality
Grand Champion
I love it. 
AMD Ryzen 7 1800X | MSI X370 Titanium | G.Skill 16GB DDR4 3200 | EVGA SuperNOVA 1000 | Corsair Hydro H110i Gigabyte RX Vega 64 x2 | Samsung 960 Evo M.2 500GB | Seagate FireCuda SSHD 2TB | Phanteks ENTHOO EVOLV