23 - Sous X mon clavier est en 'us' et non en 'fr' (ou le passage à xorg 1.9)
Après une mise à jour, mon clavier sous X (donc sous environnement graphique) est en mode us (qwerty) au lieu d'être en fr (azerty). A noter que sous console le clavier est bien français (fr).
Ce dysfonctionnement est apparu après la mise à jour du 02/01/2011 (cf. page précédente). J'ai pensé "encore un coup de xorg-server, cela va être vite réglé", et bien, même si j'avais raison pour Xorg, cela n'a pas été aussi rapide que cela.
1 - Constats préliminaires
Il y a un peu plus d'un an, lors des passages successifs aux versions 1.5 et 1.6 de xorg-server, j'avais connu bien des déboires pour quitter la configuration via xorg.conf et passer la main à evdev et hal pour reconnaître le matériel et configurer proprement clavier et touchpad via des fichiers .fdi en xml sous /etc/hal/fdi/policy (cf. 12-Les passages à Xorg 1.5 puis Xorg 1.6 plantent clavier et souris ! et 13-Mise à jour de fin novembre 2009 : clavier et touchpad encore plantés ! ).
Or ici mon touchpad fonctionne et mes touches spéciales aussi ce qui démontre bien que mes 2 fichiers 10-x11-input.fdi et 11-x11-synaptics.fdi sont lus, non ?. Alors pourquoi mon xkb.layout=fr n'est pas pris en compte ?
Ah ben en fait ... non, mon touchpad ne répond plus comme avant (le tap par ex.), ce que confirme un déplacement des fichiers .fdi sans changement de comportement.
Il est temps d'aller jeter un œil sur le log d'emerge en /var/log/portage/elog/summary.log et nous avons ceci (attention le fichier est long, il faut se positionner sur les dernières mises à jour donc en fin de fichier) :
Comme ma version actuelle de xorg-server est une 1.7.7, il est pertinent d'aller voir ce que raconte le guide de mise à niveau.
2 - Mise à jour vers xorg-server 1.9
Au lien indiqué http://www.gentoo.org/proj/en/desktop/x/x11/xorg-server-1.9-upgrade-guide.xml (en anglais), nous apprenons que Xorg 1.9 ne détecte plus ses périphériques en utilisant HAL mais udev !
Du coup ceux qui avaient un Xorg 1.7 ou 1.8 (pour ce qui me concerne 1.7.7) compilé avec l'use HAL doivent migrer et suivre ce guide xorg-server-1.8-upgrade-guide.xml (en anglais également).
Première chose à faire, vérifier que xorg-server est bien compilé avec l'USE udev, une commande equery donne :Le bleu de udev me fait croire qu'il faut recompiler Xorg-server (alors qu'en fait non, mais 2 précautions valent mieux qu'une), donc :
Et maintenant il faut aller configurer notre xorg.conf ou des fichiers sous le répertoire /etc/X11/xorg.conf.d
Il est à noter que xorg.conf est lu en premier (s'il existe) puis ce sont les fichiers sous xorg.conf.d qui sont lus et ce dans l'ordre croissant. (S'il n'y a aucun fichier c'est le fonctionnement par défaut qui prévaut : un clavier us et un touchpad aux fonctions minimales)
Pour ma part, j'ai préféré garder la logique un fichier de config pour chaque chose, soit un pour le clavier et l'autre pour le touchpad.
Donc sous /etc/X11/xorg.conf.d/ créé à l'occasion (commande mkdir), j'ai :
- un fichier 10-keyboard.conf avec :
# Ne pas oublier : un modèle sous /usr/share/X11/xorg.conf.d # dont je me suis inspiré; et bien sûr le man ! Section "InputClass" Identifier "evdev keyboard catchall" MatchIsKeyboard "on" MatchDevicePath "/dev/input/event*" Driver "evdev" Option "XkbLayout" "fr" EndSection
- un fichier 40-synaptics.conf avec :
Section "InputClass" Identifier "touchpad catchall" Driver "synaptics" # Tapping : rappel 1 = bouton Gauche, 3 = bouton Droit, 2 = Molette, # et TapButtonX = X doigts Option "TapButton1" "1" Option "TapButton2" "3" # Option "TapButton3" "2" # Maximum movement of the finger for detecting a tap Option "MaxTapMove" "2000" # Permet avec 1 doigt glissé sur le bord droit le défilement Vertical # et sur le bord bas le défilement vertical Option "VertEdgeScroll" "on" Option "HorizEdgeScroll" "on" # Permet avec 2 doigts le défilement horizontal et vertical # n'importe où sur le touchpad Option "VertTwoFingerScroll" "on" Option "HorizTwoFingerScroll" "on" # For other possible options, check CONFIGURATION DETAILS # in synaptics man page MatchIsTouchpad "on" EndSection
A noter :
- Section "InputClass" et non "Input Device"
- la ligne MatchIsKeyboard ou MatchIsTouchpad "on"
- j'ai repris les options de ma config .fdi, mais pour synaptics vous trouverez un nombre impressionnant d'options dans le man
3 - Et mes touches spéciales
Ce paragraphe est propre à mon micro, mais la façon d'aborder les choses doit pouvoir être reproductible.
Comme beaucoup de micro portable mon Compaq Evo N600c comprend des touches spéciales (4 pour être précis).
Je les avais paramétrées sous .fluxbox/keys comme ceci :
# Action des touches multimédias XF86WWW :ExecCommand firefox XF86Mail :ExecCommand thunderbird XF86HomePage :ExecCommand Eterm XF86Search :ExecCommand rox
Mais, la touche "mail" n'était pas reconnue (malgré le fait que xev me donne bien son association avec XF86Mail). Lors du passage à Xorg 1.5, fin 2009, j'avais contourné le problème en recréant une association dans le fichier de configuration .fdi. Ici je ne vais utiliser que le fichier .fluxbox/keys en associant mon client de messagerie (thunderbird) avec le scancode de la touche (toujours obtenu avec xev). In fine j'obtiens ceci :
# Action des touches multimédias XF86WWW :ExecCommand firefox None 223 :ExecCommand thunderbird XF86HomePage :ExecCommand Eterm XF86Search :ExecCommand rox
Et voilà tout fonctionne de nouveau correctement !