Bluetoothキーボードが接続されたら、コマンドを実行する必要があります。このイベントをどのように「聞きますか?」
答え1
ハードウェアを接続するとき、ウデブフレームワークはそれをどのように処理するかを決定します。一般的な作業は、以下にデバイスノードを作成することですが、/dev
すべてのシェルコマンドを実行できます。
まず、デバイスを識別する方法を知る必要があります。キーボードを接続して実行します。udevadm info -a -n /dev/input/event9
ここで最後のパラメータは、デバイスに対応するデバイスファイルへのパスです/dev/
。接頭辞を省略できます/dev/
。を/sys
置き換えて、デバイスノード名の代わりにsyspath(下のパス)を使用できます。すべての場合にデバイスに適したパスを置き換えます。これにより、デバイスのさまざまな特性が印刷されます。デバイスを一意に識別するのに十分なテーブルから1つ以上の行を収集します。-n …
-p class/input/event9
input/event9
SETTING=="VALUE"
/etc/udev/rules.d
名前vemv-keyboard.rules
または同様のファイルの下にファイルを作成します。一致させる設定と実行するアクションを含む行をこのファイルに配置します。==
属性の一致、=
属性の設定、+=
その他のアクションの指定など、正しい演算子を使用するように注意してください。それは次のとおりです。
# Run a program when my wireless keyboard is connected
SUBSYSTEMS=="input", ATTRS{vendor}=="Yoyodene", ATTRS{model}=="Bluetooth keyboard 9000", RUN+="/path/to/script $root/$name"
次にデバイスを接続すると、プログラムが実行されます(ファイルを追加しても接続されたデバイスには影響しません)。実行すると、ルールが目的の効果を得たかどうかを確認できますudevadm test class/input/event9
(ここでは引数は上記のsyspathです)。ルールを手動で適用するには、を実行しますudevadm trigger --sysname=class/input/event9
。
答え2
udevadm monitor
ランは私の問題を解決する良い基盤のようです。デーモンプロセスが出力を解析し、必須項目をフィルタリングし、これらのイベントに反応させることができます。