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.
----
---