SCIM
From Wikipedia, the free encyclopedia
- For other uses, see SCIM (disambiguation).
The Smart Common Input Method platform (SCIM), is an input method platform supporting more than thirty languages (CJK and many European languages) for POSIX-style operating systems including Linux and BSD.
SCIM is a development platform to make Input Method (IM) developer life easier. It honors a very clear architecture and provides a pretty simple and powerful programming interface.
SCIM is a common IM platform written in C++. It abstracts the input method interface into several classes and tries to make these classes as simple and independent as possible. With such simple interfaces, developers can easily write their own input method in a few lines code.
SCIM is highly modularized: most components can be implemented as dynamically loadable modules, thus can be loaded at runtime as you wish. For example, input methods written for SCIM could be IMEngine modules, and users can use such IMEngine modules combined with different interface modules (FrontEnd) in different environment without rewrite/recompile the IMEngine modules.
SCIM is a higher level library comparing with XIM or IIIMF, but has much simpler interface. And it can work with XIM or even IIIMF. SCIM can also support client specific input method interface, like gtk2 immodule and qt immodule.
Key features of SCIM:
- Fully Object Oriented structure written in C++.
- Highly modularized.
- Very flexible architecture, can be used as a dynamically loaded library as well as a C/S input method environment.
- Simple programming interface.
- Fully i18n support with UCS-4/UTF-8 encoding.
- Include many handy utility functions to speedup the development.
- GUI Panel with very rich features.
- Unified configuration framework.
Goals of SCIM:
- Act as an unified frontend for current available input method libraries. Currently bindings to uim and m17n library are available.
- Act as a language engine of IIIMF input method framework.
- Provide as many native IMEngines as possible.
- Support as many input method protocol/interface as possible.
- Support as many operating systems as possible.