# Input method

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Related articles

- Fonts#Non-latin scripts
- Locale

## Input method

From Wikipedia:Input method:

  An input method (or input method editor, commonly abbreviated as IME) is an operating system component or program that enables users to generate characters not natively available on their input devices by using sequences of characters (or mouse operations) that are natively available on their input devices. Using an input method is usually necessary for languages that have more graphemes than there are keys on the keyboard.

In very simplified terms, an IME is an application that takes input that you type on your keyboard and outputs them on your screen as non-Latin characters. Many IMEs do this through romanization, the transliteration of non-Latin language sounds into the Latin equivalents that most closely resemble them.

Tip: If parts of the following text show on your screen as gibberish, please make sure you have installed a Japanese font on your system. See Localization/Japanese#Fonts for a non-exhaustive list of available fonts.

As an example, the Japanese written word for sake is `酒`, also written as `さけ`, and romanized as "sake". The IME's role is to act as a middleman between the keyboard and the input fields, so that when we type "sake" it will intercept the keyboard's input, replace "sake" with `酒` or `さけ` (as chosen by users) and type the native characters for us instead of the keys we pressed.

There are IMEs that don't make use of romanization, like Cangjie. For example, the word `酒` in Chinese consists of `氵一⼉口一`. The mapping of Cangjie reveals that they correspond to `水一金田一`, so when users type `emcw`, The IME intercepts the keypresses and turn them into `水一金田`. Upon request, the IME will turn them into `酒`, and type the word on screen.

Note: For the sake of simplicity only the keyboard has been mentioned in the example, but an IME can actually produce native characters via a number of ways and input devices, such as drawing characters by hand using a mouse or a Wacom tablet.

### Input method framework

Most IMEs work as part of an input method framework (commonly abbreviated as IMF), which is an application that allows the user to easily switch between different IMEs. In fact, this is the exact same application that many of us unknowingly use everyday to switch between the different Latin keyboard layouts (e.g. English, Spanish, German, etc).

The most common IMF is IBus (often used in GTK-based environments like GNOME), followed by Scim, Fcitx/Fcitx5 (mostly used in Qt-based environments like KDE) and Uim. Very uncommon ones include Gcin, Nimf and Hime. [1] Additionally, Emacs is a very popular text editor that has its own internal IMF.

See also Wikipedia:List of input methods for Unix platforms.

## List of available input method editors

The following table shows the IMEs for various languages currently available in the Arch repositories and the AUR.

Note: In some cases, multiple AUR packages exist for the same IME. A good example of this is Mozc: as the currently most popular Japanese IME, multiple packagers have attempted over the years to create the "perfect" Mozc package. In the table below, a single Mozc package has been included for each IMF; but this does not imply that these are the only Mozc packages a user should ever consider to install.

The factual accuracy of this article or section is disputed.

Reason: There are a few more IMEs in the repos than what is listed here, especially for Chinese but maybe for other languages too. Again, I'm only including what I'm familiar with or what I could find with a quick scan of the repos and the AUR. For better results we should consult a user who actively uses them. (Discuss in Talk:Input method#)

| Fcitx5 | Fcitx | IBus | Uim | Emacs | Scim | Hime | Gcin | Nimf
--- | --- | --- | --- | --- | --- | --- | --- | --- | ---
Chinese
Rime | fcitx5-rime | fcitx-rime | ibus-rime | – | – | – | – | – | built-in
Sogou | – | fcitx-sogoupinyinAUR | – | – | – | – | – | – | –
Baidu | – | fcitx-baidupinyinAUR | – | – | – | – | – | – | –
Chewing | fcitx5-chewing | fcitx-chewing | ibus-chewing | – | – | scim-chewing | – | – | built-in
Cangjie Sucheng SmartCangjie | fcitx5-table-extra | fcitx-table-extra | ibus-table-chinese | – | – | scim-tablesAUR | – | – | –
Pinyin | fcitx5-chinese-addons | built-in | ibus-pinyin | – | – | scim-pinyinAUR | – | – | built-in
Wubixing | built-in | built-in | ibus-table | built-in | – | scim-tablesAUR | – | – | –
Libpinyin | – | fcitx-libpinyin | ibus-libpinyin | – | – | – | – | – | –
Google Pinyin | – | fcitx-googlepinyin | ibus-googlepinyinAUR | – | – | – | – | – | –
SunPinyin | – | fcitx-sunpinyin | ibus-sunpinyin | – | – | – | – | – | –
Japanese
Mozc | fcitx5-mozc-utAUR | fcitx-mozc-utAUR | ibus-mozc-utAUR | uim-mozc-ut2AUR | emacs-mozc-utAUR | – | – | – | –
Anthy | fcitx5-anthy | fcitx-anthy | ibus-anthy | built-in | – | – | built-in | built-in | built-in
SKK | fcitx5-skk | fcitx-skk | ibus-skk | built-in | – | – | – | – | –
KKC | fcitx5-kkc | fcitx-kkc | ibus-kkc | – | – | – | – | – | –
Korean
Libhangul | fcitx5-hangul | fcitx-hangul | ibus-hangul | built-in | – | scim-hangulAUR | – | – | built-in
Vietnamese
UniKey | fcitx5-unikey | fcitx-unikey | ibus-unikey | – | – | – | – | – | –
Bamboo | – | – | ibus-bambooAUR | – | – | – | – | – | –
Indic
Avro | – | – | ibus-avro-gitAUR | – | – | – | – | – | –
Helakuru | – | – | ibus-helakuruAUR | – | – | – | – | – | –
m17n | fcitx5-m17n | fcitx-m17n | ibus-m17n | – | – | scim-m17nAUR | – | – | –
OpenBangla Keyboard | – | – | openbangla-keyboardAUR | – | – | – | – | – | –
Varnam | – | – | libvarnam-ibus-gitAUR | – | – | – | – | – | –

## Configuration

In order for your desktop environment to properly register an installed input method framework as available and assign it to handle user input, a set of environment variables must be configured accordingly. A good place to do so is `/etc/environment`.

Note: If these variables are not set, both GTK and Qt will attempt to read the system's locale settings to determine which IMF they should use, but this process relies on guesswork and can be very error-prone. For a properly working system, you should always opt to explicitly set these variables yourself.
Tip: If for some reason you wish to completely disable your desktop environment from handling input via an IMF (NOT recommended in GNOME due to tight integration with IBus), then you may either leave these variables unset or, in the case of GTK and Qt, you can replace their values with: `GTK_IM_MODULE=gtk-im-context-simple` and `QT_IM_MODULE=simple`.

The factual accuracy of this article or section is disputed.

Reason: There have been reports (even in this Wiki) that these variables sometimes (or maybe in some specific desktop environments like LXDE) do not work as expected, with users claiming that they had to specify xim instead of their IMF. I'm not really sure if these claims are accurate or when exactly they were reported (it might have been years ago, when the IM frameworks were even more of a mess than they are now). For what it's worth, with regards to Fcitx and IBus at least, I haven't had any problem using them in both GTK and Qt environments and applications by only specifying the variables exactly as laid out below. Maybe for Uim and Scim (which don't seem to have been updated much in recent times) the situation is different, but I wouldn't know. (Discuss in Talk:Input method#)

### Fcitx5

Note: The following also applies to Fcitx.

See Fcitx5 for more information.

    GTK_IM_MODULE=fcitx
    QT_IM_MODULE=fcitx
    XMODIFIERS=@im=fcitx

### IBus

See IBus for more information.

    GTK_IM_MODULE=ibus
    QT_IM_MODULE=ibus
    XMODIFIERS=@im=ibus

### Uim

See Uim for more information.

    GTK_IM_MODULE=uim
    QT_IM_MODULE=uim
    XMODIFIERS=@im=uim

### Emacs

The factual accuracy of this article or section is disputed.

Reason: This needs to be verified. (Discuss in Talk:Input method#)

According to this Fcitx wiki entry, "in some case, including emacs and java. Emacs has a historical bug, that under en_US.UTF-8 or similar locale, it will never use XIM (Though emacs is a gtk app, it use XIM). The only way to walkaround this is to use LC_CTYPE to fix this."

### Scim

See Scim for more information.

    GTK_IM_MODULE=scim
    QT_IM_MODULE=scim
    XMODIFIERS=@im=scim

## See also

- Fedora:I18N/InputMethods
- Gentoo:Input methods
- Wikipedia:Input method

Categories:

- Localization
- Input methods

Hidden category:

- Pages or sections flagged with Template:Accuracy