Hi Alexandre,
W dniu 11 września 2009 13:22 użytkownik Alexandre Julliard julliard@winehq.org napisał:
Rafał Miłecki zajec5@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?