Aparentemente, de alguma forma, o led não é definido automaticamente. O plano de fundo abaixo cuidará disso:
#!/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)
Como usar:
- Copie o script em um arquivo vazio, salve-o como
fix_led
(sem extensão) em/usr/local/bin
e torne-o executável . - Como você precisa editar o arquivo
/sys/class/leds/input45::capslock/brightness
, é necessário adicionar o script ao arquivo sudoers, conforme explicado, por exemplo, aqui . -
Teste- execute o script executando
sudo /usr/local/bin/fix_led
em um terminal, teste sua tecla Caps Lock .
-
Agora adicione o script aos seus aplicativos de inicialização: Dash > Aplicativos de inicialização > Adicionar. Adicione o comando:
/bin/bash -c "sleep 10 && sudo /usr/local/bin/fix_led"
É isso. Na próxima reinicialização (log in), deve funcionar.
Notas
-
Naturalmente, o patch deve funcionar em todas as situações em que o led não está funcionando. a localização exata do arquivo
capslock/brightness
pode variar no entanto. Defina, se necessário, a localização na linha:led = "/sys/class/leds/input45::capslock/brightness"
na cabeça do script (não escape do
:
inpython
). Eu testei o script fazendo com que ele definisse o led da maneira errada :) (foi desligado quando Caps Lock estava ligado, ligado quando estava desligado). - A carga extra do script não é nenhuma.
Explicação
Informações sobre o estado atual do
xset -q
Uma vez por segundo, o script verifica se Caps Lock: on
está na saída. O script também verifica se o estado atual corresponde ao estado de led (1 ou 0), conforme lido no arquivo capslock/brightness
.
Se estes dois não corresponderem, o script define o estado do led de acordo com o estado real Caps Lock .