Je souhaite connecter un script batch à un raccourci. Lorsque je le lie sous Paramètres système > Clavier > Raccourcis cela fonctionne avec toutes les touches, à l'exception des touches de luminosité de mon clavier externe Apple.
Les touches de luminosité sont reconnues dans showkey avec le keycode 224 et 225 .
sortie xev :
FocusOut event, serial 41, synthetic NO, window 0x4000001,
mode NotifyGrab, detail NotifyAncestor
FocusIn event, serial 41, synthetic NO, window 0x4000001,
mode NotifyUngrab, detail NotifyAncestor
KeymapNotify event, serial 41, synthetic NO, window 0x0,
keys: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Des suggestions sur ce que je peux faire ?
Réponse acceptée :
Solution utilisant halevt
Selon les pages de manuel halevt
est un gestionnaire générique pour les événements HAL. Il est obsolète et remplacé par udev
, mais comme je n'en sais pas assez sur udev
Je vais donner un halevt
solution.
MODIF : après avoir bien transpiré, j'ai réussi à le faire dans udev
. Voir mon autre réponse.
Je vais utiliser vim
pour éditer des fichiers, mais si vous ne connaissez pas vim
vous pouvez le remplacer par nano
ou gedit
.
Installer halevt
sudo apt-get update && sudo apt-get install halevt
Déterminer les événements que vous souhaitez lier à un script
Arrêtez le halevt
démon qui est déjà en cours d'exécution :
sudo /etc/init.d/halevt stop
Maintenant, voyez si halevt
peut reconnaître les événements des touches que vous souhaitez utiliser, lancez l'écouteur :
sudo -u halevt halevt -fig:plugdev
Appuyez maintenant sur la touche de fonction de votre clavier à laquelle vous souhaitez lier le script. Je sais que l'OP veut faire fonctionner ses touches de luminosité, alors allons-y. La sortie des touches de luminosité devrait ressembler à ceci :
Condition: /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input,ButtonPressed (brightness-down)
Condition: /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input,ButtonPressed (brightness-up)
Vous pouvez voir que la brightness-down
et brightness-up
les événements sont transmis.
Lier l'événement à un script
Modifiez maintenant le fichier /etc/halevt/halevt.xml
:
sudo vim /etc/halevt/halevt.xml
et ajoutez les lignes suivantes ( je l'ai fait en bas, juste avant </halevt:Configuration>
):
<halevt:Device match="hal.info.category = input">
<halevt:Condition name="ButtonPressed" value="brightness-up" exec="sudo /home/user/brightness-script.sh up"/>
<halevt:Condition name="ButtonPressed" value="brightness-down" exec="sudo /home/user/brightness-script.sh down"/>
</halevt:Device>
où bien sûr vous devez changer la value
à l'événement que vous avez reçu de l'écouteur, et exec
par la commande que vous souhaitez exécuter.
Autoriser l'utilisateur halevt à exécuter la commande ou le script
Depuis le halevt
le démon est exécuté en tant que halevt
utilisateur, vous devez lui donner la permission de faire ce que vous avez spécifié dans exec
.
Exécuter (n'oubliez pas de remplacer vim
par l'éditeur de votre choix)
sudo EDITOR=vim visudo
et ajoutez les lignes suivantes en bas
halevt ALL=(root) NOPASSWD: /home/user/brightness-script.sh
et enregistrez et quittez.
En relation :Désactiver la répétition du clavier à partir de la ligne de commande ?Assurez-vous que votre script est exécutable
sudo chmod +x /home/user/brightness-script.sh
Redémarrer le démon halevt
sudo /etc/init.d/halevt start
Et cela devrait fonctionner !