前几天,我发布了一个问题here,询问如何安全地开发键盘中断处理程序。
深入研究建议的答案,让我发现基本上我的默认键盘处理程序没有设置为IRQ 1.这是因为watch -n1 cat /proc/interrupts
和free_irq(23, (void*)irq_handler)
都强调IRQ 1不对键盘负责处理。此外,由于我的键盘和鼠标都通过USB连接,我发现IRQ 23负责两个USB设备。然后我修改了一点代码。每当我通过0x60
将我的处理程序设置为IRQ 23时,我可以在按下/释放任何键和任何鼠标移动时触发中断。因此,基本上IRQ 23会响应任何键盘和鼠标事件而触发。在这里,我无法找到按下哪个键,因为在任何提及的操作(按键,键释放,鼠标单击,鼠标移动)下,两个端口0x64
和0x60
总是分别报告相同的值156和28等等。)。
有两件事。 1)为什么IRQ 1不对键盘中断处理负责,2)如果IRQ 23负责,为什么从端口0x64
和WicketTester
获取值无法解决我在我发布的代码中的预期以上链接?
感谢您的任何建议。