web-dev-qa-db-fra.com

Pas de voyant de verrouillage des majuscules?

Depuis que j'ai lancé Ubuntu 16.04 à double démarrage sur ma Surface Pro 3, le voyant DEL de verrouillage des majuscules de mon clavier ne fonctionnait plus. J'ai décidé d'essayer de faire quelque chose à ce sujet récemment. Quand je tape la commande

echo 1 | Sudo tee /sys/class/leds/input45\:\:capslock/brightness

La lumière s'allume, elle est donc au moins accessible. Je ne sais pas quoi faire pour que la lumière s’allume ou s’éteigne en fonction de l’état de verrouillage des majuscules. Toute aide serait grandement appréciée.

2
Leandro

Apparemment, le led n'est pas défini automatiquement. Le patch d’arrière plan ci-dessous s’occupe de ça

#!/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)

Comment utiliser:

  • Copiez le script dans un fichier vide, enregistrez-le sous le nom fix_led (sans extension) dans /usr/local/bin et rendez-le exécutable.
  • Étant donné que vous devez modifier le fichier /sys/class/leds/input45::capslock/brightness, vous devez ajouter le script au fichier sudoers, comme expliqué par exemple. ici .
  • Tester le script en exécutant

    Sudo /usr/local/bin/fix_led
    

    dans un terminal, testez votre Caps Lock clé.

  • Ajoutez maintenant le script à vos applications de démarrage: Dash> Applications de démarrage> Ajouter. Ajoutez la commande:

    /bin/bash -c "sleep 10 && Sudo /usr/local/bin/fix_led"
    

C'est ça. Au prochain redémarrage (connexion), cela devrait fonctionner.

Remarques

  • Bien entendu, le correctif devrait fonctionner dans toutes les situations où le voyant ne fonctionne pas. l'emplacement exact du fichier capslock/brightness peut varier. Définissez, si nécessaire, l'emplacement dans la ligne:

    led = "/sys/class/leds/input45::capslock/brightness"
    

    dans la tête du script (n'échappez pas le : dans python). J'ai testé le script en le plaçant dans le mauvais sens :) (conduit quand Caps Lock était allumé, quand il était éteint).

  • La charge supplémentaire du script est nulle.

Explication

Informations sur le courant Caps Lock state peut être récupéré par la commande:

xset -q

Une fois par seconde, le script vérifie si Caps Lock: on est dans la sortie. Le script vérifie également si l'état actuel correspond à l'état du voyant (1 ou 0), tel qu'il est lu dans le fichier capslock/brightness.

Si ces deux ne correspondent pas, le script définit l’état de la led selon le real Caps Lock Etat.

2
Jacob Vlijm