J'ai déjà retiré physiquement le capuchon de la touche Verrouillage numérique afin d'éviter d'appuyer accidentellement dessus (j'utilise un clavier très compact). Mais je comprends qu'il y a n bogue dans xorg qui bascule Num Lock en off
lorsque je change de disposition du clavier.
J'ai donc besoin de quelque chose qui empêche le verrouillage numérique de "désactiver", ou encore (peut-être plus facile?) Surveille l'état de la Verrouillage numérique et l'allume "dès qu'il s'aperçoit qu'il est" désactivé ".
Here est une réponse Unix qui semble résoudre ce problème, mais pour LXDE. Que devrais-je faire pour que cette idée fonctionne dans Ubuntu 15.04 et Unity?
Je ne sais pas comment surveiller ou interroger l'état de verrouillage numérique, ni comment modifier l'état de verrouillage numérique par programmation, mais here est une solution qui utilise un script simple qui s'exécute en permanence. On dirait que cela fonctionnerait, mais je ne suis pas sûr qu'il soit judicieux de le laisser fonctionner tout le temps?
Le plus propre consisterait bien sûr à corriger le bogue, mais comme solution de contournement, le script d'arrière-plan ci-dessous fera l'affaire:
#!/usr/bin/env python3
import subprocess
import time
key = "org.gnome.settings-daemon.peripherals.keyboard numlock-state"
while True:
time.sleep(1)
state = subprocess.check_output([
"/bin/bash", "-c", "gsettings get "+key]).decode("utf-8").strip()
if state != "'on'":
subprocess.Popen([
"/bin/bash", "-c", "gsettings set "+key+" 'on'"])
NM_on.py
Testez-le en arrière-plan avec la commande:
python3 /path/to/NM_on.py
Si tout fonctionne correctement, ajoutez-le à Applications de démarrage: Dash> Applications de démarrage> Ajouter, ajoutez la commande suivante:
/bin/bash -c "sleep 10 && python3 /path/to/NM_on.py"
Nous pouvons obtenir l'état actuel Num Lock
de plusieurs manières:
lancer la commande:
xset q
qui donnera un résultat comme:
Keyboard Control:
auto repeat: on key click percent: 0 LED mask: 00000000
XKB indicators:
00: Caps Lock: off 01: Num Lock: off 02: Scroll Lock: off
03: Compose: off 04: Kana: off 05: Sleep: off
06: Suspend: off 07: Mute: off 08: Misc: off
09: Mail: off 10: Charging: off 11: Shift Lock: off
12: Group 2: off 13: Mouse Keys: off
auto repeat delay: 500 repeat rate: 33
.....
ou avec la commande:
gsettings get org.gnome.settings-daemon.peripherals.keyboard numlock-state
ce qui retourne simplement 'on'
, 'off'
ou 'unknown'
.
Comme ce dernier est extrêmement léger, nous pouvons très bien l’utiliser dans un script d’arrière-plan pour vérifier une fois par seconde et définir la valeur sur 'on'
, si nécessaire, avec la commande:
gsettings set org.gnome.settings-daemon.peripherals.keyboard numlock-state 'on'
et c'est ainsi ...
Pour une raison quelconque, j'ai raté votre dernier paragraphe, dans lequel vous avez fait référence à une autre réponse proposant une solution similaire.
Théoriquement, j'ai toujours un problème avec les scripts qui aveuglément (re) appliquent les paramètres sans vérifier l'état actuel. Il pourrait être un argument pour le faire, si la commande
gsettings get org.gnome.settings-daemon.peripherals.keyboard numlock-state
pour obtenir la valeur actuelle, serait plus exigeant que de simplement exécuter
numlockx on
pour (re -) définir numlockx on
.
En regardant l'heure à laquelle les deux commandes doivent se terminer (ce qui est au moins une indication), c'est cependant l'inverse. la commande
gsettings get org.gnome.settings-daemon.peripherals.keyboard numlock-state
semble être plus "léger".
Bien sûr, si vous n'avez aucune raison d'exécuter un script en arrière-plan, ne le faites pas. Dans le même temps, si un script en arrière-plan est bien écrit, soigneusement testé, les procédures sont optimisées de manière intelligente et si cela n'ajoute aucun effet notable sur l'occupation du processeur, il serait idiot de ne pas utiliser cette solution de contournement si cela ajoute une fonctionnalité importante ou un gain de temps important.
J'ai constamment au moins 4 à 8 scripts d'arrière-plan en cours d'exécution. La plupart d'entre eux pendant semaines sans redémarrage. Jamais remarqué aucun effet sur mes systèmes âgés. Gardez à l'esprit que votre système exécute de nombreuses boucles de toute façon.