IBus

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以及輸入法的設定選項。 控制面板服務：提供諸如語言條，候選字選單等使用者介面。 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引擎開發，但輸入方式與一般標準智慧形注音輸入法（如新酷音輸入法或微軟新注音）不同。 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 利用m17n 架構下的輸入法及相對應的圖示來達成多語輸入。由於m17n架構支援上下文(surrounding text)以及輸入狀態(state)。像是泰文輸入法或是其他需要狀態的輸入法就由ibus-m17n來支援。輸入法狀態會顯示在 IBus panel (語言條)上。 ibus-table 為余鈺煒所開發，針對查表型輸入法所設計的碼表輸入引擎。許多輸入法，不需要像是 ibus-chewing 或是 ibus-pinyin 之類的複雜選字演算法，只需要一個對照表即可運作。許多字形輸入法像是倉頡輸入法及五筆輸入法都由 ibus-table 所支援。 官方釋出的碼表: latex: 使用 latex 語法來輸入特殊符號，ibus-table 自帶 compose: 使用 compose letter 及 diacritical mark 來輸入特殊字元，ibus-table 自帶。 Array30: 行列30輸入法。 Cangjie: 倉頡及速成、三代及五代。 Erbi: 二筆輸入法。 Wubi: 五筆輸入法。 Yong: 永碼輸入法。 ZhengMa: 鄭碼輸入法。 一些table.py手動修改 1.可選字由預設的1頁6個換成主流的1頁9個 尋找 _page_size = 6 修改為 _page_size = 9 2.空白鍵跳下一頁選字 尋找 elif key.code == keysyms.space: 將下面的 o_py = self._editor._py_mode sp_res = self._editor.space () #return (KeyProcessResult,whethercommit,commitstring) if sp_res[0]: self.commit_string (sp_res[1]) #self.add_string_len(sp_res[1]) self.db.check_phrase (sp_res[1], sp_res[2]) else: if sp_res[1] == u' ': self.commit_string (cond_letter_translate (u" ")) if o_py != self._editor._py_mode: self._refresh_properties () self._update_ui () return True 換成 res = self._editor.page_down() self._update_lookup_table () return res 3.backspace鍵 跳上一頁選字 尋找 elif key.code == keysyms.BackSpace: 將下面的 res = self._editor.backspace () self._update_ui () 取代為 res = self._editor.page_up () self._update_lookup_table () 4.單一個碼空白鍵自動選字,數字鍵區選字 尋找 if key.mask & modifier.RELEASE_MASK: return True if self._editor.is_empty (): 於 return True 與 if self._editor.is_empty (): 之間 新增 if key.code>=65457 and key.code<=65465 : key.code-=65408 elif key.code == keysyms.space and len(self._editor._chars[0])==1: key.code=keysyms._1 由於讀取SQLite詞庫時有大量的IO操作，ibus-pinyin在系統高負載時輸入時有卡住的現象。 当用户在火狐浏览器文本框输入文字并希望选中文字时，文字将会自动删除。 输入法 Unix輸入法列表 SCIM uim（英语：uim） Fcitx Northeast Asia Open Source Software Forum （页面存档备份，存于互联网档案馆）. Specification of IM engine Service Provider Interface （页面存档备份，存于互联网档案馆）. SCIM ABI transition in sid （页面存档备份，存于互联网档案馆）. Fedora 11 Feature List （页面存档备份，存于互联网档案馆）. 存档副本. [2010-11-06]. （原始内容存档于2010-12-24）.  ibus-table README (in Chinese and English). [2009-05-12]. （原始内容存档于2009-03-18）.  IBus Google Downloads. [2009-05-12]. （原始内容存档于2009-03-01）.  When Chinese ibus input is on, selecting text on Firefox textareas makes the text disappear. [2015-05-13]. （原始内容存档于2015-09-06）.  Linux進化特區：Ubuntu 12.04 從入門到精通（页面存档备份，存于互联网档案馆） IBus 首頁（页面存档备份，存于互联网档案馆） IBus Git 源碼（页面存档备份，存于互联网档案馆） Comparison of Chinese Input Method Servers for Unix-like Operating Systems