[PATCH 2/3] winex11.drv: set global key state

Rafał Miłecki zajec5 at gmail.com
Mon Aug 16 14:06:32 CDT 2010


Hi Alexandre,

W dniu 11 września 2009 13:22 użytkownik Alexandre Julliard
<julliard at winehq.org> napisał:
> Rafał Miłecki <zajec5 at gmail.com> writes:
>
>> @@ -1250,6 +1250,21 @@ void X11DRV_send_keyboard_input( WORD wVk, WORD wScan, DWORD event_flags, DWORD
>>              key_state_table[wVkStripped] = key_state_table[wVkL] | key_state_table[wVkR];
>>          }
>>
>> +        SERVER_START_REQ( set_global_key_state )
>> +        {
>> +            req->key      = wVk;
>> +            req->state    = key_state_table[wVk];
>> +            wine_server_call( req );
>> +        }
>> +        SERVER_END_REQ;
>> +        SERVER_START_REQ( set_global_key_state )
>> +        {
>> +            req->key      = wVkStripped;
>> +            req->state    = key_state_table[wVkStripped];
>> +            wine_server_call( req );
>> +        }
>> +        SERVER_END_REQ;
>> +
>
> You don't want to add 2 extra server calls for every key, especially
> since the server already receives the necessary information through the
> key event.

It's prehistoric thread already, but issue still isn't solved. I
wanted to rework that old patch but I noticed set_key_state was
already changed and it doesn't change single key state, but instead
sets whole array at every call.

This was I can not use set_key_state handler to update my
"global_keystate" array, as I have no idea which key actually has been
changed.

Do you see some nice solution for this problem?

-- 
Rafał



More information about the wine-devel mailing list