Hi,
I wanted to try something out with DS4Windows in DS4 mode, so I created a profile to do so. When the profile was loaded no controllers were present in the windows joystick config. After uninstalling HIDGuardian and rebooting DS4 mode worked as should.
So my question is, is it possible to use DS4 mode with HidGuardian? And if not, are there any work arounds apart from uninstalling it each time.
Thanks
Yes and No. If you have a physical DS4 controller as revision two then you can use HidGuardian.
By default HidGuardian hides both the original physical DS4 controller AND virtual DS4 controller because both of those are listed as DS4 controllers and HidGuardian cannot tell the difference between physical and virtual controller (well, it could but the existing version of HidG doesn't do it).
However, you can tweak HidGuardian sysreg entries to make it hide rev2 ds4 controller only. This leaves the virtual DS4 controller still visible because it is registered as rev1 controller:
https://github.com/Ryochan7/DS4Windows/issues/669#issuecomment-487302990
https://github.com/Ryochan7/DS4Windows/issues/720#issuecomment-499097172
It is not possible when using an older version 1 controller. HidGuardian will end up hiding both the real and virtual controller from the system. As outlined by mika-n, you can work around that problem if you are using a version 2 controller (lightbar visible on touchpad) or using the Sony Wireless Adapter.
Thanks guys :)
I have a v2 pad so I'll give this a whirl
Hi,
I have been playing with this config and have gotten it to work nicely, all except with steam. When DS4Windows is running, steam will not see the ds4 v1 controller. I have tried with profiles that turn ds4windows off and a profile that exposes a ds4 controller and a mix of both to no avail. As soon as close ds4windows the ds4 controller is visible in steam (Ive made some changes to the affected devices registry entry for testing). I can see the 'Wireless Controller' in joy.cpl and it works ok in Kodi, just not steam or any games launched, such as The Talos Principle (which AFAIK has native DS4 support).
Also, with setting profiles, its seems like a profile watches for an active window? I want to use a ds4 when using steam, so I have set a auto profile for steam.exe and when I launch a game, open the friends window or alt-tab from steam it changes back to the default profile. Is it possible to have a profile watch for a running executable instead of a active window from the executable?
If that is the case, it does not sound like HidGuardian is configured properly. Steam should not see the DS4 controller when DS4Windows is not running if HidGuardian is blocking the device. Another thing to check for games is to make sure that you do not have PlayStation Configuration Support enabled in Steam. With that option enabled, games launched from Steam would see the DS4 as an Xbox 360 controller.
I don't really use the auto profile system. I just test it sometimes to make sure it is still working as intended. Even when the active window changes, DS4Windows should still see that the new active window belongs to Steam.exe and proceed to use any profile configured for the Steam application. I will check that in a bit but it should work.
Hey,
I have gotten somewhere :)
To start off with, what I am hoping to achieve is using a ds4 v2 with ds4windows. I would like to try ds4 support in steam, but still have the controller seen as a xbox 360 controller when steam is not running. I want to see if games have support for a ds4 and also show in the hardware surveys that a ds4 is being used in the hope of getting support in more games in the future.
So, I followed mika-n's instructions above and everything looked fine in joy.cpl and html5 tester - everywhere except in steam. Completely close ds4windows and the a ds4 would appear in steam; Open ds4windows and it would disappear again. Mapping the ds4 to a xbox 360 controller worked fine. Just an emulated ds4 and steam. Even with HIDGuardian installed, but a empty AffectedDevices registry entry, joy.cpl would show two controllers, but steam nothing. Close ds4windows and the real ds4 shows up in steam.
Googling a bit I found a post by a valve employee which confirmed my hunch.
@Slackston - can you make sure Inputmapper or Ds4Windows aren't running in your system tray? Steam doesn't open PS4 controllers while they are running because we'd end up having 2 controllers - the real device and the emulated Xbox controller they create. It should see the other programs going away immediately but you could also try restarting Steam.
Also if you change the Steam Input enable settings for PS4/Xbox/etc you'll need to restart the game before it takes effect.
So it looks like steam has its own "HIDGuardian" which was causing the emulated ds4 to not be recognised. Now getting around this is easy, simply renaming the ds4windows exe and running that instead gets around the block and allows the emulated ds4 to be used in steam. I havent tested it enough to see if the rename causes any issues and this will probably need manual intervention everytime an update is downloaded. Not sure if there is a better way.
I quickly tested the auto profiles with the emulated ds4 working in steam and it is behaving the same as before - its based off the active window regardless if the exe that the auto profile points to is running or not. Some windows that are created by steam (the friends list) also cause the controller to switch back to the xbox 360 profile, along with clicking the steam icon in the windows taskbar.
Video of the issue.
You can see profiles changing via the lightbar (red for 360, white for ds4) and also controllers changing in steam.
@mika-n the last two registry entries are mangled by githubs formatting and are missing backslashes after the "HID", they should look like this:
HID\{00001124-0000-1000-8000-00805f9b34fb}_VID&0002054c_PID&05c4
HID\{00001124-0000-1000-8000-00805f9b34fb}_VID&0002054c_PID&09cc
Googling a bit I found a post by a valve employee which confirmed my hunch.
Now getting around this is easy, simply renaming the ds4windows exe and running that instead gets >around the block and allows the emulated ds4 to be used in steam. I havent tested it enough to see if >the rename causes any issues
Interesting. Good catch and good to know there is nowadays such a "tweak" in Steam client.
Renaming DS4Windows.exe won't cause any problems with DS4Windows app itself or with HidGuardian (at runtime HidG plays with process IDs and not with process names). But if/when DS4Windows automatic updater updates the app you have to do the renaming again.
I quickly tested the auto profiles with the emulated ds4 working in steam and it is behaving the same >as before - its based off the active window regardless if the exe that the auto profile points to is
I have submitted a change to auto-profiling thing of DS4Windows and Ryochan has merged it into the master branch. From there it will take its way to the next public release someday. The new auto-profiling logic is a lot better than the old logic and it allows to link both process names AND window titles to a profile (either one or both at the same time). The new logic also eliminates those unnecessary "reset back to default profile before switching to a new profile" issues. And you can even define certain processes (for example "explorer.exe" process name) to ignore profile switching, so for example temporary alt-tabbing won't change back to default profile if you don't want it to do it.
https://github.com/Ryochan7/DS4Windows/pull/745#issuecomment-510665102
Great, thank you. Looking forward to giving the new auto profile code a whirl.
I have been playing around some more with ds4 mode and steam and have had trouble using the gyro in steam. It seems as though ds4windows maintains control and wont allow steam use of it. Eg if I assign gyro toggle in ds4win to L1 and in steam to L2, gyro will only work when I press L1. If I disable gyro in ds4win it doesnt work in steam.
This got me thinking, as steam has its own joystick config, there is double handling through both apps and using two apps to configure a controller get confusing really quick. Is it possible to activate a "raw" mode where a ds4 v2 is passed through as a ds4 v1 with no controller config possible via ds4win so that other apps will always see it "as is" and have total control?