輸入法讓你聯想到什麼?是注音、倉頡、還是嘸蝦米?
其實輸入法可以作得更多;中文輸入可以有智慧選字,那打英文時為什麼不能也聰明地幫我即時校正拼字或是自動補齊呢?你可能在想某些軟體有這些功能,但其實有很多人不想為了這些功能去習慣不同的軟體。這種功能應該是無所不在的,不管在什麼程式中都能擁有的。那麼,有可能嗎?
有的,答案就是「輸入法」。
輸入法的角色很特別,它位於一般應用程式和作業系統的中間。輸入法可以攔截所有程式的輸入,再加以轉換後輸出給應用程式。所以輸入法是一個非侵入式的輸入過濾器。
以中文輸入法來看,就是攔截使用者從鍵盤輸入的一串字元,接著透過某種編碼(注音、倉頡…)轉換為中文字輸出給程式。
輸入法一直以來都是扮演著這種輸入各國文字的角色,但輸入法真的只有這樣而已嗎?
其實輸入法在作業系統中是一個可以攔截任何輸入的程式,我們可以在這個位置提供更多方便的功能,不只有打中文這麼單純的事而已。例如,當我們用英文輸入時,輸入法可以幫助我們較正拼字,也可以讓我們只輸入頭幾個字,接著就自動補齊剩餘的部分。甚至還可以作成網址輸入工具:當我們輸入「@台灣大學」時,輸入法就自動到google找出台灣大學的URL http://www.ntu.edu.tw,接著輸出<a href=”http://www.ntu.edu.tw”>台灣大學</a>。
輸入法真的可以做到這些嗎?答案是可以的。做這些事本身其實並不難,只是難是難在如何在某個作業系統下寫一個輸入法?在以往開發輸入法是非常困難的事,除了必須和作業系統的底層打交道外,還得面臨嚴重缺乏文件的困境。畢竟輸入法是歐美國家不會用到的東西,偏偏現在的作業系統都是這些不需要輸入法的人所開發出來的,所以自然不會受到太多重視。
但現在已經不同了。
2005年,我們終於有了一個可以跨平台(Windows、Linux、FreeBSD、Mac OS X)的輸入法框架:OpenVanilla 開放香草輸入法。
OpenVanilla其實並不是一個輸入法,而是一個可以掛載輸入法的框架。它將不同作業系統上開發輸入法的複雜程式封裝在每個平台特有的載入器(loader)中,並且定義了一個跟平台無關的介面讓我們能更輕易地開發不同的輸入法。
輸入法框架使得閈發輸入法不再是一件困難的事,而且輸入法再也不用和作業系統打交道了。
輸入法框架替開發人員省去了研究作業系統底層細節的功夫,任何一個會寫程式的人都可以直接開始寫他想要的輸入法。他能很容易知道使用者按了什麼鍵,也不用擔心怎麼畫視窗,只要盡量發揮創意去思考要如何處理就可以了。
有了開發輸入法的簡易框架,我們就能做一些以往很難做到的事。
以我自己為例,我是一個重度的Vim使用者,不管是寫程式還是寫文章,都非常依賴Vim提供的高效操作模式。這種習慣讓我很難使用其它的編輯器,不管是像Visual Studio之類的整合開發環境,或是瀏覽器中的textarea,少了Vim的key binding,用起來就是不順手。
但我又不可能改寫每個程式,自己加入Vim的操作模式,那我該怎麼辦呢?
輸入法框架帶來了一個可能的解答。我可以寫一個”edtior adapter”,讓我在一般編輯器中輸入Vim的特殊指令,再幫我轉換為一般編輯器的操作指令輸出,於是我就有可能在任何地方都維持同樣的操作習慣了 😀
輸入法這種無所不在的特性,再加上能攔截按鍵輸入的能力,蘊藏著無限可能,以往很多不得不作在應用程式中的功能,其實都可以移到輸入法框架上,使得每個程式都能受益 😀
隱藏在輸入法裡面的key logger!
基於 lukhnos 在 http://rt.openfoundry.org/Foundry/Project/Tracker/Display.html?Queue=209&id=15830 發難,「框架」一詞也許要 transition 了 XD
或許可以把輸入法框架做成像shell一樣的東西,可以方便使用者呼叫程式、處理使用者的指令之類的…
ex:加個什麼搜尋功能、快速讀取E-mail之類的
你好, 首先謝謝你文章, 我也是 vim 使用者, 我也跟你遇到一樣的問題,
只要遇到 text-area, 我就很煩躁, 甚至幻想著把 virtual studio 等 ide, 都嵌上 vim.
我很有興趣想要在 ov 上實做 vi/vim adapter, 不知道您這個 idea 有版權嗎? XD
這idea大家都想得到,當然沒啥版權XD
希望您能早日實做出來造福廣大的vim使用者 😀
我今天第一次在您的部落格看到OpenVanilla, (我是windows使用者)非常的感興趣,我立即找尋並下載了,但安裝之後,我不知如何使用才好(安裝後只出現一個「偏好設定」的框框),想像中OpenVanilla是可以讓我自行加進詞匯並讓我設定自己設計的輸入
字根,但只有一個「偏好設定」使我不知從何下手?是因為我安裝的程式不足嗎?
期望您給我指教,謝謝
Hi 李雲,
其實我沒很久裝過win32的openvanilla了。但我記得安裝完就會在控制台的”地區及語言選項”看到openvanilla, 切換輸入法時(ctrl-shift)也會切換到。
如果您想設計自己的輸入法,可以參考這篇文章: http://osxchat.blogspot.com/2004/12/blog-post_20.html
謝謝你!終於找到一部份答案.
下載香草輸入法0.7.2.2-beta版本後電腦狀況甚多,想移除時卻發現由於無法關閉這個軟體,導致因電腦不斷顯示偵測到有人使用輸入法程式,必須重新開機字眼(重開機後狀況一樣,且出現應用程式正常初始失敗警示),無法移除並重灌新版本,請問如何解決問題?