摘要:進入計算機信息時代,人類逐漸在計算機上進行文字的輸入,不再停留在紙上。一些特殊的應(yīng)用中,如某些工業(yè)控制以及軍工領(lǐng)域的產(chǎn)品,不安裝鍵盤,若采用觸摸屏式輸入方式會提升系統(tǒng)成本同時會增大系統(tǒng)結(jié)構(gòu)復(fù)雜性,那么完成文字或者數(shù)字的輸入就可以通過鼠標或者摸球進行輔助,來完成一些簡單的類似觸摸屏的功能,該文主要介紹了基于Windows系統(tǒng),以一個自定義的鼠標輸入法為例介紹輸入法的實現(xiàn)。
關(guān)鍵詞:IME;Windows
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2012)28-6708-03
自從有了文字,人類才開始真正進入文明時代,倉頡造字開創(chuàng)了我國文字的先河,是中華文明史的源頭。當(dāng)今市場上已經(jīng)出現(xiàn)了很多的中文輸入法,如今隨著對輸入法需求的日益多樣,用戶對輸入法的聯(lián)想功能、詞庫的豐富等都提出了一定要求。如今,用戶對輸入法已經(jīng)提出了更高的個性化要求,他們希望使用能夠完全為其“量身定制”的輸入法產(chǎn)品,充分滿足其細分需求。舉例來說,工程、醫(yī)藥、藝術(shù)等特定領(lǐng)域的專業(yè)人員在使用輸入法的過程中,經(jīng)常不能找到自己想要的文字,因為一般輸入法的詞庫并不能全面覆蓋這些領(lǐng)域的專業(yè)詞匯。
日益變化的細分需求作為產(chǎn)品創(chuàng)新的強大的推動力,推動著輸入法產(chǎn)品在技術(shù)上持續(xù)不斷的完善,并最終實現(xiàn)完全的智能化。IM、瀏覽器和輸入法覆蓋了絕大部分互聯(lián)網(wǎng)用戶,占據(jù)了互聯(lián)網(wǎng)用戶的時間,而把持著鍵盤互聯(lián)網(wǎng)的輸入法則是客戶端王冠上的明珠。隨著云計算時代的到來,出現(xiàn)了搜狗云輸入法,相信在不遠的未來,輸入法作為一個重要的客戶端,將在出現(xiàn)百家爭鳴的時代發(fā)揮越來越重要的作用。
1 輸入法的原理及組成
Windows系統(tǒng)下漢字輸入法實際上是將輸入的標準ascii字符串按照一定的編碼規(guī)則轉(zhuǎn)換為漢字或漢字串。系統(tǒng)的鍵盤事件由Windows的user.exe軟件接收后,user.exe再將鍵盤事件傳到輸入法管理器(Input Method Manager,簡稱IME)中,管理器再將鍵盤事件傳到輸入法中,輸入法根據(jù)用戶編碼字典,翻譯鍵盤事件為對應(yīng)的字符再反傳給當(dāng)前正運行的應(yīng)用程序,從而完成漢字的輸入。
一般輸入法都由三個窗口組成: 狀態(tài)窗口,編碼輸入窗口,選擇窗口。
狀態(tài)窗口(Status Windows)---顯示當(dāng)前的輸入法狀態(tài);
編碼輸入窗口(Composition Windows)---顯示當(dāng)前擊鍵情況;
選擇窗口(Candidates Windows)---列出當(dāng)前編碼的全部字符(串),供用戶選擇或查詢。
上述三個窗口由基本的用戶接口(User Interface )函數(shù)管理著。IME程序共有19個出口函數(shù)組成,每一個函數(shù)都有特定的格式,他們擔(dān)負著與Windows系統(tǒng)傳遞信息的作用,這些函數(shù)是共Windows系統(tǒng)調(diào)用的。
2 鼠標輸入法的實現(xiàn)
對于鼠標輸入來說,則只需要一個狀態(tài)窗口即可(必要的話可以再提供一個選擇窗口提供選擇),而不需要編碼輸入窗口。
本輸入法的完成必須需要一個狀態(tài)窗口來作為操作界面來完成,本輸入的功能用于數(shù)字和一些自定義字符的輸入。通過圖形制作軟件繪出一個位圖,界面如下圖所示:
3 軟件流程圖
4 代碼實現(xiàn)
輸入法本質(zhì)上是一個動態(tài)鏈接庫,主要函數(shù)功能介紹如下:
DllMain 作為程序的入口 ,在這里只需要創(chuàng)建主窗口和狀態(tài)窗口。
StatusWndProc 是狀態(tài)窗口即本輸入法的窗口回調(diào)函數(shù),處理所有的消息,如鼠標點擊等等。
ProcessFromBtnPos 是根據(jù)鼠標點擊的位置后進行的核心處理,如果當(dāng)前是數(shù)字鍵,則講對應(yīng)的數(shù)字返回,如果點擊的漢字輸入,則從定義的詞典mouse.mb中獲取對應(yīng)的漢字。也可以創(chuàng)建內(nèi)存映射文件加載在系統(tǒng)中,避免多次打開詞典文件。
5 輸入法安裝
通過調(diào)win32 api ImmInstallIME 完成輸入法的安裝,同時設(shè)置輸入法的注冊表。完成后,如下圖所示:
6 總結(jié)
本輸入法是為了滿足工業(yè)控制中的特殊需要所定制的,脫離觸摸屏和鍵盤而獨立使用,可以代替一些簡單觸摸屏的功能,大大簡化整個系統(tǒng)的設(shè)計,降低了系統(tǒng)成本和復(fù)雜度,根據(jù)需要可以動態(tài)修改詞典,在實際項目中得到了很好的應(yīng)用。
參考文獻:
[1] MSDN參考手冊(Microsoft Developer Network)[Z