XInput: Comments on core and further steps

Juan Jose Gonzalez juanj.gh at gmail.com
Sun Feb 14 07:22:38 CST 2016


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



More information about the wine-devel mailing list