Wine is supposed to mimic Windows' behavior as well as possible. Thus, the proper way to implement xinput would be to access the USB devices directly. The hid->xinput mapping is already non-compliant with the windows behavior, but currently necessary. However, in my opinion, we should only try to parse those HID descriptors that correspond to XInput devices, as provided by common XInput->HID drivers on different host OSs. Nevertheless, once wine's HID->Xinput backend is finished, the end-users can (locally) add their own mappings for any HID controller they want to use. I just wouldn't add those mappings to the wine repo. I would like to get some input on that, however. Do you think we should add mappings for non-xinput devices?
I see no reason not to include mappings for devices with a layout matching that of xbox controllers, even if they are not accessible through xinput on Windows. We only have to do what Windows does when applications depend on it.