From f278bacfa03f427b82bc29213b0cfc25c5187208 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Tue, 20 Mar 2012 21:06:18 -0700 Subject: [PATCH] Automatically release and re-press any active modifier keys before sending Alt-codes. --- protocols/rdp/src/guac_handlers.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/protocols/rdp/src/guac_handlers.c b/protocols/rdp/src/guac_handlers.c index bfb7bda6..051166a2 100644 --- a/protocols/rdp/src/guac_handlers.c +++ b/protocols/rdp/src/guac_handlers.c @@ -236,6 +236,9 @@ void __guac_rdp_send_altcode(guac_client* client, const char* altcode) { /* Lookup scancode for Alt */ int alt = GUAC_RDP_KEYSYM_LOOKUP(*keysym_scancodes, 0xFFE9 /* Alt_L */).scancode; + /* Release all pressed modifiers */ + __guac_rdp_update_keysyms(client, GUAC_KEYSYMS_ALL_MODIFIERS, 1, 0); + /* Press Alt */ rdp_inst->input->KeyboardEvent(rdp_inst->input, KBD_FLAGS_DOWN, alt); @@ -256,6 +259,9 @@ void __guac_rdp_send_altcode(guac_client* client, const char* altcode) { /* Release Alt */ rdp_inst->input->KeyboardEvent(rdp_inst->input, KBD_FLAGS_RELEASE, alt); + /* Press all originally pressed modifiers */ + __guac_rdp_update_keysyms(client, GUAC_KEYSYMS_ALL_MODIFIERS, 1, 1); + } int __guac_rdp_send_keysym(guac_client* client, int keysym, int pressed) {