Comment savoir si toutes les touches multimédias sont mappées ?
Pour le savoir facilement, et bien rendez-vous dans l'utilitaire
Raccourcis clavier de Gnome. Là vous essayez désespérément d'afficher un code quelconque pour votre action, avec cette maudite touche multimédia. Rien! Nada! C'est le signe que tout va mal pour vous. Lancer donc une console et tapez la commande
xev (man xev pour plus d'information). Si vous tapez sur une touche déjà mappée (genre le
b) vous avez ce genre d'information qui s'affiche dans la console :
KeyRelease event, serial 29, synthetic NO, window 0x3400001,
root 0x40, subw 0x3400002, time 25825198, (25,49), root:(28,110),
state 0x10, keycode 56 (keysym 0x62, b), same_screen YES,
XLookupString gives 1 bytes: (62) "b"
Dans le cas d'une touche multimédia non mappé, vous n'avez rien qui s'affiche. Il vous faudra donc passer au point suivant pour résoudre ce problème.
Comment « mappée » une touche multimédia ?
Pour commencer, même si la commande
xev n'a pas renvoyée de commentaire, un message d'erreur est quand enregistré dans le fichier
/var/log/messages. En examinant de prêt le message d'erreur, nous remarquons, pour l'exemple suivant, que la touche pourtant le doux nom de
e03c (que l'on appelle aussi
scancode) n'est pas associée à un
keycode (bon, si cela ne vous dit rien comme moi, jetez un oeil sur ce lien
http://casteyde.christian.free.fr/online/install_linux/x4075.html).
May 4 17:14:42 localhost kernel: atkbd.c: Unknown key released (translated set 2, code 0xbc on isa0060/serio0).
May 4 17:14:42 localhost kernel: atkbd.c: Use 'setkeycodes e03c <keycode>' to make it known.
Bon, il nous reste donc à définir un keycode pour notre touche
e03c en utilisant la commande
setkeycodes e03c <keycode>, comme nous le suggère le message d'erreur. Et bien c'est maintenant qu'il faut être attentif (le post est long je sais), car il ne s'agit pas de voler le
keycode d'une autre touche, comme par exemple
Entrée du pavé numérique (je le précise car c'est du vécu). Pour cela, nous allons taper la commande
sudo getkeycodes dans notre console afin de visualiser les correspondances entre les
scancode et les
keycode déjà enregistrées dans la machine :
Plain scancodes xx (hex) versus keycodes (dec)
for 1-83 (0x01-0x53) scancode equals keycode
0x50: 80 81 82 83 84 0 86 87
0x58: 88 117 0 0 95 183 184 185
0x60: 0 0 0 0 0 0 0 0
0x68: 0 0 0 0 0 0 0 0
0x70: 93 0 0 89 0 0 85 91
0x78: 90 92 0 94 0 124 121 0
Escaped scancodes e0 xx (hex)
e0 00: 0 0 0 0 0 0 0 0
e0 08: 0 0 0 0 0 0 0 0
e0 10: 165 0 0 0 0 0 0 0
e0 18: 0 163 0 0 96 97 0 0
e0 20: 113 140 164 0 166 0 0 0
e0 28: 0 0 255 0 0 0 114 0
e0 30: 115 0 150 0 0 98 255 99
e0 38: 100 0 0 0 0 0 0 0
e0 40: 0 0 0 0 0 119 119 102
e0 48: 103 104 0 105 112 106 118 107
e0 50: 108 109 110 111 0 0 0 0
e0 58: 0 0 0 125 126 127 116 142
e0 60: 0 0 0 143 101 217 156 173
e0 68: 128 159 158 157 155 226 0 112
e0 70: 0 0 0 0 0 0 0 0
e0 78: 0 0 0 0 0 0 0 0
Pour lire ce « machin », c'est finalement assez simple (un peu comme une bataille navale, héhé touché !). La première colonne indique, pour ce repérer, la valeur du premier
scancode. Ainsi, pour la première ligne de notre tableau (ou matrice) et dans le sens de la lecture, nous avons les
keycode des
scancode suivant : (scancode=>keycode ) soit 0x50 => 80, 0x51=>81,...,0x57=>87. Vous me suivez j'espère... A présent, si l'on regarde notre touche multimédia
e03c qui est codé en Hexadécimal (3c et on zappe le e0, ne me demandé pas pourquoi), cela devient en décimal 60 (Application/Accessoires/Calculatrice pour le vérifier). Donc, pour le
scancode e03c, nous avons un
keycode nul. Il faudra donc lui attribuer une valeur, si possible inférieur à 127 (information trouvée sur le net et non testé, dû à une limitation du noyau 2.6). La solution consiste donc à rechercher un
keycode de libre à partir de ce tableau. J'ai repéré le 120 et il ne reste plus qu'à taper la commande suivante :
sudo setkeycodes e03c 120
Pour vérifier que la touche est opérationnelle, un petit coup de
xev et hop, cela fonctionne (coulé ! :cool:).