出ると、/dev/input/by-path
入力周辺機器を見ることができます。
キーボードとマウスがあり、私のプラットフォームでは、出力は次のようになります。
pci-0000:05:00.0-usb-0:1.2:1.0-event-kbd
pci-0000:05:00.0-usb-0:1.1:1.0-event-mouse
pci-0000:05:00.0-usb-0:1.1:1.0-mouse
pci-0000:05:00.0-usb-0:1.1:1.1-event-kbd
- デバイスごとに2つのアイテムがあるのはなぜですか?
- 各項目の目的は何ですか?
ところで、open(<path_to_device>, O_RDONLY)
入力を受け取る人はたった一人だけです(キーボードの場合はこの人ですusb-0:1.2:1.0
)。
(私はUbuntuを実行しています。あなたは知りません!)
答え1
デバイスごとに2つのアイテムがあるのはなぜですか?
無。デバイスごとに2つの項目がありません。はい、ペアリングする*-event-mouse
と*-mouse
同じpci-0000:05:00.0-usb-0:1.1:1.0
識別子を共有するため、同じデバイスであることを示します。一方、デバイス*-event-kbd
は異なります。
各項目の目的は何ですか?
runの場合、ls -l /dev/input/by-path
出力は次のようになります(はい)。
pci-0000:05:00.0-usb-0:1.2:1.0-event-kbd -> ../event5
pci-0000:05:00.0-usb-0:1.1:1.0-event-mouse -> ../event6
pci-0000:05:00.0-usb-0:1.1:1.0-mouse -> ../mouse0
pci-0000:05:00.0-usb-0:1.1:1.1-event-kbd -> ../event13
ご覧のとおり、デバイスevent*
がありますmouse*
。このファイル違いを説明してください。
event*
evdev
汎用入力イベントインタフェースです。カーネルで生成されたイベントをタイムスタンプとともにプログラムに直接渡します。イベントコードはすべてのアーキテクチャで同じで、ハードウェアに依存しません。これは、ユーザースペースがユーザー入力と連携するのに好ましいインターフェースであり、すべてのクライアントがそれを使用することをお勧めします。
mouse*
mousedev
マウス入力を使ったレガシープログラムを正しく動作させる技術です。これはマウスまたはデジタイザ/タブレットからイベントを取得し、/dev/psaux
ユーザーがPS / 2スタイル(ala)マウスデバイスを使用できるようにします。
sudo cat pci-0000:05:00.0-usb-0:1.1:1.0-event-mouse
別のコンソールで実行すると、sudo cat pci-0000:05:00.0-usb-0:1.1:1.0-mouse
どちらもマウスから読み取られますが、バイトストリームが異なることがわかります。
pci-0000:05:00.0-usb-0:1.2:1.0-event-kbd
あなたはキーボードがあなたのものであることを確認しました。残りのデバイス(pci-0000:05:00.0-usb-0:1.1:1.1-event-kbd
)は異なると思います。ls -l
上記のようにどのイベントに該当するかを調べる必要があります。
$ # Example from my laptop
$ cat /sys/class/input/event13/device/name
Laptop_Integrated_Webcam_FHD: I
私のWebカメラには物理ボタンはありませんが、同じドライバがいくつかの物理ボタン(スナップボタンなど)を持つWebカメラをサポートしているようです。あなたの場合、残りのデバイスも通常のキーボードではないかもしれません。