IBus

本條目有隱藏内容，或許有礙讀者閱覽。請協助改善條目，以符合维基百科标准。 (2015年9月12日)
一般應該僅由特定標準化模板提供摺疊資料表格，勿因故事劇情或項目混雜而隱藏；內容應該考慮其他方式呈現。重複記載、過度細節與無助了解主題的堆砌內容等需要考慮除去。

|

此條目需要精通或熟悉相关主题的编者参与及协助编辑。 (2014年9月30日)
請邀請適合的人士改善本条目。更多的細節與詳情請參见討論頁。

|

IBus

Intelligent Input Bus (IBus)

開發者| 黃鵬
首次发布| 2008年8月10日 (2008-08-10)
当前版本| 1.5.27（2022年8月22日，​2年前​（2022-08-22））
源代码库|

* 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工作小組[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-Bus及Glib來實做。儘管如此，IBus已經開始被OSS社群所接受，FreeBSD以及各大Linux發行版 如Fedora、Ubuntu已經將 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（英语：X keyboard extension） 支援
* 配置選項更動可即時生效。
* 提供 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 text)以及輸入狀態(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: 鄭碼輸入法。

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

## 參閱

[编辑]

* 输入法
* Unix輸入法列表
* SCIM
* uim（英语：uim）
* Fcitx

## 參考資料

[编辑]

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. ^ ibus-table README (in Chinese and English).  [2009-05-12]. （原始内容存档于2009-03-18）.
7. ^ IBus Google Downloads.  [2009-05-12]. （原始内容存档于2009-03-01）.
8. ^ 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）

|

办公|

* AbiWord
* Dia
* Gnumeric
* Evince
* Evolution
* Ease
* LaTeXila（英语：LaTeXila）
* OCRFeeder（英语：OCRFeeder）

圖像|

* 影像檢視器（Eye of GNOME）
* F-Spot
* GIMP
* Inkscape
* Shotwell
* Simple Scan（英语：Simple Scan）

互聯網|

* Balsa（英语：Balsa (email client)）
* Empathy
* Ekiga（英语：Ekiga）
* Gobby（英语：Gobby）
* Jami
* Vino（英语：Vino (VNC server)）
* Vinagre（英语：Vinagre）
* transmission-gtk

影音|

* Banshee
* Cheese
* Pitivi
* Rhythmbox
* Sound Juicer
* SoundConverter
* EasyTag（英语：EasyTag）

遊戲|

* GNOME遊戲
* 象棋
* 踩地雷（英语：GNOME Mines）
* gbrainy
* PyChess

工具|

* Brasero
* dconf-editor（英语：dconf）
* File Roller
* gedit
* gnote
* GParted
* Tomboy（英语：Tomboy (software)）

平台組件|

| 用戶界面|

| GNOME 3|

* GDM
* Mutter
* GNOME Shell
* Tango桌面計劃
* Orca

|

GNOME 2|

* Metacity
* GNOME Panel
* Clearlooks（英语：Clearlooks）

其他|

* Cinnamon
* MATE
* Diodon（英语：Diodon）
* Docky
* GNOME Do
* AWN（英语：Avant Window Navigator）

基礎技術|

* GTK+
* GDK（英语：GDK）
* ATK（英语：Accessibility Toolkit）
* Clutter
* Pango
* GLib
* GObject
* GIO（英语：GIO (software)）
* IBus

其他|

* dconf（英语：dconf）
* Genie
* 鑰匙圈
* GNOME-DB（英语：GNOME-DB）
* GVFS（英语：GVFS）
* Librsvg
* MetaTracker（英语：MetaTracker）
* Vala
* libxslt（英语：libxslt）
* libxml2

freedesktop.org|

* AppStream
* D-Bus
* GStreamer
* NetworkManager
* Poppler
* Wayland
* X.Org Server
* PulseAudio
* PackageKit
* HarfBuzz
* Cairo

社羣|

* GNOME基金會
* GUADEC（英语：GNOME Users And Developers European Conference）
* GNOME計畫
* Outreachy（英语：Outreachy）

人物|

* 米格爾·德伊卡薩
* 費德里科·梅納
* 路易斯·比利亞（英语：Luis Villa）
* 夏霍·邊靈頓（英语：Havoc Pennington）
* 凯伦·桑德勒

* 分類
* 共享資源

*[查]: 查看该模板
*[论]: 讨论该模板
*[编]: 编辑该模板