Hi,
I just published a patch with my xinput core implementation. If anyone is interested in an evdev (linux) backend I could publish that too, but I guess it won't make it into wine due to the tendency towards the HID architecture.
A rough overview on how it's supposed to be used can be read in the README file from the second patch. Let me know what you think.
The next step would be to implement a backend that uses hid.dll. Using HID devices should be fairly straightforward. There are, however, two parts that I haven't figured out yet:
- How can we find new devices? The current work for the HID architecture seems to have tackled the hotplugging problem. Can the XInput HID backend get notified when a new controller gets plugged in? Should it just poll for new devices using SetupDi functions or something similar?
- How do we map a controller's buttons and axes to the corresponding XInput ones? This has to be done per controller model. My evdev backend has a lookup list that matches controllers to a certain mapping using some selection criteria (Name, Vendor ID, etc.). My idea was to load the mappings from the registry, but for this to be usable by regular users, a GUI would have to be implemented to create those registry entries.
Any ideas are welcome.
Juan