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

いいえ、ユーザー空間からキーボードを無効にすることはできません。どちらかをしなければならない理由がわかりません。アプリケーションですべてのキー押下を取得したい場合は、フルスクリーン ウィンドウにしてみてください。

カーネルが緊急のキーストロークを取得するのを防ごうとしているのであれば、私は決してあなたのアプリケーションをインストールしません。キーボードは、カーネルとユーザー間の通信の基本的な方法です。カーネルはこれを使用して、指示を取得したり、緊急復旧コマンドを取得したり、パニック状態であることを通知したりします (Caps Lock ライトの点滅)。

できたとしても、キーボードを無効にしないでください。

于 2012-12-20T14:38:13.097 に答える
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 に答える