iBus

维基百科,自由的百科全书
跳转至: 导航搜索
IBus
IBus logo
ibus-pinyin screenshot
Intelligent Input Bus (IBus)
開發者 黃鵬
初始版本 2008年8月10日  (2008-08-10)
穩定版本 1.5.5 / 2014年1月14日(9個月前) (2014-01-14)
開發狀態 支援中
编程语言 C, Python
操作系统 Unix-like
语言 多語
类型 輸入法
许可协议 GNU宽通用公共许可证 v2
網站 IBus project website
IBus
中文輸入法
發明人 黃鵬
發明年份 2008年8月10日
類別 拼音

Intelligent Input Bus,簡稱IBus,是 Unix-like 作業系統下的多語輸入法平台。因為它採用了总线(Bus)式的架構,所以命名為Bus。

目標[编辑]

IBus 的主要目標如下:

  • 易用、直覺的全功能輸入法使用者介面
  • 使用驗證方法加強安全性
  • 為輸入法開發者提供一個統一的介面函式庫
  • 符合來自不同地域,文化的使用者需求

開發動機[编辑]

在東北亞開源軟體(OSS)論壇第3工作小組[1]提出的「輸入法引擎服務提供者界面規格」(Specification of IM engine Service Provider Interface)草案裡[2],能實現以Bus為核心的架構被建議採用。SCIM-1.4 的架構並不被看好,因為它是用C++開發的,因此常常會有C++應用二進位介面不符合的情況發生[3]

從那時起,一些人開始著手開發下一代的輸入法平台,像是蘇哲領導的IM-Bus,以及胡正的SCIM-2,可惜的是它們的開發進度仍然停滯不前。因此,時任紅帽(現任谷歌)的黃鵬開始用Python開發IBus以實現 IM-Bus提出的構想。IBus 並不完全實現東北亞OSS論壇所建議的函式,而是採用D-BusGlib來實做。儘管如此,IBus已經開始被OSS社群所接受,FreeBSD以及各大Linux發行版FedoraUbuntu已經將 IBus 納入其套件庫裡。在 Fedora 11 裡,IBus已經成為預設的多語輸入平台[4]

系統架構[编辑]

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 支援
  • 配置選項更動可即時生效。
  • 提供 C 與 Python 的介面

現有輸入法引擎列表[编辑]

  • ibus-anthy: 日文輸入法
  • ibus-bopomofo: 使用注音符號的拼音輸入法,基於ibus-pinyin引擎開發[5],但輸入方式與一般標準智慧形注音輸入法(如新酷音輸入法或微軟新注音)不同。
  • ibus-chewing: 新酷音輸入法,智慧形注音輸入法
  • ibus-hangul: 韓文輸入法。
  • ibus-m17n: 使用m17n-db的多語輸入法,細節請參閱 #ibus-m17n
  • ibus-pinyin: 拼音輸入法,為IBus主要開發者所開發。
  • ibus-table: 碼表輸入引擎,細節請參閱 #ibus-table
  • ibus-googlepinyin: Google拼音输入法的ibus版本(这个并不是官方的Google输入法,而是由爱好者从Android项目上迁移过来)

ibus-m17n[编辑]

ibus-m17n 利用m17n 架構下的輸入法及相對應的圖示來達成多語輸入。由於m17n架構支援上下文(surrounding tex)t以及輸入狀態(state)。像是泰文輸入法或是其他需要狀態的輸入法就由ibus-m17n來支援。輸入法狀態會顯示在 IBus panel (語言條)上。

ibus-table[编辑]

ibus-table 為余鈺煒所開發,針對查表型輸入法所設計的碼表輸入引擎。許多輸入法,不需要像是 ibus-chewing 或是 ibus-pinyin 之類的複雜選字演算法,只需要一個對照表即可運作[6]。許多字形輸入法像是倉頡輸入法及五筆輸入法都由 ibus-table 所支援。

在Ubuntu 12.04.1 LTS使用IBus 1.4.1(倉頡第五代)及其偏好設定

官方釋出的碼表[7]:

缺陷[编辑]

由於讀取sqlite詞庫時有大量的IO操作,ibus-pinyin在系統高負載時輸入時有卡住的現象。

參閱[编辑]

參考資料[编辑]