从60h和64h读键盘扫描码

brookmill 2010-12-07 03:58:05
我有一个linux程序,从60h直接读取键盘的扫描码,大致如下
if ((inb(0x64) & 1) == 0) return 0;
c = inb(0x60);
以前一直用在PC上,运行很正常。
今天把它拿到一台笔记本上之后,发现按键没反应。我在c = inb(0x60);后面加了输出,还是没有任何结果,说明是从inb(0x64)那里直接返回了。硬件肯定是好的,windows里面能用。
难道笔记本的键盘和PC的用法不一样?
...全文
369 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
brookmill 2010-12-23
  • 打赏
  • 举报
回复
搞定了。
结论:笔记本键盘和台式机用法一样,也是用60h和64h端口。
问题的原因:偶然发现另外一个地方的代码有问题,把它修改了之后键盘就好了……汗……囧……晕倒

谢谢各位。
brookmill 2010-12-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xyzjanker 的回复:]
USB的键盘??????貌似不行!!!!!!你看下你笔记本设备管理器里面键盘的IO地址范围就知道了!!!
[/Quote]
谢谢提醒。我看了,和台式机的一样,也是60h和64h。
这下彻底晕菜了……
不过这个项目暂时停下了,所以不是很急。
圣诞节前结贴
xyzjanker 2010-12-19
  • 打赏
  • 举报
回复
USB的键盘??????貌似不行!!!!!!你看下你笔记本设备管理器里面键盘的IO地址范围就知道了!!!
贝隆 2010-12-15
  • 打赏
  • 举报
回复
codesnail 2010-12-14
  • 打赏
  • 举报
回复
不同的硬件当然是不一样的。
Great_Bug 2010-12-14
  • 打赏
  • 举报
回复
60H/64H端口是很古老的标准了,现在很多机器可能不再兼容它。
brookmill 2010-12-08
  • 打赏
  • 举报
回复
又折腾了一天,还是没进展。
难道笔记本用的端口不是60h和64h?不会吧?
brookmill 2010-12-07
  • 打赏
  • 举报
回复
昨天发现这个问题的时候上网狂搜,看到一篇文章说笔记本用的不是8042,现在居然又找不到了。
我觉得笔记本和台式机不应该不一样,但是又不知道为什么在笔记本上读不出来
brookmill 2010-12-07
  • 打赏
  • 举报
回复
0x64是状态寄存器,bit0置位表示键盘有数据。0x60是数据寄存器。
这有一篇 i8042与i8048键盘控制器芯片端口操作总结
ask_qianru 2010-12-07
  • 打赏
  • 举报
回复
0x64读到的表示什么?状态?

21,619

社区成员

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

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