Uim is an input method module library which supports various scripts and can
act as a front end for a range of input methods, including Anthy, Canna,
PRIME, or SKK (for Japanese), Pinyin (for Chinese), Byeoru (for Korean), and
M17n (for many other languages). Most of its functions are implemented in
Scheme, so it's very simple and flexible.