rI18N ou le Vrai Projet d'Internationalisation

Gazette Linux n°159 — février 2009

Adaptation française : Gérard Baylard

Relecture de la version française : Deny

Article paru dans le n°159 de la Gazette Linux de février 2009.

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

Préambule : réactions à l'article du n° 157
Réaction n° 1
Réaction n° 2
Réaction n° 3
Introduction
1.Que doit comporter la disposition de clavier ?
2. Quelles sont les touches fonctionnelles ?
3. En manque-t-il ?
4. Terminologie.
5. Approche par multiplication de chaînes
6. Approche par examen de l'état des touches modificatrices
7. De quelles touches modificatrices avons-nous raisonnablement besoin ?
8. Caractères de contrôle 28 à 31
9. Effets immédiats et probables
10. Le bonus
L'auteur

Préambule : réactions à l'article du n° 157

Réaction n° 1

 

Postée le samedi 6 Décembre 2008 à 09:07:31 +0530

L'article sur Ubuntu© » et le « Blues du clavier » est (à mon humble avis) à la fois trop lourd d'opinions et trop léger en solutions. Voici quelques commentaires plus détaillés :

  1. L'auteur laisse tomber openSuse© à cause de KDE 4.1 et trouve que la prise en charge de Gnome par openSuse© est pauvre. Alors cap sur Ubuntu©, uniquement pour s'inquiéter de la configuration de clavier de la console. Cela est bizarre puisqu'on peut se servir d'un terminal dans Gnome et configurer son clavier avec X ou gconf ou que sais-je d'autre.

    Soit dit en passant, l'auteur parle de la configuration du clavier en mode texte quand il veut dire configuration du clavier de la console VT.

  2. L'auteur aurait pu rassembler les récriminations au sujet de console-tools à un endroit et expliquer ensuite pourquoi kbd est meilleur et peut être configuré. Au lieu de cela nous avons quelques allusions sur comment (par exemple) configurer le clavier Dvorak (un problème posé dès le début) et un tas de considérations sur les différences de configurations de clavier de console-tools et kbd pour les touches de fonction.

  3. Un exemple de clavier « a minima » qui cadrerait avec les besoins de l'auteur aurait été une excellente pièce-jointe pour cet article.

  4. L'auteur termine en disant : [Mais, pour obtenir cette cohérence, il faut un consensus.]. J'ajouterai que « pour obtenir le consensus, nous avons besoin d'une bonne solution cohérente à tous les malheurs de la console Linux© ». L'auteur est-il prêt à nous proposer une telle solution ?

 
 --Kapil Hari Paranjape 

Réaction n° 2

 

Postée le lundi 8 Décembre 2008 à 00:46:54 -0800*

En citant Kapil Hari Paranjape () :

[L'auteur laisse tomber openSuse© à cause de KDE 4.1 et trouve que la prise en charge de Gnome par openSuse© est pauvre. Alors cap sur Ubuntu©, uniquement pour s'inquiéter de la configuration de clavier de la console. Cela est bizarre puisqu'on peut se servir d'un terminal dans Gnome et configurer son clavier avec X ou gconf ou que sais-je d'autre. ]

Ces choses là ne doivent pas être mélangées.

Je n'ai pas de commentaires sur vos autres critiques, mais l'auteur nous interpelle sur un point primordial concernant les configurations de clavier de la console qui ont été promptement expédiées dans Ubuntu©. Si on travaille comme administrateur système, on trouve que la console non-X11 peut devenir un problème crucial. Il est important que les consoles texte ne soient pas mises en désordre, et troublant qu'une distribution Linux© moderne ne se préoccupe pas de la mettre d'aplomb. (On peut être amenés à s'étonner que d'autres fondamentaux des divers Unix© soient livrés en état de dysfonctionnement).

 
 --Rick Moen 

Réaction n° 3

 

Postée le lundi 8 Décembre 2008 à 22:37:42 +0530

Lundi 8 décembre 2008, Rick Moen a écrit :

[Je n'ai pas de commentaires sur vos autres critiques, mais l'auteur nous interpelle sur un point primordial concernant les configurations de clavier de la console qui ont été promptement expédiées dans Ubuntu©. Si on travaille comme administrateur système, on trouve que la console non-X11 peut devenir un problème crucial. ]

Je suis d'accord avec vous que l'émulation d'un terminal de travail sur la console VT est un point crucial. Toutefois, je serais satisfait avec une bonne et fiable émulation de VT100.

Je suis également d'accord avec l'auteur sur le fait qu'un réglage défectueux de la touche Impr.Écran ne doive pas vous causer de soucis.

 
 --Kapil Hari Paranjape 

Introduction

Mon article « Le blues du clavier avec la console en mode texte d'Ubuntu© » dans la Gazette Linux n° 157 a suscité une réaction un brin agacée dans le courrier des lecteurs du n° 158.

Il y est dit que je n'ai pas fait ceci ou cela. Et c'est vrai, je ne l'ai pas fait.

En particulier, je ne me sens pas capable de proposer [… une bonne solution cohérente à tous les malheurs de la console Linux©]. Il faut adresser ce défi à Linus Torvalds.

En revanche, je suis prêt à relever un challenge plus modeste énoncé dans ce courrier : à savoir, [… un exemple de disposition de clavier qui soit « a minima » et (cadre) avec les besoins de l'auteur].

Bien — allons-y pour cela. Comme cela a déjà été dit, nous parlons de la console en mode texte, et non de celle incorporée dans le terminal X.

1.Que doit comporter la disposition de clavier ?

La disposition de clavier de la console en mode texte comprend, entre autres choses, les touches propres à l'insertion du texte. Ces touches varient notablement d'un pays à l'autre, je les laisserai donc de côté. Je n'essayerai même pas de les définir pour la configuration de clavier US par défaut. Le vrai problème, quand nous examinons les applications en mode texte, concerne les « touches fonctionnelles ».

2. Quelles sont les touches fonctionnelles ?

C'est un terme que j'utilise à défaut d'un autre plus parlant. Toute solution de remplacement sera bienvenue.

Les touches fonctionnelles sont énumérées ci-après. Le nom des touches est celui du clavier réel sur lequel je suis en train de saisir cet article. Elles sont, en vérité, tout à fait ordinaires :

    F1   F2   F3   F4   F5   F6   F7   F8   F9   F10   F11   F12

    Tab    Retour ←  Impr.Écran/Syst   Arrêt défil.   Pause/Attn
    
    Insér.    Début ↖     Page ⇑     Suppr      Fin       Page ⇓

                              Haut
                     Gauche         Droite
                              Bas

3. En manque-t-il ?

Vous pouvez argumenter sur le fait que d'autres touches pourraient aussi être rangées dans le groupe des « touches fonctionnelles ». Par exemple, Échap. ou Entrée, ou les touches des modificateurs Maj., Ctrl, Alt. Si elles ne sont pas citées dans le jeu ci-dessus, c'est qu'elles ne posent pas problème. J'ai testé les configurations de clavier par défaut définies par le projet kbd pour les États-Unis, l'Allemagne, la France, l'Italie, l'Espagne et la Russie. Elles sont tout à fait logiques, et les différences sont imperceptibles.

4. Terminologie.

À nouveau, un nota sur la terminologie : 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 prises isolément, mais peut également se rapporter à des touches modifiées, par exemple, par un appui préalable sur Ctrl.gauche (touche Ctrl sur la gauche du clavier). Dans la disposition de clavier (le fichier !), un tableau de relations pour les touches modifiées s'appelle aussi une disposition de clavier ; ainsi nous avons une disposition de clavier pour Ctrl, une autre pour Alt et ainsi de suite.

De plus, vous devez garder en mémoire la différence qu'il y a entre un nom de touche et la variable qui lui est assignée dans une disposition de clavier. Exemples :

la variable Deleteest distincte de la touche Delete ou Suppr.
la variable BackSpace est distincte de la touche BackSpace ou Retour ←
la variable F14n'implique pas une touche clavier F14

5. Approche par multiplication de chaînes

Ainsi qu'on peut le voir, et plus particulièrement dans Ubuntu© (ce qui implique Debian©, même si je n'ai pas vérifié), les dispositions de clavier modifiées se différencient à l'aide de multiples chaînes. Exemples :

* Touches ** Assignations *
<F4>F4
<Maj.><F4>F14
<Ctrl.><F4>F24
<Maj.><Ctrl.><F4>F34
<AltGr.><F4>F44
<Maj.><AltGr.><F4>F54
<AltGr.><Ctrl.><F4>F64
<Maj.><AltGr.><Ctrl.><F4>F74

Les variables F4 à F74 renvoient des chaînes à l'application en attente d'une entrée au clavier ; l'application peut alors engager une action. Le curieux de l'histoire est que Ubuntu© n'a prévu de chaînes que pour F4 et F14 ; F24 à F74 sont vides, et aucune action ne peut être déclenchée à réception d'une chaîne vide.

Toutefois, ce n'est pas le problème ici. La question est : est-ce une bonne idée de définir toutes ces touches par des chaînes ?

Toutes ces variables jusqu'à F256 sont un héritage d'Unix©. Elles étaient sensées rendre le clavier paramétrable au cas par cas — c'est à dire, adaptable sur mesure —, sans préjuger d'un consensus sur l'affectation des touches. Unix© et consensus ne sont pas miscibles. Chacun était libre de faire ce qu'il voulait avec ces variables, et il y a belle lurette qu'un logiciel ait utilisé cette facilité : définissez F74 dans la configuration de clavier, et vous allez intéresser quelqu'un.

6. Approche par examen de l'état des touches modificatrices

Il y a une autre façon de reconnaître, par exemple, <Ctrl.><F4> même s'il n'y a pas de chaîne unique qui soit attachée à cette combinaison de touches. Il faut bien sûr qu'il y ait une chaîne — autrement cette touche serait ignorée en phase conversion (que ce soit en ASCII ou UTF-8), qui est la situation normale. Cette approche se fonde uniquement sur la lecture de l'état des touches modificatrices — pressée ou pas. Toutes les touches modifiées délivrent la même chaîne que la touche seule et vous recherchez ensuite l'état des modificateurs. Exemple:

* Touches ** Assignations *
<F4>F4
<Maj.><F4>F4
<Ctrl.><F4>F4
<Maj.><Ctrl.><F4>F4
<AltGr.><F4>F4
<Maj.><AltGr.><F4>F4
<AltGr.><Ctrl.><F4>F4
<Maj.><AltGr.><Ctrl.><F4>F4

Voulez-vous savoir si on a reçu <Ctrl.><F4> ? Vérifiez l'entrée de F4, et ensuite lisez l'état de la touche <Ctrl.>. Si la touche <Ctrl.> est pressée, vous avez reçu <Ctrl.><F4> ; sinon, vous avez reçu <F4>.

Sympathique, n'est ce pas ? Pas chez les Unixsaures. Car, voyez-vous, lire l'état d'une touche modificatrice est une spécialité Linux©. Et même la page du manuel Linux© pour les ioctl_codes, où l'astuce est expliquée, avertit fermement des risques liés à leur utilisation et recommande les fonctions POSIX. L'entourloupette est qu'il n'y a pas de fonctions POSIX — donc, soit vous utilisez les IOCTL de Linux©, soit vous êtes refait.

J'entends dire, ah ! mais ce n'est pas neutre vis à vis de la plate-forme. Comment ? Parcourez le code source de n'importe quel éditeur de texte pour console et comptez le nombre de directives pré-processeur qui sont là pour adapter les variantes n° 1 à 999 d'Unix©. Il y a aussi des directives pré-processeur pour adapter Linux©, l'état des modificateurs et tout. Si Midnight Commander peut le faire, pourquoi pas les autres ?

Il y a des éditeurs de texte pour console qui utilisent les touches modificatrices pour leur version Windows©, mais ne le font pas pour leur version Linux©. Pourquoi donc ? Parce que Windows© donne la touche et le modificateur en même temps, alors que Linux© nécessite des commandes distinctes, une pour lire la touche, une pour lire le modificateur. Toutefois, il y a une très légère différence de temps entre l'obtention des résultats —  et théoriquement le risque d'avoir une erreur. Une piètre excuse : quand deux commandes sont aussi proches dans le code source, une telle erreur n'arrive jamais. Nous parlons de microsecondes.

Mon choix sera d'utiliser les variables correspondant aux touches isolées pour toute association avec des touches fonctionnelles quelles qu'elles soient, excepté pour la combinaison <Ctrl.><Alt.> qui doit être réservée aux opérations système, comme basculer entre diverses consoles.

7. De quelles touches modificatrices avons-nous raisonnablement besoin ?

De combien de configurations de clavier avons-nous besoin dans la configuration du clavier ? (Si vous êtes un peu perdu, révisez l'avertissement sur la terminologie un peu plus haut.) Ubuntu© a 64 configurations de clavier dans la configuration du clavier, c'est sacrément exagéré. Fedora© et OpenSUSE© sont plus raisonnables. Je me rapprocherai de leur façon de voir :

touche isolée0
<Maj.>1
<Altgr.>2
<Ctrl.>4
<Maj.><Ctrl.>5
<AltGr.><Ctrl.>   6
<Alt.>8
<Ctrl.><Alt.>12

Ce choix donne les entrées de configuration 0 à 2, 4 à 6, 8 et 12 dans la configuration de clavier (le fichier), soit un total de huit configurations (les tables d'assignation des touches aux variables). Comme je l'ai déjà dit plus haut, Ubuntu© a des configurations de 0 à 63.

À noter que la définition de ces huit configurations n'empêche pas d'en définir plus. Mais c'est avec la définition de huit configurations de clavier que je me propose de relever le défi.

À noter également, pour les utilisateurs du clavier US : <AltGr.> n'est rien d'autre que la touche <Alt.> sur le coté droit du clavier ; il faut bien la distinguer car elle joue un rôle important sur les claviers non-US.

8. Caractères de contrôle 28 à 31

Les caractères 28 à 31 sont des caractères de contrôle ; ils sont désespérément difficiles à trouver sur les claviers non-US. Tous les mnémoniques relatifs à leur désignation sont oubliés. De plus, il peuvent également être modifiés avec <Maj.> et sont peu commodes à générer.

Ce sont Control_backslash (^\ Ctrl-barre oblique inverse), Control_bracketright (^] Ctrl-crochet fermant), Control_underscore (^_ Ctrl-souligné) et Control_asciicircum (^^ Ctrl-accent circonflexe). Une solution neutre vis à vis de la langue et du clavier pourrait être construite comme indiqué ci-après :

* Nom * * Code * * Assignations *
Control_backslashcar. 28<Ctrl.><8> sur le clavier numérique
Control_bracketright   car. 29<Ctrl.><9> sur le clavier numérique
Control_underscorecar. 30<Ctrl.><0> sur le clavier numérique
Control_asciicircumcar. 31<Ctrl.><1> sur le clavier numérique

[ NdT : Dans le tableau ci-dessus, il y a une inversion des désignations pour les caractères 30(^^ Control_asciicircum) et 31(^_ Control_underscore). Je n'ai pas modifié le tableau original de l'article. Le fichier de configuration joint à titre d'exemple rétablit une bonne affectation aux touches. ]

9. Effets immédiats et probables

Les effets immédiats de la configuration partielle proposée pour les touches fonctionnelles concernent les opérations système :

  • changement de console

    Cela fonctionnera avec <Ctrl.><Alt.><F1>, etc. — de la même manière que cela fonctionne sous X — au lieu de <Alt.><F1>, etc.

  • console précédente/suivante

    Cela devient <Ctrl.><Alt.><Gauche> et <Ctrl.><Alt.><Droite> au lieu de <Alt.><Gauche> et <Alt.><Droite>.

  • défilement du texte dans la console

    Plus de <Maj.><Page ⇑> et <Maj.><Page ⇓> ; cela devient <Ctrl.><Alt.><Page ⇑> et <Ctrl.><Alt.><Page ⇓>.

Ce qui précède semble entrer en conflit avec DOSEMU — mais ce n'est pas le cas, car DOSEMU utilise un accès direct au clavier.

Les effets non immédiats dépendent des applications en mode texte, sur l'exemple de Midnight Commander, qui utilisent les ioctls (NdT: contrôles d'entrées/sorties) de Linux© pour lire l'état des touches modificatrices.

Pour en dire plus, disons qu'il serait normal de se déplacer au début du tampon avec <Ctrl.><Début ↖> tandis que <Début ↖> vous positionnerait en commencement de ligne. Pour se déplacer sur le mot suivant, on disposerait de <Ctrl.><Droite>. Et on pourrait mettre en surbrillance une sélection en déplaçant le curseur tout en tenant pressée la touche <Maj.>. Dernier point, mais non le moindre, un grand nombre de combinaisons avec les touches F1 à F12 deviendraient disponibles et seraient indépendantes du pays et de la langue !

Pour ceux qui n'auraient que l'expérience d'un clavier US avec la configuration US par défaut, essayez donc nano sur un clavier espagnol ou français. Quand vous l'aurez fait, revenez et convenez avec moi que cette petite configuration de clavier partielle pourrait s'appeler rII18N ou le Vrai Projet d'Internationalisation.

10. Le bonus

Donc, après toutes ces éclaircissements, voici la configuration de clavier partielle pour les touches fonctionnelles.

L'auteur

A. N. Onymous écrit pour LG depuis le début — généralement 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 demandant 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.