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

Vincas Miliūnas vincas.miliunas at gmail.com
Thu Jun 16 08:59:38 CDT 2011

On 06/16/2011 04:26 PM, Vitaliy Margolen wrote:
> On 06/15/2011 10:37 PM, Vincas Miliūnas wrote:
>> On 06/16/2011 01:00 AM, Vitaliy Margolen wrote:
>>> 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.
>>> Vitaliy.
>> Yes, that's how the RIDEV_NOLEGACY device flag works. The application has an
>> option to opt-in for it, but both means of providing input can take place in
>> parallel.
>> Well, the current patch is an non-invasive way to emulate raw input. It does
>> not deal with the actual hardware devices, configuring the input subsystem,
>> etc, like the windows version does. But the goal is to find the right answer :)
> I think you misunderstood what I was trying to say. You do not need to 
> introduce another way of getting messages into wine server. It already 
> getting hardware messages via send_hardware_message server call.
Yes, I am aware of that and that was my first approach, when I started
writing this. I already have the code to map hw_input_t to raw input

The problem was incorrect mouse cursor movement, therefore I copied
dinput approach with using GetCursorPos. I've learned more, thus the
next objective would be to move the input feed completely into the
server. So, instead of going server->client->server->client, it would be
just server->client.

The goal was to publish something and get feedback. Thanks for the great

> As for the actual patches, you need to clean few things before they can go in:
> 1. Each patch should compile and don't break Wine.
> 2. No dead code should be added with each patch
> 3. In tests, reset last error to known bogus value like 0xdeadbeef. Not 0.
> 4. In C to split long text lines use this construct ("\n" instead of \):
> printf("foo"
> "bar");
> 5. Don't use wchar_t in Wine. It's not compatible with WCHAR.
> Vitaliy.

More information about the wine-devel mailing list