デバイスで特定のイベントをトリガーします。

デバイスで特定のイベントをトリガーします。

デバイスを接続または削除するたびに、デバイスを設定する必要なく、デバイスがシステムに動的に接続または切断されたときにデバイスに特別なトリガイベントを設定できるかどうか疑問に思います。クロックトリガー

/dev/input/event

そのため、デバイスが接続されているか接続されていないかを知り、使用中にそのデバイスのデーモンを起動または終了します。

これが私がトリガーイベントを使用する理由です。

私はゲームに使用するのが好きなゲームパッドコントローラを持っていますが、それを使用したいときはいつでもコントローラの特定の設定に合わせて動作するようにプラグを差し込むたびに設定を変更する必要があります。ただし、場合によっては、コントローラのランダムな切断と再接続イベントがリセットされ、私が設定した設定は無視されます。つまり、再構成する必要があることを意味します。したがって、私の目標は、スクリプトで設定ファイルを呼び出してデバイスが接続されていることを検出したら、設定を再実行して設定ファイルを事前設定することです。中に何かありますか?

/etc/udev/rules.d

このためのルールを作成できますか?私のゲームパッドの設定ファイルは次の場所に保存されています。

~/.config/ds4drv.conf

また、電話することができます

/etc/ds4drv.conf

ゲームパッドが接続されているか接続されていないことが検出されるたびに、そのプロファイルを確認して適用できるようにしたいです。 PIDファイルをロックできるデーモンを実行するオプションで構成されています。

/tmp/ds4drv.pid

実行するとき。現在のデーモンが実行されているかどうかを事前に確認し、そうでない場合はデーモンを起動し、ゲームパッドデバイスが検出されたら設定ファイルに設定を適用します。 Steamゲームをプレイするときは、時々混乱を引き起こしてコントローラを有効にするためにチェックボックスをもう一度選択する必要があります。これは、コントローラが再接続する前に一時的に切断され、内容を読み取れない場合は、中断した部分から再起動したいときに面倒になる可能性があります。構成ファイル。

答え1

udevはあなたの友人です。called 99-gamepad.rules次にファイルを追加できます。/etc/udev/rules.d/

ファイルには、次のような行を含める必要があります。

DRIVER=="usb",ATTRS{idProduct}=="c52b",RUN+="/path/to/your_script.sh"

ATTRS以下を使用して見つけることができますudevadm

udevadm info -a -p /sys/bus/usb/devices/3-1.5

sysからUSBデバイスへのパスに置き換えるか、または/sys/bus/usb/devices/3-1.5を使用できます/dev/。私は通常、私のデバイスと一致するパスが見つかるまでいくつかのパスを試しています。

デバイスパスがわかっている場合は、/dev次の行を使用できます。

udevadm info -a -p $(udevadm info -q path -n /dev/input/js0)

これは、ルールの作成方法を説明するudevのマニュアルページです。

また、見ることができますArchWiki udevページ。

関連情報