Skip to content
This repository has been archived by the owner on Jan 1, 2024. It is now read-only.

Is there a way to "simulate" the DS4 controller being plugged in with USB while using it wireless with Bluetooth? #669

Closed
DrConflict opened this issue Apr 26, 2019 · 14 comments

Comments

@DrConflict
Copy link

This would be amazing since I still need to plug in my DS4 to have
PS overlay buttons instead of the Xbox button overlays. It's a bit
confusing. It would be an amazing addition to this tool. Cheers.

@Ryusennin
Copy link

#633

@Ryochan7
Copy link
Owner

DS4 emulation work is pretty much complete. I just have to merge it into the main branch and prepare a new release.

@DrConflict
Copy link
Author

DrConflict commented Apr 26, 2019

DS4 emulation work is pretty much complete. I just have to merge it into the main branch and prepare a new release.

That's great news! Looking forward to that release.

Edit: Will it work wireless with a DS4 v2 as well?
I read online v2 controller can cause problems wireless.

@Blackbird88
Copy link

@Ryochan7
This doesn't work with HidGuardian does it?

@DrConflict
Copy link
Author

DrConflict commented Apr 27, 2019

I just installed 1.7.6. It seems to be working wireless with BT.
Some games still need the "hide DS4" checked though. For
example: Far Cry 5. It still gets weird double input. This does
not happen wired afaik. Any idea why this is happening?

@mika-n
Copy link
Collaborator

mika-n commented Apr 27, 2019

Some games still need the "hide DS4" checked though.
It still gets weird double input. This does not happen wired afaik. Any idea why this is happening?

Both the virtual DS4Controller or X360Controller options may still need exclusive access (=Hide DS4 Controller) option or HidGuardian driver installation to hide the original physical DS4 HID device interface. The virtual controller type has nothing to do with the issue because it is the original physical controller which may cause double inputs and other weird things in a game. See following Wiki page for a background explanation why the original physical DS4 device may need to be hidden even when you would use the new virtual DS4 controller output option:
https://github.com/Ryochan7/DS4Windows/wiki/Exclusive-Mode-(Hide-DS4-Controller-config-option)-tips-and-issues

However, it could be that some games work without exclusive/HidGuardian tricks, but it is a game specific thing does it properly handle simultaneous inputs from two different HID device interfaces (ie. it knows how to ignore inputs from a device you haven't actually selected in a game).

Although I don't know why a game would not see double inputs over usb connected DS4 controller, but does see double inputs over BT connection.

@mika-n
Copy link
Collaborator

mika-n commented Apr 27, 2019

@Ryochan7
This doesn't work with HidGuardian does it?

Yes and No.

HidGuardian and the new virtual DS4 Controller option in DS4Windows (ViGem DS4 virtual device) works just fine, but you have to tweak the "AffectedDevices" system registry option of HidGuardian. By default you probably have a such AffectedDevies sysreg entry that it will hide both physical DS4 controller type and virtual DS4 controller type.

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. Therefore HidGuardian hides the physical DS4 controller as it is supposed to do, but it also "accidentally" hides the virtual controller also.

But, if you have a newer DS4 Pro controller (rev2) then it has a bit different hardware ID than the original rev1 DS4 controller and virtual DS4 controller. This combination works with HidGuardian because you can tweak AffectedDevices sysreg entry to list only the DS4 Pro controller.

So, if you have the newer DS4 controller type then you tweak AffectedDevices registry entry as follows and it will hide only the new DS4 controller but leaves the original DS4 controller type still visible. And this way the virtual controller is also left visible.

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HidGuardian\Parameters\AffectedDevices:

HID\VID_054C&PID_09CC&REV_0100&MI_03
HID\VID_054C&PID_0BA0&MI_03
HID\{00001124-0000-1000-8000-00805f9b34fb}_VID&0002054c_PID&05c4
HID\{00001124-0000-1000-8000-00805f9b34fb}_VID&0002054c_PID&09cc

There may be some way to tell the difference between the original physical DS4 controller and the virtual DS4 controller in HidGuardian registry settings, but I haven't been able to find one. I only found the above mentioned registry to hide only the newer physical DS4 "Pro" controller and leaving virtual DS4 still visible (luckily I have both old and new DS4 controllers, so I just use the new DS4 controller with DS4Windows if I want to use virtual ds4 controller type).

@DrConflict
Copy link
Author

DrConflict commented Apr 27, 2019

Most games work great with DS4 wireless and "hide DS4" option enabled though.
It shows the original PS button overlay which is really nice! One thing though, the
touch pad does not seem to act in the same way it does when the controller is
plugged in with USB. The touchpad works as a mouse, not the intended buttons.
Most of the time touchpad opens maps or works as a "select" button basically.
Can you explain why this is? I just tested it with both Far Cry 5 And COD WW2 and
they both work great with the correct button overlays!

@mika-n
Copy link
Collaborator

mika-n commented Apr 27, 2019

One thing though, touch pad does not seem to act in the same way it does when the controller is
plugged in with USB. The touchpad works as a mouse, not the intended buttons.

I just tested the touchpad functionality in DS4Windows using the virtual DS4 controller output option. The touchpad worked just fine. If I had set it as "use for controls" option and re-mapped some buttons to touchpad swipes and clicks (left/right/upper touchpad click) then no problemos. If I had set touchpad as "use as mouse" option then it worked as mouse.

Please share your profile file (zip it and attach it to here).

@DrConflict
Copy link
Author

Thanks for the info. I attached my profile down below. Touchpad
only seems to work with swipe though? I can't assign click buttons?
Cheers.

DS4 Profile 1.zip

@Ryochan7
Copy link
Owner

Ryochan7 commented Apr 27, 2019

That profile uses default bindings for the touchpad virtual buttons. That would correspond to Left Mouse Button for a single click, Right Mouse Button for multi-touch, and Middle Mouse Button mapped to upper touch. Those actions work fine for me. Also, button remapping works on the touchpad.

I would think it would only affect PS4 Remote Play but I should mention that ViGEmBus has no support for mapping the current touchpad touch coordinates. ViGEmBus only supports mapping the touchpad button click. That button cannot be remapped in DS4Windows so it is confined to the actual touchpad button click on the real DS4 controller. I believe that some games on the PS4 do expose different actions for the touchpad depending on the region that is touched so those actions would not be usable with the current ViGEmBus driver.

@Blackbird88
Copy link

Blackbird88 commented Apr 28, 2019

@mika-n
I do have v2 controller and this indeed works! Thank you very much! Now I can have list of stuff to use native DS4 with. Great feature ❤

@Lombra
Copy link

Lombra commented Apr 30, 2019

This sounds great! So this will effectively do the same as using the DirectInput only option, only without the brokenness? Any noteworthy differences?

It says emulates a v1 DS4. Is this related to the physical versions of the controllers, or what does it mean?

@mika-n
Copy link
Collaborator

mika-n commented Apr 30, 2019

V1.7.6+ version of DS4Windows app can output re-mapped (or unmapped, whatever you have in your DS4Win profile) buttons and analog axies as a virtual DS4 v1 controller or as virtual x360 controller (as it used to be the only option for years).

This means that the virtual output device will be seen by games as v1 DS4 gamepad controller. The physical DS4 controller used by DS4Windows app can be in any revision, so rev2 "DS4 Pro" controller works just fine with DS4Win app.

The V1.7.6+ versions supporting the new virtual DS4 output device means also that you don't have to use "Use DInput only" option if you want games to see the controller as DS4 type of (the use of that option with DS4Win app anyway is a bit useless because it would disable all re-mapping rules. Or re-mapping would be limited to keyboard and/or mouse mapping options).

The discussion about HidGuardian "hiding the v1 dS4 controllers" issue is something the owners of v1 DS4 physical controller should be aware of. If the physical DS4 controller is v1 revision then those people cannot use HidGuardian driver to hide the physical controller from games if they use the new DS4 virtual controller option. This is because HidGuardian tool would hide both the physical v1 DS4 controller AND the virtual v1 DS4 controller devices from games because HidGuardian cannot tell the difference between those.

Owners of v1 DS4 physical controller have to use the DS4Win "Hide DS4 Controller" app option with the new DS4 virtual output option (if a game has problems with double inputs) and make sure that DS4Win app is the first app started after reboot to get an exclusive access. Or those people should continue to use x360 virtual output type with HidGuardia driver because in this case HidGuardian would hide only DS4 physical controllers and leaving x360 virtual controller still visible.
https://github.com/Ryochan7/DS4Windows/wiki/Exclusive-Mode-(Hide-DS4-Controller-config-option)-tips-and-issues

But, owners of v2 DS4 physical controller are lucky ones because they can tweak the HidGuardian system reg entries to instruct the HidGuardian tool to hide only the physical v2 DS4 Controller device type from games and leaving virtual v1 DS4 controller still visible to games.

Anyway. If you use the built-in HideDS4Controller option of DS4Win app (=exclusive access) and are happy with it (ie. you can start DS4Win as the very first system app to use gamepad controllers) then there is no need to install HidGuardian tool at all and you won't have the problem of hiding both v1 physcial and virtual DS4 controllers.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants