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