Ryochan7 / DS4Windows

Like those other ds4tools, but sexier
https://ryochan7.github.io/ds4windows-site/
GNU General Public License v3.0
6.97k stars 808 forks source link

"Hide ds4 controller" hides virtual ds4 controller too #1568

Closed sergentum closed 3 years ago

sergentum commented 3 years ago

Describe the bug "Hide ds4 controller" hides virtual ds4 controller too

To Reproduce controllers - edit right side of profile window - other emulated controller - set ds4 press save viola - there are no ds4 controllers - physical or virtual - not one of them.

Expected behavior I expect that software will hide only the physical one.

Screenshots If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

Additional context I want to emulate ds4 pad, because i want to use ds4 icons in all games because i'm using ds4 controller. Why I'm using this tool at all, if don't want to emulate xbox controller? Because it provides a lot of features that windows doesn't provide like mouse trackpad, customized colours to indicate battery and many others.

sergentum commented 3 years ago

and also it hides another ds4 controllers, like virtual from bthPs3 from nefairus which is actually ps3 gamepad. So the issue that it hides ALL ps4 controller, but not the only one which is real ds4

mika-n commented 3 years ago

"Hide DS4 Controller" works with DS4 revision1 gamepads. Make sure you do NOT tick the "Use DInput only" option because this option ignores the virtual output controller (xbox or ds4 mode) and expects apps to use the original dinput device. However, if you have HideDS4Controller option set at the same time with UseDInputOnly then you end up without any gamepad devices.

If you use HidGuardian tool to hide the physical controller then it doesn't work with DS4 revision1 gamepads if the output mode is dualshoch4 instead of xbox360. HidGuardian can be used if you have DS4 revision2 gamepad. However, HidGuardian is an optional tool and if the HideDS4Controller option works in your PC setup then you can use that option instead of HidGuardian driver. https://github.com/Ryochan7/DS4Windows/wiki/Exclusive-Mode-(Hide-DS4-Controller-config-option)-tips-and-issues

"Hide ds4 controller" hides only one physical controller (ie. the one used by the ds4 profile), but HidGuardian hides all gamepads matching a specific gamepad type.

sergentum commented 3 years ago

Didn't set "Use DInput only" option. Unfortunately i wasn't able to hide ds4 with original feature. Also it says that it's deprecated, so i didn't rely on it much, so i installed HidGuardian. So it hide all original gamepads. I'm not really understand how to use that software in my case when i want to see ps icons in games, but i don't want to see two gamepads in system, because apps can not distinguish it in some cases and mix things up.

mika-n commented 3 years ago

Read the web page I linked above. It explains why many games require that the physical gamepad devices is hidden if there is also a new virtual output controller created by DS4Windows+ViGem.

The "Hide DS4 Controller" option is still available, but if is very fragile to not work in some PC/WinOS setups, so that's why it is marked as deprecated (but still available if users understand what it does and what to do if it doesn't work. again, read the linked web page about exlusive mode tips).

But, because you have DS4v1 then unfortunately you are out of luck with HidGuardian and DS4Windows profiles using dualshock4 output mode. HidGuardian hides both the physical DSv1 and the virtual output DS4v1 devices. That is a limitation in the current version of HidGuardian. Sometimes in the future the orignal author of HidG probably releases a new version of HidG and it should solve that issue.

Solution for DS4v1 gamepad owners is to use the deprecated HideDS4Controller option and hope it works in your setup.

Or you could buy DSv2 gamepad because it works with HidGuardian and DS4Windows profiles using dualshock4 output mode if the HidGuardian configuration is slightly tweaked (ie. HidGuardian configured to hide only DS4v2 gamepad type and leaving DS4v1 devices visible) . https://github.com/Ryochan7/DS4Windows/issues/669#issuecomment-487302990

PS. If you end up uinstalling HidGuardian then make sure you do it properly because in theory you could end up with no keyboard and mouse support. In that case you should use Windows safe reboot and recovery options to fix the lost usb kbd and mouse. "HidG Test Installer" is one way to uninstall HidGuardian. Do not simply remove driver files. https://github.com/Ryochan7/DS4Windows/wiki/DS4Windows-and-HIDGuardian-Install-and-Setup-Guide#hidguardian-test-installer

sergentum commented 3 years ago

I read the article before this thread, thanks. I tried to kill all apps that use gamepad, i tried to reboot and launch it first but still no luck, I wasn't able to make it work properly. That's why I wouldn't rely on that feature.

I think the best option for me is to use x360 emulation or don't use ds4windows at all, luckily ps4 gamepads have native windows support.

So for now i'll just stay with x360 emulation.

You wrote: The problem is that the first generation of physical DS4 controller has the same hardware ID as the virtual DS4 controller in ViGem gamepad device driver. And that can be a solution - to choose what type of pad user want to emulate rev1, or rev2. If i have only real rev1, than i can set up HidG to hide rev1, and create virtual rev2, than everything would be great. But as I see vigem bus is a completely different product and maybe there's no change to control it from ds4win.

mika-n commented 3 years ago

ViGem does support custom hardware IDs and the idea of letting user to choose if the virtual ds4 output controller has rev1 or rev2 identifier is on the TODO list. Then it would make it possible to use HidGuardian with ds4 profiles and DS4 rev1 physical controllers.

sergentum commented 3 years ago

is on the TODO list - can you share the link, please? I can't see here: https://github.com/Ryochan7/DS4Windows/projects/1

mika-n commented 3 years ago

the idea of improving documentation and TODO list is on the TODO list

sergentum commented 3 years ago

you mean it's not written somewhere in public space?

mika-n commented 3 years ago

meaning docs are not up-to-date.

Ryochan7 commented 3 years ago

As I have mentioned before, the real solution to the problem requires the ability to create properly digitally signed Windows drivers. Unfortunately, Microsoft has locked that feature behind a paywall. In other words, the solution will require ~$200 USD.

I have a version of HidGuardian that can skip virtual devices created by ViGEmBus. The problem is that it requires a few manual steps to install the custom driver and Windows has to run in Test Mode at all times. Most people don't want to do that and several games (Halo multiplayer for example) will refuse to run if Windows is running in Test Mode.

sergentum commented 3 years ago

the real solution to the problem requires the ability to create properly digitally signed Windows drivers.

Are there any drawbacks with the method when user can choose type of virtual ds4 gamepad and distinguish it from real ds4 gamepad? I see the only one - when user have both types of physical pads, rev1 and rev2 and he wants to use it as virtual ds4. But i think it's quite rare issue.