Intelligent Input Bus,简称IBus,是 Unix-like 操作系统下的多语输入法平台。因为它采用了总线(Bus)式的架构,所以命名为Bus。
IBus 的主要目标如下:
在东北亚开源软件(OSS)论坛第3工作小组提出的“输入法引擎服务提供者界面规格”(Specification of IM engine Service Provider Interface)草案里,能实现以Bus为核心的架构被建议采用。SCIM-1.4 的架构并不被看好,因为它是用C++开发的,因此常常会有C++应用二进制接口不符合的情况发生。
从那时起,一些人开始着手开发下一代的输入法平台,像是苏哲领导的IM-Bus,以及胡正的SCIM-2,可惜的是它们的开发进度仍然停滞不前。因此,时任红帽(现任谷歌)的黄鹏开始用Python开发IBus以实现 IM-Bus提出的构想。IBus 并不完全实现东北亚OSS论坛所建议的函数,而是采用D-Bus及Glib来实做。尽管如此,IBus已经开始被OSS社群所接受,FreeBSD以及各大Linux发行版 如Fedora、Ubuntu已经将 IBus 纳入其包库里。在 Fedora 11 里,IBus已经成为默认的多语输入平台。
IBus 是用 C 及 Python 开发的,如此可以避免 C++ ABI transition 问题。IBus主要透过下列三种服务(Service)来提供功能:
IBus 使用D-Bus作 ibus-daemon服务,以及 IM客户端(像是konsole, gedit, firefox)之间的沟通。ibus-daemon 透过接受服务登录,以及发送D-Bus消息来管理服务及IM客户端。
IBus支持 XIM 协议及 Gtk IM 模块以及 Qt IM 模块。
ibus-m17n 利用m17n 架构下的输入法及相对应的图标来达成多语输入。由于m17n架构支持上下文(surrounding tex)t以及输入状态(state)。像是泰文输入法或是其他需要状态的输入法就由ibus-m17n来支持。输入法状态会显示在 IBus panel (语言条)上。
ibus-table 为余钰炜所开发,针对查表型输入法所设计的码表输入引擎。许多输入法,不需要像是 ibus-chewing 或是 ibus-pinyin 之类的复杂选字算法,只需要一个对照表即可运作。许多字形输入法像是仓颉输入法及五笔输入法都由 ibus-table 所支持。
官方发布的码表:
1.可选字由默认的1页6个换成主流的1页9个查找 _page_size = 6
修改为
_page_size = 9