3262|4

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

熟悉 USB KBD驱动的请进 [复制链接]

想请教:
在D:\WINCE500\PUBLIC\COMMON\OAK\DRIVERS\KEYBD 的键盘驱动(好象是MDD层)。不清楚是不是在非USB接口键盘情况下的驱动?
在D:\WINCE500\PUBLIC\COMMON\OAK\DRIVERS\USB\CLASS\HID\CLIENTS\KBDHID。在USB接口键盘情况下的MDD?
在D:\WINCE500\PLATFORM\SMDK2416\Src\Drivers\Keybd 这个目录下应该是PDD吧。
望知道的说下。
还有想请教个问题:
在D:\WINCE500\PUBLIC\COMMON\OAK\DRIVERS\USB\CLASS\HID\CLIENTS\KBDHID目录下的kbdhid.cpp有:
几个数组:
static const USAGE_TO_SCANCODE g_rgUsageToSc[] = {
    { 0,                                  0x00 }, // 00 - No Event
    { 0,                                  0x00 }, // 01 - Overrun
    { 0,                                  0x00 }, // 02 - POST Fail
    { 0,                                  0x00 }, // 03 - ErrorUndefined
    { 0,                                  0x1C }, // 04 - a A
                //change by hlj for test
    { 0,                                  0x32 }, // 05 - b B
    //{ 0,                                  0x21 }, // 05 - b B
    //change by hlj for test
    { 0,                                  0x21 }, // 06 - c C
    { 0,                                  0x23 }, // 07 - d D
//        { 0,                                  0x23 }, // 06 - c C
//    { 0,                                  0x21 }, // 07 - d D
        //
    { 0,                                  0x24 }, // 08 - e E
    { 0,                                  0x2B }, // 09 - f F
    { 0,                                  0x34 }, // 0a - g G
    { 0,                                  0x33 }, // 0b - h H
    { 0,                                  0x43 }, // 0c - i I
    { 0,                                  0x3B }, // 0d - j J
    { 0,                                  0x42 }, // 0e - k K
    { 0,                                  0x4B }, // 0f - l L
    { 0,                                  0x3A }, // 10 - m M
     中间省略了一些,要不发不出来:)

    { 0,                                  0xE1}, // 6a - F15
};

// Mapping from international Usages to AT Scan Codes
#define FIRST_GLOBAL_USAGE 0x85
#define LAST_GLOBAL_USAGE (FIRST_GLOBAL_USAGE + dim(g_rgGlobalUsageToSc) - 1)
static const USAGE_TO_SCANCODE g_rgGlobalUsageToSc[] =
{
    { 0,                                  0x51 }, // 85 - Keybad , (Brazillian)
    { 0,                                  0x00 }, // 86 - Keypad =
    { MAKE_FLAGS(0,       PT_JPN),        0x51 }, // 87 - Ro
    { MAKE_FLAGS(0,       PT_JPN),        0x13 }, // 88 - Katakana/Hiragana
    { MAKE_FLAGS(0,       PT_JPN),        0x6A }, // 89 - Yen
    { MAKE_FLAGS(0,       PT_JPN),        0x64 }, // 8a - Henkan
    { MAKE_FLAGS(0,       PT_JPN),        0x67 }, // 8b - Muhenkan
    { 0,                                  0x00 }, // 8c - Int'l 6
    { 0,                                  0x00 }, // 8d - Int'l 7
    { 0,                                  0x00 }, // 8e - Int'l 8
    { 0,                                  0x00 }, // 8f - Int'l 9
    { MAKE_FLAGS(0,       PT_NO_BREAK),   0xF2 }, // 90 - Hanguel/English
    { MAKE_FLAGS(0,       PT_NO_BREAK),   0xF1 }, // 91 - Hanja
    { 0,                                  0x63 }, // 92 - LANG Katakana
    { 0,                                  0x62 }, // 93 - LANG Hiragana
    { 0,                                  0x5F }, // 94 - LANG Zenkaku/Hankaku
};

// Mapping from modifier Usages to AT Scan Codes
#define FIRST_MODIFIER_USAGE HID_USAGE_KEYBOARD_LCTRL // 0xE0
#define LAST_MODIFIER_USAGE (FIRST_MODIFIER_USAGE + dim(g_rgModifierUsageToSc) - 1)
static const USAGE_TO_SCANCODE g_rgModifierUsageToSc[] = {
    { MAKE_FLAGS(0,       PT_MODIFIER),   0x14 }, // E0 - Left Control
    { MAKE_FLAGS(0,       PT_MODIFIER),   0x12 }, // E1 - Left Shift
    { MAKE_FLAGS(0,       PT_MODIFIER),   0x11 }, // E2 - Left Alt
    { MAKE_FLAGS(EB_E0,   PT_MODIFIER),   0x1F }, // E3 - Left GUI
    { MAKE_FLAGS(EB_E0,   PT_MODIFIER),   0x14 }, // E4 - Right Control
    { MAKE_FLAGS(0,       PT_MODIFIER),   0x59 }, // E5 - Right Shift
    { MAKE_FLAGS(EB_E0,   PT_MODIFIER),   0x11 }, // E6 - Right Alt
    { MAKE_FLAGS(EB_E0,   PT_MODIFIER),   0x27 }, // E7 - Right GUI
};

希望能帮忙解释下,还有数组的最后一项(16进制数)是根据什么来的?谢谢

最新回复

键盘的一般工作原理是键盘按键产生一个键值到键盘控制器,键盘控制器再将产生的值转换成系统上的键盘定义值 最后一项值就是系统键盘定义值  详情 回复 发表于 2009-9-18 18:16
点赞 关注

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
看是不是MDD还是PDD 就看它实现的接口就可以了!  
其他的没做过不便多言
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
楼主自己说的是对的!kbd就是这样分层的!
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
usb键盘没有分析过呀!
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 
键盘的一般工作原理是键盘按键产生一个键值到键盘控制器,键盘控制器再将产生的值转换成系统上的键盘定义值
最后一项值就是系统键盘定义值
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表