remapper une touche clavier sous xorg [tuto] - Codes et scripts - Linux et OS Alternatifs
MarshPosté le 30-07-2015 à 21:07:56
J'ai eu a résoudre un problème de clavier, et autant partager l'info pour ceux qui auraient le même. Souci a la base : la touche "S" qui ne fonctionne plus. C'est plutôt gênant
D abord, faut comprendre ce qu'est une touche clavier ... C est juste un bouton ( lâche ton nez ! ). Lorsque que on appuie sur un bouton, ça envoie un signal au système. Pas grave, on a xmodmap, qui permet (sous X du moins), de changer le code envoyé suite a l'appui de la touche. Ça fonctionne aussi bien sous FreeBSD que Linux. A priori les autres BSD aussi, puisque c'est une fonctionnalité de xorg.
Mode simple.
Vu que j'ai une touche dont je ne me sers jamais, autant s'en servir pour le S !
Je sais, en gros plan ça parait crade ...
C'est extrêmement simple. Il faut tout d'abord récupérer le code de la touche, chose facile avec xev, lancé en console, bien sur. Lorsque j'appuie sur cette touche, voila ce qui s'affiche :
Code :
KeyRelease event, serial 38, synthetic NO, window 0x2c00001,
root 0x81, subw 0x0, time 7544812, (170,-11), root:(764,305),
state 0x0, keycode 94 (keysym 0xab, guillemotleft), same_screen YES,
XLookupString gives 2 bytes: (c2 ab) "«"
XFilterEvent returns: False
Ce qui nous intéresse est "keycode 94", qui est le code "physique" de la touche. On voit ensuite que ça correspond au "0xab, guillemotleft".
On veut donc que l'appui sur cette touche envoie la lettre S au système. C est la qu'intervient "xmodmap"
Code :
[phil@yoshi ~]$ «««« <---- comportement d'origine
bash: $'\253\253\253\253' : commande introuvable
[phil@yoshi ~]$ xmodmap -e "keycode 94 = s"
[phil@yoshi ~]$ ssss <---- comportement après modif
C'est tout ! A chacun ensuite de mettre ça dans un script qui se lance au démarrage.
Les noms des touches sont dans : /usr/include/X11/keysymdef.h sous Mint LMDE ou /usr/local/include/X11/keysymdef.h sous FreeBSD
####################
Mode avancé.
Il se trouve que j'ai un clavier un peu étrange ... C'est sur un portable Toshiba, et en Qwerty canadien français. Autant dire que il n'y a que peu de lien entre les modèles de clavier proposés par défaut et le mien. D’où l’intérêt de le personnaliser, ce qui revient en fait a faire correspondre les touches avec le symbole dessiné dessus.
Exemple : je voulais avoir le symbole ° (degré), en tapant AltGR + 5. J'ai donc remappé le 5 ainsi :
A noter la répétition, c'est selon si on veut la combinaison AltGr ou Control ou Majuscule, je ne me souviens plus des détails a vrai dire ...
Pour finir, voila mon script final. A ne pas utiliser tel quel, bien sur, puisque mon cas est assez particulier. Mais on y trouve la liste des codes les plus couramment utilisés.
Marsh Posté le 30-07-2015 à 21:07:56
J'ai eu a résoudre un problème de clavier, et autant partager l'info pour ceux qui auraient le même.
Souci a la base : la touche "S" qui ne fonctionne plus.
C'est plutôt gênant
D abord, faut comprendre ce qu'est une touche clavier ... C est juste un bouton ( lâche ton nez ! ).
Lorsque que on appuie sur un bouton, ça envoie un signal au système.
Pas grave, on a xmodmap, qui permet (sous X du moins), de changer le code envoyé suite a l'appui de la touche.
Ça fonctionne aussi bien sous FreeBSD que Linux. A priori les autres BSD aussi, puisque c'est une fonctionnalité de xorg.
Mode simple.
Vu que j'ai une touche dont je ne me sers jamais, autant s'en servir pour le S !
Je sais, en gros plan ça parait crade ...
C'est extrêmement simple.
Il faut tout d'abord récupérer le code de la touche, chose facile avec xev, lancé en console, bien sur.
Lorsque j'appuie sur cette touche, voila ce qui s'affiche :
Ce qui nous intéresse est "keycode 94", qui est le code "physique" de la touche. On voit ensuite que ça correspond au "0xab, guillemotleft".
On veut donc que l'appui sur cette touche envoie la lettre S au système.
C est la qu'intervient "xmodmap"
C'est tout !
A chacun ensuite de mettre ça dans un script qui se lance au démarrage.
Les noms des touches sont dans :
/usr/include/X11/keysymdef.h sous Mint LMDE
ou
/usr/local/include/X11/keysymdef.h sous FreeBSD
####################
Mode avancé.
Il se trouve que j'ai un clavier un peu étrange ... C'est sur un portable Toshiba, et en Qwerty canadien français. Autant dire que il n'y a que peu de lien entre les modèles de clavier proposés par défaut et le mien.
D’où l’intérêt de le personnaliser, ce qui revient en fait a faire correspondre les touches avec le symbole dessiné dessus.
Exemple : je voulais avoir le symbole ° (degré), en tapant AltGR + 5.
J'ai donc remappé le 5 ainsi :
A noter la répétition, c'est selon si on veut la combinaison AltGr ou Control ou Majuscule, je ne me souviens plus des détails a vrai dire ...
Pour finir, voila mon script final. A ne pas utiliser tel quel, bien sur, puisque mon cas est assez particulier. Mais on y trouve la liste des codes les plus couramment utilisés.
Nb : je ne sais pas trop si il y a une rubrique pour les astuces, alors j'ai mis ici.