No problem whatsoever ;) Coders should always be able to decide their goals for the project and I already suspected answer like this. As I said, I can always make unofficial patch for those that want XInput
I'd just ask one question if I may. Tried asking over irc, but it was dead as graveyard during the night.
btw, beware... this code is broken in so many places it is not true (C++ examples are in much better state, though even after compiling them I couldn't test it because it required VC++120d). But, it is nice example to get the gist. More or less 99% of games use one or another variation of this code
What this does? Enumerates DirectInput devices, then enumerates all system devices for each and every DirectInput device it was found, instigates device creation and then checks if device ID contains "IG_". If that string was present, it decides on using XInput. Some games go even a bit further and send XInputSetValue on all ?XInput? controllers as secondary check, where it uses fallback on DirectInput if error occured.
Every other solution out there simply hacks on CoSetProxyBlanket in order to provide those extra devices, which is not exactly clean solution, but if you don't have source like on Windows it is perfectly understandable. Though in wine case, this could be implemented in much cleaner fashion
What should really happen in correct implementation?
Each and every XInput device should provide 2 devices, not 1 according to MS specs. 1 for DirectInput and 1 for XInput. And XInput device should contain "IG_" in device ID.
Question:
I'm not really versed in Windows, in fact I didn't used them for 20 years, nor do I plan to do that in future. My experience with installing W8 just to compile those examples was terrible enough to need serious yoga and meditation treatments for next 30 years or so
This would spare me a lot of discovery. Which part of Wine is responsible for device creation and enumeration in the case I specified? I would like to finish it up and provide both devices needed
Also, 1 more bug (not in wine, but rather in implementations) as far as controllers go. Some games just do incomprehensible and check string for device name. So, if device name is not exact as MS specified, game won't work no matter what.
with regards
wh1sper_123