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.dllSmallKB.dll拷贝到release的目录下。

4.       编译生成NK.bin并且更新NK,在新的系统中点击屏右下角的输入法和键盘的图标,有kyeboard(系统自带的)LargeKBSmallKB这三种键盘,默认选择的是keyboard,但是我要选择LargeKB或是SmallKB的时候,没有反应,弹出来的还是keyboardinput 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来找到keyboardplatorm.bib中相关内容如下:

; @CESYSGEN IF CE_MODULES_MSIM

    msim.dll        $(_FLATRELEASEDIR)/msim.dll                     NK  SH

; @CESYSGEN ENDIF

经过比较才发现msim.dll后面对应的是SH,而不是SHK,发现这个问题后才忽然醒悟键盘是应用程序dll,不属于内核态,所以不能是SHK。就这样,把第1步中的SHK都改为SH后就正常使用那两个键盘了。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

loongembedded

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值