sunnyfool 发表于 2011-3-11 17:05:24

sunnyfool 发表于 2011-3-13 16:53:56

飞凌-alexlee 发表于 2011-3-14 08:43:30

Matrix

sunnyfool 发表于 2011-3-14 17:06:08

飞凌-alexlee 发表于 2011-3-15 08:33:13

在 Matrix 的源码里搜一下,alexlee

sunnyfool 发表于 2011-3-15 13:32:09

飞凌-alexlee 发表于 2011-3-16 08:26:42

keymatrix.cpp

sunnyfool 发表于 2011-3-16 12:36:30

飞凌-alexlee 发表于 2011-3-16 13:13:06

楼上你太懒了吧~~

你查查下边函数,是用来干什么的~~
keybd_event

swet123 发表于 2011-3-18 16:41:25

我也遇到了这个问题:keybd_event(0x30+idx ,0x30+idx, 0, 0);
Sleep(1);
keybd_event(0x30 + idx ,0x30 + idx, KEYEVENTF_KEYUP, 0);
首先便于叙述, 按照串口打印的硬件扫描码 对键盘进行编号:
为0号键 idx 为 0;
为1号键 idx 为 1;
为1号键 idx 为 2;
.....
为10号键 idx 为 10;
为10号键 idx 为 10;

查询了下MSDN, 说这里是模拟键盘的按键动作, 当idx 是0 的时候, 模拟的是按一次'0'的动作,当idx是1的时候,模拟的是'1'的动作 .
于是按照这个逻辑, 我打开winCE的记事本, 依次按 0号键 到 9 号键, 在记事本上输出 '0' - '9'; 但是下面的就不输出了.

所以我觉的 键盘扫描码到虚拟键值的映射不是由keybd_event函数来实现的.

下面我又注意到了这个函数:
v_pfnKeybdEvent(v_uiPddId, rguiScanCode, rgfKeyUp);

这个函数是由函数指针一路传递进来的, 我查阅了资料, 这个函数好像是这个函数 KeybdEventCallback(
    UINT    uiPddId,
    UINT32uiScanCode,
    BOOL    fKeyUp
    )
我在里面放置了打印函数, 可惜没有输出.

正如楼主所说, 我对ScanCodeToVKeyTable修改也不能正确映射....

现在 整的 我头晕脑胀的, source insight 一天了... 彻底晕死在代码里面了.

who can help me!!!

请飞凌的高手, 诸位大神,帮帮我,    8 * 8 键盘如何实现的 映射? 谢谢. 非常感谢.

likeandhate 发表于 2011-3-24 19:04:51

sunnyfool 发表于 2011-3-29 15:59:16

页: [1]
查看完整版本: 键盘驱动的奇怪问题