Am 2017-04-06 19:16, schrieb Eike Hein:
Hi,

In the aftermath of D5301, Martin asked to compile a document on the
requirements for complex text input in Plasma, especially with the
opportunities provided by the Wayland transition. It makes sense to
share this document with all of you, to

Thanks for the nice write down.

* KWin is smart enough to do cool things like switch keyboard
  layouts automatically per virtual desktop or even window

that's actually also a feature of the keyboard daemon we have on X11. Only on wayland KWin takes care of it.

= The situation on Wayland =

Currently, only ibus works on Wayland. Input method popups are not
positioned correctly, but otherwise things work. The situation is
just as good or bad as on X11.

Sharing a bit more about state of Wayland:

There is the text-input protocol which KWin supports and uses for virtual keyboard. This means we already have the possibility to do things like text input, text prediction, cursor moving, styling hints (not yet implemented as virt keyboard doesn't support it), etc. etc. out of the box with Qt applications. We know whether the application supports it. We know the position of the text field and much more. For those interested: relevant code is in KWin/virtualkeyboard.cpp

Ideally we would build up on this. We must not (!) specify an input plugin for Qt apps as that would break the virtual keyboard. And even if others give up on convergence I still think it's important to support it and have it as a target.

So for input methods KWin would have to provide the UI interaction. Of course I do not want to rebuild such a stack but would prefer to be able to hook into an existing - I hope that's possible. Maybe a similar approach as to how virtual keyboard works: kwin just emulates to the qtvirtualkeyboard like if it were in application. So maybe KWin could load one of the plugins and interact with them as a proxy for the application and just forward the result through the text input interface.

What I could imagine is that we start with emoji support. Might sound weird but is a simplified use case to just "play" with it and experiment. We could setup a global shortcut (like the one in GNOME), pop up a UI with the emoji selection and go through the text input protocol to send the emoji into the application.

Unfortunately text input in Wayland is weird as there are two competing protocol versions and Qt has one of them. There is the zwp_text_input_v1 which is part of Wayland-protocols and zwp_text_input_v2 which is part of Qt. It is not upstreamed, but uses upstream naming conventions. Which will result in a horrible mess once upstream introduces a zwp_text_input_v2. KWin supports both versions at the same time, but it makes everything more complex and we currently can only assume that it works correctly with Qt apps. The GTK version we support on Wayland neither supports v1 nor v2. For the newer GTK versions which we do not support yet I do not know. Also it leaves out Xwayland application but there a bridge to one of the existing X11 solutions is thinkable.

Cheers
Martin

Reply via email to