Solution utilisant halevt
Selon les pages de manuel, il halevt
s'agit d'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, udev
je donnerai une halevt
solution.
EDIT: après quelques sueurs sérieuses, j'ai réussi à le faire udev
. Voir mon autre réponse .
Je vais utiliser vim
pour modifier des fichiers, mais si vous ne savez pas, vim
vous pouvez le remplacer par nano
ou gedit
.
Installer halevt
sudo apt-get update && sudo apt-get install halevt
Déterminer quels événements 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 vous halevt
pouvez reconnaître les événements des touches que vous souhaitez utiliser, démarrez 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 que ses touches de luminosité fonctionnent, 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 les événements brightness-down
et brightness-up
sont transmis.
Liez 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 passer value
à l'événement que vous avez obtenu de l'écouteur, et exec
par la commande que vous souhaitez exécuter.
Accordez à l'utilisateur halevt l'autorisation d'exécuter la commande ou le script
Étant donné que le halevt
démon est exécuté en tant halevt
qu'utilisateur, vous devez lui donner l'autorisation de faire ce que vous avez spécifié dans exec
.
Exécutez (n'oubliez pas de le 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.
Assurez-vous que votre script est exécutable
sudo chmod +x /home/user/brightness-script.sh
Redémarrez le démon halevt
sudo /etc/init.d/halevt start
Et ça devrait marcher!
udev
. Mais n'hésitez pas à vous en tenir à l'autre solution, l'important est que ça marche;)E: Unable to locate package halevt
le 14.04.Solution utilisant udev
Étant donné que HAL est obsolète et
udev
est maintenant utilisé, cette approche est préférée à mon autre réponse (bien que je pense que la solution utilisant HAL est plus simple).Cependant, pour de nombreuses touches de fonction, vous pouvez simplement utiliser Paramètres système> Clavier> Raccourcis pour lier un script, essayez d'abord cela! Cela vous évite bien des ennuis. Par exemple, les touches de luminosité ne fonctionnent pas (je n'ai aucune idée pourquoi pas), donc si vous voulez savoir comment changer le comportement des touches de luminosité, par exemple, lisez la suite.
REMARQUE : si vous utilisez un ordinateur portable Samsung, vous pouvez corriger toutes les touches de fonction (selon le modèle) en installant le
samsung-tools
package à partir de http://www.voria.org/forum/Ce guide suppose que vous savez utiliser un terminal et utilise l'
vim
éditeur. Si vous ne savez pasvim
, remplacez-le dans les commandes pargedit
ounano
.Déterminer votre clavier
devrait imprimer les claviers qui sont connectés à l'ordinateur, dans mon cas
Maintenant, il y a deux options:
Claviers USB :
si vous souhaitez remapper votre clavier USB, inspectez-les en exécutant
où vous devez remplacer le 9 dans la déclaration awk par le bon numéro. La sortie doit être similaire à
ce qui indique correctement que mon clavier est géré via mon récepteur USB Logitech (l'entrée / event7 s'est avéré être ma souris Logitech G9 qui a quelques boutons programmables).
Clavier d'ordinateur portable :
Si vous souhaitez remapper votre clavier d'ordinateur portable, vous devez vous rappeler le numéro pour le
AT keyboard
qui est 4 dans mon cas. Obtenez également les informations dmi pour votre ordinateur portable:ce qui est dans mon cas
et
ce qui est dans mon cas
Déterminez votre mappage actuel de vos touches de fonction
Maintenant, nous pouvons déterminer notre mappage de touches actuel en écoutant le clavier (insérer le bon numéro)
vous pouvez quitter cette commande en utilisant Escsur le clavier ou Ctrl+ csur un autre clavier.
Si votre écran commence à défiler très fort, appuyez plusieurs fois sur Escet Ctrl+ cet réessayez avec
ou, si le problème de défilement persiste
Dans le dernier cas, vous aurez toujours le défilement, mais si vous appuyez sur les touches de fonction, elles devraient aller
~/keymap.log
où vous pourrez les lire plus tard.Maintenant, nous pouvons vérifier le mappage actuel de vos touches de fonction en appuyant dessus, ce qui devrait vous donner une liste comme (c'est mon Fn+ F1à Fn+ F12):
Notez maintenant les codes de scan dont vous souhaitez que le comportement change.
Modification des codes clés des codes de numérisation
Si vous voyez que le code de clé ne couvre clairement pas ce que vous attendez de la clé, vous pouvez regarder
/usr/include/linux/input.h
sous Clés et boutons pour voir s'il existe un code de clé qui correspond mieux à ce que vous voulez réellement arriver. Les codes clés sont au formatKEY_KEYCODE
et vous devez écrire la partie aprèsKEY_
en minuscules. Parfois, changer cela suffit pour résoudre le problème.Cependant, les touches de luminosité sont souvent associées au bon code de touche, ce qui ne permet pas de les remapper. Nous devons donc les changer en d'autres codes clés. Nous utiliserons
prog1
etprog2
pour cet exemple car ceux-ci ne sont pas utilisés sur mon ordinateur, mais vous pouvez également les utiliserf13
viaf24
, ouf20
viaf24
si vous avez un clavier Apple doté F1de F19touches.Créer un keymap personnalisé :
Créez un fichier de keymap dans le répertoire
/lib/udev/keymaps
avec un nom approprié, regardez la sortie dels /lib/udev/keymaps
pour voir les noms appropriés. Je vais auxcustom-brightness
fins de cette question.et entrez les codes de numérisation des clés que vous souhaitez modifier, suivis des scancodes que vous souhaitez qu'ils aient. Mon
custom-brightness
ressemble à ceci:Créez un fichier de libération de clé personnalisé. Seulement si vous modifiez le clavier de votre ordinateur portable :
Parfois, l'événement de libération des touches n'est pas envoyé correctement, ce qui entraîne le blocage de l'ordinateur. Pour éviter cela, nous allons également écrire un fichier de libération de clé personnalisé
ce fichier doit contenir les mêmes codes de scan, le mien ressemble
Assurez-vous que les nouveaux mappages sont chargés dans les fichiers de règles
Maintenant, nous devons nous assurer que vos mappages sont chargés. Nous pouvons le faire en modifiant
/lib/udev/rules.d/95-keymap.rules
, il est donc intelligent de faire une sauvegardeEncore une fois, nous avons deux options:
Claviers USB :
Étant donné que vous avez un clavier USB, vous devez ajouter votre entrée sous
LABEL="keyboard_usbcheck"
et elle doit être au-delà des autres entrées de votre fabricant de clavier. C'est parce que mon clavier aveccorrespond déjà à l'une des règles, sinon il est écrasé.
Ajoutez la règle suivante, où vous devez modifier le
ID_VENDOR_ID
etID_MODEL_ID
et le nom de votre image clé de manière appropriéeClavier d'ordinateur portable :
Si
/lib/udev/findkeyboards
votre clavier d'ordinateur portable a été signalé commeAT keyboard
votre règle devrait être inférieureLABEL="keyboard_vendorcheck"
, sinon mettez-le sousLABEL="keyboard_modulecheck"
. Mettez-le à nouveau sous les autres entrées pour le fabricant de votre ordinateur portable. Ajoutez la règle suivante (SAMSUNG ELECTRONICS CO., LTD.
est un peu longue donc j'ai utilisé un caractère générique`)Maintenant, ajoutez également une règle après l'
/lib/udev/rules.d/95-keyboard-force-release.rules
avoir sauvegardéeSous les autres entrées de votre fabricant, ajoutez
Assurez-vous que udev charge les nouvelles règles
Pour charger les nouvelles règles, exécutez
REMARQUE:
udevadm control --reload-rules
(toujours dans les instructions sur de nombreux sites Web) ne fonctionne pas.Vérifiez maintenant si les règles ont été appliquées avec succès par
qui devrait maintenant signaler les touches de luminosité
Remapper les clés dans les paramètres système
Si la dernière étape a signalé les codes de clé corrects, soit les clés commencent à fonctionner automatiquement (au cas où elles auraient d'abord eu les mauvais codes de clé).
Pour la luminosité, vous devez toujours lier les touches à un script qui est maintenant possible en utilisant Paramètres système> Clavier> Raccourcis .
Prendre plaisir
Remarques :
Si vos clés avaient le mauvais code de clé et ont été corrigées par cette approche, veuillez suivre les instructions de
/usr/share/doc/udev/README.keymap.txt.gz
(vous pouvez l'ouvrir sans extraire en utilisantzless
) et envoyer vos résultats les adresses e-mail mentionnées ici, puis les modifications peuvent être incluses dans la prochaine version. De nombreux utilisateurs en bénéficieront!Un grand merci à cet article utile de Vaidas Jablonskis.
la source
$ /lib/udev/findkeyboards bash: /lib/udev/findkeyboards: No such file or directory
aussi$ /lib/udev/findkeyboards bash: /lib/udev/findkeyboards: No such file or directory