16

キーボードイベントをキャプチャしようとしていました。たとえば、キーロガーを最初から掘り下げたいとします。2時間の戦いの後、私は次のことを見つけました

neel@pc1$ ls -l /dev/input/by-id
lrwxrwxrwx 1 root root 9 2010-05-05 21:33 usb-Plus_More_Enterprise_LTD._USB-compliant_keyboard-event-kbd -> ../event1
lrwxrwxrwx 1 root root 9 2010-05-05 21:33 usb-Plus_More_Enterprise_LTD._USB-compliant_keyboard-event-mouse -> ../event2
lrwxrwxrwx 1 root root 9 2010-05-05 21:33 usb-Plus_More_Enterprise_LTD._USB-compliant_keyboard-mouse -> ../mouse1

しかし、私がしようとしたとき

neel@pc1$ sudo cat /dev/input/usb-Plus_More_Enterprise_LTD._USB-compliant_keyboard-event-kbd

出力がありませんでした

もう少し検索した後、おそらくXorgの何かがそれをブロックしていると考えています。

それで、これ以上の情報は?? そして最後に、そのファイルから入力を読み取るにはどうすればよいですか?? または、キーボードイベントをキャプチャする他の方法はありますか??

4

6 に答える 6

15

こんにちは、

私は最近、似たようなことを達成しようとしていました。

logkeys プロジェクトを見てください。

http://code.google.com/p/logkeys/

ソースコードをダウンロードして logkeys.cc ファイルを見ると、キーボードでどの /dev/input/event が使用されているかを自動検出する 1 つの方法が見つかります。これにより、現在どのプログラムにフォーカスがあるかに関係なく、キーボードから raw スキャン コードを読み取ることができます。logkeys プログラムは、スキャン コードを文字に変換する方法や、その他の便利なトリックも示しています。

お役に立てれば、

マーカス。

于 2010-08-02T01:36:58.213 に答える
14

/proc/bus/input/devicesファイルで簡単なgrep操作を行うと、マシンに接続されているすべてのキーボードが生成されます。

 grep -E  'Handlers|EV=' /proc/bus/input/devices | \
 grep -B1 'EV=120013' | \
 grep -Eo 'event[0-9]+'

EV=120013デバイスでサポートされているイベントのビットマスクはどこにありますか。ここで説明したように。

これは、ログキーで実装される方法です

于 2014-03-21T19:51:16.437 に答える
10

間違ったデバイスを読み取っています。すべての /dev/input/event* を試すか、/var/log/Xorg.0.log でどのデバイスがキーボードに使用されているかを確認してください。

于 2010-05-05T18:09:42.797 に答える
10

evtest アプリケーションを使用することをお勧めします。これにより、すべての入力デバイスが一覧表示され、それらのイベントを監視できます。

于 2014-02-05T11:33:55.440 に答える
4

それについての手がかりをありがとうls -l /dev/input/by-id

defenderdz@defenderdz-pc:~$ ls -l /dev/input/by-id | grep kbd
lrwxrwxrwx 1 root root  9 nov.  28 14:04 usb-Logitech_USB_Receiver-event-kbd -> ../event7
lrwxrwxrwx 1 root root 10 nov.  29 00:33 usb-NOVATEK_USB_Keyboard-event-kbd -> ../event26
lrwxrwxrwx 1 root root  9 nov.  28 14:04 usb-SONiX_USB_DEVICE-event-kbd -> ../event3
defenderdz@defenderdz-pc:~$ 

「kbd」は、キーボード デバイスに使用されるサフィックスです (3 つのキーボードが接続されています)。

エラーは、間違ったフォルダーにアクセスしていることです:

/dev/input/それ以外の/dev/input/by-id

私の例では、正しいパスは次のとおりです。

defenderdz@defenderdz-pc:~$ sudo cat /dev/input/by-id/usb-NOVATEK_USB_Keyboard-event-kbd
���]�I���]�I���]�Ia���]�b���]�b���]�b���]�����]�����]��s���]����]����]����]�>
���]�>
 ���]�>
d���]�8
       ���]�8
              ���]�8
                    ���]�����]�����]��s���]H|���]H|���]H|���]�����]�� ���]��d���]Ǵ���]Ǵ ���]Ǵ

あなたの場合

neel@pc1$ sudo cat /dev/input/by-id/usb-Plus_More_Enterprise_LTD._USB-compliant_keyboard-event-kbd

それが最善の解決策だと言っているわけではありませんが、私にとってはうまくいきます。ls 結果を解析することで、キーボードの自動検出を作成することもできます...

于 2019-11-29T02:50:28.513 に答える