Wayland Input Methods Michael Hasselmann Openismus GmbH Wayland - - PowerPoint PPT Presentation

wayland input methods
SMART_READER_LITE
LIVE PREVIEW

Wayland Input Methods Michael Hasselmann Openismus GmbH Wayland - - PowerPoint PPT Presentation

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


slide-1
SLIDE 1

Wayland Input Methods

Wayland Input Methods

Michael Hasselmann Openismus GmbH

slide-2
SLIDE 2

Wayland Input Methods

Input methods?

slide-3
SLIDE 3

Wayland Input Methods

Input method developers want a unified architecture!

(And UI toolkits don't want to bother too much …)

slide-4
SLIDE 4

Wayland Input Methods

No protocol evolution in XIM

https://mail.gnome.org/archives/wm-spec- list/2007-August/msg00025.html

slide-5
SLIDE 5

Wayland Input Methods

One display server, many platforms

Kernel Display Server Toolkits Shells & Window Managers

Gnome Gnome Shell Shell Mutter Mutter Unity Unity Compiz Compiz Plasma/ Plasma/ Plasma Active Plasma Active KWin KWin Qt/QML Qt/QML Qt Quick Qt Quick Components Components GTK+ GTK+ ST/Mx ST/Mx Clutter Clutter Xorg Xorg Evas/Edje Evas/Edje Elementary Elementary SDL SDL Weston Weston

Applications Shell Extensions

Much better, more detailed: http://blog.mecheye.net/2012/06/the-linux-graphics-stack/ (Jasper „magcius“ St. Pierre)

slide-6
SLIDE 6

Wayland Input Methods

Wayland 1.0: No input methods

(but lots of crazy talk @ FOSDEM 2012)

slide-7
SLIDE 7

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, …

slide-8
SLIDE 8

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, …

Weston

examples: clients/keyboard.c clients/editor.c clients/weston-simple-im.c generated headers: input-method-client- protocol.h input-method-server- protocol.h text-client-protocol.h text-server-protocol.h

slide-9
SLIDE 9

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, …

Weston

examples: clients/keyboard.c clients/editor.c clients/weston-simple-im.c API (generated from XML): input-method-client- protocol.h input-method-server- protocol.h text-client-protocol.h text-server-protocol.h

UI toolkits

protocol/text.xml interfaces: text_model, text_model_factory requests: set_surrounding_text, activate, deactivate, set_content_type, … events: commit_string, preedit_string, preedit_styling, keysm, …

slide-10
SLIDE 10

Wayland Input Methods

Architecture Overview

https://wiki.maliit.org/Wayland_Input_Method_System_Proposal Application (EFL) Application (EFL) Weston Weston Application (GTK+) Application (GTK+) Application (Qt) Application (Qt)

Wayland & Wayland text Interface (text_model) Wayland & Wayland text Interface (text_model)

Input Method Input Method

Wayland & Wayland input method Interfaces (input_method_context, input_panel_surface)

slide-11
SLIDE 11

Wayland Input Methods

Weston Keyboard & EFL

slide-12
SLIDE 12

Wayland Input Methods

Maliit Keybord & EFL

slide-13
SLIDE 13

Wayland Input Methods

Sub-surfaces

(in X11: transient hints)

slide-14
SLIDE 14

Wayland Input Methods

Sub-surfaces & input methods

slide-15
SLIDE 15

Wayland Input Methods

IPC with sync calls

input method application compositor

slide-16
SLIDE 16

Wayland Input Methods

IPC + sequence numbers

input method requests: (idle) preedit_string(n) commit_string(n) reset(n+1) commit_string(n+1) application requests: activate(n) set_surrounding_text(n) set_cursor_position(n) commit(n) reset(n+1)

slide-17
SLIDE 17

Wayland Input Methods

Videos & more details @ blog.jpetersen.org

slide-18
SLIDE 18

Wayland Input Methods

?