Wayland Input Methods
Michael Hasselmann
Wayland Input Methods Wayland? wayland.freedesktop.org
Wayland Input Methods Input methods?
Wayland Input Methods Input methods? (first time presenting in front of target audience!)
Wayland Input Methods Input methods → text input
traditional use-cases mobile & embedded from desktop use-cases (mouse + hwkb) (touch display)
Wayland Input Methods Input methods → text input
maliit.org
Wayland Input Methods MeeGo Harmattan Nokia N9 ships Development starts
Feb. 2010 Feb. 2011 June Oct. Feb. 2012
Code made available on gitorious Maliit 0.80
Dedicated infrastructure
Wayland Input Methods Maliit 0.90 Maliit added to (unstable) OpenEmbedded's meta layer Jolla demos Canonical contributes Plasma Active SailfishOS, 250+ patches to chooses Maliit uses Maliit Maliit Keyboard
Mar. 2012 May 2012 Aug. 2012 Nov. 2012 Mar. 2013
Apr. 2012 Jul. 2012 Oct. 2012 Feb. 2013 Apr. 2013 OLPC chooses Wayland input Canonical uses Maliit Maliit methods work starts, for its MWC demos based on Maliit API Maliit 0.99 “Road to 1.0”: (unstable) Maliit to target Qt5/QtQuick2
Wayland Input Methods GNOME joins the Wayland party! (Still) focused on desktop → good environment to test completeness
live.gnome.org/Wayland/Gaps
Wayland Input Methods Wayland 1.0: No input methods
(planned for inclusion in Wayland 1.2)
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 protocol/input_method.xml
examples: interfaces: clients/keyboard.c input_method_context, clients/editor.c input_method, input_panel, clients/weston-simple-im.c input_panel_surface
API (generated from XML): requests: input-method-client- commit_string, protocol.h preedit_string, input-method-server- preedit_styling, keysym … protocol.h text-client-protocol.h events: text-server-protocol.h surrounding_text, reset, content_type, invoke_action, commit, …
Wayland Input Methods One protocol, three interfaces
UI toolkits Weston Input methods protocol/text.xml protocol/input_method.xml interfaces: examples: interfaces: text_model, clients/keyboard.c input_method_context, text_model_factory clients/editor.c input_method, input_panel, clients/weston-simple-im.c input_panel_surface requests: set_surrounding_text, API (generated from XML): requests: activate, deactivate, input-method-client- commit_string, set_content_type, … protocol.h preedit_string, input-method-server- preedit_styling, keysym … events: protocol.h commit_string, text-client-protocol.h events: preedit_string, text-server-protocol.h 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) wiki.maliit.org/Wayland_Input_Method_System_Proposal
Wayland Input Methods Weston Keyboard & EFL
Wayland Input Methods Maliit Keybord & EFL
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 (unmerged) code @ github.com/openismus
Wayland Input Methods ?
Wayland Input Methods