Linuxユーザースペースからevdev / input_eventデバイス(マウスやキーボードなど)の種類を取得する方法は?
/proc/bus/input/handlers
を読んだりリストしたりして列挙できることはわかっていますが、/sys/class/input/
どのデバイスがマウスであるかキーボードであるかはわかりません。
/proc/bus/input/handlers
同様の行は、H: Handlers=sysrq kbd event3 leds
これが「kbd」が存在するキーボードであることを示すようですが、実際の文書を見つけることができません。
ベストアンサー1
カーネルは実際にはデバイスタイプの観点から推論しませんが、デバイスが生成できるイベントタイプの観点から多くを推論します(参照:イベントコード文書カーネルから)。
したがって、デバイスの種類を識別するには、いくつかの経験的な方法が必要です。多くのデバイスがキーイベントを生成できます。キーボードにはEV_KEY
キーイベント()と繰り返しイベント()を生成する特殊性がありますEV_REP
。私はマウスが関連イベント(EV_REL
)を生成する唯一のデバイスだと思います。
デバイスは、ev
そのクラスディレクトリのファイルから生成できるイベントの種類を公開しますcapabilities
。すべての偶数タイプには、1、20、2で定義された指定されたビットオフセットがあります/usr/include/linux/input-event-codes.h
。指定された値でこのビットを検索して、対象のデバイスを見つけることができます。EV_KEY
EV_REP
EV_REL
/sys/class/input/input*/capabilities/ev