memo/20251007
created 2025-10-07 modified 2025-10-07
/dev/input/ 以下のデバイスファイルを、学んでいます。
少し分かってきたのが
ゲームパッドは /dev/input/js0 で見ると、それ専用のAPI(というか構造体) でボタンやアナログ軸の値を取れるのだけど、
「他のプロセスに見せない」という操作はできない。
(参考コマンド
全く同じデバイスが、 /dev/input/event14 など(その時で変わる) で見れて、
こちらは「他のプロセスに見せない」という操作ができる。
(参考API
でも /dev/input/eventX から値を取るAPI(というか構造体) は、js0 とはまた別。
別だけどそれはそれで、値はとれるらしい。
(参考コマンド
で、起動ごとに毎回変わる eventX の X の値なんだっけ、となるので、grep して調べたい。
汎用手順は以下なのですが
"その周辺も見る" が曖昧で、面倒です。
面倒なことはスクリプトにしたくなるたちなので、書きました。
使用してみます
js0 で検索すると、同デバイスの デバイス名を確認でき、それが event14 (/dev/input/event14) でも見える、とわかります。
先頭で "showing /proc/bus/input/devices" と出してるのは冗長ですが、頻繁に「この元のファイルってなんだっけ」となるので足しました。
【* 日々のメモ】
少し分かってきたのが
ゲームパッドは /dev/input/js0 で見ると、それ専用のAPI(というか構造体) でボタンやアナログ軸の値を取れるのだけど、
「他のプロセスに見せない」という操作はできない。
(参考コマンド
jstest /dev/input/js0
)全く同じデバイスが、 /dev/input/event14 など(その時で変わる) で見れて、
こちらは「他のプロセスに見せない」という操作ができる。
(参考API
ioctl(fd, EVIOCGRAB, 1)
)でも /dev/input/eventX から値を取るAPI(というか構造体) は、js0 とはまた別。
別だけどそれはそれで、値はとれるらしい。
(参考コマンド
evtest /dev/input/event14
)で、起動ごとに毎回変わる eventX の X の値なんだっけ、となるので、grep して調べたい。
汎用手順は以下なのですが
- /proc/dev/input/devices 特殊ファイルを見て
- この表示は、空行を区切りとして 1つのデバイスとして見えるモノ が 複数行で表示されているので
- 目的のキーワードで検索し (kbd や js0 など)
- その周辺も見る
"その周辺も見る" が曖昧で、面倒です。
面倒なことはスクリプトにしたくなるたちなので、書きました。
使用してみます
keizo@fedora:vf2cmd$ search-devices js0
showing /proc/bus/input/devices ...
I: Bus=0003 Vendor=056e Product=2013 Version=0573
N: Name="Generic X-Box pad"
P: Phys=usb-0000:08:00.3-3.3/input0
S: Sysfs=/devices/pci0000:00/0000:00:08.1/0000:08:00.3/usb3/3-3/3-3.3/3-3.3:1.0/input/input56
U: Uniq=
H: Handlers=event14 js0
B: PROP=0
B: EV=20000b
B: KEY=7cdb000000000000 0 0 0 0
B: ABS=3003f
B: FF=107030000 0
keizo@fedora:vf2cmd$
js0 で検索すると、同デバイスの デバイス名を確認でき、それが event14 (/dev/input/event14) でも見える、とわかります。
先頭で "showing /proc/bus/input/devices" と出してるのは冗長ですが、頻繁に「この元のファイルってなんだっけ」となるので足しました。
【* 日々のメモ】