WINCE6.0添加特定的软件键盘
*******************************LoongEmbedded********************************
作者:LoongEmbedded
時(shí)間:2010.12.05
類別:WINCE應(yīng)用開(kāi)發(fā)********************************LoongEmbedded********************************
?
前天因客戶的需要,需要在WINCE6.0的系統(tǒng)中添加以色列語(yǔ)言的鍵盤到系統(tǒng)中,本以為是很簡(jiǎn)單的事情,因?yàn)橹霸?/span>WINCE5.0下也有做過(guò)在系統(tǒng)中增加鍵盤的經(jīng)歷了,所需要的工作如下:
1.?????? 在plarform.bib中加入下面的內(nèi)容:
IF BSP_HEBREW
LargeKB.dll?? ???????? $(_FLATRELEASEDIR)/LargeKB.dll????????????????????? NK? SHK?
SmallKB.dll? ??????????? $(_FLATRELEASEDIR)/SmallKB.dll????????????????????? NK? SHK
ENDIF BSP_HEBREW
在這里環(huán)境變量來(lái)根據(jù)項(xiàng)目需要是否在系統(tǒng)中包含這兩個(gè)鍵盤。
?
2.?????? 在platform.reg中加入下面的內(nèi)容:
IF BSP_HEBREW
;;;;;;;;;;;;;;;;;;;;;;;;;;add for largeKB;;;;;;;;;;;;;;;;;;;;;;;
[HKEY_CLASSES_ROOT/CLSID/{A523DFC7-1A7E-4AF6-991A-510E75847929}]
@="LargeKB"
?
[HKEY_CLASSES_ROOT/CLSID/{A523DFC7-1A7E-4AF6-991A-510E75847929}/DefaultIcon]
@="//windows//LargeKB.dll"
?
[HKEY_CLASSES_ROOT/CLSID/{A523DFC7-1A7E-4AF6-991A-510E75847929}/InprocServer32]
@="//windows//LargeKB.dll"
?
[HKEY_CLASSES_ROOT/CLSID/{A523DFC7-1A7E-4AF6-991A-510E75847929}/IsSIPInputMethod]
@="1"
?
;;;;;;;;;;;;;;;;;;;;;;;;;add for smallKB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[HKEY_CLASSES_ROOT/CLSID/{A523DFC7-1A7E-4AF6-991A-510E75847729}]
@="SmallKB"
?
[HKEY_CLASSES_ROOT/CLSID/{A523DFC7-1A7E-4AF6-991A-510E75847729}/DefaultIcon]
@="//windows//SmallKB.dll"
?
[HKEY_CLASSES_ROOT/CLSID/{A523DFC7-1A7E-4AF6-991A-510E75847729}/InprocServer32]
@="//windows//SmallKB.dll"
?
[HKEY_CLASSES_ROOT/CLSID/{A523DFC7-1A7E-4AF6-991A-510E75847729}/IsSIPInputMethod]
@="1"
?
ENDIF BSP_HEBREW
?
3.?????? 把LargeKB.dll和SmallKB.dll拷貝到release的目錄下。
4.?????? 編譯生成NK.bin并且更新NK,在新的系統(tǒng)中點(diǎn)擊屏右下角的輸入法和鍵盤的圖標(biāo),有kyeboard(系統(tǒng)自帶的)、LargeKB和SmallKB這三種鍵盤,默認(rèn)選擇的是keyboard,但是我要選擇LargeKB或是SmallKB的時(shí)候,沒(méi)有反應(yīng),彈出來(lái)的還是keyboard的input panel,為什么呢?一時(shí)不知道原因,因?yàn)槲以?/span>WINCE5.0中驗(yàn)證過(guò)這兩種鍵盤是可用的了。而kyboard這個(gè)系統(tǒng)自帶的input panel是可以正常使用,就到common.reg中查找這個(gè)鍵盤的相關(guān)內(nèi)容,如下:
; SIP IM values
; Default keyboard initial delay and autorepeat
[HKEY_CURRENT_USER/ControlPanel/Keybd]
"InitialDelay"=dword:177
"RepeatRate"=dword:8
?
[HKEY_CLASSES_ROOT/CLSID/{42429667-ae04-11d0-a4f8-00aa00a749b9}]
@=LOC_KEYBOARD
"KBMode"=dword:5
[HKEY_CLASSES_ROOT/CLSID/{42429667-ae04-11d0-a4f8-00aa00a749b9}/InprocServer32]
@="//windows//msim.dll"
[HKEY_CLASSES_ROOT/CLSID/{42429667-ae04-11d0-a4f8-00aa00a749b9}/IsSIPInputMethod]
@="1"
[HKEY_CLASSES_ROOT/CLSID/{42429667-ae04-11d0-a4f8-00aa00a749b9}/DefaultIcon]
@="//windows//msim.dll,0"
比較之后知道我的platform.reg中上面的內(nèi)容正確的,那問(wèn)題可能會(huì)在哪里呢?通過(guò)msim.dll來(lái)找到keyboard在platorm.bib中相關(guān)內(nèi)容如下:
; @CESYSGEN IF CE_MODULES_MSIM
??? msim.dll??????? $(_FLATRELEASEDIR)/msim.dll???????????????????? NK? SH
; @CESYSGEN ENDIF
經(jīng)過(guò)比較才發(fā)現(xiàn)msim.dll后面對(duì)應(yīng)的是SH,而不是SHK,發(fā)現(xiàn)這個(gè)問(wèn)題后才忽然醒悟鍵盤是應(yīng)用程序dll,不屬于內(nèi)核態(tài),所以不能是SHK。就這樣,把第1步中的SHK都改為SH后就正常使用那兩個(gè)鍵盤了。
?
?
總結(jié)
以上是生活随笔為你收集整理的WINCE6.0添加特定的软件键盘的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: vs2005编译DNW050A
- 下一篇: WINCE Launch函数分析