nefarius / DsHidMini

Virtual HID Mini-user-mode-driver for Sony DualShock 3 Controllers

Home Page:https://docs.nefarius.at/projects/DsHidMini/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

XInput (Xbox One Controller Emulation) compatibility improvements

nefarius opened this issue · comments

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

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.

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!

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

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

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.

R&D notes dump

image

image

image

image

image

image

image

image

image

image