Wayland Input Methods
Michael Hasselmann Openismus GmbH
Wayland Input Methods Input methods?
Wayland Input Methods Input method developers want a unified architecture!
(And UI toolkits don't want to bother too much …)
Wayland Input Methods No protocol evolution in XIM https://mail.gnome.org/archives/wm-spec- list/2007-August/msg00025.html
Wayland Input Methods One display server, many platforms
Shell Extensions Applications
Shells & Window Managers Toolkits
Gnome Plasma/ Qt Quick Unity ST/Mx Elementary Shell Plasma Active Components
Mutter Compiz KWin Qt/QML GTK+ Clutter Evas/Edje SDL
Display Server
Xorg Weston
Kernel
Much better, more detailed: http://blog.mecheye.net/2012/06/the-linux-graphics-stack/ (Jasper „magcius“ St. Pierre)
Wayland Input Methods Wayland 1.0: No input methods
(but lots of crazy talk @ FOSDEM 2012)
Wayland Input Methods One protocol, three interfaces
Input methods
protocol/input_method.xml
interfaces: input_method_context, input_method, input_panel, input_panel_surface
requests: commit_string, preedit_string, preedit_styling, keysym …
events: surrounding_text, reset, content_type, invoke_action, commit, …
Wayland Input Methods One protocol, three interfaces
Weston Input methods
examples: protocol/input_method.xml clients/keyboard.c clients/editor.c interfaces: clients/weston-simple-im.c input_method_context, input_method, input_panel, generated headers: input_panel_surface input-method-client- protocol.h requests: input-method-server- commit_string, protocol.h preedit_string, text-client-protocol.h preedit_styling, keysym … text-server-protocol.h events: surrounding_text, reset, content_type, invoke_action, commit, …
Wayland Input Methods One protocol, three interfaces
UI toolkits Weston Input methods
protocol/text.xml examples: protocol/input_method.xml clients/keyboard.c interfaces: clients/editor.c interfaces: text_model, clients/weston-simple-im.c input_method_context, text_model_factory input_method, input_panel, API (generated from XML): input_panel_surface requests: input-method-client- set_surrounding_text, protocol.h requests: activate, deactivate, input-method-server- commit_string, set_content_type, … protocol.h preedit_string, text-client-protocol.h preedit_styling, keysym, … events: text-server-protocol.h commit_string, events: preedit_string, surrounding_text, reset, preedit_styling, keysm, … content_type, invoke_action, commit, …
Wayland Input Methods Architecture Overview
Application (Qt)
Application (EFL)
Wayland & Wayland & Application (GTK+) Wayland text Wayland text Interface Interface (text_model) (text_model)
Weston Input Method
Wayland & Wayland input method Interfaces (input_method_context, input_panel_surface)
https://wiki.maliit.org/Wayland_Input_Method_System_Proposal Wayland Input Methods Weston Keyboard & EFL
Wayland Input Methods Maliit Keybord & EFL
Wayland Input Methods Sub-surfaces (in X11: transient hints)
Wayland Input Methods Sub-surfaces & input methods
Wayland Input Methods IPC with sync calls
application
compositor
input method
Wayland Input Methods IPC + sequence numbers application requests: input method requests: activate(n) set_surrounding_text(n) (idle) set_cursor_position(n) commit(n) preedit_string(n) reset(n+1) commit_string(n) reset(n+1) commit_string(n+1)
Wayland Input Methods Videos & more details @ blog.jpetersen.org
Wayland Input Methods ?
Wayland Input Methods