IBus

IBus
Intelligent Input Bus (IBus)
Intelligent Input Bus (IBus)
開發者黃鵬
首次发布2008年8月10日 (2008-08-10)
当前版本
  • 1.5.30 (2024年5月2日;穩定版本)[1]
編輯維基數據鏈接
源代码库
  • github.com/ibus/ibus
編輯維基數據鏈接
编程语言C, Python
操作系统Unix-like
语言多語
类型輸入法
许可协议GNU宽通用公共许可证 v2
网站IBus 專案頁面
IBus
中文輸入法
發明人黃鵬
發明年份2008年8月10日
類別拼音

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

目標

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發行版 如Fedora、Ubuntu已經將 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[broken anchor] 支援
  • 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]:

  • 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在系統高負載時輸入時有卡住的現象。
  • 当用户在火狐浏览器文本框输入文字并希望选中文字时,文字将会自动删除[9]

參閱

參考資料

  1. ^ 1.5.30. 2024年5月2日 [2024年5月2日]. 
  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). 
  • Linux進化特區:Ubuntu 12.04 從入門到精通(页面存档备份,存于互联网档案馆

外部链接

  • IBus 首頁(页面存档备份,存于互联网档案馆
  • IBus Git 源碼(页面存档备份,存于互联网档案馆
  • Comparison of Chinese Input Method Servers for Unix-like Operating Systems
核心程式英语GNOME Core Applications
  • 機櫃 Boxes
  • 計算器 Calculator英语GNOME Calculator
  • 字符映射 Character Map英语GNOME Character Map
  • 字典 Dictionary英语GNOME Dictionary
  • 硬盤 Disks英语GNOME Disks
  • 檔案 Files
  • 軟件 Software
  • 終端 Terminal英语GNOME Terminal
  • 影片 Videos
  • 網頁 Web
額外程式
開發
  • Anjuta
  • Glade
  • Meld (软件)
  • Devhelp英语Devhelp
  • Nemiver英语Nemiver
  • Geany
  • Gtranslator英语Gtranslator
办公
圖像
互聯網
  • Balsa英语Balsa (email client)
  • Empathy
  • Ekiga英语Ekiga
  • Gobby英语Gobby
  • Jami
  • Vino英语Vino (VNC server)
  • Vinagre英语Vinagre
  • transmission-gtk
影音
遊戲
工具
平台組件
用戶界面
GNOME 3
GNOME 2
其他
基礎技術
其他
  • dconf英语dconf
  • Genie
  • 鑰匙圈
  • GNOME-DB英语GNOME-DB
  • GVFS英语GVFS
  • Librsvg
  • MetaTracker英语MetaTracker
  • Vala
  • libxslt英语libxslt
  • libxml2
freedesktop.org
社羣
  • GNOME基金會
  • GUADEC英语GNOME Users And Developers European Conference
  • GNOME計畫
  • Outreachy英语Outreachy
人物
  • 分类 分類
  • 共享资源页面 共享資源