[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