Adaptation française : Gérard Baylard
Relecture de la version française : Deny
Copyright © 2009 Anonymous
Copyright © 2009 Gérard Baylard
Copyright © 2009 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
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 :
| ||
--Kapil Hari Paranjape
<kapil at imsc.res.in> |
Postée le lundi 8 Décembre 2008 à 00:46:54 -0800* En citant Kapil Hari Paranjape ( [L'auteur laisse tomber openSuse© à cause de 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
<rick at linuxmafia.com> |
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
<kapil at imsc.res.in> |
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.
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 ».
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
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.
À 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 Delete | est distincte de la touche Delete ou Suppr. |
la variable BackSpace | est distincte de la touche BackSpace ou Retour ← |
la variable F14 | n'implique pas une touche clavier F14 |
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.
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.
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ée | 0 |
<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.
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_backslash | car. 28 | <Ctrl.><8> sur le clavier numérique |
Control_bracketright | car. 29 | <Ctrl.><9> sur le clavier numérique |
Control_underscore | car. 30 | <Ctrl.><0> sur le clavier numérique |
Control_asciicircum | car. 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. ]
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.
Donc, après toutes ces éclaircissements, voici la configuration de clavier partielle pour les touches fonctionnelles.
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é...
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.