# Intelligent Input Bus

El Intelligent Input Bus (Bus de Entrada Inteligente, frecuentemente abreviado como iBus) es un entorno de trabajo que permite un método de entrada (editor de método de entrada, en inglés: Input Method Editor, abreviado IME) para la internacionalización y localización del software que se ejecuta en un sistema operativo tipo *nix. El nombre "Bus" proviene de su parecido con la arquitectura de tipo canal, la cual transfiere datos entre los componentes (hardware) de una computadora.

## Objetivos

Los principales objetivos del proyecto IBus incluyen:
* Proporcionar interfaces de usuario de método de entrada con todas las funciones y que sean fáciles de usar.
* Emplear medidas de autenticación para mejorar la seguridad.
* Proporcionar una interfaz y una biblioteca universales para los desarrolladores de métodos de entrada.
* Adaptarse a las necesidades de los usuarios de las diferentes regiones y costumbres.

## Motivaciones

El borrador "Specification of IM engine Service Provider Interface", documento del Northeast Asia OSS Forum (Grupo de Trabajo 3), recomienda arquitecturas de estructura de métodos de entrada centradas en bus con una implementación de bus (similar a dbus). De acuerdo con la especificación, SCIM-1.4 no se considera adecuado para un desarrollo posterior, ya que se desarrolla en C++, que normalmente causa problemas de transición de en la interfaz binaria de aplicaciones (ABI).
Desde entonces, se iniciaron proyectos exitosos como IM-BUS (dirigido por James Su) y SCIM-2 (liderado por Zheng Hu). Sin embargo, ambos proyectos están suspendidos. Por lo tanto, Huang Peng de Red Hat estableció el proyecto IBus para probar la idea de IM-BUS utilizando Python, D-Bus y GLib en lugar de implementar las funciones recomendadas por el foro CJK OSS. A pesar de ello, IBus ya ha ganado la aceptación de la comunidad, y FreeBSD y muchas distribuciones de GNU/Linux como Fedora y Ubuntu ya tienen IBus en sus repositorios de paquetes. IBus se convirtió en el nuevo marco de métodos de entrada por defecto en Fedora 11, y reemplazó a SCIM en Ubuntu 9.10.

## Arquitectura

IBus está desarrollado en C y Python, evitando así el problema de transición de la ABI C++ de SCIM (en versiones anteriores a 1.4.14 de SCIM).
IBus proporciona la mayor parte de su funcionalidad a través de servicios. Hay tres tipos de servicios:
* Motor del método de entrada (IME): el método actual.
* Configuración: maneja la configuración para IBus y otros servicios como IME.
* Panel: interfaz de usuario como la barra de idiomas y la tabla de selección de candidatos.
IBus emplea D-Bus para comunicarse entre ibus-daemon, servicios y clientes de mensajería instantánea como emuladores de terminal, editores y navegadores web. ibus-daemon gestiona todos los clientes y servicios recibiendo registros de los servicios y enviando mensajes D-Bus a los servicios correspondientes y al cliente de mensajería instantánea.
Implementa el protocolo XIM y dispone de módulos de métodos de entrada GTK+ (ahora conocido como GTK) y Qt.

## Características

* Carga/descarga de motores bajo demanda.
* Soporte en la bandeja de sistema.
* Funciona con XKB.
* Inmediatamente aplica cambios de configuración.
* Proporciona enlazado de librerías en lenguaje C y Python.

## Complementos y motores disponibles para el método de entrada

* ibus-anthy: un complemento para Anthy, un IME para el idioma japonés.
* ibus-cangjie: un motor para el método de entrada de caracteres Cangjie
* ibus-chewing: un IME fonético chino avanzado para usuarios de Zhuyin. Se basa en libChewing.
* ibus-hangul: un IME para el idioma coreano.
* ibus-libpinyin: un nuevo IME para el idioma chino para personas que utilizan el Pinyin, fue diseñado por Huang Peng and Peng Wu.
* ibus-ibus-libzhuyin: un motor para el método de entrada Zhuyin ("bopomofo") (una alternativa al ibus-chewing).
* ibus-m17n: un IME para m17n el cual permite la introducción de muchos lenguajes utilizando los métodos de entrada desde mn-17-db. Vea detalles en la sección #ibus-m17n.
* ibus-mozc: un complemento para IME japonés llamado "mozc" y desarrollado por Google.
* ibus-pinyin: un IME fonético chino avanzado para usuarios de Pinyin. Desarrollado por Huang Peng (autor principal de Ibus) y también con muchas características avanzadas tales como corrector ortográfico para el idioma inglés
* ibus-table: un IME que aloja o acoge métodos de entrada basados en tablas. Vea detalles en #ibus-table.
* ibus-unikey: un IME para introducción de caracteres en idioma vietnamita.

### ibus-m17n

El ibus-m17n es un IME que utiliza métodos de entrada e iconos correspondientes en la base de datos m17n. A diferencia de la ibus-table, que admite tablas planas, los métodos de entrada m17n también admiten estados, cuyas etiquetas se muestran en el panel IBus (barra de idiomas). Los métodos de entrada M17n también soportan el texto circundante, por lo tanto, lenguajes como el idioma tailandés y varios IM como el Zuyin plano que requieren esta característica son soportados a través de ibus-m17n.

### ibus-table

El ibus-table, desarrollado por Yu Wei Yu, es un IME que carga tablas de métodos de entrada que no necesitan una lógica complicada para seleccionar palabras. Muchos métodos de entrada chinos basados en estructuras como Cangjie y Wubi son soportados de esta manera.
Tablas del MI publicadas oficialmente:
* latex: Introduce caracteres especiales usando la sintaxis LaTeX. Incluido en el paquete ibus-table.
* compose: introducción de caracteres por medio de una letra especial y un signo diacrítico. Incluido en el paquete ibus-table.
* Array30: tablas IM chinas.
* Cangjie: tablas IM chinas para Cangjie 3 y Cangjie 5.
* Erbi: tabla IM china Er-bi.
* Wubi: tabla IM china para Wubi.
* Yong: tabla IM china para YongMa.
* ZhengMa: tabla IM china para método Zhenga.