Valkirie / HandheldCompanion

ControllerService
Other
1.21k stars 92 forks source link

DInput controller support #107

Open Zebrazilla opened 2 years ago

Zebrazilla commented 2 years ago

I have numerous Ipega controllers that I use with HC and they all unfortunately use only DInput on Windows instead of XInput. I'm currently using XOutput, which can elegantly map DInput to a virtual XInput xbox 360 controller, to get the DInput HID controller into HC, which registers fine with HC. It might add some delay but nothing I've noticed. The biggest issue is that it is not easy to then hide the virtual Xbox 360 controller from input into Steam, there are currently limitations with HidHide in hiding some XInput devices such as an Xbox 360 controller, making Steam Input register double inputs when HC virtual controller is connected. Steam lacks the ability these days to hide or disable devices.

Since I mostly play remotely this isn't much of a problem for me, Parsec can unmap controllers and only send the desired input, xbox cloud gaming and geforcenow both seem to merge the controls without duplication, so this is really more of a problem locally on Steam where the input will be duplicated.

I realize my case may be an edge case, but I have read that many of these telescopic and third-party Chinese controllers in general still use DInput only. I would therefore like to suggest and request DInput support in HC, if at all feasible.

CasperH2O commented 2 years ago

Interesting.

Concerning your issue with Steam double input, have you checked if the following checkmarks are set correctly?

afbeelding

Valkirie commented 2 years ago

I'll work on dinput support soon.

CasperH2O commented 2 years ago

@Zebrazilla @Valkirie did something amazing: https://streamable.com/7d35lx

Valkirie commented 2 years ago

Please note a specific class will be needed for each specific devices.

CasperH2O commented 1 year ago

@Valkirie I think this one is done? I recall you wanted to add that (very large) library of dinput controllers also? Shall we leave this one open for that?