[PATCH 1/6] server: Add server-side raw input functions definitions

Vitaliy Margolen wine-devel at kievinfo.com
Wed Jun 15 17:00:09 CDT 2011

On 06/14/2011 02:45 AM, Vincas Miliūnas wrote:
> This is a partial raw input implementation for mouse and keyboard.
> I've read in the IRC chat, that products of tools/make_request should
> not
be included in a patch, so I left them out.
> My first attempts were by leeching input events from queue_mouse_message
and queue_keyboard_message functions, but I couldn't get mouse cursor
movement right. Instead, I copied the way dinput receives input - by
installing low level hooks and forwarding input to the server. This is just
to get "try 1" out of the door. Of course, it would be better if the input
feed would be server-side only.
> I hit a very weird bug, where in peek_message function, info.msg.lParam
was impossible to set with the proper lParam (it was correct in
reply->lparam) value, instead is was overwritten by some constant. That was
happening only for the messages sent by the patch using post_message. I
guess the tales of server-side dragons hold some truth... If anyone wants to
try to reproduce it, just recompile without the unused #include "user.h" in
raw_input.c and run user32 tests.
> This patch game-tested and works for Quake Live (in_mouse 2 for raw
input), World of Tanks and Risen.

I'm not sure I like your approach and that AJ would like it either.

Raw input is an "override" of regular messages caused by mouse/keyboard 
input. Wine server already receives these messages from x11drv (see 
__wine_send_input & co).

When applications requests raw input events you need to tell wine server if 
it needs to send regular events, or ignore all events, and produce raw input 
events instead.


More information about the wine-devel mailing list