Smart Common Input Method

Last updated
Smart Common Input Method
Stable release
1.4.18 / July 31, 2017;7 years ago (2017-07-31)
Repository
Written in C
Type Input method
License GNU GPL, GNU LGPL
Website github.com/scim-im/scim

The Smart Common Input Method (SCIM) is a platform for inputting more than thirty languages on computers, including Chinese-Japanese-Korean style character languages (CJK), and many European languages. It is used for POSIX-style operating systems including Linux and BSD. Its purposes are to provide a simple and powerful common interface for users from any country, and to provide a clear architecture for programming, so as to reduce time required to develop individual input methods.

Contents

Goals

The main goals of the SCIM project include:

Some of the input methods managed by SCIM SCIM.Input Method list.png
Some of the input methods managed by SCIM

Architecture

SCIM was originally written in the C++ language but has moved to pure C since 1.4.14. [1] It abstracts the input method interface to several classes and attempts to simplify the classes and make them more independent from each other. With the simpler and more independent interfaces, developers can write their own input methods in fewer lines of code.

SCIM is a modularized IM platform, and as such, components can be implemented as dynamically loadable modules, thus can be loaded during runtime at will. 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 environments without rewrite or recompile of the IMEngine modules, reducing the compile time or development time of the project.

SCIM is a high-level library, similar to XIM or IIIMF; however, SCIM claims to be simpler than either of those IM platforms. SCIM also claims that it can be used alongside XIM or IIIMF. SCIM can also be used to extend the input method interface of existing application toolkits, such as GTK+, Qt and Clutter via IMmodules. [2]

SKIM is a separate project aimed at integrating SCIM more tightly into the K Desktop Environment, by providing a GUI panel (named scim-panel-kde as an alternative to scim-panel-gtk), a KConfig config module and setup dialogs for itself and the SCIM module libscim. It also has its own plugin system which supports on-demand loadable actions.

t-latn-pre and t-latn-post are two input methods that provide an easy way for composing accented characters, either by preceding regular characters with diacritic marks (in the case of t-latn-pre), or by adding the marks subsequently (in the case of t-latn-post). Their main advantage is the large number of composed characters from different languages that can be entered this way, rendering it unnecessary to install, for example, separate keyboard layouts. [3] These input methods are available for SCIM through the M17n library.

See also

Related Research Articles

<span class="mw-page-title-main">Regular expression</span> Sequence of characters that forms a search pattern

A regular expression, sometimes referred to as rational expression, is a sequence of characters that specifies a match pattern in text. Usually such patterns are used by string-searching algorithms for "find" or "find and replace" operations on strings, or for input validation. Regular expression techniques are developed in theoretical computer science and formal language theory.

In computing, cross-platform software is computer software that is designed to work in several computing platforms. Some cross-platform software requires a separate build for each platform, but some can be directly run on any platform without special preparation, being written in an interpreted language or compiled to portable bytecode for which the interpreters or run-time packages are common or standard components of all supported platforms.

In computer programming, standard streams are preconnected input and output communication channels between a computer program and its environment when it begins execution. The three input/output (I/O) connections are called standard input (stdin), standard output (stdout) and standard error (stderr). Originally I/O happened via a physically connected system console, but standard streams abstract this. When a command is executed via an interactive shell, the streams are typically connected to the text terminal on which the shell is running, but can be changed with redirection or a pipeline. More generally, a child process inherits the standard streams of its parent process.

RTLinux is a hard realtime real-time operating system (RTOS) microkernel that runs the entire Linux operating system as a fully preemptive process. The hard real-time property makes it possible to control robots, data acquisition systems, manufacturing plants, and other time-sensitive instruments and machines from RTLinux applications. The design was patented. Despite the similar name, it is not related to the Real-Time Linux project of the Linux Foundation.

<span class="mw-page-title-main">Input method</span> Method for generating non-native characters on devices

An input method is an operating system component or program that enables users to generate characters not natively available on their input devices by using sequences of characters that are available to them. Using an input method is usually necessary for languages that have more graphemes than there are keys on the keyboard.

In computer programming, glob patterns specify sets of filenames with wildcard characters. For example, the Unix Bash shell command mv *.txttextfiles/ moves all files with names ending in .txt from the current directory to the directory textfiles. Here, * is a wildcard and *.txt is a glob pattern. The wildcard * stands for "any string of any length including empty, but excluding the path separator characters ".

The International Alphabet of Sanskrit Transliteration (IAST) is a transliteration scheme that allows the lossless romanisation of Indic scripts as employed by Sanskrit and related Indic languages. It is based on a scheme that emerged during the 19th century from suggestions by Charles Trevelyan, William Jones, Monier Monier-Williams and other scholars, and formalised by the Transliteration Committee of the Geneva Oriental Congress, in September 1894. IAST makes it possible for the reader to read the Indic text unambiguously, exactly as if it were in the original Indic script. It is this faithfulness to the original scripts that accounts for its continuing popularity amongst scholars.

<span class="mw-page-title-main">GObject</span> Free software library

The GLib Object System, or GObject, is a free software library providing a portable object system and transparent cross-language interoperability. GObject is designed for use both directly in C programs to provide object-oriented C-based APIs and through bindings to other languages to provide transparent cross-language interoperability, e.g. PyGObject.

<span class="mw-page-title-main">Comparison of command shells</span>

A command shell is a command-line interface to interact with and manipulate a computer's operating system.

Tise is a Tibetan input method utility for Windows XP, Windows Vista and Windows 7 created by Grigory Mokhin. The name of the program refers to the native name of Mount Kailash in Tibet.

OpenVanilla (OV) is an open-source text-entry and processing architecture designed to enhance the text-entry experience across different operating systems. Initially developed to address the need for alternative input methods on Applesystems and cater to Windows users transitioning to macOS, OV has since expanded its compatibility to include Microsoft Windows and Linux/FreeBSD environments through SCIM integration.

uim is a multilingual input method framework. Applications can use it through so-called bridges.

Dynamic loading is a mechanism by which a computer program can, at run time, load a library into memory, retrieve the addresses of functions and variables contained in the library, execute those functions or access those variables, and unload the library from memory. It is one of the three mechanisms by which a computer program can use some other software within the program; the others are static linking and dynamic linking. Unlike static linking and dynamic linking, dynamic loading allows a computer program to start up in the absence of these libraries, to discover available libraries, and to potentially gain additional functionality.

<span class="mw-page-title-main">Vala (programming language)</span> Programming language

Vala is an object-oriented programming language with a self-hosting compiler that generates C code and uses the GObject system.

The X Input Method was the original input method framework for the X Window System.

<span class="mw-page-title-main">GIO (software)</span>

GIO is a library, designed to present programmers with a modern and usable interface to a virtual file system. It allows applications to access local and remote files with a single consistent API, which was designed "to overcome the shortcomings of GnomeVFS" and be "so good that developers prefer it over raw POSIX calls."

<span class="mw-page-title-main">Intelligent Input Bus</span> Framework for multilingual input

The Intelligent Input Bus is an input method (IM) framework for multilingual input in Unix-like operating-systems. The name "Bus" comes from its bus-like architecture.

<span class="mw-page-title-main">Chewing (Input Method)</span>

The Chewing (酷音) input method is an intelligent Zhuyin input method. It is one of the most popular input methods among Traditional Chinese Unix users.

<span class="mw-page-title-main">API</span> Software interface between computer programs

An application programming interface is a way for two or more computer programs or components to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build or use such a connection or interface is called an API specification. A computer system that meets this standard is said to implement or expose an API. The term API may refer either to the specification or to the implementation. Whereas a system's user interface dictates how its end-users interact with the system in question, its API dictates how to write code that takes advantage of that system's capabilities.

<span class="mw-page-title-main">Fcitx</span>

Fcitx stands for Flexible Context-aware Input Tool with eXtension support, is an input method framework with extension support for the X Window System that supports multiple input method engines including Pinyin transcription, table-based input methods, fcitx-chewing for Traditional Chinese, fcitx-keyboard for layout-based ones, fcitx-mozc for Japanese, and fcitx-hangul for Korean.

References

  1. A new stable version has been released, the main change is the incorporation of scim-bridge. / scim News / News / SCIM - SCIM
  2. IMmodules Archived 2007-08-04 at the Wayback Machine
  3. An overview of the available characters can be found at the M17n library website: "The m17n Library". Archived from the original on 2008-11-22. Retrieved 2009-01-19.