Le blues du clavier avec la console en mode texte d'Ubuntu©

Gazette Linux n°157 — Décembre 2008

Adaptation française : Gérard BAYLARD

Relecture de la version française : Deny

Article paru dans le n°157 de la Gazette Linux de Décembre 2008.

Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières

Où sont les dispositions de clavier ?
Pourquoi souhaiter changer la configuration du clavier ?
Quelques définitions
Suivez ce lien
Disposition de clavier américain
Le Tao de SAK
Comment modifier la disposition de clavier d'Ubuntu© ?
Que faire à partir de là ?

Voici la nouvelle du jour : après quelques années d'affinités avec SUSE©/openSUSE©, j'ai décidé sans équivoque de passer à Ubuntu©. KDE m'y a poussé. KDE et ses plasmoïdes m'ont porté la guigne, et GNOME chez openSUSE© m'est parfaitement étranger. Cap sur Ubuntu©Ubuntu 8.10.

Migrer vers Ubuntu©, c'est du travail—du moins si vous vous aimez la console en mode texte et passez du temps avec. Vous devez installer un tas de paquets logiciels avant d'avoir un environnement convivial pour les tâches d'administration ou pour les plaisirs de la programmation. Les dépôts de version 8.10 d'Ubuntu© ne proposaient pas encore Midnight Commander, chose faite maintenant. En plus, quand vous pensez en avoir fini, d'autres surprises vous attendent au coin du bois. Prenez par exemple la configuration du clavier. (Attention ! nous parlons de la configuration clavier en mode ligne de commande, et non de l'application Terminal sous X11.)

Où sont les dispositions de clavier ?

Où sont les dispositions du clavier en mode texte d'Ubuntu© pour les divers langages ou pour les dispositions spéciales de claviers telle Dvorak ? Dans la jungle des distributions, vous trouverez un jeu de configuration clavier dans /usr/share/keycaps/ ou dans /usr/share/kbd/. Une version passée de Fedora© que j'utilisais il y a deux ans avait placé cette cartographie dans /etc/keycaps/. Où sont-elles dans Ubuntu© ?

Quelques rappels. Dans les années 90, le responsable de la maintenance du paquet kbd, qui est à la base de cette disposition du clavier et de sa gestion en symbiose avec le noyau, s'est montré faiblement motivé. Un projet concurrent, appelé console-tools a surgi et a rapidement été adopté par Debian©, alors que Red Hat© et SUSE© restaient liés à kbd. Toutefois, kbd reprit de l'allant et publia plusieurs nouvelles versions au début des années 2000, alors que console-tools s'endormait à en devenir moribond. On peut même dire que console-tools est abandonné, alors que kbd bénéficie de l'énergie d'un nouveau mainteneur. Debian© et Ubuntu© reviennent donc maintenant vers kbd avec, à la clé, de nombreux ennuis à cause des problèmes de compatibilité.

Pour Ubuntu©, l'approche est simple : ils n'ont rien à faire de la console en mode texte, donc, ils ignorent, autant que faire se peut, les problèmes relatifs aux dispositions de clavier. Il y a une et une seule disposition de clavier dans Ubuntu© 8.10 : elle s'appelle boottime.kmap.gz et se trouve dans /etc/console-setup. Inutile de dire que ces modifications de clavier doivent absolument exister, puisqu'elles font partie des options de configuration de la console — mais elles sont sous la forme d'archives binaires, inaccessibles à une cogitation ou à une adaptation personnalisée. Non accessibles pour le plaisir.

Pourquoi souhaiter changer la configuration du clavier ?

À coup sûr : parce que vous êtes prisonnier de votre idiosyncrasie (je veux dire préférences) et voilà déjà une excellente raison. Mais il y a aussi quelques considérations qui, dit avec sobriété, plaident pour une intervention.

Quelques définitions

Désolé, la punition de la terminologie d'abord : la « disposition de clavier » s'assimile normalement à un fichier dans lequel sont définis les caractères en relation avec telle ou telle touche. Cette relation peut concerner les touches ordinaires isolées, mais peut également se rapporter à des touches modifiées, par exemple, par un appui préalable sur Ctrl ou Maj.gauche. Dans le fichier de disposition, l'ensemble des mises en correspondance des touches en association avec un modificateur donné va constituer une nouvelle disposition ; donc nous aurons une disposition des touches avec modificateur Ctrl, une autre avec modificateur Alt et ainsi de suite. Maintenant, tenez vous bien Ubuntu© définit 64 dispositions de clavier. Toutes les combinaisons possibles entre modificateurs y sont. Ne me demandez pas pourquoi les combinaisons bizarres avec 3, 4 ou 5 modificateurs sont là, étant donné qu'elles ne pourront pas selon toute vraisemblance être frappées tant que les hommes ne disposeront que de deux mains. Mais elles sont là, et c'est comme ça. Comparez avec openSUSE© ou Fedora© : vous n'y trouverez que des combinaisons associant un ou deux modificateurs pris dans le jeu des Majctrlaltaltgr— et non toutes la combinatoire de ceux-ci. Ce qui est sensé. L'incidence est peut-être marginale, mais laissez moi signaler que le fichier de cartographie d'Ubuntu© est vingt fois plus gros que celui d'openSUSE© ou de Fedora©, et de ce fait, doit avoir un certain impact sur la mémoire disponible. Je n'ai jamais remarqué de différences lors de l'utilisation d'openSUSE© ou Ubuntu©, mais l'effet doit bien être là.

Suivez ce lien

https://bugs.launchpad.net/Ubuntu/+source/console-data/+bug/279973 … et vous apprendrez qu'en appuyant sur Impr.écran la console Ubuntu© génère un Control_backslash (^\ : Ctrl barre inclinée inverse), alias le caractère 28 (décimal). Le rapport de bogue est relatif à la version 8.04, mais cette « fonctionnalité » est toujours présente dans la version 8.10 : sachez que le caractère 28 a des appétences de vandale dans certaines applications, et que, de la sorte, des travaux peuvent être perdus—et que cela est arrivé, bien sûr, comme le lien précédent le signale. Control_backslash peut également être généré par CtrlImpr.écran ; il n'y a aucune objection à cela, et peut-être est-ce même intentionnel. Mais appuyer sur la touche Impr.écran isolément et par inadvertance est un incident tout à fait possible.

Disposition de clavier américain

La disposition de clavier américain par défaut et celle de quelques autres langues que j'ai testées (allemand, français, espagnol, italien, russe) définissent des chaînes pour les variables F1 à F20 (NdT: bien différencier la variable Fn de la touche Fn) . Il y a aussi des variables au delà de F20 (F21 et au-dessus), mais sans que des chaînes aient été définies pour celles-ci. Cette dernière singularité pose problème pour toutes les distributions, mais dans cet article nous nous sommes penchés sur les différences entre Ubuntu© et les configurations conventionnelles, c'est à dire entre l'approche héritée de console-tools par opposition à celle de kbd. Les distributions fondées sur kbd sont une écrasante majorité. Montrons leurs différences avec Ubuntu©, en ce qui concerne les correspondances pour Maj.F1 et au-delà :

 	
                 kbd             console-tools
                (openSUSE)      (Ubuntu)

    <Maj.><F1>     F13             F11
    <Maj.><F2>     F14             F12
    <Maj.><F3>     F15             F13
    <Maj.><F4>     F16             F14
    <Maj.><F5>     F17             F15
    <Maj.><F6>     F18             F16
    <Maj.><F7>     F19             F17
    <Maj.><F8>     F20             F18
    <Maj.><F9>     F21 (vide)      F19
    <Maj.><F10>    F22 (vide)      F20
    <Maj.><F11>    F23 (vide)      F21 (vide)
    <Maj.><F12>    F24 (vide)      F22 (vide)
	 
		     
	    

Ma première remarque, ici, sera de dire que les touches F9, F10, F11, F12 combinées avec Maj. ne sont utilisables ni avec openSUSE©, ni avec les autres parce que les variables F21 et au delà ne sont pas définies ; c'est uniquement une chaîne vide à laquelle aucune application ne peut associer de fonction. De la même manière, Maj.F11 et Maj.F12 ne sont pas disponibles chez Ubuntu©.

Toutefois, à cause de la fatale décision de Debian© de basculer vers console-tools il y dix ans passés, ce que nous constatons aujourd'hui est mauvais : une application en mode ligne de commande reliant une fonction à, disons, Maj.F4 verra cette fonction exécutée, soit sous openSUSE©, Fedora© et compagnie, soit sous Debian© et Ubuntu©, mais cela ne sera pas possible pour l'ensemble de ces deux groupes.

C'est pourquoi, nous formulerons ici une respectueuse demande à Ubuntu©, Canonical©, et Mark Shuttleworth : il est temps de corriger ces affectations, et d'accepter les valeurs par défaut du paquetage kbd pour les touches de fonction modifiées.

En plus de cela, veillez à introduire des chaînes pour F21, F22 et au delà. À quoi cela sert-il d'assigner des variables à des touches modifiées, si ces variables ne délivrent qu'une chaîne vide ?

Avec ces deux mesures d'un réformisme timide, deux à trois douzaines de touches de fonctions modifiées deviendraient instantanément disponibles pour les applications en mode texte. Ainsi par exemple, Ubuntu© installe l'éditeur nano par défaut. Pourquoi donc nano n'utilise-t-il que les touches de fonctions non modifiées, et fait appel à des règles absconses comme l'utilisation de altunderscore (Alt_souligné) pour étendre le champ des combinaisons de touches ? C'est parce que les touches de fonctions avec modificateur ne sont pas définies de façon cohérente entre les distributions. Faut-il passer tant de temps pour résoudre ce problème ? D'autant que les touches de fonctions modifiées sont internationales par essence. Jetez juste un coup d'œil sur altunderscore sur des claviers non-US.

Le Tao de SAK

La touche Secure Attention Key (SAK, NdT: mot à mot Touche Prévenances en toute sécurité —si on est amoureux de son ordinateur— ou bien Mise au garde-à-vous en toute sécurité— si l'on a l'esprit militaire—les deux mènent au même résultat) n'est pas à proprement parler une touche ; il s'agit d'une fonctionnalité à laquelle on peut (ou ne pas) faire correspondre de touche lors la compilation du noyau. Si cela a été prévu lors de la compilation du noyau, la fonctionnalité est déclenchée par altImpr.écrank. Toutefois, quelles que soient les options de compilation du noyau, SAK peut être affecté à n'importe quelle autre touche de votre choix. Cette fonctionnalité tue tous les processus de la console active, et vous déconnecte. Cela est pratique quand vous manipulez quelque application et trouvez le moyen d'obtenir un clavier totalement muet : tant que le noyau est actif, SAK vous répondra toujours.

Le noyau de 8.10 incorpore la fonctionnalité SAK—mais un SAK bogué:

http://ubuntuforums.org/showthread.php?p=6169912

Appuyer sur SAK vous met la panique dans le noyau, et votre seule possibilité est de couper l'alimentation de l'ordinateur. Une bizarrerie en quelque sorte, n'est-ce pas ? La fonctionnalité SAK incorporée ne peut pas être désactivée, et donc les utilisateurs peuvent juste planter leur ordinateur le cœur léger. Ubuntu© se spécialise-t-il dans la sécurité ?

Le remède à cela ne consiste pas à modifier la disposition du clavier ; il consiste à ne pas activer l'option SAK (SysReq) à la compilation. Les utilisateurs auront toujours la possibilité de rétablir la fonctionnalité sur leur clavier s'ils le souhaitent—après que le bogue SAK aura été débusqué, bien sûr.

( Entre parenthèses, il a été démontré que le bogue SAK était spécifique à certains matériels, voir :http://article.gmane.org/gmane.linux.ubuntu.user/165993/match=sak+producing+kernel+panic.)

Comment modifier la disposition de clavier d'Ubuntu© ?

D'abord, préparez un fichier texte avec la disposition de clavier de vos rêves ; vous pourrez faire cela en faisant une extraction de boottime.kmap à partir de boottime.kmap.gz et en le modifiant selon vos loisirs. Mais, si votre projet de modification comporte la réduction de ces 64 dispositions de clavier à un nombre plus raisonnable (disons, 10), vous serez occupé pour une bonne heure, au moins. Il est facile de copier et modifier la configuration clavier à partir d'une distribution Fedora©, openSUSE©, ou Mandriva© à laquelle vous avez accès. Évitez les fautes de frappe : la moindre petite erreur entraînera le refus de votre configuration clavier. (Un CR-LF en fin de ligne déclenche une erreur ; LF seul est accepté). Il n'est pas obligatoire, mais conseillé d'adopter une dénomination bien distincte pour le nom, par exemple myown.kmap

Quand vous avez terminé, saisissez :


    loadkeys -s myown.kmap

L'astuce est que vous avez besoin d'exécuter cette commande chaque fois que vous démarrez. Pour que ce soit fait automatiquement, vous compressez myown.kmap et le déplacez en tant que boottime.kmap.gz vers /etc/console-setup. Surprise ! ça ne fonctionne pas ; Ubuntu© exige un hachage MD5 pour le fichier, et le veut précisément dans /etc/default/console-setup. Donc, je pense que vous êtes intelligent, vous lancez md5sum sur le nouveau boottime.kmap.gz, et insérez le hachage à l'endroit approprié. Surprise ! ça ne fonctionne toujours pas. Avec ou sans le hachage MD5 à la bonne place, Ubuntu© est déterminé à ne pas vous laisser modifier la disposition de clavier au démarrage.

À ce stade, c'est comme dans les derniers westerns, post-modernes : vous n'affrontez pas votre ennemi face à face pour que le plus rapide, et le meilleur, et le plus noble des deux gagne. Non, vous tirez dans le dos de votre ennemi. Sûr et efficace. Parmi les scripts de démarrage d'Ubuntu© (indépendamment du niveau d'exécution), le dernier dans l'ordre d'exécution à être appelé se nomme /etc/init.d/console-screen.kbd.sh Là, vous remplacez les toutes premières lignes de code :

if type setupcon >/dev/null 2>&1; then
    exit 0
fi

par

if type setupcon >/dev/null 2>&1; then
    loadkeys -s /etc/console-setup/myown.kmap
    exit 0
fi

 … après avoir placé myown.kmap à l'endroit indiqué. Cela fonctionne comme un charme. Ubuntu© même, pour vous obliger, affiche un message indiquant qu'il est en train de charger votre configuration de clavier.

Que faire à partir de là ?

Qui sait ? Néanmoins, à coup sûr on devra surmonter l'héritage de console-tools, et on devra mettre plus de cohérence entre les dispositions de clavier des consoles en mode texte des diverses distributions.

Techniquement le problème est trivial : affecter des chaînes aux touches à vocation fonctionnelle. Ce sont les touches qui normalement n'insèrent rien ; habituellement, elle déclenchent une fonction. Nous parlons des touches F1 à F12, Inser à Page suiv., les touches fléchées, Impr.écran, ArrêtDéfil., Pause. Celles-ci—isolément ou en combinaison avec un modificateur—ne doivent pas réagir différemment selon les distributions ou selon la langue. Mais, pour obtenir cette cohérence, il faut un consensus.

Et là semble être le problème !

A. N. Onymous écrit pour LG depuis le début — génér alement en s'introduisant furtivement de nuit et en laissant divers articles sur le bureau du rédacteur en chef. Un homme ou une femme mystérieux(se), ne demand ant aucun remerciement et se cachant dans l'obscurité...

Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://wiki.traduc.org/Gazette_Linux.

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.