Logitech Internet Navigator Keyboard (ATTENTION : GROSSE REFONTE EN COURS)

Soumis par Shift le

Voici la bête :

[Clavier Logitech]

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 :

  1. "xev" renvoie un keycode et un nom de touche.
  2. "xev" renvoie un keycode mais pas de nom de touche (NoSymbol).
  3. "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)

Anonyme (non vérifié)

mer 10/05/2006 - 22:16

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.

Anonyme (non vérifié)

mer 10/05/2006 - 22:46

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.

Anonyme (non vérifié)

lun 18/12/2006 - 14:13

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