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

XInput (Xbox One Controller Emulation) compatibility improvements #358

Closed
nefarius opened this issue May 1, 2024 · 6 comments · Fixed by #359
Closed

XInput (Xbox One Controller Emulation) compatibility improvements #358

nefarius opened this issue May 1, 2024 · 6 comments · Fixed by #359
Assignees
Labels
Core Core/Common Driver Topic enhancement New feature or request
Milestone

Comments

@nefarius
Copy link
Owner

nefarius commented May 1, 2024

Keeping notes and track of ideas regarding XInput mode problems and brainstorming about what could be done to improve compatibility up to a level where it - hopefully - could totally replace the need for Xbox 360 device emulation (which requires additional drivers and software due to restrictions of user-mode drivers).

See #114

@nefarius nefarius added enhancement New feature or request Core Core/Common Driver Topic labels May 1, 2024
@nefarius nefarius self-assigned this May 1, 2024
@nefarius
Copy link
Owner Author

nefarius commented May 3, 2024

Testing with Hollow Knight

XINPUT compatible HID device

  • Changed Device ID to HID\VID_045E&PID_02FF&IG_00
  • Changed Hardware IDs to HID\VID_045E&PID_02FF&IG_00
  • Changed Class to HIDClass
  • Changed used INF from dshidmini.inf to xinputhid.inf
  • Changed HIDD_ATTRIBUTES.VendorID to 0x045E
  • Changed HIDD_ATTRIBUTES.ProductID to 0x02FF

Not yet enough to make the game detect the controller.

@nefarius
Copy link
Owner Author

nefarius commented May 3, 2024

Testing with Hollow Knight

Changing the product string HidD_GetProductString returns to

#define DSHIDMINI_PRODUCT_STRING         L"Controller (Xbox One For Windows)"

made the controller appear in HK!

@nefarius
Copy link
Owner Author

nefarius commented May 3, 2024

Changing the device class to HIDClass made DSHM devices appear in the HidHide config tools!

@nefarius
Copy link
Owner Author

nefarius commented May 3, 2024

Next subject: why is the device not recognized by Gamepad Tester.

@nefarius
Copy link
Owner Author

nefarius commented May 3, 2024

Funny enough it works just fine on Windows 10 Chromium Edge:

image

Firefox also happy:

image

Doesn't get detected by Brave on Windows 11...

image

Oh well...

According to the Chromium source code these devices should be enumerated using XInput so I wonder where these inconsistencies come from.

@nefarius
Copy link
Owner Author

nefarius commented May 4, 2024

R&D notes dump

image

image

image

image

image

image

image

image

image

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Core Core/Common Driver Topic enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant