http://bugs.winehq.org/show_bug.cgi?id=20395
--- Comment #87 from llie@nano.exofire.net 2012-02-02 10:06:18 CST --- (In reply to comment #7)
It's not that easy. MS keeps creating API that's newer do what you need, no one can understand, no one knows how to use it right, and there are already several APIs that seems to do exactly the same thing.
RawInput is yet another DInput like interface but without all the device configuration craft, only it can intercept all events before the they hit user layer and generate all associated messages. For Wine that means this will have to be done in wineserver with extensive testing to be sure nothing broke. It will need a separate RawInput queue since events are buffered and then returned one or many at a time.
In reply to the last comment, I think the above early reply summarizes the situation well. Technically this isn't a "bug" as much as it is a request for a somewhat major enhancement to Wine.
I'm not sure if the raw3.patch is the beginnings to a proper implementation of a solution or not, but it doesn't seem to be a "silver bullet" fix for all games that require RawInput. From what I've seen the raw3.patch doesn't seem to solve all problems for all games, whereas about half a dozen other patches have been submitted for various games.
If the approach taken in the raw3.patch is deemed by Wine Devs as being an ugly hack (which many of the other RawInput patches appear to be), it would be nice if they commented as such. I've attempted to read and understand what the patch does, but it's over my head. Without turning this into an entire sub-project, is there a way to develop and debug a proper solution per Vitaliy Margolen's comments above?
If however, the wine community is close to a solution, it would also be nice if this could be nominated as a candidate for the 1.4 release.