Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows (sometimes) recognizing the controller in DS4Windows mode as a gamepad #90

Closed
Kanuan opened this issue May 19, 2021 · 2 comments
Labels
bug Something isn't working Core Core/Common Driver Topic

Comments

@Kanuan
Copy link
Contributor

Kanuan commented May 19, 2021

Summary

Since in DS4Windows Mode the controller is supposed to be remapped into a virtual controller by DS4Windows, to prevent the famous double-input issue the controller's HID descriptor was changed so Windows stopped recognizing it as a gamepad.

Some users are reporting that in the latest stable driver Windows still recognizes the controller in DS4Windows Mode as an actual gamepad.

Details

From the image below, Windows is ignoring the X, Y, Z, RZ axes and the T-Hat, though RX and RY as well as the other buttons are recognized as normal :

image

Looking at the HID descriptor, it seems as windows is ignoring everything before the usage page is refreshed:

image

Test

I wanted to confirm if the issue was being caused by windows recognizing the axes/buttons after the usage page was "refreshed" in the HID descriptor, so I replaced all gamepad related sections of the HID descriptor (all axes, buttons, t-hat) with vendor-defined padding:

image

And the result was that Windows still recognizes the controller as a gamepad, but now without any buttons/axes:

image

Final thoughts on the issue

I can only think that Windows got stuck identifying the controller as a gamepad, regardless to what the initial usage and usage page is defined on the HID Descriptor. I don't know how to further troubleshoot this, since I can't replicate this on my system.

@Kanuan Kanuan changed the title Windows (sometimes) recognizing the controller in DS4Windows mode as an gamepad Windows (sometimes) recognizing the controller in DS4Windows mode as a gamepad May 19, 2021
@nefarius
Copy link
Owner

Since DS4Windows has its own byte-based parser anyway I think the whole Report Descriptor could be further simplified by not exposing any "well-known" usages all together, just make sure the report sizes still match, nothing else so the hidclass parser has nothing to expose to the system.

@nefarius nefarius added bug Something isn't working Core Core/Common Driver Topic labels May 31, 2021
@nefarius nefarius added this to the Fixed in v1.5.x milestone Jul 2, 2021
@nefarius nefarius reopened this Jul 2, 2021
@nefarius
Copy link
Owner

nefarius commented Jul 2, 2021

@Kanuan could you test my change please? I basically ripped out all known usages and just fixed the overall padding of the input report, at least on my end DS4Windows (3.0.11) seems to be happy with the change and still functions while the original devices remains fully hidden:

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working Core Core/Common Driver Topic
Projects
None yet
Development

No branches or pull requests

2 participants