GitHub user mike-jumper opened a pull request: https://github.com/apache/guacamole-client/pull/328
GUACAMOLE-232: Address regressions in handling of keyboard modifiers. These changes address issues resulting from changes in [GUACAMOLE-232](https://issues.apache.org/jira/browse/GUACAMOLE-232), which introduced implicit handling of modifier states: * Implicitly pressed modifiers are not properly released after all other keys are released. For example, if an uppercase "A" is typed and the browser fires an "A" keydown event with the shift flag set, `Guacamole.Keyboard` would correctly infer the missing keydown event for shift, but the shift key would then be effectively stuck until some other key event occurs to release it. These changes automatically release all implicitly pressed keys if there are no explicitly pressed keys remaining. * The most recent keysym for a particular key code is given too much priority when the keysym is actually being correctly determined. We should rely on the most recent keysym only when the determined key is demonstrably incorrect. * Keys should only be implicitly pressed/released when the key event being handled is not already sufficient to *explicitly* press/release that key. You can merge this pull request into a Git repository by running: $ git pull https://github.com/mike-jumper/guacamole-client keyboard-regression Alternatively you can review and apply these changes as the patch at: https://github.com/apache/guacamole-client/pull/328.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #328 ---- commit 035813ff0b8938b5fa999b017781a0548e7b710d Author: Michael Jumper <mjumper@...> Date: 2018-10-03T05:18:17Z GUACAMOLE-232: Take best guess of key being pressed/released into account before assuming modifier states need to be resynced. commit 8c096778bc0235b2059495715fee91c31b719c67 Author: Michael Jumper <mjumper@...> Date: 2018-10-03T05:19:15Z GUACAMOLE-232: Fall back to using recent keysym only after failing to determine released key by keycode. commit 6f0787f0c13d187498ae0055c1963fe922832d19 Author: Michael Jumper <mjumper@...> Date: 2018-10-03T05:19:40Z GUACAMOLE-232: Reset tracking of recent keysym after key is released. commit 3246458a023f685693054303708bcaa13a5cdfbb Author: Michael Jumper <mjumper@...> Date: 2018-10-03T05:42:58Z GUACAMOLE-232: Track whether keys were pressed implicitly. Automatically release all keys if only implicitly pressed keys remain. commit a57eaa6b323411f7a216682d38f61f6b92d3b901 Author: Michael Jumper <mjumper@...> Date: 2018-10-03T06:01:10Z GUACAMOLE-232: Rely on recentKeysym for keyup only when the guessed key doesn't seem to actually be pressed. ---- ---