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 :
Code :
- xmodmap -e "keycode 14 = 5 percent 5 percent degree"
|
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.
Code :
- #!/bin/sh
- # xev pour recupérer les touches (keycode)
- # < less 59 + S
- # > greater 60 + S
- # [ bracketleft 34
- # ] bracketright 35
- # { braceleft 34 S
- # } braceright 35 S
- # " quotedbl 48 S
- # ^ dead_circumflex
- # ? question
- # ` (appel prog shell) dead_grave
- # ' apostrophe
- # / slash
- # ~ asciitilde 49
- # * asterisk
- # & ampersand
- # / slash
- # / KP_Divide
- # | bar 51 S
- # # numbersign 12 S
- # @at
- # \ backslash 51
- # ¤ currency
- # ° degree
- # 5 KP_5 84
- # % percent
- # rien ? hyphen
- # ¯ macron
- # ° degree
- # ( parenleft
- # ) parenright
- # ¶ paragraph
- # ! exclam
- # $ dollar
- # . period
- # ; semicolon
- # , comma
- # : colon
- # Caps_Lock touche 66
- # £ sterling
- # Return
- # Escape
- # € EuroSign
- # ordre dans xmodmap
- # Normal Shift Normal Shift AltGr
- xmodmap -e "keycode 94 = s"
- xmodmap -e "keycode 34 = bracketleft braceleft bracketleft braceleft dead_circumflex"
- xmodmap -e "keycode 35 = bracketright braceright"
- xmodmap -e "keycode 51 = backslash bar"
- xmodmap -e "keycode 48 = apostrophe quotedbl"
- xmodmap -e "keycode 12 = 3 numbersign 3 numbersign sterling"
- xmodmap -e "keycode 49 = dead_grave asciitilde"
- xmodmap -e "keycode 14 = 5 percent 5 percent degree"
- xmodmap -e "keycode 66 = s"
- xmodmap -e "keycode 60 = period greater"
- xmodmap -e "keycode 59 = comma less"
- xmodmap -e "keycode 58 = m M m M mu"
- xmodmap -e "keycode 11 = 2 quotedbl 2 quotedbl at"
- xmodmap -e "keycode 49 = numbersign bar numbersign bar dead_grave"
- xmodmap -e "keycode 26 = e E e E EuroSign "
|
Nb : je ne sais pas trop si il y a une rubrique pour les astuces, alors j'ai mis ici.