iBus

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

IBus
Intelligent Input Bus (IBus)
開發者黃鵬
初始版本2008年8月10日 (2008-08-10)
穩定版本
1.5.23
(2020年9月29日2020-09-29
源代码库
编程语言C, Python
操作系统Unix-like
语言多語
类型輸入法
许可协议GNU宽通用公共许可证 v2
网站IBus 專案頁面
IBus
中文輸入法
發明人黃鵬
發明年份2008年8月10日
類別拼音

目標

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-array: 行列輸入法
  • ibus-bopomofo: 使用注音符號的拼音輸入法,基於ibus-pinyin引擎開發[5],但輸入方式與一般標準智慧形注音輸入法(如新酷音輸入法或微軟新注音)不同。
  • 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 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]:

  • latex: 使用 latex 語法來輸入特殊符號,ibus-table 自帶
  • compose: 使用 compose letter 及 diacritical mark 來輸入特殊字元,ibus-table 自帶。
  • Array30: 行列30輸入法
  • Cangjie: 倉頡及速成、三代及五代。
  • Erbi: 二筆輸入法
  • Wubi: 五筆輸入法
  • Yong: 永碼輸入法
  • ZhengMa: 鄭碼輸入法

缺陷

  • 由於讀取sqlite詞庫時有大量的IO操作,ibus-pinyin在系統高負載時輸入時有卡住的現象。
  • 当用户在火狐浏览器文本框输入文字并希望选中文字时,文字将会自动删除[8]

參閱

參考資料

  1. Northeast Asia Open Source Software Forum 页面存档备份,存于.
  2. Specification of IM engine Service Provider Interface 页面存档备份,存于.
  3. SCIM ABI transition in sid 页面存档备份,存于.
  4. Fedora 11 Feature List 页面存档备份,存于.
  5. . [2010-11-06]. (原始内容存档于2010-12-24).
  6. . [2009-05-12]. (原始内容存档于2009-03-18).
  7. . [2009-05-12]. (原始内容存档于2009-03-01).
  8. . [2015-05-13]. (原始内容存档于2015-09-06).

外部链接

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.