輸入法框架帶來的無限可能
Saturday, November 19th, 2005 | 瀏覽:11,075人次輸入法讓你聯想到什麼?是注音、倉頡、還是嘸蝦米?
其實輸入法可以作得更多;中文輸入可以有智慧選字,那打英文時為什麼不能也聰明地幫我即時校正拼字或是自動補齊呢?你可能在想某些軟體有這些功能,但其實有很多人不想為了這些功能去習慣不同的軟體。這種功能應該是無所不在的,不管在什麼程式中都能擁有的。那麼,有可能嗎?
有的,答案就是「輸入法」。
輸入法的角色很特別,它位於一般應用程式和作業系統的中間。輸入法可以攔截所有程式的輸入,再加以轉換後輸出給應用程式。所以輸入法是一個非侵入式的輸入過濾器。
以中文輸入法來看,就是攔截使用者從鍵盤輸入的一串字元,接著透過某種編碼(注音、倉頡…)轉換為中文字輸出給程式。
輸入法一直以來都是扮演著這種輸入各國文字的角色,但輸入法真的只有這樣而已嗎?
其實輸入法在作業系統中是一個可以攔截任何輸入的程式,我們可以在這個位置提供更多方便的功能,不只有打中文這麼單純的事而已。例如,當我們用英文輸入時,輸入法可以幫助我們較正拼字,也可以讓我們只輸入頭幾個字,接著就自動補齊剩餘的部分。甚至還可以作成網址輸入工具:當我們輸入「@台灣大學」時,輸入法就自動到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的特殊指令,再幫我轉換為一般編輯器的操作指令輸出,於是我就有可能在任何地方都維持同樣的操作習慣了
輸入法這種無所不在的特性,再加上能攔截按鍵輸入的能力,蘊藏著無限可能,以往很多不得不作在應用程式中的功能,其實都可以移到輸入法框架上,使得每個程式都能受益 ![]()







