In-client echo of input methods?

Jan Arne Petersen jpetersen at openismus.com
Tue Aug 14 23:38:28 PDT 2012


Hi!

On 08/15/2012 02:45 AM, Bill Spitzak wrote:
> Does the proposed input methods support clients being able to show
> intermediate results? This is certainly useful to make "dead keys" less
> "dead", and I am under the impression that it is very useful for some
> Asian entry systems.

Yes, that will be supported (pre-edit).

> X11 tried to do this with an input-method-controlled overlay, but this
> was incredibly complex and messy and did not really work. I think
> however that the clients can draw this, and often it will be trivial to
> support it.

Yes, every important toolkit (Gtk+, Qt, EFL) supports in place pre-edit
in the Text control nowadays (the pre-edit text is usually underlined).
Wayland will rely on in place pre-edit in the clients.

> Assuming there is an input method doing compose-key, here is what I
> would expect to happen if the user types compose,a,e to make æ:
> 
> 1. User presses & releases compose key.
> 
> 2. User types 'a'. Input method then sends 'a' to the client. Client
> inserts it into the text as though the user typed it, but remembers it
> came from the input method. This gives the user a preview of what they
> typed, which I have found to be much better than normal "dead key"
> behavior.

The client gets a preedit("a") event

> 3. User types 'e'. Input method sends a message to replace the previous
> input with 'æ'. The client then deletes the 'a' and inserts the 'æ'.

The client gets a commit("æ") event

> If at step 3 the user typed 'x' (and assuming ax is not a compose
> sequence) the input method could then choose how to handle the error:
> 
>   1. Input method says to also insert an 'x', resulting in "ax" (my
> preference).

The client would get a commit("ax") event

>   2. Input method says to replace the previous input with 'x'.

The client would get a commit("x") event

>   3. Input method says to replace the previous input with nothing
> (matching what X11 compose key does).

The client would get a commit("") event

> Is there anything like this in wayland's input method design?

Yes it is planned.

Regards
Jan Arne


More information about the wayland-devel mailing list