Voici la bête :
Il se connecte en PS/2 ou USB. Pour ma part, je l'utilise en PS/2.
Et ça marche ?
Pour ce qui est des touches traditionnelle cela fonctionne à merveille. N'importe quelle distribution linux saura le gérer dès l'installation (et heureusement) mais par contre pour ce qui est de l'utilisation des touches multimédias, c'est moins simple. Cela dit, ça marche aussi mais il faut mettre les mains dans le camboui :)
Les claviers sous Linux
Une petite explication de comment fonctionne la gestion des claviers sous Linux s'impose pour mieux comprendre la configuration qui va suivre. Cette explication est la mienne et je n'assure pas avoir tout compris.
Lors de l'appui sur une touche de votre clavier, celui-ci envoie un scan code à l'ordinateur (C'est le cas quelque soit l'OS). Ce code est ensuite intercepté par le noyau et retransformé en un key cod (ou keycode) selon une table d'association (dont j'avoue ne pas avoir trop compris où elle se trouvait. En dur dans le noyau ?). A noter que selon que le clavier soit connecté en PS/2 ou USB, les scan codes envoyés peuvent changer.
Si l'on travaille en mode graphique sous le serveur XFree, il y a des étapes supplémentaires. Ainsi le keycode linux est réinterprété par XFree et retransformé en un autre keycode propre à XFree selon une autre table d'association. Je ne sais toujours pas trop où elle se trouve mais je l'ai retrouvé sur le net et afin d'éviter d'en perdre la trace, la voici :
Linux key code | Xfree key code |
0 | 0 |
1 | 9 |
2 | 10 |
3 | 11 |
4 | 12 |
5 | 13 |
6 | 14 |
7 | 15 |
8 | 16 |
9 | 17 |
10 | 18 |
11 | 19 |
12 | 20 |
13 | 21 |
14 | 22 |
15 | 23 |
16 | 24 |
17 | 25 |
18 | 26 |
19 | 27 |
20 | 28 |
21 | 29 |
22 | 30 |
23 | 31 |
24 | 32 |
25 | 33 |
26 | 34 |
27 | 35 |
28 | 36 |
29 | 37 |
30 | 38 |
31 | 39 |
32 | 40 |
33 | 41 |
34 | 42 |
35 | 43 |
36 | 44 |
37 | 45 |
38 | 46 |
39 | 47 |
40 | 48 |
41 | 49 |
42 | 50 |
43 | 51 |
44 | 52 |
45 | 53 |
46 | 54 |
47 | 55 |
48 | 56 |
49 | 57 |
50 | 58 |
51 | 59 |
52 | 60 |
53 | 61 |
54 | 62 |
55 | 63 |
56 | 64 |
57 | 65 |
58 | 66 |
59 | 67 |
60 | 68 |
61 | 69 |
62 | 70 |
63 | 71 |
64 | 72 |
65 | 73 |
66 | 74 |
67 | 75 |
68 | 76 |
69 | 77 |
70 | 76 |
71 | 79 |
72 | 80 |
73 | 81 |
74 | 82 |
75 | 83 |
76 | 84 |
77 | 85 |
78 | 86 |
79 | 87 |
80 | 88 |
81 | 89 |
82 | 90 |
83 | 91 |
84 | 111 |
85 | 221 |
86 | 94 |
87 | 95 |
88 | 96 |
89 | 211 |
90 | 128 |
91 | 127 |
92 | 129 |
93 | 208 |
94 | 131 |
95 | 126 |
96 | 108 |
97 | 109 |
98 | 112 |
99 | 111 |
100 | 113 |
101 | 181 |
102 | 97 |
103 | 98 |
104 | 99 |
105 | 100 |
106 | 102 |
107 | 103 |
108 | 104 |
109 | 105 |
110 | 106 |
111 | 107 |
112 | 239 |
113 | 160 |
114 | 174 |
115 | 176 |
116 | 222 |
117 | 157 |
118 | 123 |
119 | 110 |
120 | 139 |
121 | 134 |
122 | 209 |
123 | 210 |
124 | 133 |
125 | 115 |
126 | 116 |
127 | 117 |
128 | 232 |
129 | 133 |
130 | 134 |
131 | 135 |
132 | 140 |
133 | 248 |
134 | 191 |
135 | 192 |
136 | 122 |
137 | 188 |
138 | 245 |
139 | 158 |
140 | 161 |
141 | 193 |
142 | 223 |
143 | 227 |
144 | 198 |
145 | 199 |
146 | 200 |
147 | 147 |
148 | 159 |
149 | 151 |
150 | 178 |
151 | 201 |
152 | 146 |
153 | 203 |
154 | 166 |
155 | 236 |
156 | 230 |
157 | 235 |
158 | 234 |
159 | 233 |
160 | 163 |
161 | 204 |
162 | 253 |
163 | 153 |
164 | 162 |
165 | 144 |
166 | 164 |
167 | 177 |
168 | 152 |
169 | 190 |
170 | 208 |
171 | 129 |
172 | 130 |
173 | 231 |
174 | 209 |
175 | 210 |
176 | 136 |
177 | 220 |
178 | 143 |
179 | 246 |
180 | 251 |
181 | 137 |
182 | 138 |
183 | 182 |
184 | 183 |
185 | 184 |
186 | 93 |
187 | 184 |
188 | 247 |
189 | 132 |
190 | 170 |
191 | 219 |
192 | 249 |
193 | 205 |
194 | 207 |
195 | 149 |
196 | 150 |
197 | 154 |
198 | 155 |
199 | 167 |
200 | 168 |
201 | 169 |
202 | 171 |
203 | 172 |
204 | 173 |
205 | 165 |
206 | 175 |
207 | 179 |
208 | 180 |
209 | 0 |
210 | 185 |
211 | 186 |
212 | 187 |
213 | 118 |
214 | 119 |
215 | 120 |
216 | 121 |
217 | 229 |
218 | 194 |
219 | 195 |
220 | 196 |
221 | 197 |
222 | 148 |
223 | 202 |
224 | 101 |
225 | 212 |
226 | 237 |
227 | 214 |
228 | 215 |
229 | 216 |
230 | 217 |
231 | 218 |
232 | 228 |
233 | 142 |
234 | 213 |
235 | 240 |
236 | 241 |
237 | 242 |
238 | 243 |
239 | 244 |
240 | 0 |
241 | 0 |
242 | 0 |
243 | 0 |
244 | 0 |
245 | 0 |
246 | 0 |
247 | 0 |
248 | 0 |
249 | 0 |
250 | 0 |
251 | 0 |
252 | 0 |
253 | 0 |
254 | 0 |
255 | 0 |
Afin d'être plus parlant pour les utilisateurs, XFree permet d'associer un nom symbolique à chaqu'un des keycode XFree. On peut même associer le même nom si l'on désire que 2 touches aient le même fonctionnement. Les noms disponibles peuvent être trouvés dans le fichier /usr/share/X11/XKeysymDB. La table d'association entre le keycode XFree et le nom dépends de la configuration du clavier définie dans le fichier /etc/X11/xorg.conf. C'est assez complexe et nous ne rentrerons pas dans le détail de ce fonctionnement.
Une fois le nom associé à la touche, c'est avec ce nom que l'on peut définir des raccourcis clavier dans les diverses applications. Sans ce nom, la majorité des applications ne pourra gérer la touche.
Configuration
Choix de la configuration clavier
Votre distribution Linux va sûrement choisir comme configuration clavier l'option basique "pc105" correspondant à un clavier 105 touches. Mais XFree propose de nombreuses autres configuration de clavier plus précises selon la marque ou le modèle. Ces configurations sont meilleures mais pas obligatoirement complète.
Dans mon cas, j'ai choisi le modèle "logicink" correspondant à mon clavier. Voir le fichier /usr/share/X11/xkb/symbols/inet pour les autres claviers multimédias disponibles. Voici l'extrait de mon fichier /etc/X11/xorg.conf :
[...] Section "InputDevice" Identifier "Keyboard1" Driver "kbd" Option "XkbModel" "logicink" Option "XkbLayout" "fr" Option "AutoRepeat" "250 30" Option "XkbOptions" "compose:rwin" EndSection [...] Section "ServerLayout" [...] InputDevice "Keyboard1" "CoreKeyboard" [...] EndSection [...]
A noter que mon clavier étant français, j'ai choisi le "layout" "fr". C'est ce choix de layout, de modèle de clavier et d'autres options qui va déterminer la table de correspondance entre les keycodes d'XFree et le nom des touches.
Check-up complet
La configuration de XFree précédente n'est pas toujours suffisante pour que les touches multimédias fonctionnent sous XFree. Nous allons donc vérifier les touches qui n'ont pas été reconnues pour les configurer individuellement.
Pour se faire nous allons utiliser l'outil "xev". Celui-ci permet de récupérer le nom des touches et le keycode d'XFree pour celles-ci.
En mode graphique, lancer "xev" puis appuyer sur une des touches à tester. 3 cas se présentent :
- "xev" renvoie un keycode et un nom de touche.
- "xev" renvoie un keycode mais pas de nom de touche (NoSymbol).
- "xev" ne renvoie rien.
Cas 1 :
KeyRelease event, serial 29, synthetic NO, window 0x4e00001,root 0x188, subw 0x0, time 728200194, (654,760), root:(725,812), state 0x10, keycode 146 (keysym 0x1008ff67, XF86MySites), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False
Cas 2 :
KeyRelease event, serial 27, synthetic NO, window 0x3800001, root 0x37, subw 0x0, time 1936985997, (-134,849), root:(576,901), state 0x10, keycode 147 (keysym 0x1008ff3c, NoSymbol), same_screen YES, XLookupString gives 0 characters: ""
Dans le premier cas, tout va bien. La touche est reconnue et peut être utilisée dans vos applications.
Dans le deuxième cas, XFree n'a pas réussi à associer de nom à cette touche avec la configuration qu'on lui a donné. Pas de problème, nous allons faire l'association.
Dans le troisème cas, c'est Linux lui-même qui n'a pas su gérer le scan code envoyé par le clavier et qui n'a pas réussi à lui associer un keycode. Là aussi nous allons faire l'association.
Voici comment procéder pour chacun des cas. A vous de passer le cas qui ne vous concerne pas.
Linux ne reconnaît pas la touche
Nous allons devoir récupérer le scan code de la touche. Pour se faire nous allons regarder les logs de Linux qui ont le mérite de nous indiquer qu'une touche a été pressée mais qu'il nous faut la configurer pour la rendre utilisable. Ainsi, en console de préférence, en tant que root, lancer la commande "tail -f /var/log/messages". Appuyez ensuite sur la touche non reconnue par Linux. Un message semblable au suivant devrait s'afficher :
atkbd.c: Unknown key released (translated set 2, code 0xbb on isa0060/serio0). atkbd.c: Use 'setkeycodes e03b <keycode>' to make it known.
Le message nous donne donc la solution, à savoir associer le scan code e056 à un keycode. Oui mais lequel ? Celui que vous désirez en fait. Enfin presque. Disons plutôt celui qui n'est pas déjà utilisé et qui est le plus logique. Pour voir les keycodes possibles voir le fichier /usr/include/linux/input.h
Imaginons que la touche que nous avons testée est la touche "Finances". D'après le fichier, le plus logique serait le keycode KEY_FINANCE de valeur 219. Nous allons donc faire l'association avec :
setkeycodes e013 219
Il faudra ensuite recommencer avec toutes les touches non reconnues par Linux. Afin que cela soit pris en compte au redémarrage de la machine nous pouvons mettre ces commandes à la fin du fichier /etc/rc.local. Pour ma part, cela donne :
[...] ## Touches multimedia du clavier non reconnues # Achat setkeycodes e011 221 # iTouch setkeycodes e012 171 # Mes sites setkeycodes e014 152 # Communauté setkeycodes e015 216 # Clic molette setkeycodes e016 134 # Finance setkeycodes e013 219
Il faut ensuite voir avec "xev" si ces touches sont reconnues par Linux. Avec un peu de chances certaines seront reconnues par XFree (présence d'un nom). si tel n'est pas le cas, la suite vous concerne.
XFree ne reconnaît pas la touche
Donc "xev" renvoie un keycode mais il n'y associe pas de nom. Nous allons donc le faire à sa place. Pour se faire nous allons utiliser l'utilitaire "xmodmap". Nous pourrions compléter le fichier de configuration fournit avec XFree pour les claviers multimédias mais c'est trop complexe pour l'instant. Si j'ai le courage je le ferais.
Donc pour associer un nom de touche à un keycode XFree nous allons donner à manger à l'utilitaire "xmodmap". Pour se faire, créez le fichier ~/.xmodmaprc avec comme contenu des lignes de la forme :
keycode [KEYCODE] = [NAME]
Le keycode est celui fournit par "xev" et le nom symbolique celui de votre choix se rapportant le plus à l'utilisation de la touche.
Par exemple mon fichier est le suivant :
! Complement pour le model logicink keycode 191 = XF86ScrollClick keycode 146 = XF86MySites keycode 121 = XF86Community keycode 129 = XF86iTouch keycode 197 = XF86Shop keycode 195 = XF86Finance
A noter que pour les commentaires dans ce fichier il faut préfixer la ligne avec un point d'exclamation.
Pour prendre en compte ces associations il faut lancer la commande suivante :
xmodmap ~/.xmodmaprc
Afin que cela soit pris en compte en vous connectant en mode graphique, il faut lancer cette commande automatiquement. Dans mon cas, j'utilise KDE donc je vais utiliser le lancement automatique qu'il propose en créant un fichier Xmodmap.sh dans le répertoire ~/.kde/Autostart contenant :
#!/bin/sh xmodmap ~/.xmodmaprc
Ne pas oublier de rendre ce fichier exécutable (chmod +x Xmodmap.sh).
Associer des actions aux touches multimédias
Sur ce point, vu que j'utilise KDE, c'est pour cet environnement que vont porter mes explications.
Sous KDE donc, tout se passe via "kmenuedit". Celui-ci permet non seulement d'éditer le menu K mais aussi d'associer des raccourcies claviers aux items du menu. Pour ma part j'ai créé un menu caché (nom préfixé d'un point) qui contiendra toutes ma configuration. Ensuite j'ai créé des items portant le nom des touches (ou combinaisons).
(A suivre)
Une petite question sur les menus cachés dans kmenuedit.
Salut,
Et félicitations pour ce mini-tuto sur les touches multimédias !
Tout cele fonctionne a merveille chez moi mais un petite question me trotte dans la tete :
Sais tu comment on peut retrouver (apres la sauvegarde et avoir refermé sons kmenuedit) les menus cachés quand on re-ouvre kmenuedit ?
Ils sont tellement bien cachés que j'arrive meme pas a les modifier du coup !
Merci pour ton aide.
Damien.
Retourver les items cachés.
Salut,
Joli tuto, un ptite question cependant:
Sais tu comment retrouver ds kmenuedit les menus que l'on a caché avec un "." ?
Histoire de pouvoir les modifier ...
Merci pour ton aide.
damdam.
C'est sympas ton conseil mais je voulais savoir
C'est sympas ton conseil, mais je voulais savoir si ça marchait aussi pour le pack logitech cordless en bluetooth?
Avec le clavier le pad numerique et la souris, car je ne trouve pas de pilotes, logitech n'en fesant pas, et quand j'ainstall n'importequelle linux, il ne prennent pas en compte mon clavier et la souris du coup je suis obliger de redémarrer a chaque fois et de repasser sous windows, c'est particulièrement chiant, donc si tu pouvais me conseiller ce serait cool, je te remerci d'avance, mon adresse email est wiwi.of.new@hotmail.fr