討論「請教 ezgo13 的 fcitx-chewing 輸入法之自建字庫問題」 [論壇 - Ubuntu 與中文]
正在瀏覽:
1 名遊客
討論「請教 ezgo13 的 fcitx-chewing 輸入法之自建字庫問題」 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 36
HP : 179 / 895
![]() |
## 緣起
回覆「ezgo 軍師團」/ 請教 ezgo13 的 fcitx-chewing 輸入法之自建字庫問題」。 之前有研究出心得,本來就想寫這部份,但一忙就擱著了,趁這個機會,先簡易的紀錄一下。 ================================================================================ 後記 (2017-03-10): 下方「回覆#2」,有討論到「快速自訂詞庫」的方式。 ================================================================================ 以下測試環境「Xubuntu 16.04 amd64 英文界面」 ================================================================================ 執行下面指令,安裝「chewing-editor」這個套件。
執行
顯示
執行
按下「Add」按鈕,會跳出一個對話框 phrase: 內稽 bopomofo: ㄋㄟˋ ㄐㄧ 分別 在欄位「phrase」輸入「內稽」 在欄位「bopomofo」輸入「ㄋㄟˋ ㄐㄧ」 然後按下按鈕「OK」,關閉對話框。 可以看到畫面上有三個按鈕「Add」「Remove」「Refresh」, 在來就是一個文字輸入框,這裡可以輸入關鍵字查詢。 可以查詢「ㄋㄟˋ ㄐㄧ」,也可以查詢「內稽」,就會查到剛剛新增的那筆紀錄。 其他的操作,就不多介紹了,請自行摸索,應該很容易上手。 輸入完後,您可以測試「fcitx-chewing」。 可以輸入「ㄋㄟˋ ㄐㄧ」 下拉(按下方向鍵「下」)就可以看到
================================================================================ ## 透過指令來觀看「~/.chewing/chewing.sqlite3」 剛剛輸入的資料,是會紀錄到「~/.chewing/chewing.sqlite3」這個檔案 執行
顯示
執行下面指令,安裝「sqlite3」這個套件
執行
執行下面指令,觀看help
執行
顯示
執行
顯示
執行
顯示
執行
顯示
執行
================================================================================ ## 透過圖形界面工具來觀看「~/.chewing/chewing.sqlite3」 執行下面指令,安裝「sqlitebrowser」這個套件
執行
就會開起圖形界面工具 可以在第四個「頁籤」「Execute SQL」。 一樣可以輸入上面提到的SQL, 例如
就可以找剛剛輸入的那筆資料。 其他的就不多介紹了,就請自行把玩了,對「RDBMS」有基礎的概念,應該很容易上手。 不過我目前會的也只有上面介紹的,以後有需要用到其他的功能,才會再去深究 :p ## sqlitebrowser 相關網址 * http://sqlitebrowser.org/ * https://github.com/sqlitebrowser/sqlitebrowser ================================================================================ 關於「sqlite3」和「sqlitebrowser」這兩個工具, 我之前在「這篇」有介紹過,跟「ibus」有關。 ================================================================================ ## 相關網址 * GitHub / chewing / chewing-editor * GitHub / chewing / libchewing 關於「chewing-editor」是QT寫的,然後是使用「libchewing3」,開發則是「libchewing3-dev」。 執行下面指令,安裝「libchewing3-dev」這個套件
執行
顯示
執行下面指令,觀看文件「/usr/share/info/libchewing.info.gz」
執行下面指令,觀看文件節點「Setup」
執行下面指令,觀看文件節點「Userphrase Handling」
如何編譯,請參考 * https://developer.gnome.org/glib/stable/ * https://developer.gnome.org/glib/stable/glib-compiling.html * https://developer.gnome.org/gtk3/stable/ * https://developer.gnome.org/gtk3/stable/gtk-compiling.html * GNOME Developer Platform Demos / Platform Demos in C * GCC and Make - Compiling, Linking and Building C/C++ Applications 執行
顯示
執行下面指令編譯 (下面指令,有使用到「Command Substitution」,請參考「這篇」的說明,或閱讀 $ man bash)
以下是「main.c」的內容。 #include <stdlib.h> #include <stdio.h> #include <chewing.h> int main(int argc, char *argv[]) { ChewingContext *ctx = chewing_new(); /* do something */ printf("hello, chewing\n"); chewing_delete( ctx ); return EXIT_SUCCESS; } ## Source Code 參考網址 * https://github.com/chewing/libchewing/blob/master/test/test-userphrase.c * https://github.com/chewing/chewing-editor/blob/master/src/model/UserphraseModel.cpp#L203 * https://github.com/fcitx/fcitx-chewing/blob/master/src/eim.c ================================================================================ ## 暫記 * https://gist.github.com/mitya57/1e49b079a91942782f62 (1) * https://docs.python.org/3/library/ctypes.html * https://docs.python.org/2/library/ctypes.html 原始碼連結
更多範例放在「GitHub」上。 * https://wiki.gnome.org/Projects/PyGObject * http://helgo.net/simon/introspection-tutorial/stepfour.xhtml * https://dubstepdish.com/blog/2014/02/12/gobject-introspection-build-system-example/ * http://cheesehead-techblog.blogspot.tw/2013/03/creating-libraries-and-linking-to.html * http://lucumr.pocoo.org/2013/8/18/beautiful-native-libraries/ ================================================================================ ## Wikipedia * Wikipedia / Chewing (Input Method) * 維基百科 / 新酷音輸入法 ## Forum * Chewing IM Users * Chewing IM Development ================================================================================ 後記 (2017-03-10): 剛用「~/.chewing/chewing.sqlite3」查詢, 可以找到一篇「Chewing: 跨平台詞庫編輯器」。 然後在用「Chewing: 跨平台詞庫編輯器」查詢, 可以找到「Chewing IM Development / 跨平台詞庫編輯器」。 ================================================================================ 以上提供參考 報告完畢 ![]()
2017/3/8 20:20
|
||||||||||
![]() |
回覆: 討論「請教 ezgo13 的 fcitx-chewing 輸入法之自建字庫問題」 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 36
HP : 179 / 895
![]() |
參考後來的「回覆」,
可以看到一個參考網址 http://chewing.im/features.html 不過那個「Ctrl + 2 ~ 9」快速自訂詞庫的方式, 在「fcitx-chewing」,一開始我還沒試出來,若是使用「gcin」則有試出來。 後來發現,在「fcitx-chewing」,輸入「內稽」 然後把游標移到「內」前方,類似「|內稽」這樣。 這時候再按下「Ctrl+2」,就會「快速自訂詞庫」了。 下面的探索,發現到,也可以閱讀「libchewing / README.md / Editing mode」。 ================================================================================ 可以去了解「fcitx-chewing」的「原始碼」是否有實做這一段。 以下簡易的探索,提供探索的起點。 執行下面指令,下載「fcitx-chewing」的「Source Package」,也就是「fcitx-chewing」。
執行
顯示
================================================================================ 執行下面指令,下載「libchewing3」的「Source Package」,也就是「libchewing」。
執行
顯示
執行下面指令,觀看「README.md」。
執行下面指令,然後找尋「chewing_handle_CtrlNum」
================================================================================ 以上新發現,提供參考 報告完畢 ![]()
2017/3/10 16:43
|
||||||||||
![]() |
回覆: 討論「請教 ezgo13 的 fcitx-chewing 輸入法之自建字庫問題」 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 36
HP : 179 / 895
![]() |
寫了一些範例,放在「GitHub」上。
展示透過「Python / ctypes — A foreign function library for Python」 來呼叫「libchewing」。 主要是實做「userphrase」的部份, 可以參考下面四個「雛型」, * chewing_userphrase_add (c) (chewingio.h) (chewingio.c) * chewing_userphrase_enumerate (c) (chewingio.h) (chewingio.c) * chewing_userphrase_lookup (c) (chewingio.h) (chewingio.c) * chewing_userphrase_remove (c) (chewingio.h) (chewingio.c) 預估就可以依據這樣基礎,自行設計一個Python的「lib」, 進一步就可以設計「GUI(圖形界面)程式」,例如:可以採用「Python GTK+ 3」。 或是「CLI(指令)程式」,例如:可以設計「批次匯出」和「批次匯入」的功能。 而「chewing-editor」目前也有提供「匯出匯入」這樣的功能,檔案格式是採用「json」。 所以透過上面的,也可以自行設計不同「匯出匯入」的檔案格式。 以上參考,給有興趣練習的人,可以有一個起點。 上面「回覆#1」,也有列一些參考連結可以參考。 報告完畢 ![]()
2017/3/26 1:15
|
||||||||||
![]() |
回覆: 討論「請教 ezgo13 的 fcitx-chewing 輸入法之自建字庫問題」 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 36
HP : 179 / 895
![]() |
剛在「libchewing」的原始碼,發現到原來已經有使用「ctypes」來實做了,
檔案是放在「libchewing/contrib/python/chewing.py」。 看起來是根據「python2」這個版本寫的。 我上面「回覆#3」的範例,則是根據「python3」寫的。 ================================================================================ 我的環境是「Xubuntu 16.04 amd64 英文界面」 執行
顯示
可以看到「/usr/share/pyshared/chewing.py」這個檔案。 也就是原始碼的「libchewing/contrib/python/chewing.py」這個檔案。 一開始進到「python」,
使用「import chewing」會找不到。 >>> import chewing Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named chewing 然後在另一個Terminal執行
會看到
然後我再執行「import lsb_release」卻是正常的
然後執行
顯示
或是直接執行下面指令,
顯示
然後執行
顯示
所以只要執行下面的指令,就可以在「python2」正常的「import chewing」了
註: 關於「import」相關的討論 * #2 回覆: py2048 * #17 回覆: 裝了 ubuntu 16.04 lts 64位元版 一直無法輸入中文 ================================================================================ 以下是根據「libchewing/contrib/python/chewing.py」這個版本寫的範例, 跟上面的「回覆#3」的範例的原理是一樣的。 而「libchewing/contrib/python/chewing.py」特別的地方,在於是封裝成一個「class ChewingContext」。 使用方法請參考「libchewing/contrib/python/test.py」 * userphrase_add.py * userphrase_enumerate.py * userphrase_lookup.py * userphrase_remove.py ================================================================================ 補充完畢 ![]()
2017/3/27 4:19
|
||||||||||
![]() |
您可以查看帖子.
您不可發帖.
您不可回覆.
您不可編輯自己的帖子.
您不可刪除自己的帖子.
您不可發起投票調查.
您不可在投票調查中投票.
您不可上傳附件.
您不可不經審核直接發帖.