5

私は Linux USB HID デバイス ( Hama MCEcat /dev/input/event7 ) を持っており、そのイベントを手動で読み取ることができますcat /dev/input/event8。デバイスのキーを押すたびに、cat上記のコマンドのいずれかで数バイトを読み取ることができます。マシンに Ubuntu Jaunty 64 ビット デスクトップがデフォルトでインストールされています。

デバイスから出力されたバイトを解釈するパーサーを作成できると思います。または、より便利であればlibhidを使用します。

私の質問は次のとおりです。

  1. テキストモードの仮想コンソールが、デバイスでのキー押下の一部を通常のキー押下として受信しないようにするにはどうすればよいですか? 現在のところ、一部のデバイス キーは、EnterBackSpacePageUp、またはテンキーの数字になります。
  2. 同様に、X サーバーがこのデバイスからキーボードとマウスのイベントを受信しないようにするにはどうすればよいですか? コンピューターに複数の USB キーボードとマウスが接続されています。X サーバーが、このデバイスを除くすべてのデバイスからイベントを受信するようにします。
  3. /usr/local/bin/keydumper /dev/input/event7 /dev/input/event8デバイスがコンピューターに接続されるたびに、コマンド(またはパスごとに 1 つのコマンド/dev/) が実行され、コマンド ラインで適切な/dev/パスが置き換えられるように設定するにはどうすればよいですか?
4

3 に答える 3

8

Linux USB HID ドライバー開発者からの回答に基づいて、私自身の質問に答えます。

質問 1. および 2.: する

ioctl(open("/dev/input/event7", O_RDONLY), EVIOCGRAB, 1);

このファイルハンドルが開いている限り、生成されたイベントはこのファイルハンドルのみに送信されます (同じデバイスの他の open() や、システム キーボードまたはマウス イベント プールには送信されません)。一度に HID デバイスで成功した EVIOCGRAB を保持できるプロセスは、最大でも 1 つです。Lirc は EVIOCGRAB を実行するように設定できます。

質問 3.: デバイスが接続されたらプログラムを開始するように udev を構成します。

于 2009-10-11T10:00:58.733 に答える
-1

すべての質問に対する解決策は、独自のフィルター デバイス ドライバーまたはデバイス用のカスタム ドライバーを作成することであると思います。そのようなもの(フィルターデバイスドライバー)がWindowsで利用できることを知っているので、Linuxでも同様のことができます。そのフィルター デバイス ドライバーでは、ブロックしたいターゲット デバイスからの不要なイベントをすべてブロックできます。

于 2009-10-09T11:39:10.853 に答える