Uim is a multilingual input method library, whose goal is to be a flexible development platform and useful user environment for input methods of all languages.
Features of uim
There are some input method frameworks in the world. What is the feature of uim and how it is different from other input method frameworks?
uim works in many environments, including of course general desktop systems such as GNOME or KDE. It also supports Linux Zaurus, Mac OS X.
|uim on Linux Zaurus||uim on MacOS X|
Just a library
Many input method frameworks such as XIM are implemented as client/server systems. But uim is a library, not a server.
Most users don't need an input method system at all or only need simple, table-based converters. Such users don't require or are unwilling to install a complex input method system, so we want to keep uim simple.
What applications can I use with uim?
- All X applications. (You can use them with uim-xim.)
- Gtk+ applications such as gedit. There are two way to use uim. Through uim gtk-immodule directly, or through uim-xim. We recommend using uim through gtk-immodule directly.
- All Qt applications. There are two ways to use uim, through XIM or Qt-immodule. If you want to uim with Qt-immodule with old Qt3, you need to use a patch.
- All console applications. (You can use them with uim-fep.)
- Emacs (You can use it with uim.el).
- All Mac OS X applications. (You can use them with MacUIM.)
|GTK+ 2 applications||uim-xim, uim-gtk2|
|GTK+ 3 applications||uim-xim, uim-gtk3|
|Qt 3 applications||uim-xim, uim-qt31|
|Qt 4 applications||uim-xim, uim-qt4|
|Other X applications||uim-xim|
|Mac OS X applications||MacUIM|
uim-xim is not recommended due to its feature limitation
- requires a patch
What Languages and Input modules can I use with uim?
- New Pinyin (Simplified)
- Pinyin (Unicode)
- Pinyin (Traditional)
- WuBi 86
- Chewing (Traditional)(https://github.com/uim/uim-chewing)
- Hangul (2-beol)
- Hangul (3-beol)
- Hangul (Romaja)
- Emacs-style Latin characters input
And you can input many languages by using uim-m17nlib, see (http://www.m17n.org/m17n-lib-en/)
Why is uim written in C?
We can ensure a stable ABI, which is crucial to uim since it's a basal library. Particularly, maintaining an ABI in C++ is sometimes difficult.
Why does uim have an embedded scheme interpreter?
Because C is too primitive to work with directly. Scheme lets us be more productive.