GithubHelp home page GithubHelp logo

matzman666 / openvr-inputemulator Goto Github PK

View Code? Open in Web Editor NEW
701.0 63.0 136.0 3.29 MB

An OpenVR driver that allows to create virtual controllers, emulate controller input, manipulate poses of existing controllers and remap buttons. A client-side library that communicates with the driver via shared-memory is also included.

License: GNU General Public License v3.0

C++ 78.70% C 0.18% Batchfile 0.55% QML 19.39% QMake 0.10% NSIS 0.96% Shell 0.11%

openvr-inputemulator's Introduction

language dependencies license_gpl3

OpenVR-InputEmulator

An OpenVR driver that allows to create virtual controllers, emulate controller input, enable motion compensation, manipulate poses of existing controllers and remap buttons. Includes a dashboard to configure some settings directly in VR, a command line client for more advanced settings, and a client-side library to support development of third-party applications.

Example Screenshot

The OpenVR driver hooks into the HTC Vive lighthouse driver and allows to modify any pose updates or button/axis events coming from the Vive controllers before they reach the OpenVR runtime. Due to the nature of this hack the driver may break when Valve decides to update the driver-side OpenVR API.

The motivation of this driver is that I want to make myself a tracked gun that is guaranteed to work in any SteamVR game regardless of whether the original dev wants to support tracked guns or not. To accomplish this I need some way to add translation and rotation offsets to the poses of the motion controllers so that I can line up my tracked gun and the gun in the game. Additionally I need a way to easily switch between the tracking puck on my gun and my motion controller with the game thinking it's still the same controller (Throwing grenades with a tracked gun is not fun). But this driver should also support other use cases.

There is also a client-side API which other programs can use to communicate with the driver. This API should be powerful enough to also support the development of full-fledged motion-controller drivers.

Features

  • Add translation and rotation offsets to the pose of existing controllers.
  • Redirect the pose from one controller to another.
  • Swap controllers.
  • Motion compensation for 6-dof motion platforms.
  • Create virtual controllers and control their positions and rotations.
  • Emulate controller input.
  • Remap controller buttons.
  • ...

Notes:

This is a work-in-progress and may contain bugs.

Usage

Installer

Download the newest installer from the release section and then execute it. Don't forget to exit SteamVR before installing/de-installing.

Command-Line Client

Download the newest command-line client from the release section, unzip it, and then execute the contained binary in a cmd window. Enter 'client_commandline.exe help' on the command line for usage instructions.

Documentation

Fallout 4 VR specific Fixes

There is an Oculus Touch specific fix available for Fallout 4 VR. It allows to emulate trackpad behaviour with the Rift's joysticks. Therefore, on the input remapping pages of each analog axis a touchpad emulation mode can be configured.

Currently there are two modes available:

  • Position Based: This modes assumes that the joystick can only move further away from the center position. All newer positions smaller can the last known position are ignored. The saved highest position is reset when the center position has been reached. The idea is to ignore input events caused by the joystick snapping back to center position. As soon as the center position is reached it is immediately send to the application in a position update. This helps with movement controls as otherwise any movement in an application is not reset when the joystick is let go by the user, and FO4 menus ignore this position update. However, the pipboy map does not ignore this position update.

  • Position Based (Deferred Zero Update): This modes works exactly the same as the mode above with one small difference. The position update when the center position is reached is not immediately send but only when the joystick starts moving again. This helps with the pipboy-map but messes up movement controls. To still be able to move you can configure a toggle button to turn on/off touchpad emulation mode (see below).

To enable/disable the touchpad emulation mode at will you can configure a toggle binding on any digital button. Therefore, select a digital button, select either normal, double or long press, and then select "Toggle Touchpad Emulation" as binding type. Now with audio cue.

FO4 also tends to ignore joystick clicks when the joystick is exactly at center position. To help with this you can also activate the deadzone fix for button presses on the analog input remapping page).

Top Page:

Root Page

  • Identify: Sends a haptic pulse to the selected device (Devices without haptic feedback like the Vive trackers can be identified by a flashing white light).
  • Status: Shows the current status of the selected device.
  • Device Mode: Allows to select a device mode.
    • Default: Default mode.
    • Disable: Let OpenVR think that the device has been disconnected.
    • Redirect to: Impersonate another device.
    • Swap with: Swap two devices.
    • Motion Compensation: Enable motion compensation with the selected device as reference device.
  • Device Offsets: Allows to add translation or rotation offsets to the selected device.
  • Motion Compensation Settings: Allows to configure motion compensation mode.
  • Render Model: Shows a render model at the device position (experimental).
  • Input Remapping: Allows to re-map input coming from controller buttons, joysticks or touchpads.
  • Profile: Allows to apply/define/delete device offsets/motion compensation profiles.

Redirect Mode

Redirect mode allows to redirect the pose updates and controller events from one controller to another. To enable it select the device from with the pose updates/controller events should be redirected, then set the device mode to "Redirect to" and select the device that should be the redirect target from the combo box on the right, and at last press 'Apply'.

Redirect mode can be temporarily suspended by re-mapping a controller button to a "suspend" action on the input remapping page.

Device Offsets Page:

Device Offsets Page

  • Enable Offsets: Enable/disable device offsets.
  • WorldFormDriver Offsets: Allows to add offsets to the 'WorldFromDriver' transformations.
  • DriverFromHead Offsets: Allows to add offsets to the 'DriverFromHead' transformations.
  • Driver Offsets: Allows to add offsets to the device driver pose.
  • Clear: Set all offsets to zero.

Motion Compensation Settings Page:

Motion Compensation Settings Page

Vel/Acc Compensation Mode: How should reported velocities and acceleration values be adjusted. The problem with only adjusting the headset position is that pose prediction also takes velocity and acceleration into accound. As long as the reported values to not differ too much from the real values, pose prediction errors are hardly noticeable. But with fast movements of the motion platform the pose prediction error can be noticeable. Available modes are:

  • Disabled: Do not adjust velocity/acceration values.
  • Set Zero: Set all velocity/acceleration values to zero. Most simple form of velocity/acceleration compensation.
  • Use Reference Tracker: Substract the velocity/acceleration values of the motion compensation reference tracker/controller from the values reported from the headset. Most accurate form of velocity/acceleration compensation. However, it requires that the reference tracker/controller is as closely mounted to the head position as possible. The further away it is from the head position the larger the error.
  • Linear Approximation w/ Moving Average (Experimental): Uses linear approximation to estimate the velocity/acceleration values. The used formula is: (current_position - last_position) / time_difference. To reduce jitter the average over the last few values is used.
    • Moving Average Window: How many values are used for calculating the average.
  • Kalman Filter (Experimental): The position values are fed into a kalman filter which then outputs a velocity value. The kalman filter implementation is based on the filter described here.
    • Process/Observation Noise: Parameters used to fine-tune the kalman filter.

Input Remapping Page:

Input Remapping Page

Lists all available controller inputs (as reported by OpenVR) and their remapping statuses.

Digital Input Settings:

Digital Input Settings Page

  • Normal Press: The configured key binding is send when the user normally presses a button (or in other words, when the input is neither a long nor a double press).
    • Touch as Click: Registers a button touch as a button click. Can be used to simulate a touchpad click when the user only touches the touchpad.
  • Long Press: The configured key binding is send when the user presses a button longer as the specified treshold.
    • Immediate Key Release: The button down event for the double click event is immediately followed by a button up event. Useful for situations where a program only reacts on button up events (e.g. the SteamVR dashboard).
  • Double Press: The configured key binding is send when two consecutive button presses happen within the specified time threshold.
    • Immediate Key Release: The button down event for the double click event is immediately followed by a button up event. Useful for situations where a program only reacts on button up events (e.g. the SteamVR dashboard).

Attention: When long and double presses are enabled normal controller input may be delayed because I first need to wait the specified thresholds before I can send a normal key event.

Digital Binding:

Digital Binding Page

Allows to configure a digital button binding. Available binding types are:

  • No Remapping: Original binding is used.
  • Disabled: Disables the button.
  • OpenVR: Remap to another OpenVR controller button.
  • Keyboard: Remap to a keyboard key.
  • Suspend Redirect Mode: Allows to temporarily suspend controller redirect mode.
  • Toggle Touchpad Emulation: Enables/disables the touchpad emulation mode for all analog axes.
OpenVR

Digital Binding Page - OpenVR

  • Controller: Onto which controller should the input be redirected.
  • Button: Onto which OpenVR button should the input be mapped.
  • Toggle Mode: When the button is pressed longer than the specified threshold, the button state is toggled.
  • Auto Trigger: The button state is constantly pressed and then unpressed with the specified frequency as long as the user keeps the button pressed.
Keyboard

Digital Binding Page - Keyboard

  • Key: Onto which keyboard key should the input be mapped.
  • Using: Allows to select which type of keyboard code is send:
    • Scan Code: A scan code represents a physical key that may have different meaning depending on keyboard layout. Most DirectInput games only work with this setting.
    • Virtual Key Code: A virtual key code represents a virtual key which always has the same meaning independent from the keyboard layout. Some applications only work with this setting.
  • Toggle Mode: When the button is pressed longer than the specified threshold, the key state is toggled.
  • Auto Trigger: The key state is constantly pressed and then unpressed with the specified frequency as long as the user keeps the button pressed.

Analog Input Settings:

Analog Input Settings Page

Allows to configure an analog input. Available binding types are:

  • No Remapping: Original binding is used.
  • Disabled: Disables the analog input.
  • OpenVR: Remap to another OpenVR controller axis.

The touchpad emulation mode for this analog axis can also be configured here. Touchpad emulation mode tries to emulate the behaviour of a touchpad with a joystick. The primary purpose of this option is to make Fallout 4 VR playable with Oculus Rift controllers, but it can also be used for other games.

Available touch emulation modes:

  • Position Based: This modes assumes that the joystick can only move further away from the center position. All newer positions smaller can the last known position are ignored. The saved highest position is reset when the center position has been reached. The idea is to ignore input events caused by the joystick snapping back to center position. As soon as the center position is reached it is immediately send to the application in a position update. This helps with movement controls as otherwise any movement in an application is not reset when the joystick is let go by the user.

  • Position Based (Deferred Zero Update): This modes works exactly the same as the mode above with one small difference. The position update when the center position is reached is not immediately send but only when the joystick starts moving again. This helps with applications that have problems with the above mode but messes up movement controls.

Button Press Deadzone Fix: Some applications ignore touchpad/joystick clicks when the position is exactly the center position. This fix can help in this case by slightly offsetting the position when a click has been registered exactly at center position.

OpenVR

Analog Binding Page - OpenVR

  • Controller: Onto which controller should the input be redirected.
  • Axis: Onto which OpenVR axis should the input be mapped.
  • Invert X/Y Axis: Inverts the x or y axis.
  • Swap X/Y: Swaps the x and the y axis.
  • Dead Zone: Allows to configure dead zones in the middle (left value) and at the edges (right value) of an axis. The deadzone in the middle is mapped to 0, and the deadzone at the edges is mapped to 1. All input between the deadzones is remapped to an interval of [0, 1].

client_commandline commands:

listdevices

Lists all openvr devices.

buttonevent

buttonevent [press|pressandhold|unpress|touch|touchandhold|untouch] <openvrId> <buttonId> [<pressTime>]

Emulates a button event on the given device. See openvr.h for available button ids.

axisevent

axisevent <openvrId> <axisId> <x> <y>

Emulates an axisevent on the given device. Valid axis ids are 0-4.

proximitysensor

proximitysensor <openvrId> [0|1]

Emulates a proximity sensor event on the given device.

getdeviceproperty

getdeviceproperty <openvrId> scan

Scans the given device for all available device properties.

getdeviceproperty <openvrId> <property> [int32|uint64|float|bool|string]

Returns the given device property. See openvr.h for valid property ids.

listvirtual

Lists all virtual devices managed by this driver.

addcontroller

addcontroller <serialnumber>

Creates a new virtual controller. Serialnumber needs to be unique. When the command is successful the id of the virtual controller is written to stdout.

publishdevice

publishdevice <virtualId>

Tells OpenVR that there is a new device. Before this command is called all device properties should have been set.

setdeviceproperty

setdeviceproperty <virtualId> <property> [int32|uint64|float|bool|string] <value>

Sets the given device property. See openvr.h for valid property ids.

removedeviceproperty

removedeviceproperty <virtualId> <property>

Removes the given device property. See openvr.h for valid property ids.

setdeviceconnection

setdeviceconnection <virtualId> [0|1]

Sets the connection state of the given virtual device. Default value is disconnected.

setdeviceposition

setdeviceposition <virtualId> <x> <y> <z>

Sets the position of the given virtual device.

setdevicerotation

setdeviceposition <virtualId> <x> <y> <z>

setdevicerotation .

Client API

ToDo. See vrinputemulator.h.

Command-Line Client Examples

Create virtual controller

# Create virtual controller
client_commandline.exe addcontroller controller01 # Writes virtual device id to stdout (Let's assume it is 0)
# Set device properties
client_commandline.exe setdeviceproperty 0 1000	string	lighthouse
client_commandline.exe setdeviceproperty 0 1001	string	"Vive Controller MV"
client_commandline.exe setdeviceproperty 0 1003	string	vr_controller_vive_1_5
client_commandline.exe setdeviceproperty 0 1004	bool	0
client_commandline.exe setdeviceproperty 0 1005	string	HTC
client_commandline.exe setdeviceproperty 0 1006	string	"1465809478 htcvrsoftware@firmware-win32 2016-06-13 FPGA 1.6/0/0 VRC 1465809477 Radio 1466630404"
client_commandline.exe setdeviceproperty 0 1007	string	"product 129 rev 1.5.0 lot 2000/0/0 0"
client_commandline.exe setdeviceproperty 0 1010	bool	1
client_commandline.exe setdeviceproperty 0 1017	uint64	2164327680
client_commandline.exe setdeviceproperty 0 1018	uint64	1465809478
client_commandline.exe setdeviceproperty 0 1029	int32	2
client_commandline.exe setdeviceproperty 0 3001	uint64	12884901895
client_commandline.exe setdeviceproperty 0 3002	int32	1
client_commandline.exe setdeviceproperty 0 3003	int32	3
client_commandline.exe setdeviceproperty 0 3004	int32	0
client_commandline.exe setdeviceproperty 0 3005	int32	0
client_commandline.exe setdeviceproperty 0 3006	int32	0
client_commandline.exe setdeviceproperty 0 3007	int32	0
client_commandline.exe setdeviceproperty 0 5000	string	icons
client_commandline.exe setdeviceproperty 0 5001	string	{htc}controller_status_off.png
client_commandline.exe setdeviceproperty 0 5002	string	{htc}controller_status_searching.gif
client_commandline.exe setdeviceproperty 0 5003	string	{htc}controller_status_searching_alert.gif
client_commandline.exe setdeviceproperty 0 5004	string	{htc}controller_status_ready.png
client_commandline.exe setdeviceproperty 0 5005	string	{htc}controller_status_ready_alert.png
client_commandline.exe setdeviceproperty 0 5006	string	{htc}controller_status_error.png
client_commandline.exe setdeviceproperty 0 5007	string	{htc}controller_status_standby.png
client_commandline.exe setdeviceproperty 0 5008	string	{htc}controller_status_ready_low.png
# Let OpenVR know that there is a new device
client_commandline.exe publishdevice 0
# Connect the device
client_commandline.exe setdeviceconnection 0 1
# Set the device position
client_commandline.exe setdeviceposition 0 -1 -1 -1

Initial Setup

Download the LeapMotion SDK (Only needed by the now defunct project driver_leapmotion)

  1. Goto https://developer.leapmotion.com/get-started
  2. Click "Download Orion Beta"
  3. Unzip the "LeapSDK" folder in the zip file into OpenVR-InputEmulator/third-party/LeapSDK

Boost

  1. Goto https://sourceforge.net/projects/boost/files/boost-binaries/1.63.0/
  2. Download Boost 1.63 Binaries (boost_1_63_0-msvc-14.0-64.exe)
  3. Install Boost into OpenVR-InputEmulator/third-party/boost_1_63_0

Qt

  1. Goto https://download.qt.io/official_releases/qt/5.7/5.7.0/
  2. Download Qt 5.7.0
  3. Run the Qt installer (I installed it to "c:\Qt")
  4. Goto OpenVR-InputEmulator\client_overlay
  5. Create client_overlay.vcxproj.user and paste the following into it:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <QTDIR>C:\Qt\5.7\msvc2015_64</QTDIR>
  </PropertyGroup>
</Project>

NOTE: Adjust the path the msvc2015_64 folder in Qt to match your installation

Building

  1. Open 'VRInputEmulator.sln' in Visual Studio 2015.
  2. Build Solution

Known Bugs

  • The shared-memory message queue is prone to deadlock the driver when the client crashes or is exited ungracefully.

License

This software is released under GPL 3.0.

openvr-inputemulator's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openvr-inputemulator's Issues

Emulate Rift Touch from Microsoft Motion Controllers (Thumbsticks)

Hello

Nice work & thanks for your awesome app ;)

Could you help new windows headset users to get a script to emulate Touch controllers please ?

Like this one :
https://drive.google.com/open?id=1WeBeh0gSO6Rd8gYGLRFlXceQQdVaOW_f

Maybe this link could help :
https://developer.microsoft.com/en-us/windows/mixed-reality/gestures_and_motion_controllers_in_unity#unity_button.2Faxis_mapping_table

https://drive.google.com/file/d/17D3ou4YXN36Yw_njDiQjixF216AN4Jct/view?usp=sharing

Thanks :)

Trackpad Axis0 not mapping correctly

I am trying to map the menu button of the Vive tracker to the Trackpad down motion which I believe is Axis0 in the button mapping, but it doesn't seem to work. I am trying to get this to work for the game Onward.

SteamVR Beta Makes InputEmulator Unusable

It seems like with the update from Nov 27 the "under the hood" changes have broken the InputEmulator.

http://store.steampowered.com/news/externalpost/steam_community_announcements/2149769425930089711

The following doesn't seem to work when using Rift + Touch:

  • Identifying controllers does not cause any haptic feedback
  • You cannot create any offsets anymore, you cannot change any values in this submenu
  • Clicking on "input remapping" causes InputEmulator to crash

Emulating the Touchpads on Windows Mixed Reality Joysticks

I'm trying to emulate the touchpads with the analog sticks on the Windows Mixed Reality controllers and it works well, but in games like Pavlov VR and Fallout 4 VR, it sees the emulated touchpad axes but not the actual "touch" state. In the Buy Menu on Pavlov VR, I cannot use the analog stick unless I just tap and hold the touchpad and move the analog stick at the same time. In Fallout 4 VR, the cursor for the finger position on the touchpads don't move with the analog sticks but it still activates the locomotion. It seems like the Input Emulator needs to emulate the capacitive sense that the touchpads and Oculus Touch analog sticks have when the analog sticks are in their deadzones.

Using the touchpad emulation option in the latest oculusfix build doesn't seem to work.

Would it be possible to make OpenVR detect that a finger is on an analog stick when the stick is not in its deadzone?

Feature request

I see there is an option to add a virtual controller. I am still pretty new at this, but I just read an article about the Vive Tracker possibly being used to track your keyboard. I do have extra Rift Touch controllers and was thinking about using them to track it, but after looking at this software I got the idea that if they keyboard is static, you dont really need to track it? Like you could just add a virtual controller.

Next issue with this would be, can you add custom 3D models? Because that would be relevant here, and since I do have a LEAP Motion controller, that could possibly be relevant as well, but it would be to add hand tracking with OpenVR but I am pretty sure that would be pretty complicated to add to Steam VR, making this show your hands so you can see whether you are close to the keyboard.

The main feature I am looking for is making it easier to locate your keyboard and possibly mousepad.

Update build documentation to include openvr

currently following the build docs results in:
1>------ Build started: Project: lib_vrinputemulator, Configuration: Debug x64 ------
1>vrinputemulator.cpp
1>d:\vr\openvr-inputemulator\lib_vrinputemulator\include\vrinputemulator.h(12): fatal error C1083: Cannot open include file: 'openvr.h': No such file or directory
1>Done building project "lib_vrinputemulator.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Bug Report

it's possible to set motion sim compensation to more than one controller and then you have to reset SteamVR to cancel. Version is still showing as 1.0 too....

Nolo vr/vive to Oculus Touch

Hi Not an issue....just a question

I am using revive to play Oculus games, which worked fine with Hydras, revive remapped them as touch controllers...

now I have Nolo Vr and touch games are virtually unusable

no input for A,X,Y,B

In revive this is mapped to touchpad quadrants....but sadly, it is not the case with Nolo

could I use this to remap for use as touch controllers?

many thanks in advance

Feature request: record physical gestures to execute input

So I see you have made the ability to emulate motion, but it would be really great to make our own motion to execute that emulation, or even choose what input to send (some games we could really use the ability to send Kb presses or mouse clicks.

I have no idea how easy gesture recognition would be to implement, only that it would be awesome. Let me know what you think.

Fallout 4 VR Oculus Touch Pip-Boy Map Issue

Thank you so much for providing the Fallout 4 VR fixes for Oculus Touch! I am now able to play the game comfortably and have logged 12 very enjoyable hours so far and look forward to many more.

My only remaining issue is that the Pip-Boy map still does snapback. It seems to have something to do with capacitive touch on the joystick. I am able to get past this by nudging the joystick from its edges but it's still tricky to navigate it with any precision. Do you think it's possible to also fix this issue?

Feature Request (FO4VR support): improve turning

Right now you need to move stick to desired position and click to turn (rotate).
The idea is to autoclick each time stick gets to 1.0 or -1.0 position in horizontal direction, so you don't need to click it manually.

Switching grip and trigger in game

I’m tying to switch grip and trigger while playing Echo Arena using Revive. It seems that the trigger to grip input is working but there grip to trigger is not. I’m pretty sure the settings were changed accordingly but it just isn’t working when outside of the Vive Menu/Dashboard. Any help? Thanks!

Feature Request: emulate vive trackpad directly with analog stick input (ie oculus)

A ridiculous scenario caused intentionally by Bethesda. I tried a few variations of settings and couldn't the analog sticks to not track the return to center movement. I apologize if this is already possible and I missed the configuration. I don't think this would be too tricky if a function just translates axis change directionally. Mentally I picture something like increase from center position to it's limit on any given axis corresponds to trackpad's center to it's limit on that axis, but do not decrement on analog stick's decrease back to center, where center analog equals center trackpad or maybe the proximity sensor triggering a finger lift response.

Bug Report : Keyboard Remapping isn't saved

Occurs when Steam VR is restarted.
Information of Remap the profile has not been saved.
All check boxes of Ctrl, Shift, Alt are checked.

I am Japanese.
It is a sentence created by Google translation.

Steam VR を再度起動すると発生します。
プロファイルにRemapの情報が保存されていない。
Ctrl,Shift,Altのチェックボックスに全てチェックが入ってしまう。

私は日本人です。
Google 翻訳 で作成した文章です。
vr input emu issue image

Oculus Touch Controller as VR Object

First of all I want to say thank you for these greate tool!

I have a suggestion and hope you can implement these into the InputEmulator.
My simulator setup to understand my problem:

  • Oculus rift and touch controllers
  • 2Dof Racing platform DIY
  • Project Cars as the target racing game

Unfortunately PCars does not support the controllers and a lot of others neither... but what I do not understand is... the InputEmulator just needs the Data from the controller which has nothing to do with the game. Do I see somthing wrong?
There is now a new possibility to handle the controllers in the settings of Oculus home. It is possible to pair one controller as a VR object "Pair VR Object (Advanced)".
oculus-rift-roomscale-setup-guide-640x480
Maybe it is possible to get datas from the controller in this way instead depending on which game is choosen. What I already can say is... if i pair the controller as a VR object I cannot select these controller in the InputEmulator as reference device.

I spend hours and hours to get my setup to run and still no success!
Hope you can help me.

Thank you in advance

Saved profile applies wrong input remapping

Hello!

I've repeatedly tried to rebind the right application button to the keyboard press "V" and save it in a profile, but whenever I apply this profile the button remapping will turn into "Shift+Alt+Ctrl+V" instead of just "V".

Happens regardless of restarting SteamVR or applying the profile right away after saving it.

Other input remapping like the Fallout 4 related fixes (deadzone fix, etc) seem to get saved properly

Tested on 1.1 and 1.2.
Latest stable SteamVR branch
Hardware: Oculus Rift + Touch

Edit: additionally sometimes the saved remapping will turn into "Shift+Alt+CTR + 'None'" when applying the saved profile.

Stopped working today

Hello! Thanks for creating this. Was working really well. Now for some reason steam VR hangs when I try and select a controller to remap. The VR emulation option then disappears until I reload steam VR

Tracked object hidden while in motion cancellation mode

Hey, on the 20th of May you wrote in the motion cancel thread :

I disabled the tracker/controller used as motion reference in SteamVR because it found it annoying having the tracker/controller floating around during testing, and I didn't think that someone might find the data useful. But it's no problem to change this in the next version.

Can you give me a clue where I can find that section of code so I can compile my own version with the tracker enabled with Unity?

Remapping A key to keyboard UP isn't working in Fallout IV

Using the default mode and remapping the right A button of my Touch controller to keyboard UP doesn't seem to work in Fallout IV. My web browser recognizes the key presses but the game isn't, even though it reacts fine to the up key on my keyboard.

Feature Request: Keyboard to controller inputs

so i have a vr treadmill and when you walk on it, it triggers the W key. will not all games use the Keyboard to move but more a button or analog stick/touchpad on the vr controller so im wondering if you can make it so we can bind keyboard keys to trigger the buttons on the controller so when i hit W it would move forward (in another sense)

New virtual controller not at desired position

I created a new virtual controller with the script from

https://github.com/matzman666/OpenVR-InputEmulator/blob/master/scripts/create_virtual_controller.bat

and was hoping that it would be at position (0, 0, 0).
However I see (-0.562174, 2.051171, -1.097119) when I read the position via pyopenvr and convert to Unity coordinate system. Similar values also in Unity.

Setup:

  • SteamVR: 2017-04-28 (Public)
    • Room-scale calibration (standing, headset on the floor)
  • OpenVR-InputEmulator: 1.0.3

Do I maybe need to set additional properties via setdeviceproperty?

Internet problem

This utility causes problems with my internet connection when it's installed and SteamVR is running. I am using a USB WiFi adapter and I get regular dropouts. As soon as I uninstall it my internet connection is back to normal.

Feature request: OpenVR Tools

Program that allows configure through the GUI (how on OpenTrack, Xbox360ce) controllers or hmd position (head tracking).
Head tracking input : OpenTrack (Output UDP sender), Xbox input stick, Manual (UDP or TCP port for accelerometer, gyroscope, magnetometer).

Contollers input : Xbox controller[1], Daydream Controller[1][2][3][4], Manual (UDP or TCP port for accelerometer, gyroscope, magnetometer and buttons).

Thanks.

Unable to connect to track HMD

Im getting this error
Could not connect to driver component: Could not open server-side message queue: The system cannot find the file specified.

I added vr::TrackedDeviceClass_HMD into initStage2 in DeviceManipulationTabController

Also I am receiving Exception caught while getting device info: No active connection. every tick for the controllers... Is something missing for the driver server installation?

Command-line hangs when adding a controller

Hi,

I'm using client_commandline.exe addcontroller controller01 on Windows and the console simply hangs doing nothing as if it never gets a return code from SteamVR. Is there any way I can debug this?

I tried the .bat file as well, same thing - just hangs immediately.

I have installed Boost, QT and the regular package of OpenVR-InputEmulator (not sure if they're necessary, but just in case).

Thanks!

Implementing relative locomotion (treadmill)

Would it be possible to use OVRIE to emulate a relative locomotion device such as treadmill? That is, the movement is not tracked with absolute coordinates, but rather changed relatively, e.g. by walking in place.

I cannot find any relevant information in the openVR documentation, yet it seems possible, in such devices as 3dRudder.

How to modify HMD pose?

Now I use OpenVR Input Emulator v1.0.3.In the absence of a lighthouse, I want to Modify real HMD position and rotation,not virtual controller or hmd How to do? thank you!

axisevent 's explained

Hello I have successfully been able to apply an 'axisevent' on one of the controllers
I applied on the axis 0 with x and y of 0 and 1
it pushed on the top part of the touchpad.

However it continues to touch that part of the touchpad doesn't seem like its ever releasing.
I tried calling another update with x and y 0 and 0

but it seems like the 0 and 1 is still being pushed.

Is there something im missing? I want to touch 0 and 1 on the touchpad and then release it for it not to being pushed.

Sending touchpad click at specified position.

I'm making silly little VR Glove, which uses Vive Controller for positioning and arduino to simulate Vive Controller buttons. I wanted to have some gestures to emulate touchpad up press or touchpad down press, right now I'm trying to do something like this:

if (finger[1] == false && buffer[1] == '1')
		{
			vr::VRControllerAxis_t trackpad_up = { 0.0, 1.0 };
			vr_emu.openvrAxisEvent(glove_id, vr::EVRControllerAxisType::k_eControllerAxis_TrackPad, trackpad_up);
			vr_emu.openvrButtonEvent(vrinputemulator::ButtonEventType::ButtonPressed, glove_id, vr::EVRButtonId::k_EButton_SteamVR_Touchpad);

			finger[1] = true;
			printf("sending touchpad up click");
		}

Where glove_id is the OpenVR id of the Vive Controller which I want to send the click to. But now I have a problem - it always clicks on the middle of the touchpad, I guess it is caused by the real controller sending touchpad (0, 0) position all the time. Is it possible to send click like that or do I have to setup different virtual controller, which and redirect my real Vive controller to there (except touchpad axis)?

Device Offset GUI not responding to input

When I select a device and go to the device offset page, I can click the buttons but none of the offset values change. The rest of the interface seems to be working, I can navigate between menus and enable a render model for a device, etc.
Tested on the v1.0.3 (steamvrhome) release, as well as from a fresh build from git commit b485b89
Using Windows 10 64bit,
HTC Vive w/ 3 trackers,
SteamVR buildID: 1943387

Emulate other devices?

At a glance, it doesn't look like it's possible, but can this be used to emulate things like keypresses? Like, can I configure it so that when I press the grip button on the right Vive controller, it sends the "V" key to the computer?

Failed to initialize OpenVR: Installation path could not be located

I encountered an error running the installer. Was I supposed to install something else first? I was trying to install this so I could have a virtual keyboard like in this video

Here's what I ran: v1.0.3 (1dc083e) OpenVR-InputEmulator-v1.0.3-SteamVRHomeVersion-hotfix2

Here's the error I got:

VR runtime path: Failed to initialize OpenVR: Installation path could not be located (110)
Unable to read VR Path Registry from C:\Users\user\AppData\Local\openvr\openvrpaths.vrpath
Full install log Output folder: C:\Program Files\OpenVR-InputEmulator Extract: LICENSE Extract: OpenVR-InputEmulatorOverlay.exe Extract: vcredist_x64.exe... 100% Extract: Qt5Core.dll Extract: Qt5Gui.dll Extract: Qt5Multimedia.dll Extract: Qt5MultimediaQuick_p.dll Extract: Qt5Network.dll Extract: Qt5Qml.dll Extract: Qt5Quick.dll Extract: Qt5QuickControls2.dll Extract: Qt5QuickTemplates2.dll Extract: Qt5Svg.dll Extract: Qt5Widgets.dll Extract: libEGL.dll Extract: libGLESV2.dll Extract: openvr_api.dll Extract: startdesktopmode.bat Extract: manifest.vrmanifest Extract: logging.conf Extract: qt.conf Output folder: C:\Program Files\OpenVR-InputEmulator\res Extract: thumbicon.png Extract: transparent.png Output folder: C:\Program Files\OpenVR-InputEmulator\res\qml Extract: DeviceManipulationPage.qml Extract: DeviceOffsetsPage.qml Extract: MotionCompensationPage.qml Extract: MyComboBox.qml Extract: MyDialogOkCancelPopup.qml Extract: MyDialogOkPopup.qml Extract: MyOffsetGroupBox.qml Extract: MyPushButton.qml Extract: MyPushButton2.qml Extract: MyResources.qml Extract: MySlider.qml Extract: MyStackViewPage.qml Extract: MyText.qml Extract: MyTextField.qml Extract: MyToggleButton.qml Extract: backarrow.svg Extract: mainwidget.qml Extract: qmldir Output folder: C:\Program Files\OpenVR-InputEmulator Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\Material Extract: ApplicationWindow.qml Extract: BoxShadow.qml Extract: BusyIndicator.qml Extract: Button.qml Extract: CheckBox.qml Extract: CheckDelegate.qml Extract: CheckIndicator.qml Extract: ComboBox.qml Extract: Dial.qml Extract: Drawer.qml Extract: ElevationEffect.qml Extract: Frame.qml Extract: GroupBox.qml Extract: ItemDelegate.qml Extract: Label.qml Extract: Menu.qml Extract: MenuItem.qml Extract: Page.qml Extract: PageIndicator.qml Extract: Pane.qml Extract: Popup.qml Extract: ProgressBar.qml Extract: RadioButton.qml Extract: RadioDelegate.qml Extract: RadioIndicator.qml Extract: RangeSlider.qml Extract: Ripple.qml Extract: ScrollBar.qml Extract: ScrollIndicator.qml Extract: Slider.qml Extract: SliderHandle.qml Extract: SpinBox.qml Extract: StackView.qml Extract: SwipeDelegate.qml Extract: SwipeView.qml Extract: Switch.qml Extract: SwitchDelegate.qml Extract: SwitchIndicator.qml Extract: TabBar.qml Extract: TabButton.qml Extract: TextArea.qml Extract: TextField.qml Extract: ToolBar.qml Extract: ToolButton.qml Extract: ToolTip.qml Extract: Tumbler.qml Extract: plugins.qmltypes Extract: qmldir Extract: qtquickcontrols2materialstyleplugin.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\Qt Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\Qt\labs Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\Qt\labs\folderlistmodel Extract: plugins.qmltypes Extract: qmldir Extract: qmlfolderlistmodelplugin.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\Qt\labs\settings Extract: plugins.qmltypes Extract: qmldir Extract: qmlsettingsplugin.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\QtGraphicalEffects Extract: Blend.qml Extract: BrightnessContrast.qml Extract: ColorOverlay.qml Extract: Colorize.qml Extract: ConicalGradient.qml Extract: Desaturate.qml Extract: DirectionalBlur.qml Extract: Displace.qml Extract: DropShadow.qml Extract: FastBlur.qml Extract: GammaAdjust.qml Extract: GaussianBlur.qml Extract: Glow.qml Extract: HueSaturation.qml Extract: InnerShadow.qml Extract: LevelAdjust.qml Extract: LinearGradient.qml Extract: MaskedBlur.qml Extract: OpacityMask.qml Extract: RadialBlur.qml Extract: RadialGradient.qml Extract: RectangularGlow.qml Extract: RecursiveBlur.qml Extract: ThresholdMask.qml Extract: ZoomBlur.qml Extract: qmldir Extract: qtgraphicaleffectsplugin.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\QtGraphicalEffects\private Extract: DropShadowBase.qml Extract: FastGlow.qml Extract: FastInnerShadow.qml Extract: FastMaskedBlur.qml Extract: GaussianDirectionalBlur.qml Extract: GaussianGlow.qml Extract: GaussianInnerShadow.qml Extract: GaussianMaskedBlur.qml Extract: qmldir Extract: qtgraphicaleffectsprivate.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\QtMultimedia Extract: Video.qml Extract: declarative_multimedia.dll Extract: plugins.qmltypes Extract: qmldir Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\QtQml Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\QtQml\Models.2 Extract: modelsplugin.dll Extract: plugins.qmltypes Extract: qmldir Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\QtQuick Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\QtQuick\Controls Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\QtQuick\Controls\Styles Extract: qmldir Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\QtQuick\Controls\Styles\Flat Extract: qmldir Extract: qtquickextrasflatplugin.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\QtQuick\Controls.2 Extract: ApplicationWindow.qml Extract: BusyIndicator.qml Extract: Button.qml Extract: CheckBox.qml Extract: CheckDelegate.qml Extract: CheckIndicator.qml Extract: ComboBox.qml Extract: Dial.qml Extract: Drawer.qml Extract: Frame.qml Extract: GroupBox.qml Extract: ItemDelegate.qml Extract: Label.qml Extract: Menu.qml Extract: MenuItem.qml Extract: Page.qml Extract: PageIndicator.qml Extract: Pane.qml Extract: Popup.qml Extract: ProgressBar.qml Extract: RadioButton.qml Extract: RadioDelegate.qml Extract: RadioIndicator.qml Extract: RangeSlider.qml Extract: ScrollBar.qml Extract: ScrollIndicator.qml Extract: Slider.qml Extract: SpinBox.qml Extract: StackView.qml Extract: SwipeDelegate.qml Extract: SwipeView.qml Extract: Switch.qml Extract: SwitchDelegate.qml Extract: SwitchIndicator.qml Extract: TabBar.qml Extract: TabButton.qml Extract: TextArea.qml Extract: TextField.qml Extract: ToolBar.qml Extract: ToolButton.qml Extract: ToolTip.qml Extract: Tumbler.qml Extract: plugins.qmltypes Extract: qmldir Extract: qtquickcontrols2plugin.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\QtQuick\Controls.2\Material Extract: ApplicationWindow.qml Extract: BoxShadow.qml Extract: BusyIndicator.qml Extract: Button.qml Extract: CheckBox.qml Extract: CheckDelegate.qml Extract: CheckIndicator.qml Extract: ComboBox.qml Extract: Dial.qml Extract: Drawer.qml Extract: ElevationEffect.qml Extract: Frame.qml Extract: GroupBox.qml Extract: ItemDelegate.qml Extract: Label.qml Extract: Menu.qml Extract: MenuItem.qml Extract: Page.qml Extract: PageIndicator.qml Extract: Pane.qml Extract: Popup.qml Extract: ProgressBar.qml Extract: RadioButton.qml Extract: RadioDelegate.qml Extract: RadioIndicator.qml Extract: RangeSlider.qml Extract: Ripple.qml Extract: ScrollBar.qml Extract: ScrollIndicator.qml Extract: Slider.qml Extract: SliderHandle.qml Extract: SpinBox.qml Extract: StackView.qml Extract: SwipeDelegate.qml Extract: SwipeView.qml Extract: Switch.qml Extract: SwitchDelegate.qml Extract: SwitchIndicator.qml Extract: TabBar.qml Extract: TabButton.qml Extract: TextArea.qml Extract: TextField.qml Extract: ToolBar.qml Extract: ToolButton.qml Extract: ToolTip.qml Extract: Tumbler.qml Extract: plugins.qmltypes Extract: qmldir Extract: qtquickcontrols2materialstyleplugin.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\QtQuick\Controls.2\Universal Extract: ApplicationWindow.qml Extract: BusyIndicator.qml Extract: Button.qml Extract: CheckBox.qml Extract: CheckDelegate.qml Extract: CheckIndicator.qml Extract: ComboBox.qml Extract: Dial.qml Extract: Drawer.qml Extract: Frame.qml Extract: GroupBox.qml Extract: ItemDelegate.qml Extract: Label.qml Extract: Menu.qml Extract: MenuItem.qml Extract: Page.qml Extract: PageIndicator.qml Extract: Pane.qml Extract: Popup.qml Extract: ProgressBar.qml Extract: RadioButton.qml Extract: RadioDelegate.qml Extract: RadioIndicator.qml Extract: RangeSlider.qml Extract: ScrollBar.qml Extract: ScrollIndicator.qml Extract: Slider.qml Extract: SpinBox.qml Extract: StackView.qml Extract: SwipeDelegate.qml Extract: Switch.qml Extract: SwitchDelegate.qml Extract: SwitchIndicator.qml Extract: TabBar.qml Extract: TabButton.qml Extract: TextArea.qml Extract: TextField.qml Extract: ToolBar.qml Extract: ToolButton.qml Extract: ToolTip.qml Extract: Tumbler.qml Extract: plugins.qmltypes Extract: qmldir Extract: qtquickcontrols2universalstyleplugin.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\QtQuick\Dialogs Extract: dialogplugin.dll Extract: plugins.qmltypes Extract: qmldir Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\QtQuick\Dialogs\Private Extract: dialogsprivateplugin.dll Extract: plugins.qmltypes Extract: qmldir Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\QtQuick\Extras Extract: plugins.qmltypes Extract: qmldir Extract: qtquickextrasplugin.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\QtQuick\Extras\Private Extract: CircularButton.qml Extract: CircularButtonStyleHelper.qml Extract: CircularTickmarkLabel.qml Extract: Handle.qml Extract: PieMenuIcon.qml Extract: TextSingleton.qml Extract: qmldir Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\QtQuick\Layouts Extract: plugins.qmltypes Extract: qmldir Extract: qquicklayoutsplugin.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\QtQuick\PrivateWidgets Extract: plugins.qmltypes Extract: qmldir Extract: widgetsplugin.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\QtQuick\Templates.2 Extract: plugins.qmltypes Extract: qmldir Extract: qtquicktemplates2plugin.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\QtQuick\Window.2 Extract: plugins.qmltypes Extract: qmldir Extract: windowplugin.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\QtQuick.2 Extract: plugins.qmltypes Extract: qmldir Extract: qtquick2plugin.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\Universal Extract: ApplicationWindow.qml Extract: BusyIndicator.qml Extract: Button.qml Extract: CheckBox.qml Extract: CheckDelegate.qml Extract: CheckIndicator.qml Extract: ComboBox.qml Extract: Dial.qml Extract: Drawer.qml Extract: Frame.qml Extract: GroupBox.qml Extract: ItemDelegate.qml Extract: Label.qml Extract: Menu.qml Extract: MenuItem.qml Extract: Page.qml Extract: PageIndicator.qml Extract: Pane.qml Extract: Popup.qml Extract: ProgressBar.qml Extract: RadioButton.qml Extract: RadioDelegate.qml Extract: RadioIndicator.qml Extract: RangeSlider.qml Extract: ScrollBar.qml Extract: ScrollIndicator.qml Extract: Slider.qml Extract: SpinBox.qml Extract: StackView.qml Extract: SwipeDelegate.qml Extract: Switch.qml Extract: SwitchDelegate.qml Extract: SwitchIndicator.qml Extract: TabBar.qml Extract: TabButton.qml Extract: TextArea.qml Extract: TextField.qml Extract: ToolBar.qml Extract: ToolButton.qml Extract: ToolTip.qml Extract: Tumbler.qml Extract: plugins.qmltypes Extract: qmldir Extract: qtquickcontrols2universalstyleplugin.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\plugins Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\plugins\audio Extract: qtaudio_windows.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\plugins\bearer Extract: qgenericbearer.dll Extract: qnativewifibearer.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\plugins\iconengines Extract: qsvgicon.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\plugins\imageformats Extract: qdds.dll Extract: qgif.dll Extract: qicns.dll Extract: qico.dll Extract: qjpeg.dll Extract: qsvg.dll Extract: qtga.dll Extract: qtiff.dll Extract: qwbmp.dll Extract: qwebp.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\plugins\mediaservice Extract: dsengine.dll Extract: qtmedia_audioengine.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\plugins\platforminputcontexts Extract: qtvirtualkeyboardplugin.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\plugins\platforms Extract: qwindows.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\plugins\playlistformats Extract: qtmultimedia_m3u.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\plugins\qmltooling Extract: qmldbg_debugger.dll Extract: qmldbg_inspector.dll Extract: qmldbg_local.dll Extract: qmldbg_native.dll Extract: qmldbg_profiler.dll Extract: qmldbg_quickprofiler.dll Extract: qmldbg_server.dll Extract: qmldbg_tcp.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\plugins\scenegraph Extract: softwarecontext.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\private Extract: DropShadowBase.qml Extract: FastGlow.qml Extract: FastInnerShadow.qml Extract: FastMaskedBlur.qml Extract: GaussianDirectionalBlur.qml Extract: GaussianGlow.qml Extract: GaussianInnerShadow.qml Extract: GaussianMaskedBlur.qml Extract: qmldir Extract: qtgraphicaleffectsprivate.dll Output folder: C:\Program Files\OpenVR-InputEmulator\qtdata\translations Extract: qt_ca.qm Extract: qt_cs.qm Extract: qt_de.qm Extract: qt_en.qm Extract: qt_fi.qm Extract: qt_fr.qm Extract: qt_he.qm Extract: qt_hu.qm Extract: qt_it.qm Extract: qt_ja.qm Extract: qt_ko.qm Extract: qt_lv.qm Extract: qt_pl.qm Extract: qt_ru.qm Extract: qt_sk.qm Extract: qt_uk.qm Output folder: C:\Program Files\OpenVR-InputEmulator Execute: "C:\Program Files\OpenVR-InputEmulator\vcredist_x64.exe" /install /quiet VR runtime path: Failed to initialize OpenVR: Installation path could not be located (110) Unable to read VR Path Registry from C:\Users\user\AppData\Local\openvr\openvrpaths.vrpath

Output folder: Failed to initialize OpenVR Installation path could not be located (110)Unable to read VR Path Registry from C\Users\user\AppData\Local\openvr\openvrpaths.vrpath\drivers\00vrinputemulator
Can't write: Failed to initialize OpenVR Installation path could not be located (110)Unable to read VR Path Registry from C\Users\user\AppData\Local\openvr\openvrpaths.vrpath\drivers\00vrinputemulator\driver.vrdrivermanifest

I'm hoping it's something like "Oh yeah, you need to download OpenVR and install that first" or "You need to install the regular version before you apply the hotfix version" or something simple like that.

After installing this , steam vr don't work anymore.

As the title says, the install of this utility screws down steam vr, no more hmd or controllers detected, and an error message from steam as it says that there is a problem with the interface , the desktop version of steam vr shows no more the graphic representation of the hmd and its controllers in green, instead its blank .
uninstalling this utility makes steam vr working again.
I needed this to use my touch controllers in the payday 2 vr beta game, as they are not recognized :(

Edit : retried another time , now i need to reinstall steam vr because it don't work after uninstalling this.
Edit 2 : after reinstalling steam vr is still not working , please help !
edit 3: reinstalled your software, and re-uniinstalled it while steam and oculs rutimes were deactivated, and things had returned to normal .

1.1 Oculusfix2 - Crashing input mapping

Both of the Oculusfix releases started crashing, on both beta and non-beta steamvr.

It happens when I choose "input mapping" and causes the OpenVR-InputEmulator to disappear from SteamVR.

Add build Documentation to the readme

Not to sound dense, but i'm used to a linux build environment, and a quick couple steps of how to build the package in visual studio could help save future devs a little google time :)

I'm missing the steamvr development lib's, but not sure how in this build environment i'm supposed make them so they are found so I can build.

Request: Moving controllers with keyboard

Hello, would it be possible to rotate/translate the controllers in the game using mouse and keyboard with no support at all of the vive controllers? What i mean is to set a specific position, at each time, for the controllers inside the game even if the real controllers are off.

Add support for motion cancellation

Motion and VR compliment each other perfectly and with quality peripherals, transducers and sound are about the ultimate seated experience.

Unfortunately the lack of a generic motion cancellation solution, subtracting the rig movement from the HMD, is the real gap, particularly for large axis movement sims: https://www.xsimulator.net/community/threads/latest-oculus-update-totally-screwed-my-tracking.9917/

It would be easy to mount VR controllers to a motion rig and have instant tracking, as they are not really needed for anything else. But there needs to be a generic way to offset the rig motion from the HMD.

The motion community would be most interested in and really grateful for a motion cancellation solution and extending the OpenVR-InputEmulator project would seem a logical possibility.

You would find plenty of willing testers with VR and 2-6+DOF motion simulators at xsimulator.net.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.