狠狠撸
Search
Submit Search
fcitx-chewing 逐行審查
?
3 likes
?
945 views
Hui-Hong You
1 of 16
Download now
Download to read offline
More Related Content
fcitx-chewing 逐行審查
1.
fcitx-chewing 逐行審查 先讀碼,再 compile Huei-Horng
Yo (hiroshiyui) 游輝宏 <hiroshi@ghostsinthelab.org>
2.
前情提要 ● libchewing 推出
0.4.0 新版 ● fcitx-chewing 如預期的需要配合新版 libchewing 修 改,否則動不了 ● 究竟,在這段冒險的路上,有什麼險阻正在等待 著 Hiroshi ? Hiroshi 又將如何化解這些難關呢?
3.
敬請期待下一回 (聽眾的鞋子丟過來了)
4.
修復過程 1. 跟 chewing_Init(),
chewing_Terminate() 說再見 2. 將 chewing_zuin_String() 改用 chewing_bopomofo_String_static() 3. 處理 libchewing 新引入 SQLite 作為使用者詞庫的 異常問題 4. 打完收工
5.
心理建設 ● 程式爛了,沒有人去改,不會自己變好 ● 自己的輸入法自己修! ●
我一個非本科的文組外行人、不慣 C 的小弱弱都 能把問題修好了,真的沒有那麼難 ● 修理的過程中幾乎把整個 fcitx-chewing 程式碼看 過了,因此瞭解如何實作一個輸入法→ Level Up!
6.
輸入法 ● 很多人分不清楚: – 輸入法(法→法則) ●
倉頡、注音、行列、大易… – 輸入法框架、平台、引擎(提供輸入法一套有系統的 實作方式) ● iBus,Fcitx,Gcin,SCIM,OpenVanilla... ● 看過這張投影片後,從現在開始請別再混淆了
7.
輸入法 ● 基本概念 – 定義輸入法規則 –
實作 – 處理使用者輸入字根、聲韻符號鍵位(先不論手寫、 語音) – 查詢符合字根、聲韻符號組合的字或詞,提供使用者 候選 – 將選擇字詞放在預備區或輸出(上字)到應用程式
8.
fcitx-chewing 逐行審查 ● config.h – 顯而易見的一行,由
FindChewing.cmake 找出 libchewing 所在
9.
fcitx-chewing 逐行審查 ● chewing.conf.in &
fcitx-chewing.conf.in – 兩者實際安裝到系統時會是 chewing.conf & fcitx- chewing.conf ,也很好懂,是這個輸入法的基本描 述 – fcitx-chewing 之於 fcitx 既是一個 input method 同時也是一個 add-on – 截自目前 fcitx 對輸入法模組的僅接受 shared library 型式,故 Type 欄位值恆為 SharedLibrary
10.
fcitx-chewing 逐行審查 ● fcitx-chewing.desc – 定義一些新酷音輸入法的設定選項,如選字鍵、前後 方加詞、注音鍵盤種類 ● config.c –
與 fcitx-chewing.desc 相配合,登錄設定鍵、值 ● 在 eim.h 當中實際定義了 FcitxChewingConfig 的結構 ● 這裡可以看出 fcitx 處理輸入法設定的方式很有條 理,選項交由檔案定義,而不在 code 裡寫死
11.
fcitx-chewing 逐行審查 ● eim.h – 整個檔案裡我覺得最該注意的是那幾行 __EXPORT_API
,是這個輸入法實作 fcitx 輸入法 模組的幾個介面,可以對照 eim.c 的 FcitxIMIFace 這段 – FcitxChewing 這個結構分別將 fcitx 的設定、生成 實例,以及 libchewing 的 context 包在一起
12.
fcitx-chewing 逐行審查 ● eim.c – 最主要的程式所在 –
FCITX_DEFINE_PLUGIN 這行指定使用 FcitxIMClass2 來定義這個模組的生成、結束所用的 函式 – 重點還是在 FcitxIMIFace 這裡
13.
fcitx-chewing 逐行審查 ● eim.c – 重點還是在
FcitxIMIFace 這裡 – 對照一下前面提過的輸入法基本概念
14.
fcitx-chewing 逐行審查 ● 重點還是在
FcitxIMIFace 這裡 – Init 一開始啟動時做些什麼 – ResetIM 重置整個輸入法的狀態 – DoInput 輸入中應該如何處理各種狀況 – GetCandWords 取得候選字詞 – ReloadConfig 重新讀入設定 – OnClose 處理輸入法開啟、關閉的狀態切換 – KeyBlocker 處理特殊鍵
15.
結語 ● fcitx-chewing 就是負責讓
fcitx 與 libchewing 好好合作 的中間人 – 可以把 fcitx-chewing 代換成其他輸入法框架的新酷音 實作 ● 瞭解一個字詞如何「由人腦的聲韻符號→對應按鍵 → libchewing 查詢對應字詞→輸入法框架處理輸出」 的基本觀念,觀念有了就不覺得程式碼像火星文 ● 自己的輸入法自己修、自己改良!
16.
閉場黑 謝謝!
Download