Input methods: Frameworks and overall integration

Registered by Thomas Voß

Input methods are an essential part of the overall user experience of Ubuntu, across all form factors. For entering text in cases where no physical keyboard is attached to a device, or in cases where a physical keyboard is not sufficient to enter text in certain languages, the system needs to provide the user with an on-screen keyboard. Multiple frameworks are available for handling input methods in general, and OSKs in particular, and this blueprint is a starting point for discussing which framework(s) should be supported in Ubuntu, and how to integrate them with the system.

Blueprint information

Status:
Not started
Approver:
Sebastien Bacher
Priority:
High
Drafter:
Thomas Voß
Direction:
Approved
Assignee:
None
Definition:
Discussion
Series goal:
Accepted for saucy
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

Questions to be answered for the different input method frameworks:
(1.) How about testability? How can we test a certain selection of input method frameworks and a predefined set of OSK? How to make sure that the test state is well-defined?
(2.) Quality of the input method framework implementation? Test coverage? Documentation?
(3.) External dependencies of the input method framework
(4.) From a user's perspective, what's the pros and cons of the input method framework
(5.) Project health and trajectory, especially considering other distros & shared maintainership
(6.) Has the project been deployed on a mobile device before?
(7.) How can we integrate an input-method framework with a display-server mitigated model of invoking input methods? Shouldn't be a problem according to Yichao Yu.
(8.) What about security?
(9.) How to describe app-specific requirements on an OSK?

@IBus: What is the development trajectory regarding tight GNOME integration. What are the implications regarding shell architecture, keyboard layouts and in general input handling?

In general, to support X legacy apps, we need a way to map a surface coordinate to a global coordinate.

(?)

Work Items

Work items:
* [seb128, lool] Evaluate IBus with respect to questions on whiteboard: TODO
* [seb128, lool] Evaluate FCITX with respect to questions on whiteboard: TODO
* [tvoss] Evaluate Wayland input method proposal: TODO
* Evaluate how to handle unredirected fullscreen windows: TODO
* Evaluate how to expose input methods to applications via the platform API: TODO
* Evaluate how to support legacy X applications: TODO