I think the intent of "Map Controllers" is to define if the SDL controller functionality will be used or not - but this currently comes with the XBOX masquerade.
My intent is to allow use of the SDL controller functionality without the masquerade (i.e. call SDL_GameControllerOpen and get the SDL_CONTROLLER events).
On 20/11/18 11:35 am, Zebediah Figura wrote:
On 11/19/2018 11:06 AM, Zebediah Figura wrote:
On 11/19/2018 10:57 AM, Andrew Eikum wrote:
On Sat, Nov 17, 2018 at 04:08:10PM +1100, Brendan McGrath wrote:
Elite Dangerous appears to iterate input devices via DInput and will only defer to XInput if there is a HID device with a matching VID and PID.
The current behaviour of the SDLBUS is to masquerade any controller as an XBOX controller. This causes Elite Dangerous to treat any other type of contoller as a Joystick.
This patch allows this masquerading behaviour to be switched off via a REG_BINARY registry entry: HKCU\Software\Wine\XInput\MasqueradeXBOXController
0 - Turns it off (so it uses the real VID and PID 1 - Turns it on (so it uses the XBOX controller VID and PID)
This seems kind of inelegant. Is there some way to programmatically distinguish the device you have from a more typical gamepad? Maybe some SDL function that classifies the device, or the presence of non-rumble FFB?
If not, another approach would be to have a VID/PID override in the registry, which defaults to the Xbox values, but users can unset to allow the true VID/PID through.
Andrew
While we're at it, if we really do need a registry hack, a better place would probably be the existing WineBus key.
Actually, now that I look at the code, doesn't the "Map Controllers" value already do exactly this?