The first commit adds some test infrastructure to be able check raw input keyboard events, along with a few tests relevant to the code paths in this MR.
The second commit fixes raw input behavior with unicode inputs, and adds regression tests. Note that it was difficult to express the current Wine behavior with TODOs in the expected sequence, that's why I didn't introduce these regression tests independently.
-- v2: server: Set VK_PACKET async state in raw input legacy mode. user32: Check async key state in raw nolegacy tests. server: Don't send raw input events for unicode inputs. server: Apply modifier vkey transformations regardless of unicode flag. server: Use right-left modifier vkeys for hooks. user32: Add tests for raw keyboard messages. user32: Add more test for unicode input with vkey.