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 pas vim
, remplacez-le dans les commandes par gedit
ou nano
.
Déterminer votre clavier
/lib/udev/findkeyboards
devrait imprimer les claviers qui sont connectés à l'ordinateur, dans mon cas
USB keyboard: input/event9
USB keyboard: input/event7
AT keyboard: input/event4
Maintenant, il y a deux options:
Claviers USB :
si vous souhaitez remapper votre clavier USB, inspectez-les en exécutant
udevadm info --export-db | awk '/event9/' RS="" | grep -P 'ID_(VENDOR|MODEL)(?!_ENC)'
où vous devez remplacer le 9 dans la déclaration awk par le bon numéro. La sortie doit être similaire à
E: ID_MODEL=USB_Receiver
E: ID_MODEL_ID=c52b
E: ID_VENDOR=Logitech
E: ID_VENDOR_ID=046d
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:
cat /sys/class/dmi/id/sys_vendor
ce qui est dans mon cas
SAMSUNG ELECTRONICS CO., LTD.
et
cat /sys/class/dmi/id/product_name
ce qui est dans mon cas
305U1A
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)
sudo /lib/udev/keymap -i input/event4
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
sudo /lib/udev/keymap -i input/event4 2> /dev/null
ou, si le problème de défilement persiste
sudo /lib/udev/keymap -i input/event4 > ~/keymap.log
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):
scan code: 0xCE key code: kpplusminus
scan code: 0x89 key code: brightnessdown
scan code: 0x88 key code: brightnessup
scan code: 0x82 key code: switchvideomode
scan code: 0xF9 key code: f23
scan code: 0xA0 key code: mute
scan code: 0xAE key code: volumedown
scan code: 0xB0 key code: volumeup
scan code: 0x43 key code: f9
scan code: 0x44 key code: f10
scan code: 0xB3 key code: prog3
scan code: 0x86 key code: wlan
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 format KEY_KEYCODE
et vous devez écrire la partie après KEY_
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
et prog2
pour cet exemple car ceux-ci ne sont pas utilisés sur mon ordinateur, mais vous pouvez également les utiliser f13
via f24
, ou f20
via f24
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 de ls /lib/udev/keymaps
pour voir les noms appropriés. Je vais aux custom-brightness
fins de cette question.
sudo vim /lib/udev/keymaps/custom-brightness
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:
# /lib/udev/keymaps/custom-brightness
0x89 prog1
0x88 prog2
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é
sudo vim /lib/udev/keymaps/force-release/custom-brightness
ce fichier doit contenir les mêmes codes de scan, le mien ressemble
# /lib/udev/keymaps/force-release/custom-brightness
0x89
0x88
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 sauvegarde
Encore 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 avec
E: ID_MODEL=USB_Receiver
E: ID_MODEL_ID=c52b
E: ID_VENDOR=Logitech
E: ID_VENDOR_ID=046d
correspond déjà à l'une des règles, sinon il est écrasé.
Ajoutez la règle suivante, où vous devez modifier le ID_VENDOR_ID
et ID_MODEL_ID
et le nom de votre image clé de manière appropriée
ENV{ID_VENDOR_ID}=="046d", ENV{ID_MODEL_ID}=="c52b", RUN+="keymap $name custom-brightness"
Clavier d'ordinateur portable :
Si /lib/udev/findkeyboards
votre clavier d'ordinateur portable a été signalé comme AT keyboard
votre règle devrait être inférieure LABEL="keyboard_vendorcheck"
, sinon mettez-le sous LABEL="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`)
ENV{DMI_VENDOR}=="SAMSUNG*", ATTR{[dmi/id]product_name}=="305U1A", RUN+="keymap $name custom_brightness"
Maintenant, ajoutez également une règle après l' /lib/udev/rules.d/95-keyboard-force-release.rules
avoir sauvegardée
sudo cp /lib/udev/rules.d/95-keyboard-force-release.rules /lib/udev/rules.d/95-keyboard-force-release.rules.bak
sudo vim /lib/udev/rules.d/95-keyboard-force-release.rules
Sous les autres entrées de votre fabricant, ajoutez
ENV{DMI_VENDOR}=="SAMSUNG*", ATTR{[dmi/id]product_name}=="305U1A", RUN+="keyboard-force-release.sh $devpath custom_test"
Assurez-vous que udev charge les nouvelles règles
Pour charger les nouvelles règles, exécutez
sudo adevadm trigger
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
sudo /lib/udev/keymap -i input/event4
qui devrait maintenant signaler les touches de luminosité
scan code: 0x89 key code: prog1
scan code: 0x88 key code: prog2
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 utilisant zless
) 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.