GNU/Linux >> Linux の 問題 >  >> Linux

デーモン (つまりバックグラウンド) プロセスが USB キーボードからのキー押下を探すことは可能ですか?

デバイスは 06 でファイルを取得する可能性が最も高い 19 という名前 ここで、N はマウス、キーボード、ジャック、電源ボタンなどのさまざまなデバイスです。

03

ヒントが得られるはずです。

こちらもご覧ください:

12

どこで 21 値は 38 の下のパスです .

たとえば、次のようにテストできます。

20

ioctl を使用して実装し、デバイスと監視を確認します。

編集 2:

わかった。 41 という仮定に基づいて、この回答を拡張しています

1 つの方法:

<オール>
  • 起動ループですべて 58 69 で見つかったファイル . 74 を使用 イベント ビットを要求するには:

    34

    次に、82 かどうかを確認します -bit が設定されています。

  • IFF を設定し、キーをチェックします:

    42

    例えば。数字キーが興味深い場合は、91 のビットかどうかを確認してください - 100114 123 へ .

  • IFF キーが見つかり、スレッドでイベント ファイルの監視を開始します。

  • 1に戻ります。

  • このようにして、必要な基準を満たすすべてのデバイスを監視できるようになります。 138 だけをチェックすることはできません 例として電源ボタンにはこのビットが設定されますが、明らかに 142 はありません などを設定します。

    エキゾチック キーでは誤検出が見られますが、通常のキーでは誤検出が見られます これで十分です。監視に直接的な害はありません。電源ボタンまたはジャックのイベント ファイルを生成しますが、それらは問題のイベントを発行しません (別名、悪いコード)。

    以下で詳しく説明します。

    編集 1:

    「最後の文を説明してください…」に関して .ここでスタックオーバーフローの土地に行きます...しかし:

    C の簡単で汚いサンプルです。さまざまなコードを実装して、実際に正しいデバイスを取得し、イベントの種類、コード、および値を変換することを確認する必要があります。通常、キーダウン、キーアップ、キーリピート、キーコードなどです。

    残りを追加する時間がありません (ここでは多すぎます)。

    157 をチェックしてください 、 168 のようなプログラム 、マッピングコード用のカーネルコードなど。例えば。 177

    とにかく:

    例として実行:

    51

    コード:

    63

    編集 2 (続き):

    189 を見ると、 各行の先頭に文字があります。こちら 190 ビットマップを意味します。たとえば、

    75

    これらの各ビットは、デバイスのプロパティに対応します。 203 で定義されているように、ビットマップの意味で、1 はプロパティが存在することを示します . :

    82

    217 を見てください カーネルソースツリーにあります。そこにはたくさんの良いコードがあります。 (たとえば、デバイスのプロパティはこの関数によって生成されます。)

    これらの各プロパティ マップは 227 で取得できます .たとえば、利用可能な LED プロパティを確認したい場合は、次のように言います:

    92

    239 の定義を見てください 241250 について が定義されています。

    LED の状態を確認するには:

    109

    265 のビット 1 の場合 1 の場合、num-lock が点灯します。ビット 2 が 1 の場合、Caps Lock が点灯します。

    278 さまざまな定義があります。

    イベント監視に関する注意:

    監視用の疑似コードは、次のようなものになる可能性があります:

    117

    関連ドキュメント:

    <オール>
  • 282 、特に。セクション 5 に注意してください。
  • 296 、さまざまなイベントの説明など。 300 319について
  • 326 ...必要に応じて残りを読んでください。

  • 333 を参照することで、これを簡単に行うことができます .これらは、344 を使用して逆参照できるシンボリック リンクとして表示されます。 関連するブロックデバイスを決定します。ただし、これらのリンクは 354 によって作成されます 組み込み環境には存在しない可能性があります。

    または.. 364 を見てください USB デバイスを接続した後。 375 が表示されるはずです ノード。


    Linux
    1. バックグラウンド プロセスとしてコマンド ラインから PHP スクリプトを実行する

    2. Linux でのデーモンの作成

    3. Linuxで「ps」または「top」のリストからプロセスを「隠す」ことは可能ですか

    1. Linux –プロセスの特定のパスを偽造することは可能ですか?

    2. プロセスの特定のパスを偽造することは可能ですか?

    3. シェルでプロセスをデーモン化しますか?

    1. 同じが実行されている場合はプロセスを確認しますか?

    2. Linux からブータブル USB を作成:できるだけ簡単に!

    3. Rsync プロセスをバックグラウンドで実行する方法