取消按键

wildcat1984 2008-06-05 10:03:50
我在OnKbdReadComplete回调中屏蔽了上下左右这四个按键
KeyData[i].MakeCode = 0;
但是因为这四个键是扩展按键,它的Make Code是两个,比如0xE0,0x48
前面那个0xE0回调函数是接受不到的。所以我可以把0x48改成0,
却不知道怎么把0xE0取消掉?
好象如果不取消掉会有副作用,
请问有什么好办法吗?
...全文
97 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wildcat1984 2008-06-06
  • 打赏
  • 举报
回复
是会有影响,连续写两次0xE0到8042端口。
有没有把缓冲区清空的方法?
或者8042的命令参考也可以
wildcat1984 2008-06-05
  • 打赏
  • 举报
回复
另外,如果我用下面的方法模拟按键 0xE0,0x48 总是有问题
如果用WinIO SetKey 就没有问题。不知道是为什么?


//模拟键盘操作之等待函数
BOOLEAN
WaitForKeyboardWrite(VOID)
{
int i;
UCHAR c;

for (i = 0; i < 1000; ++i)
{
KeStallExecutionProcessor(50);
c = READ_PORT_UCHAR(defI8042_CTRL_PORT);
if ((c & defOBUFFER_FULL) == defOBUFFER_FULL)
break;
}

return i ? TRUE : FALSE;
}
//模拟键盘操作
VOID PressKeyByScanCode(
IN CONST BYTE ScanCode
)
{
WRITE_PORT_UCHAR(defI8042_CTRL_PORT, 0xd2);

WaitForKeyboardWrite();

WRITE_PORT_UCHAR(defI8042_DATA_PORT, ScanCode);
}

21,595

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧