在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进制数)是根据什么来的?谢谢
4 个解决方案
#1
看是不是MDD还是PDD 就看它实现的接口就可以了!
其他的没做过不便多言
其他的没做过不便多言
#2
楼主自己说的是对的!kbd就是这样分层的!
#3
usb键盘没有分析过呀!
#4
键盘的一般工作原理是键盘按键产生一个键值到键盘控制器,键盘控制器再将产生的值转换成系统上的键盘定义值
最后一项值就是系统键盘定义值
最后一项值就是系统键盘定义值
#1
看是不是MDD还是PDD 就看它实现的接口就可以了!
其他的没做过不便多言
其他的没做过不便多言
#2
楼主自己说的是对的!kbd就是这样分层的!
#3
usb键盘没有分析过呀!
#4
键盘的一般工作原理是键盘按键产生一个键值到键盘控制器,键盘控制器再将产生的值转换成系统上的键盘定义值
最后一项值就是系统键盘定义值
最后一项值就是系统键盘定义值