0

如何在 C 程序中临时禁用键盘。我已经想到的是禁用键盘的 IRQ 线(IRQ 2)。我用谷歌搜索它并找到了该 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.

你能帮我解决这个问题或建议任何其他方法来做同样的事情吗?

4

2 回答 2

0

您不能disable_irq(2)从用户空间调用,因为它是内核调用,并且只能从内核模块或内核代码调用。其他禁用/禁止键盘的方法是:

  1. 使用 .卸载键盘设备驱动程序rmmod
  2. 重定向stdin/dev/null
  3. #define scanf //NOP
  4. 要仅禁用控制字符,如Ctrl+C等,请使用signal mask.
于 2012-12-24T12:09:52.633 回答
0

不,您不能从用户空间禁用键盘。我看不出你为什么必须这样做。如果您希望您的应用程序获得所有按键,请尝试仅作为全屏窗口。

如果您试图阻止内核获得紧急击键,我永远不会安装您的应用程序。键盘是内核和用户之间通信的基本方法。内核使用它来获取指令,获取紧急恢复命令,并告诉您它正在恐慌(闪烁的大写锁定灯)。

即使可以,也不应该禁用键盘。

于 2012-12-20T14:38:13.097 回答