私はバックライト付きの非常にシンプルなユニバーサルゲームキーボードを持っています。一般的にバックライトを使用する一般的な方法はを使用することです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;\""
それでも役に立たない場合は、さらに調査してルールの属性を指定してくださいbInterfaceClass
。bInterfaceSubClass
編集する:
ハードウェアのもう1つの理論は、udev
キーボードがLEDコマンドを受け入れる準備ができていないときにルールが早すぎるということです。何が起こったのかを報告してください"/bin/bash -c \"sleep 5;DISPLAY=:1 xset led 3;\""
。その他にいくつかの注意事項があります。
DISPLAY
私はあなたがあなたのもので:1
あるかどうかを確信してほしい:0
。コマンド
DISPLAY
に変数を追加する方法に注意してください。変数自体を以外に設定してください。xset
DISPLAY=:1
DISPLAY
bash
xset
XAUTHORITY="/home/<user>/.Xauthority"
それに追加したいかもしれません。
答え2
/etc/udev/rules.d/keyboardled.rules
ACTION=="追加", ATTRS{idVendor}=="1c4f", ATTRS{idProduct}=="0002", RUN+="/bin/sh -c 'DISPLAY=:0.0 XAUTHORITY=/home/nill/.Xauthority sh -c "xset led 3" & '"
動作しています... = D