Linux で入力デバイスファイルのパスを特定する
入力デバイスの出力(?)を知りたい場合、/dev/input
などを見ると思います。
ただ、このディレクトリには event16 みたいなワケわからん名前しかないので困る、ということで ID でリンクしてある /dev/input/by-id
を見たりします。
しかし、ID でリンクしてくれないデバイスも結構あったりします。
そこで /proc/bus/input/devices
を見たりするんですが、ここからデバイスファイルを抜きだすのはちょっと面倒。
ということで書いた簡易なスクリプトです。
引数なしでデバイスのリスト
$ find-input-devices /home/anekos/bin/find-input-device <DEVICE_NAME> Current deivces: Sleep Button ... Keebio The Nyquist Keyboard ... DELL Dell TP713 Wireless Touchpad Mouse
デバイスリストの名前を指定でデバイスファイルのパスを出力
$ find-input-device 'Keebio The Nyquist Keyboard' /dev/input/event18
ソースコード
#!/bin/bash set -euC # exec 5> /tmp/xmosh/shell-script-debug.out # BASH_XTRACEFD="5" # PS4='$LINENO: ' # set -x if [ "$#" -lt 1 ] then exec >&2 echo "$0 <DEVICE_NAME>" echo '' echo 'Current deivces:' grep '^N: Name=' /proc/bus/input/devices | sed 's/.*="//' | sed 's/"$//' exit 1 fi function die { exit 1 } NAME="$1" dev="$(grep -A 10 "$NAME" /proc/bus/input/devices | grep '^H:')" || die dev="$(expr "$dev" : '.*\(event[0-9]\+\)')" || die echo "/dev/input/$dev"