matzman666 / OpenVR-AdvancedSettings

OpenVR Advanced Settings Dashboard Overlay
GNU General Public License v3.0
879 stars 90 forks source link

Gamepad support #13

Open Sp4iK opened 7 years ago

Sp4iK commented 7 years ago

Hello,

I'm trying to use this with my Xbox 360 gamepad and it is not responding to any button. Is this a bug or only Vive controls are supported?

matzman666 commented 7 years ago

Currently gamepads are not supported. OpenVR does not provide any interface that allows me to support gamepads (Related issue).

The only way would be to use steamworks for the steam controller (which I cannot do because of license issues) and XInput for all other controllers (which I cannot do because I only have a steam controller, and I cannot develop something which I cannot test).

As long as Valve does not provide a controller api under a permissive license I cannot support controllers.

Balderick commented 7 years ago

Current steam client beta married with steamvr beta gives

xbox steamvr

Have Valve got passed those licensing issues?

Could xpadder or freepie be used to map a rudimentary set of vive controller actions (or keyboard equivalents) to allow xbox controller to work with advanced settings?

matzman666 commented 7 years ago

No, I am not aware of any license changes (I am sure it would be all over the internet when they do change license).

No, any third-party program would be having a hard time injecting vive controller events into any application (yet). These third-party programs use the windows API for injecting events, and motion controllers are not managed by any windows API yet, they would need to hack OpenVR.

gormanj commented 7 years ago

What about mouse control? There seems to be no way to navigate with no motion controller.

matzman666 commented 7 years ago

What about mouse control? There seems to be no way to navigate with no motion controller.

Advanced Settings is a background application. It has no window that is eligible for input focus and therefore cannot receive mouse events.

Kbeam007 commented 7 years ago

It is actually possible to emulate Razer Hydra with FreePIE based on gamepad input, so everyone with a gamepad can mavigate the settings.

Balderick commented 7 years ago

True. Its possible to do that but its clunky, very clunky.

Hopefully prices for steamvr tracking accessories like base stations, device dongles and controllers will start to come down as more and more manufacturers release steamvr tracking based products to consumers.

Other steamvr compatible so!utions like nolovr tracking system brings room scale vr 6dof tracked motion controllers to the masses at an affordable price.

Kbeam007 commented 7 years ago

The Hydra emulation is suitable for experiences, some basic input and for simple puzzles, but not for other controls that require fast and precise operation. It still enabled me to play games like Mind Path to Thalamus and now to access OpenVR Advanced Settings.

PSMoveService is much better, of course, but you still get the bare minimum with FreePIE.

Balderick commented 7 years ago

Would making advanced-settings available through steam store or steamvr workshop not help with making this app more steam friendly.?

We need advanced-settings compiled with steam runtime somehow, any ideas?

Balderick commented 7 years ago

It is actually possible to emulate Razer Hydra with FreePIE based on gamepad input, so everyone with a gamepad can mavigate the settings.

@Kbeam007 could you share your freepie script? or describe your working setup for using advanced settings with a steam controller or Xbox controller?

Balderick commented 7 years ago

The only way would be to use steamworks for the steam controller (which I cannot do because of license issues) and XInput for all other controllers (which I cannot do because I only have a steam controller, and I cannot develop something which I cannot test).

The default json for steam controller configuration in big picture is the xinput device template found in application options for controller config.

The buttons on my wheel base are PS type but steam big picture converts them to ximput device for steam overlays (big picture, in game overlay, vr dashboard) after registering wheel as non steam controller in big picture controller settings.

What this means is you can use a steam controller to test all devices as every device even PS controllers are seen as xinput devices by big picture and therfor all other steam overlays including vr dashboard.

@matzman666 Maybe steamvr needs an application category in steam workshop? Or advance settings downloadable through steam store or steam tools?

I really agree this is an openvr issue as any app listed in steamvr dashboard should be able to use any input device that vrcdashboard is using and any input devices which steamvr apps support. I can use the buttons on my wheel base for steamvr dashboard, steamvr apps, steam overlays but not in openvr advanced settings even though steamvr lists it as an application.

What is the best (lightest) way you know of getting a steam controller or Xbox controller to work with advancedsettings?.

Kbeam007 commented 7 years ago

@Balderick The FreePIE forum has a thread on that with instructions and .dll files that should substitute the nornam Hydra drivers http://www.mtbs3d.com/phpBB/viewtopic.php?f=139&t=22033&start=40 . My experience with the .dll files is that for some reason the pitch and roll values are with regard to the world axes and the yaw values are with regard to the local space of the controller. I tried a very crude "fix" in my script here (slightly outdated, but does the job in most situations) https://drive.google.com/file/d/0B_7L0fiUQpSYOTA5aEJ6LV9Pa0k/view?usp=sharing

Balderick commented 7 years ago

I found the DLLs that come with freepie were not doing their job but the ones bundled with the files shared with https://youtu.be/GQ8up6uS5zM do work.

IMO we simply should not be having to emulate vive controllers if no vive controllers are available. Like anything else there will be a reason that we do but I can not see it as steamvr, steamvr apps, big picture and in game overlays all support Xbox controller.

Instead of emulating positionally tracked controllers I reckon we need to exactly replicate how vive controllers are configured for steam overlays. We really just need the menu navigation inputs which amounts to six or eight buttons. Dpad, a and b with maybe shoulder buttons used for changing menu tab

We should not be seeing any mouse cursors in steam overlays (which is basically what advanced settings is)

xbox steamvr

Could anybody share how vive controller is configured for steamvr overlays by sharing the contents of the json being used specifically for overlays I.e. dashboard, in game overlay etc? Or post an equivalent screenshot of the Xbox controller settings posted above but for Vive controller would be the GUI way ...

screenshot 5

Do the vive controllers show up as xinput devices listed as non steam controllers in controller settings accessed through big picture without steamvr running?

mungewell commented 7 years ago

Hi, I'd second the request for gamepad/mouse control, or at least something that does not require hand controllers to be present (or emulated, PSMoves?). I am currently experimenting with TrinusPSVR, and since racing Sims are my thing I have no real need to set up hand controllers. Is there a way to have the render target be a 'normal' window, rather than on the in-VR dock?