TheDrHax / ds4drv-cemuhook

A Sony DualShock 4 userspace driver for Linux with basic support of cemuhook's UDP protocol
MIT License
57 stars 20 forks source link

Controller configuration impossible due to constant controller updates #8

Closed njmdietrich closed 4 years ago

njmdietrich commented 4 years ago

I am trying to use this tool to run citra with the DS4 and motion controls. The motion controls work beautifully. However, I cannot map the DS4 buttons in citra. This is because there is a constant stream of updates on the gyro controls, so when citra is prompting me to press a button it automatically picks up a gyro axis every time. Mapping the controls before starting ds4drv also doesn't work, I'm guessing this is because ds4drv "replaces" the DS4 when started. An easy fix might be running ds4drv with gyro inputs disabled for mapping, but I couldn't figure out the right syntax/button namings to disable any inputs using --ignored-buttons, I always get the error "invalid button combo value:", for example trying to disable (for test purposes) dpad_up.

TheDrHax commented 4 years ago

I did some tests and it looks like there is a bug in the original ds4drv driver (the same behavior with and without --udp flag). I think Citra uses UDP protocol only for motion controls and reads other input events directly from the controller (which, in our case, is emulated by ds4drv).

You can use --emulate-xboxdrv or --emulate-xpad flags to replace default controller emulation method of ds4drv. I tested both of them with Citra Nightly 1554 and they worked well.