Matchbox keyboard
因為工作需要,我需要評估一些平板電腦相關的應用。因此我接觸過 MeeGo ,使用過它提供的幾種虛擬鍵盤(軟體鍵盤),例如 fvkbd, meegotouch-inputmethodkeyboard 。更進一步地,當我嘗試著在 Debian/Ubuntu 系統上自訂一個平板桌面環境時,也需要一個虛擬鍵盤。而 Ubuntu 套件庫中就提供了 Matchbox keyboard。
Matchbox keyboard 並不是功能最多的虛擬鍵盤。但它應該是結構最簡單的一套,也提供了設定鍵盤佈局的功能。而且 X window 上的其他虛擬鍵盤的原理跟 matchbox keyboard 大同小異。如果想要嘗試客製化一個具有虛擬鍵盤的操作環境,可以 matchbox keyboard 為起點。等到產品化時,我們隨時可以用其他同樣基於 X 協定的虛擬鍵盤替換它。
Install
Debian/Ubuntu 提供的 Matchbox keyboard 相關套件為: matchboxkeyboard, libfakekey0 。 在自訂操作環境時,你也需要 libfakekey-dev 套件,以便重新編譯 Matchbox keyboard 的源碼。
你可以從 Matchbox keyboard 官方網頁上取得其源碼。或是從 Ubuntu 源碼庫中取得: matchbox-keyboard_0.1+svn20080916.orig.tar.gz。
我建議先安裝套件庫提供的 Matchbox keyboard 套件,然後再自行編譯源碼替換。
Fix embedding bug
當你配合 --xid 參數執行 matchbox-keyboard 程式時,它或許不會正確地呈現鍵盤內容。這似乎是個 bug。 若你碰到這個狀況時,需要修改 matchbox keyboard 的源碼修正它。編輯 src/matchbox-keyboard.c ,將下列所示的兩行程式碼註消。
Build
我使用取自 Ubuntu 源碼庫的源碼編譯。在 matchbox keyboard 源碼的根目錄下進行下列操作即可。
$ ./autogen.sh
$ ./configure --prefix=/usr
$ make
$ sudo make install-exec
最後一步將安裝 matchbox-keyboard 到 /usr/bin/matchbox-keyboard.
基本控制範例
1. 執行 matchbox-keyboard,並配合 --xid 參數。 它會列出此虛擬鍵盤所屬的視窗容器的 XID,你需要這個 XID 才能從外部控制虛擬鍵盤的位置。
$ matchbox-keyboard --xid
1234567
2. 以 python 為例,啟動 python 交談環境,輸入下列敘述。你將可觀察到虛擬鍵盤被控制的情形。
在 matchbox keyboard 源碼中,還提供了一個範例: examples/matchbox-keyboard-gtk-embed.c 。 此範例展示如何以內嵌形式,利用 gtk-event-box 控制項,將 matchbox-keyboard 嵌入你的視窗軟體的佈局中。
各位可以瀏覽 screenshots 的下半頁,觀看它實際運用的樣子。