大概6年多前,在使用傳統(tǒng)中文輸入法的過(guò)程中,我感覺(jué)有幾個(gè)地方不是很順手:

1、輸入法狀態(tài)欄必須放在角落,不然容易遮擋屏幕上的內(nèi)容。除非先敲擊個(gè)按鍵,否則必須仔細(xì)看一下?tīng)顟B(tài)欄上中英切換的按鈕,才能知道當(dāng)前的狀態(tài)。
2、用Autohotkey判斷或改變傳統(tǒng)中文輸入法當(dāng)前的中/英狀態(tài),很復(fù)雜。而這個(gè)需求又很常見(jiàn),比如打開(kāi)listary搜索框的時(shí)候,順便把當(dāng)前的中文狀態(tài)切換到英文;再比如在gvim中esc鍵切換到normal狀態(tài)的時(shí)候,自動(dòng)把輸入法的中文狀態(tài)也切換到英文。
3、傳統(tǒng)的中文輸入法打字功能無(wú)比強(qiáng)大,但對(duì)于英年早賢(早早進(jìn)入賢者時(shí)間)的我來(lái)說(shuō),對(duì)打字的要求很簡(jiǎn)單,詞庫(kù)小巧精準(zhǔn),候選項(xiàng)盡量控制在3個(gè)以內(nèi),這樣選擇的時(shí)候手指不用大范圍移動(dòng)。而在功能上,我反倒是希望能把輸入法當(dāng)成一個(gè)入口,不僅可以打字,還可以自由輸出,比如打開(kāi)網(wǎng)頁(yè)、文檔、運(yùn)行代碼片段等等。很顯然,傳統(tǒng)的輸入法很難做到這點(diǎn)。
所以我嘗試用Autohotkey模擬中文輸入法。如果你從來(lái)沒(méi)接觸過(guò)Autohotkey,你可以簡(jiǎn)單地把它當(dāng)成是一個(gè)改鍵工具,通過(guò)這個(gè)小軟件,你可以重新定義鍵盤和鼠標(biāo)。
那時(shí)候我剛接觸Autohotkey這個(gè)軟件,也沒(méi)啥編程基礎(chǔ),最主要是沒(méi)地方抄代碼,所以,陸續(xù)弄了一年多才鼓搗出來(lái),效果如下(為了方便你看清,我放慢了打字速度):

過(guò)去的五年時(shí)間里,這就是我的中文輸入法程序和快捷啟動(dòng)工具。它包含4個(gè)文件:

1、AutoHotkeyU32.exe : 主程序,官方下載鏈接,目前最新版本是1.1.30.01。
2、AutoHotkeyU32.ahk : 代碼文件,存放代碼的地方,UTF-8格式的文本文件。
3、cn1.png?: 一個(gè)純色塊圖片文件
4、wubi86.ahk : 碼表文件,UTF-8格式的文本文件,這里用了網(wǎng)上找的王碼86古董詞庫(kù),純舉例。
上述懶人包的下載地址:https://share.weiyun.com/55tAEiw,文件包里有一個(gè)SciTE文件夾,這是代碼文件的編輯器,主要用到代碼高亮和折疊功能。為了盡量簡(jiǎn)單化,代碼文件只考慮了純打字功能的實(shí)現(xiàn)。
使用方法:下載“柚子(yous)輸入法.zip”,解壓后,根據(jù)wubi86.ahk的碼表格式,替換成自己的碼表,保存后,運(yùn)行AutoHotkeyU32.exe后,點(diǎn)擊左側(cè)的Shift鍵,屏幕上會(huì)顯示一個(gè)紅色色塊,就可以打字了,空格鍵選擇第1個(gè)候選項(xiàng),逗號(hào)選擇第2個(gè)候選項(xiàng),句號(hào)選擇第3個(gè)候選項(xiàng)。
代碼大概100來(lái)行,怎么寫出來(lái)的,請(qǐng)看后面章節(jié),我們一步一步從頭開(kāi)始,來(lái)模擬一個(gè)小詞庫(kù)輸入法。