如何在C程序中暂时禁用键盘。我已经想到的是禁用键盘的IRQ线(IRQ 2)。我用Google搜索并找到了
disable_irq()
功能,但不起作用。这是代码:
#include<stdio.h>
#include<irq.h>
#include<unistd.h>
void main()
{
printf("trying to disable the keyboard via IRQ.....");
sleep(2);
disable_irq(2);
printf("IRQ line has been disabled");
sleep(10);
printf("Enabling IRQ.....");
}
当我运行时,我收到此错误:
irq.c:2:16: fatal error: irq.h: No such file or directory
compilation terminated.
您能帮我解决这个问题或建议其他方法吗?
答案 0 :(得分:0)
不,您无法从用户空间禁用键盘。我看不出你为什么要这么做的理由。如果您希望应用程序获得所有按键,请尝试仅作为全屏窗口。
如果您试图阻止内核获得紧急按键,我永远不会安装您的应用程序。键盘是内核和用户之间通信的基本方法。内核使用它来获取指令,获取紧急恢复命令,并告诉你它正在崩溃(闪烁的大写锁定灯)。
即使可以,也不应该禁用键盘。
答案 1 :(得分:0)
您无法从用户空间调用disable_irq(2)
,因为它是内核调用,只能从内核模块或内核代码调用。禁用/禁止键盘的其他方法有:
rmmod
卸载键盘设备驱动程序。stdin
重定向到/dev/null
#define scanf //NOP
Ctrl+C
等控制字符,请使用signal mask
。