WINCE6.0添加特定的软件键盘
*******************************LoongEmbedded********************************
作者:LoongEmbedded
時間:2010.12.05
類別:WINCE應用開發********************************LoongEmbedded********************************
?
前天因客戶的需要,需要在WINCE6.0的系統中添加以色列語言的鍵盤到系統中,本以為是很簡單的事情,因為之前在WINCE5.0下也有做過在系統中增加鍵盤的經歷了,所需要的工作如下:
1.?????? 在plarform.bib中加入下面的內容:
IF BSP_HEBREW
LargeKB.dll?? ???????? $(_FLATRELEASEDIR)/LargeKB.dll????????????????????? NK? SHK?
SmallKB.dll? ??????????? $(_FLATRELEASEDIR)/SmallKB.dll????????????????????? NK? SHK
ENDIF BSP_HEBREW
在這里環境變量來根據項目需要是否在系統中包含這兩個鍵盤。
?
2.?????? 在platform.reg中加入下面的內容:
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,在新的系統中點擊屏右下角的輸入法和鍵盤的圖標,有kyeboard(系統自帶的)、LargeKB和SmallKB這三種鍵盤,默認選擇的是keyboard,但是我要選擇LargeKB或是SmallKB的時候,沒有反應,彈出來的還是keyboard的input panel,為什么呢?一時不知道原因,因為我在WINCE5.0中驗證過這兩種鍵盤是可用的了。而kyboard這個系統自帶的input panel是可以正常使用,就到common.reg中查找這個鍵盤的相關內容,如下:
; 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中上面的內容正確的,那問題可能會在哪里呢?通過msim.dll來找到keyboard在platorm.bib中相關內容如下:
; @CESYSGEN IF CE_MODULES_MSIM
??? msim.dll??????? $(_FLATRELEASEDIR)/msim.dll???????????????????? NK? SH
; @CESYSGEN ENDIF
經過比較才發現msim.dll后面對應的是SH,而不是SHK,發現這個問題后才忽然醒悟鍵盤是應用程序dll,不屬于內核態,所以不能是SHK。就這樣,把第1步中的SHK都改為SH后就正常使用那兩個鍵盤了。
?
?
總結
以上是生活随笔為你收集整理的WINCE6.0添加特定的软件键盘的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vs2005编译DNW050A
- 下一篇: WINCE系统启动时是否clean bo