< Uim

Some of the terms associated specifically with input methods in general and uim in particular are not very common and, therefore, will be new to many users. Below is a short glossary of terms to help clarify this documentation.


A bridge is a glue code between applications and uim. These bridges divert character input (e.g. from keypresses) to uim where it is translated into different characters according to some predefined rules.

Because applications handle input differently these require specialized bridges. See the manual for description of available bridges.


A candidate is a word which can be substituted for the current pre-edit.

Frequently a pre-edit will have several candidate words to which it can be converted. The word is then entered phonetically and candidate characters listed for the user to choose from.

Some input methods don't use conversion candidates. Byeoru and PRIME are examples of these.


Commit refers to the string of selected candidates which uim (libuim, to be precise) finally passes to the application.

Input contextEdit

Input context is a unit of inputting.

TODO: This means nothing to me.

Normally, each text widget has one context. But in some applications, multiple text widgets share one input context. (e.g. Mozilla.)

Input context is sometimes referred to simply as "context".

Input method frameworkEdit

An input method framework is software that receives input from an application, and delegates it to an input method for modification before being passed back to the application. Uim is an input method framework.

Input methodEdit

An input method is software that modifies input according to certain rulesets. An input method can be interactive, allowing the user to choose one of a list of modifications. See the introduction for a list of input methods that are compatible with uim.


A plugin is a mechanism to extend uim 's Scheme interpreter with C. Mainly used to write a glue code between uim and input methods.

TODO: What is this exactly? examples?


A pre-edit is a string that has been typed, but not yet been passed to an application.

The pre-edit is displayed (usually at the cursor position) but formatted in some way (typically with underline or reversed background colour) to inform the user about the input state of the input context.

In the case of some input methods (such as those for Latin and Korean scripts) the pre-edit gets converted and committed as soon as the final character that determines the result is entered. In others (such as those for Chinese and Japanese), where the input does not uniquely determine the outcome, a list of candidates is provided for the user to choose from.

A long pre-edit may be broken down into segments for more convenient conversion.


A pre-edit is broken down into segments when the pre-edit contains one or more sub-strings that can have their own list of candidates. Each segment is then operated on individually.

Essentially, a segment is the smallest part of a pre-edit that could be a pre-edit and yield results. Since candidate combinations grow roughly exponentially with pre-edit length, breaking them down into segments makes the selection of the desired candidate much faster.