iBus

多語言輸入框架

Intelligent Input Bus,简称IBus,是 Unix-like 操作系统下的多语输入法平台。因为它采用了总线(Bus)式的架构,所以命名为Bus。

IBus
Intelligent Input Bus (IBus)
Intelligent Input Bus (IBus)
开发者黄鹏
首次发布2008年8月10日 (2008-08-10)
当前版本
  • 1.5.29 (2023年11月9日;稳定版本)[1]
编辑维基数据链接
源代码库 编辑维基数据链接
编程语言C, Python
操作系统Unix-like
语言多语
类型输入法
许可协议GNU宽通用公共许可证 v2
网站IBus 项目页面
IBus
中文输入法
发明人黄鹏
发明年份2008年8月10日
类别拼音

目标 编辑

IBus 的主要目标如下:

  • 易用、直觉的全功能输入法用户界面
  • 使用验证方法加强安全性
  • 为输入法开发者提供一个统一的接口函式库
  • 符合来自不同地域,文化的用户需求

开发动机 编辑

在东北亚开源软件(OSS)论坛第3工作小组[2]提出的“输入法引擎服务提供者界面规格”(Specification of IM engine Service Provider Interface)草案里[3],能实现以Bus为核心的架构被建议采用。SCIM-1.4 的架构并不被看好,因为它是用C++开发的,因此常常会有C++应用二进制接口不符合的情况发生[4]

从那时起,一些人开始着手开发下一代的输入法平台,像是苏哲领导的IM-Bus,以及胡正的SCIM-2,可惜的是它们的开发进度仍然停滞不前。因此,时任红帽(现任谷歌)的黄鹏开始用Python开发IBus以实现 IM-Bus提出的构想。IBus 并不完全实现东北亚OSS论坛所建议的函数,而是采用D-BusGlib来实做。尽管如此,IBus已经开始被OSS社群所接受,FreeBSD以及各大Linux发行版FedoraUbuntu已经将 IBus 纳入其包库里。在 Fedora 11 里,IBus已经成为默认的多语输入平台[5]

系统架构 编辑

IBus 是用 C 及 Python 开发的,如此可以避免 C++ ABI transition 问题。IBus主要透过下列三种服务(Service)来提供功能:

  • 输入法引擎服务:为输入法本身。
  • 配置服务:管理IBus以及输入法的设置选项。
  • 控制面板服务:提供诸如语言条,候选字菜单等用户界面。

IBus 使用D-Bus作 ibus-daemon服务,以及 IM客户端(像是konsole, gedit, firefox)之间的沟通。 ibus-daemon 透过接受服务登录,以及发送D-Bus消息来管理服务及IM客户端。

IBus支持 XIM 协议及 Gtk IM 模块以及 Qt IM 模块。

特点 编辑

  • 输入法引擎可以随时加载与卸载
  • Systray 支持
  • XKB英语X keyboard extension 支持
  • 配置选项更动可即时生效。
  • 提供 C 与 Python 的接口

现有输入法引擎列表 编辑

  • ibus-anthy: 日文输入法
  • ibus-array: 行列输入法
  • ibus-bopomofo: 使用注音符号的拼音输入法,基于ibus-pinyin引擎开发[6],但输入方式与一般标准智能形注音输入法(如新酷音输入法或微软新注音)不同。
  • ibus-chewing: 新酷音输入法,智能形注音输入法
  • ibus-hangul: 韩文输入法。
  • ibus-kkc:日文假名汉字转换输入法。
  • ibus-m17n: 使用m17n-db的多语输入法,细节请参阅 #ibus-m17n
  • ibus-pinyin: 拼音输入法,为IBus主要开发者所开发。
  • ibus-libpinyin: 是 Red Hat 工程师主导、基于 n-gram 语言模型的集成性泛拼音输入法引擎。
  • ibus-libzhuyin: 与 ibus-libpinyin 系出同源,支持注音符号输入,名为“新注音”(New Zhuyin) 输入法,是智能形的注音输入法
  • ibus-table: 码表输入引擎,细节请参阅 #ibus-table
  • ibus-googlepinyin: Google拼音输入法的ibus版本(这个并不是官方的Google输入法,而是由爱好者从Android项目上迁移过来)

ibus-m17n 编辑

ibus-m17n 利用m17n 架构下的输入法及相对应的图标来达成多语输入。由于m17n架构支持上下文(surrounding text)以及输入状态(state)。像是泰文输入法或是其他需要状态的输入法就由ibus-m17n来支持。输入法状态会显示在 IBus panel (语言条)上。

ibus-table 编辑

ibus-table 为余钰炜所开发,针对查表型输入法所设计的码表输入引擎。许多输入法,不需要像是 ibus-chewing 或是 ibus-pinyin 之类的复杂选字算法,只需要一个对照表即可运作[7]。许多字形输入法像是仓颉输入法及五笔输入法都由 ibus-table 所支持。

 
在Ubuntu 12.04.1 LTS使用IBus 1.4.1(仓颉第五代)及其首选项

官方发布的码表[8]:

缺陷 编辑

  • 由于读取SQLite词库时有大量的IO操作,ibus-pinyin在系统高负载时输入时有卡住的现象。
  • 当用户在火狐浏览器文本框输入文字并希望选中文字时,文字将会自动删除[9]

参阅 编辑

参考资料 编辑

  1. ^ Release 1.5.29. 2023年11月9日 [2023年11月17日] (英语). 
  2. ^ Northeast Asia Open Source Software Forum页面存档备份,存于互联网档案馆).
  3. ^ Specification of IM engine Service Provider Interface页面存档备份,存于互联网档案馆).
  4. ^ SCIM ABI transition in sid页面存档备份,存于互联网档案馆).
  5. ^ Fedora 11 Feature List页面存档备份,存于互联网档案馆).
  6. ^ 存档副本. [2010-11-06]. (原始内容存档于2010-12-24). 
  7. ^ ibus-table README (in Chinese and English). [2009-05-12]. (原始内容存档于2009-03-18). 
  8. ^ IBus Google Downloads. [2009-05-12]. (原始内容存档于2009-03-01). 
  9. ^ When Chinese ibus input is on, selecting text on Firefox textareas makes the text disappear. [2015-05-13]. (原始内容存档于2015-09-06). 

外部链接 编辑