Surface Pro 3でUbuntu 16.04を初めてブートして以来、キーボードのCaps LockインジケーターLEDが機能しませんでした。私は最近、それについて何かしようとすることにしました。コマンドを入力するとき
echo 1 | Sudo tee /sys/class/leds/input45\:\:capslock/brightness
ライトが点灯するため、少なくともアクセス可能です。しかし、Caps Lockの状態に応じてライトをオンまたはオフにするために何をすべきかわかりません。どんな助けも大歓迎です。
どうやら、どういうわけかledは自動的に設定されません。以下の背景パッチがそれを処理します。
#!/usr/bin/env python3
import subprocess
import time
led = "/sys/class/leds/input45::capslock/brightness"
while True:
time.sleep(1)
ledstate = open(led).read().strip() == "1"
capstate = "Caps Lock: on" in \
subprocess.check_output(["xset", "-q"]).decode("utf-8")
if ledstate != capstate:
newled = "0" if capstate == False else "1"
open(led, "wt").write(newled)
fix_led
に/usr/local/bin
(拡張子なし)として保存し、実行可能にします。/sys/class/leds/input45::capslock/brightness
を編集する必要があるため、説明したように、スクリプトをsudoersファイルに追加する必要があります。 ここ 。テスト-実行してスクリプトを実行します
Sudo /usr/local/bin/fix_led
ターミナルで、テストします Caps Lock キー。
ここで、スクリプトをスタートアップアプリケーションに追加します:ダッシュ>スタートアップアプリケーション>追加。コマンドを追加します。
/bin/bash -c "sleep 10 && Sudo /usr/local/bin/fix_led"
それでおしまい。次回の再起動(ログイン)で、動作するはずです。
もちろん、パッチはledが機能していないすべての状況で機能するはずです。ただし、ファイルcapslock/brightness
の正確な場所は異なる場合があります。必要に応じて、行の場所を設定します。
led = "/sys/class/leds/input45::capslock/brightness"
スクリプトの先頭(python
の:
をエスケープしないでください)。間違った方法でledを設定することでスクリプトをテストしました:)( Caps Lock オン、オフのときにオン)。
現在の情報 Caps Lock 状態はコマンドで取得できます:
xset -q
1秒に1回、スクリプトはCaps Lock: on
が出力にあるかどうかを確認します。スクリプトは、capslock/brightness
ファイルから読み取られた現在の状態がled状態(1または0)に一致するかどうかもチェックします。
これら2つが一致しない場合、スクリプトはrealに従ってled状態を設定します Caps Lock 状態。