udevルールはキーボードバックライトをオンにします

udevルールはキーボードバックライトをオンにします

私はバックライト付きの非常にシンプルなユニバーサルゲームキーボードを持っています。一般的にバックライトを使用する一般的な方法はを使用することですxset led 3。これが実際に機能していることを確認できます。ただし、コンピュータが2台あるため、周辺スイッチを介して前後に切り替えることができますが、ある環境から別の環境に切り替えるときにUSBを抜いて再接続する必要があるため、問題が発生します。

私は/etc/udev/rules.d/keyboard.rules次の規則に従ってファイルを作成しました。

ATTRS{idVendor}=="258a", ATTRS{idProduct}=="0001", RUN+="/bin/bash -c \"DISPLAY=:1;xset led 3;\""

単独で実行するとうまく/bin/bash -c \"DISPLAY=:1;xset led 3;\"いきますが、単純なルールではないようです。時々オンになり、オンになると点滅してすぐにオフになります。何度も確認した結果、私のidVenderとidProductが正しいことが確認されました。

Bus 003 Device 079: ID 258a:0001

また何が見逃せますか?

ベストアンサー1

問題は、あなたのルールが何度も実行されることです(このような場合であることを確認できますudevadm monitor)。各xsetコマンドはLEDの状態を切り替えて、LEDがしばらく点滅してから再び消灯します。ルールをより具体的にする必要があります。たとえば、次のようになります。

ACTION=="add", ENV{DEVTYPE}=="usb_interface", ATTRS{idVendor}=="258a", ATTRS{idProduct}=="0001", RUN+="/bin/bash -c \"DISPLAY=:1 xset led 3;\""

それでも役に立たない場合は、さらに調査してルールの属性を指定してくださいbInterfaceClassbInterfaceSubClass

編集する:

ハードウェアのもう1つの理論は、udevキーボードがLEDコマンドを受け入れる準備ができていないときにルールが早すぎるということです。何が起こったのかを報告してください"/bin/bash -c \"sleep 5;DISPLAY=:1 xset led 3;\""。その他にいくつかの注意事項があります。

  1. DISPLAY私はあなたがあなたのもので:1あるかどうかを確信してほしい:0

  2. コマンドDISPLAYに変数を追加する方法に注意してください。変数自体を以外に設定してください。xsetDISPLAY=:1DISPLAYbashxset

  3. XAUTHORITY="/home/<user>/.Xauthority"それに追加したいかもしれません。

おすすめ記事