Input methods: Frameworks and overall integration

Registered by Thomas Voß on 2013-03-20

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