[tuto] remapper une touche clavier sous xorg

remapper une touche clavier sous xorg [tuto] - Codes et scripts - Linux et OS Alternatifs

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 !
 
http://i18.servimg.com/u/f18/12/47/40/91/20150710.jpg
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 :
  1. KeyRelease event, serial 38, synthetic NO, window 0x2c00001,
  2.     root 0x81, subw 0x0, time 7544812, (170,-11), root:(764,305),
  3.     state 0x0, keycode 94 (keysym 0xab, guillemotleft), same_screen YES,
  4.     XLookupString gives 2 bytes: (c2 ab) "«"
  5.     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 :
  1. [phil@yoshi ~]$ ««««   <---- comportement d'origine
  2. bash: $'\253\253\253\253' : commande introuvable
  3. [phil@yoshi ~]$ xmodmap -e "keycode 94 = s"
  4. [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 :
  1. 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 :
  1. #!/bin/sh
  2. # xev pour recupérer les touches (keycode)
  3. # < less 59 + S
  4. # > greater 60 + S
  5. # [   bracketleft 34
  6. # ]   bracketright 35
  7. # {    braceleft 34 S
  8. # }   braceright 35 S
  9. # "   quotedbl  48 S
  10. # ^   dead_circumflex
  11. # ?   question
  12. # `  (appel prog shell) dead_grave
  13. #  '   apostrophe
  14. # /   slash
  15. # ~   asciitilde  49
  16. # *   asterisk
  17. # &   ampersand
  18. # /   slash
  19. # /   KP_Divide
  20. # |   bar 51 S
  21. # # numbersign  12 S
  22. # @at
  23. # \   backslash 51
  24. # ¤ currency
  25. # ° degree
  26. # 5 KP_5 84
  27. #   % percent
  28. # rien ?  hyphen
  29. # ¯ macron
  30. # ° degree
  31. # ( parenleft
  32. # ) parenright
  33. # ¶ paragraph
  34. # ! exclam
  35. # $ dollar
  36. # . period
  37. # ; semicolon
  38. # , comma
  39. # : colon
  40. # Caps_Lock touche 66
  41. # £ sterling
  42. # Return
  43. # Escape
  44. # € EuroSign
  45. # ordre dans xmodmap
  46. # Normal Shift  Normal Shift  AltGr
  47. xmodmap -e "keycode 94 = s"
  48. xmodmap -e "keycode 34 = bracketleft braceleft bracketleft braceleft dead_circumflex"
  49. xmodmap -e "keycode 35 = bracketright braceright"
  50. xmodmap -e "keycode 51 = backslash bar"
  51. xmodmap -e "keycode 48 =  apostrophe quotedbl"
  52. xmodmap -e "keycode 12 = 3 numbersign 3 numbersign sterling"
  53. xmodmap -e "keycode 49 = dead_grave asciitilde"
  54. xmodmap -e "keycode 14 = 5 percent 5 percent degree"
  55. xmodmap -e "keycode 66 = s"
  56. xmodmap -e "keycode 60 = period greater"
  57. xmodmap -e "keycode 59 = comma less"
  58. xmodmap -e "keycode 58 = m M m M mu"
  59. xmodmap -e "keycode 11 = 2 quotedbl 2 quotedbl at"
  60. xmodmap -e "keycode 49 =  numbersign bar numbersign bar dead_grave"
  61. 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.

Reply

Marsh Posté le 30-07-2015 à 21:07:56   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed