You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@guacamole.apache.org by mike-jumper <gi...@git.apache.org> on 2018/01/15 05:08:55 UTC

[GitHub] guacamole-client pull request #228: GUACAMOLE-352: Work around lack of key e...

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 <mj...@...>
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 <mj...@...>
Date:   2017-12-18T05:09:15Z

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

commit be84ce4c7649e5d415025d65110bc3ff8bdcee50
Author: Michael Jumper <mj...@...>
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 <mj...@...>
Date:   2017-12-18T05:28:12Z

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

commit afbaeb9769ed427a37afb353948ebfc382e46867
Author: Michael Jumper <mj...@...>
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 <mj...@...>
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 <mj...@...>
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 <mj...@...>
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 <mj...@...>
Date:   2017-12-18T18:40:59Z

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

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

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

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

    GUACAMOLE-352: Explicitly listen to the input sink.

commit 75aa76b6099c6978db9807b7cdcb3dbb427e5220
Author: Michael Jumper <mj...@...>
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 <mj...@...>
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 <mj...@...>
Date:   2017-12-18T22:07:24Z

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

commit 2a97837bb31f1c162df8e6ea8f22924de2bef331
Author: Michael Jumper <mj...@...>
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 <mj...@...>
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 <mj...@...>
Date:   2017-12-19T00:02:19Z

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

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

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

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

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

commit 5fa1554ac9b592d221a244e6f714eaa2b52a1bad
Author: Michael Jumper <mj...@...>
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 <mj...@...>
Date:   2017-12-19T17:42:33Z

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

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

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

----


---

[GitHub] guacamole-client pull request #228: GUACAMOLE-352: Work around lack of key e...

Posted by asfgit <gi...@git.apache.org>.
Github user asfgit closed the pull request at:

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


---