zoukankan      html  css  js  c++  java
  • 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后就正常使用那两个键盘了。

     

     

  • 相关阅读:
    Spacemacs配置yasnippe插件
    设置SSH只允许指定IP才能访问
    firewall的规则设置与命令(白名单设置)
    Docker存储驱动介绍
    elasticsearch启动常见错误
    ES系列:解决Exception in thread “main” java.nio.file.AccessDeniedException: /usr/local/elasticsearch
    ELK6.3.2搭建配置文件篇(filebeat版)
    Linux:sudo,没有找到有效的 sudoers 资源。
    Filebeat安装及使用
    elk + filebeat,6.3.2版本简单搭建,实现我们自己的集中式日志系统
  • 原文地址:https://www.cnblogs.com/liang123/p/6325790.html
Copyright © 2011-2022 走看看