GitHub user mike-jumper opened a pull request:

    https://github.com/apache/guacamole-client/pull/228

    GUACAMOLE-352: Work around lack of key events for dead keys.

    Some platforms (but not all) will not send traditional 
keydown/keypress/keyup events for [dead 
keys](https://en.wikipedia.org/wiki/Dead_key), instead sending input or 
composition events, often requiring that an input field be focused for such 
events to be dispatched at all.
    
    These changes modify `Guacamole.Keyboard` such that it additionally hooks 
into the "input" and "compositionend" events, thus producing key events for 
characters typed through dead keys even when traditional key events are not 
dispatched.
    
    Because an input field often must be focused for these events to work, 
these changes also add a new object, `Guacamole.InputSink`, which acts as an 
automatically-focused input field that takes the focus whenever the focus is 
not on some other input field.
    
    Additional and backwards-compatible modifications to `Guacamole.Keyboard` 
allow it to listen to the keyboard/input/composition events of multiple 
objects, such as both `document` (for intercepting all key events) and the 
element exposed by `Guacamole.InputSink` (for receiving events which are only 
dispatched if an input field is focused).
    
    This all has the happy side effect of allowing 
[IMEs](https://en.wikipedia.org/wiki/Input_method) to function without using 
Guacamole's "text input" mechanism.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/mike-jumper/guacamole-client deadkeys

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/guacamole-client/pull/228.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 #228
    
----
commit 7c8a3103066c71aaaaadbd594eb8b392d9c17877
Author: Michael Jumper <mjumper@...>
Date:   2017-12-18T03:13:36Z

    GUACAMOLE-352: Do not attempt to send dead keys (only the composed key 
should be sent).

commit 47c7bc2451580b9b316738c742f706100ede33b4
Author: Michael Jumper <mjumper@...>
Date:   2017-12-18T05:09:15Z

    GUACAMOLE-352: Handle both "input" and "compositionend" events as sources 
of keys.

commit be84ce4c7649e5d415025d65110bc3ff8bdcee50
Author: Michael Jumper <mjumper@...>
Date:   2017-12-18T05:17:46Z

    GUACAMOLE-352: Handle "input" / "compositionend" events in a 
mutually-exclusive manner, as they may conflict.

commit 036a6b99ac35dea00055b827f85f6c57d53868c2
Author: Michael Jumper <mjumper@...>
Date:   2017-12-18T05:28:12Z

    GUACAMOLE-352: Only attempt to type fully-composed strings.

commit afbaeb9769ed427a37afb353948ebfc382e46867
Author: Michael Jumper <mjumper@...>
Date:   2017-12-18T05:51:19Z

    GUACAMOLE-352: Track in-progress composition, ignoring "input" events for a 
composition which is known to be incomplete.

commit 61b94a65b8333366441dd76bf802a6d7fbb88e3e
Author: Michael Jumper <mjumper@...>
Date:   2017-12-18T05:56:28Z

    GUACAMOLE-352: Rely on isComposing property of InputEvent to determine 
whether the event should be ignored.

commit ef1ad6f3cc6cdc4aef24845c65aea453f7e23122
Author: Michael Jumper <mjumper@...>
Date:   2017-12-18T06:38:10Z

    GUACAMOLE-352: Add Guacamole.Keyboard.InputSink object to serve as a 
reliable default destination for input events.

commit d3cdc6d5192176e675c1b5484abfa43c90ace41c
Author: Michael Jumper <mjumper@...>
Date:   2017-12-18T06:51:34Z

    GUACAMOLE-352: Leverage Guacamole.Keyboard.InputSink within webapp as a 
default destination for input events.

commit 9bec9f558886added11434fed1b787087d941aa0
Author: Michael Jumper <mjumper@...>
Date:   2017-12-18T18:40:59Z

    GUACAMOLE-352: Refocus InputSink through key events rather than clicks.

commit 15af6d0895a3d1971b46c4bc4e8ea37b265e6956
Author: Michael Jumper <mjumper@...>
Date:   2017-12-18T18:58:50Z

    GUACAMOLE-352: Allow additional elements to be added to a single 
Guacamole.Keyboard.

commit 8d8a97309b8e09bedbeb61b76a4d722b48ac6c63
Author: Michael Jumper <mjumper@...>
Date:   2017-12-18T18:59:15Z

    GUACAMOLE-352: Explicitly listen to the input sink.

commit 75aa76b6099c6978db9807b7cdcb3dbb427e5220
Author: Michael Jumper <mjumper@...>
Date:   2017-12-18T19:20:13Z

    GUACAMOLE-352: Clarify that Guacamole.Keyboard can be given an Element or a 
Document.

commit ab985fe22744a7978d7611d3b193694d16540e9b
Author: Michael Jumper <mjumper@...>
Date:   2017-12-18T19:20:48Z

    GUACAMOLE-352: Do not clear InputSink field upon "input" event (may be 
fired after a partial composition).

commit 2c76aee1a7957da32d38cb39519b34a13afddcc4
Author: Michael Jumper <mjumper@...>
Date:   2017-12-18T22:07:24Z

    GUACAMOLE-352: Ignore other input fields if they are invisible.

commit 2a97837bb31f1c162df8e6ea8f22924de2bef331
Author: Michael Jumper <mjumper@...>
Date:   2017-12-18T22:56:39Z

    GUACAMOLE-352: Additionally click() while attempting to refocus the input 
sink field. Do not rely on autofocus, which may result in the field being 
partly focused (outlined as focused) but not receiving any actual text input.

commit b45e047694444d1b4f2ba9b9d72845a52983b7fe
Author: Michael Jumper <mjumper@...>
Date:   2017-12-18T23:41:55Z

    GUACAMOLE-352: Remove Guacamole menu entirely when closed. Input fields 
within the menu must not continue to receive input.

commit 23b711eab90acc6678422808ffd6b4e27debf43e
Author: Michael Jumper <mjumper@...>
Date:   2017-12-19T00:02:19Z

    GUACAMOLE-352: Handle input/composition events while bubbling.

commit b3d633bdf24aa99a43eb9d36465276cb44de24ea
Author: Michael Jumper <mjumper@...>
Date:   2017-12-19T00:02:45Z

    GUACAMOLE-352: Prevent "input" event from clipboard integration from 
triggering keystrokes.

commit 062b918a05426951e733d94da4a6d114e6df5666
Author: Michael Jumper <mjumper@...>
Date:   2017-12-19T00:29:54Z

    GUACAMOLE-352: Monitor input and composition events to keep input sink 
contents clear.

commit 5fa1554ac9b592d221a244e6f714eaa2b52a1bad
Author: Michael Jumper <mjumper@...>
Date:   2017-12-19T05:47:11Z

    GUACAMOLE-352: Hide input sink field in bottom-left corner for sake of 
input method dialogs.

commit 56de519628894d14151e82eda589ea801e545ba4
Author: Michael Jumper <mjumper@...>
Date:   2017-12-19T17:42:33Z

    GUACAMOLE-352: Remove margin and padding from input sink.

commit b234cba9045efff29dabeae668eb70e15d2405f0
Author: Michael Jumper <mjumper@...>
Date:   2018-01-15T00:29:06Z

    GUACAMOLE-352: Refactor Guacamole.Keyboard.InputSink to Guacamole.InputSink.

----


---

Reply via email to