Next: , Previous: , Up: Introduction  


Q1.3.5: Please explain the various input methods in MULE/SXEmacs

Mule supports a wide variety of input methods. There are three basic classes: Lisp implementations, generic platform support, and library interfaces.

Lisp implementations include Quail, which provides table-driven input methods for almost all the character sets that Mule supports (including all of the ISO 8859 family, the Indic languages, Thai, and so on), and SKK, for Japanese. (SKK also supports an interface to an external "dictionary server" process.) Quail supports both typical "dead-key" methods (eg, in the "latin-1-prefix" method, " a produces ä, LATIN SMALL LETTER A WITH DIAERESIS), and the complex dictionary-based phonetic methods used for Asian ideographic languages like Chinese.

Lisp implementations can be less powerful (but they are not perceptibly inefficient), and of course are not portable to non-Emacs applications. The incompatibility can be very annoying. On the other hand, they require no special platform support or external libraries, so if you can display the characters, Mule can input them for you and you can edit, anywhere.

Generic platform support is currently limited to the X Input Method (XIM) framework, but IIIMF (Sun’s Internet-Intranet Input Method Framework) support is extremely desirable. XIM is enabled at build time by use of the ‘--with-xim’ flag to configure. For use of XIM, see your platform documentation. However, normally the input method you use is specified via the ‘LANG’ and ‘XMODIFIERS’ environment variables.

Of course, input skills are portable across most applications. However, especially in modern GUI systems the habit of using bucky bits has fallen into sad disuse, and many XIM systems are poorly configured for use with Emacs. For example, the kinput2 input manager (a separate process providing an interface between Japanese dictionary servers such as Canna and Wnn, and the application) tends to gobble up keystrokes generating Meta characters. This means that to edit while using an XIM input method, you must toggle the input method off every time you want to use M-f. Your mileage may vary.

Library interfaces are most common for Japanese, although Wnn supports Chinese (traditional and simplified) and Korean. There are Chinese and Korean input servers available, but we do not know of any patches for SXEmacs to use them directly. You can use them via IM-enabled terminals, by manipulating the terminal coding systems. We describe only the Japanese-oriented systems here. The advantage of these systems is that they are very powerful, and on platforms where they are available there is typically a wide range of applications that support them. Thus your input skills are portable across applications.

Mule provides built-in interfaces to the following input methods: Wnn4, Wnn6, Canna, and SJ3. These can be configured at build time. There are patches available (no URL, sorry) to support the SKK server, as well. Wnn and SJ3 use the egg user interface. The interface for Canna is specialized to Canna.

Wnn supports Japanese, Chinese and Korean. It is made by OMRON and Kyôto University. It is a powerful and complex system. Wnn4 is free and Wnn6 is not. Wnn uses grammatical hints and probability of word association, so in principle Wnn can be cleverer than other methods.

Canna, made by NEC, supports only Japanese. It is a simple and powerful system. Canna uses only grammar, but its grammar and dictionary are quite sophisticated. So for standard modern Japanese, Canna seems cleverer than Wnn4. In addition, the UNIX version of Canna is free.

SJ3, by Sony, supports only Japanese.

Egg consists of following parts:

  1. Input character Translation System (ITS) layer. It translates ASCII inputs to Kana/PinYin/Hangul characters.
  2. Kana/PinYin/Hangul to Kanji transfer layer. The interface layer to network Kana-Kanji server (Wnn and Sj3).

These input methods are modal. They have a raw (alphabet) mode, a phonetic input mode, and Kana-Kanji transfer mode. However there are mode-less input methods for Egg and Canna. ‘boiled-egg’ is a mode-less input method running on Egg. For Canna, ‘canna.el’ has a tiny boiled-egg-like command, (canna-boil), and there are some boiled-egg-like utilities.

Much of this information was provided by MORIOKA Tomohiko.


Next: , Previous: , Up: Introduction