Input methods and Linux

Hi All,

I’ll add here some overall information on input methods in Linux,
and relating issues.

The X.Org server provides the X Input Method (XIM) to support most
non-complex scripts,
including Latin, Greek, Cyrillic, and many other scripts with small
set of alphabets.
It provides the keyboard layouts with the xkeyboard-config project,
The keyboard layouts generally map what characters you get when you
press a key as is,
with Shift, with AltGr or with AltGr and Shift.
You can also assign ‘dead keys’ to these keys and there is a table
that maps the sequences
to the Unicode character(s) that are produced.

When you use an application that is based on a toolkit such as GTK+ or QT,
there are some extra features.
For QT, afaik, it does not provide extra input methods, and it uses
what it offered by X.Org,
or it relies on SCIM (for complex scripts, such as CJK).
In GTK+, there are several options

  1. It can simply use what is offered by XIM (similarly to QT)
  2. It can use the ‘GTK+ IM’ (default) which effectively duplicates
    found in X.Org. Specifically, it duplicates the compose sequences
    (dead keys, compose key).
    At the same time, since it is an IM, it supports the Ctrl+Shift+U + hex feature
    to input arbitrary Unicode characters.
  3. GTK+ also comes with other specialised Input Methods for Ethiopian and Thai.
    As far as I know, these GTK+ input methods are actually used in Linux
    when you select the Ethiopian or Thai Language Support.
    These are few special cases.
  4. There is a GTK+ IM that allows GTK+ applications to use SCIM (for CJK).
    A similar IM is also available for use by QT applications. With these,
    both GTK+ and QT give full control to SCIM for complex input.
    SCIM has the potential to be used for any layout, however in practice
    it is only used for complex input.

Finally, there is a new input method framework called iBus
that is actively developed and has the aim to replace SCIM. I expect
the keyboard layouts
to stay the same.