デバイスは 06
でファイルを取得する可能性が最も高い 19
という名前 ここで、N はマウス、キーボード、ジャック、電源ボタンなどのさまざまなデバイスです。
03
ヒントが得られるはずです。
こちらもご覧ください:
12
どこで 21
値は 38
の下のパスです .
たとえば、次のようにテストできます。
20
ioctl を使用して実装し、デバイスと監視を確認します。
編集 2:
わかった。 41
という仮定に基づいて、この回答を拡張しています
1 つの方法:
<オール>
起動ループですべて 58
69
で見つかったファイル . 74
を使用 イベント ビットを要求するには:
34
次に、82
かどうかを確認します -bit が設定されています。
IFF を設定し、キーをチェックします:
42
例えば。数字キーが興味深い場合は、91
のビットかどうかを確認してください - 100
と 114
123
へ .
IFF キーが見つかり、スレッドでイベント ファイルの監視を開始します。
1に戻ります。
このようにして、必要な基準を満たすすべてのデバイスを監視できるようになります。 138
だけをチェックすることはできません 例として電源ボタンにはこのビットが設定されますが、明らかに 142
はありません などを設定します。
エキゾチック キーでは誤検出が見られますが、通常のキーでは誤検出が見られます これで十分です。監視に直接的な害はありません。電源ボタンまたはジャックのイベント ファイルを生成しますが、それらは問題のイベントを発行しません (別名、悪いコード)。
以下で詳しく説明します。
編集 1:
「最後の文を説明してください…」に関して .ここでスタックオーバーフローの土地に行きます...しかし:
C の簡単で汚いサンプルです。さまざまなコードを実装して、実際に正しいデバイスを取得し、イベントの種類、コード、および値を変換することを確認する必要があります。通常、キーダウン、キーアップ、キーリピート、キーコードなどです。
残りを追加する時間がありません (ここでは多すぎます)。
157
をチェックしてください 、 168
のようなプログラム 、マッピングコード用のカーネルコードなど。例えば。 177
とにかく:
例として実行:
51
コード:
63
編集 2 (続き):
189
を見ると、 各行の先頭に文字があります。こちら 190
ビットマップを意味します。たとえば、
75
これらの各ビットは、デバイスのプロパティに対応します。 203
で定義されているように、ビットマップの意味で、1 はプロパティが存在することを示します . :
82
217
を見てください カーネルソースツリーにあります。そこにはたくさんの良いコードがあります。 (たとえば、デバイスのプロパティはこの関数によって生成されます。)
これらの各プロパティ マップは 227
で取得できます .たとえば、利用可能な LED プロパティを確認したい場合は、次のように言います:
92
239
の定義を見てください 241
で 250
について が定義されています。
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
が表示されるはずです ノード。