Wayland Input Methods
Total Page:16
File Type:pdf, Size:1020Kb
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.