flat7th

memo/20251007

created 2025-10-07 modified 2025-10-07 
/dev/input/ 以下のデバイスファイルを、学んでいます。

少し分かってきたのが
ゲームパッドは /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" と出してるのは冗長ですが、頻繁に「この元のファイルってなんだっけ」となるので足しました。

* 日々のメモ