Comment écrire du français sur le PIE ?

Attention : depuis septembre 2010, les dumps (Fedora 12 ou 13, me semble-t-il) sont déjà configurées de telle sorte que l’UTF-8 est utilisé par défaut par la plupart des applications. La partie Le traitement des caractères non-ASCII n’est donc plus d’actualité. Je la laisse quand même au cas où…

Ce document synthétise tout ce que j’ai pu trouver à propos de la saisie et de la lecture aisées du français sur les machines du PIE. J’espère que ça pourra servir à d’autres. Dans tous les cas, ça me servira en tant que mémo. :-] Comme je fais appel à des notions qui sont inconnues de certains, et puisque tout épitéen est curieux, j’ai fait une liste de liens en tant que documentation annexe afin de combler d’éventuelles lacunes.

Le constat

Ça surprend les Sups en début d’année (à juste titre), et mystérieusement tout le monde pense que c’est normal au bout de quelques semaines : les claviers de l’école sont en QWERTY. Mais pourquoi donc ? Ça fait plus informaticien, c’est moins cher, c’est « hype », … ? Quoiqu’il en soit, c’est contre productif : il n’y a qu’à regarder la majorité des étudiants qui tente de se dépatouiller en utilisant les touches de correction une fois toutes les 2 secondes, confondant « a » et « q », cherchant où donc est passé le pipe (« | »), et j’en passe des meilleures. Le pire dans tout ça, c’est que plus personne n’a accès avec le clavier (c’est à dire simplement) aux caractères dits « spéciaux », comme les lettres accentuées, les guillemets français, et je ne parle pas des véritables apostrophes, ou des espaces insécables.

Quand bien même on trouverait le moyen de saisir d’une manière ou d’une autre ses caractères que certains jugent « exotiques » avec les claviers en disposition QWERTY, un problème se pose avec les configurations des postes sous Unix du PIE. Ceux qui ont essayé d’afficher du texte avec des caractères non-ASCII doivent bien le savoir : à la place de tout ce qui n’est pas disponible sur le clavier QWERTY, on lit des caractères bizarres, mal affichés.

On serait donc tentés de se dire que « comme on ne peut pas lire des accents, ça ne sert à rien de pouvoir les saisir au clavier ». Et finalement que cet état de fait est passable. Je ne suis pas d’accord, et ne pas pouvoir lire ou écrire du vrai français (du moins syntaxiquement), je trouve ça vraiment improductif. Certaines personnes se lamentent du niveau de langue des épitéens, mais peut-être faudrait-il réviser nos moyens de saisie de la langue bien avant de nous parler d’orthographe ou de grammaire.

Mes recherches… et mes trouvailles !

Il m’aura fallu en tout peut-être une après midi pour réunir quelques éléments de réponse tout à fait satisfaisants. Les manipulations que je propose n’ont rien de vraiment sorcier, c’est à la portée de tous et ça change la vie… du moins ça a radicalement changé la manière dont j’utilise les machines du PIE… et je n’exagère pas ! Ceci dit, tout ce dont je vais parler ici ne concerne que les utilisateurs de Xorg sous FreeBSD : je n’utilise pas Windows puisqu’on a des machines virtuelles même à Villejuif, et on utilise tout le temps des environnements graphiques (Fluxbox par défaut).

La disposition du clavier

Premièrement, à la source du problème : la disposition du clavier. À l’école, tout est de base en QWERTY : pas du tout adapté au français, donc. Certains pourraient donc avoir envie d’avoir un AZERTY « comme à la maison ou partout ailleurs en France. » Je n’ai pas choisi cette option pour deux ou trois raisons, mais ce que je propose n’est que mon avis, il est de toute façon possible d’avoir de l’AZERTY. Contrairement à l’avis quasi-général, la disposition AZERTY ne propose pas tous les caractères dont on a besoin pour saisir du français : en effet, comment obtenir des guillemets français ? (« et » sont utilisés en français, et sont utilisés à la fois en anglais et en français, au lieu de " qui n’est même pas un caractères typographique : il a été inventé en même temps que les machines à écrire) et où est la véritable apostrophe ? ( est une apostrophe tandis que ' a le même statut que ") les points de suspension (car « … » n’est pas « ... » : essayez de ne sélectionner que le premier point de : « … »), l’espace insécable ? etc. avec le clavier AZERTY ?

De plus, si l’on mettait à l’école la disposition AZERTY sur les claviers actuels, il manquerait la touche à droite du « Shift » pour saisir les chevrons (« < » et « < »). Enfin l’AZERTY, tout comme le QWERTY, a été mis au point spécialement pour être difficile à utiliser afin de ralentir la saisie pour éviter des problèmes mécaniques, du temps des machines à écrire. De nos jours, une disposition clavier a été mise au point pour palier à tous les problèmes que je viens d’énoncer : le clavier Bépo. Idéalement, tout le monde devrait utiliser (sans regarder le clavier, puisque c’est gravement improductif) la disposition de clavier la plus pratique pour sa langue et il suffirait donc de la choisir dans un menu sur l’ordinateur sur lequel on travaille pour l’utiliser. Un clavier dont les touches ne sont pas étiquetées, et ça roule pour tout le monde. Voilà pourquoi je recommande plus que chaudement d’adopter une bonne fois pour toutes le bépo.

Voilà pour les explications rapides et en vrac. Je vous laisse découvrir tout ça et faire votre choix. Voici comment changer la disposition du clavier pour Xorg, que ce soit sous FreeBSD ou sous GNU/Linux (ce sont des lignes commandes pour un shell) :

# passe le clavier en AZERTY
setxkbmap fr
# reviens en QWERTY
setxkbmap us
# passe en Bépo
setxkbmap fr bepo

Concernant le Bépo, j’ai eu le malheur de constater que la version présente sur le PIE (et sur les versions d’Ubuntu qui commencent à dater) est un peu ancienne, et les différences sont assez gênantes, mais rien de très grave puisqu’il est possible d’utiliser la dernière version en suivant les consignes données ici : http://bepo.fr/wiki/X.Org_portable#En_ligne_de_commande. Il s’agit de récupérer l’archive contenant la disposition pour Xorg (par ici en Août 2010), décompresser et lancer la commande :

xkbcomp -w0 fr-dvorak-bepo.xkb $DISPLAY

Lancer ces commandes permettent de profiter d’une disposition pendant la durée de la session, c’est-à-dire jusqu’à la déconnexion. Si on veut en bénéficier à chaque connexion, il suffit de placer ces lignes de commande dans le fichier ~/.xsession. Attention, ce fichier n’est exécuté que lorsqu’on s’est authentifié : on doit donc dans tous les cas saisir son login et son mot de passe en QWERTY pour se connecter.

Le traitement des caractères non-ASCII

Bon, on arrive à tapper du français, mais du côté du shell (parce qu’avec les applications graphique il n’y a a priori aucun problème), rien ne permet de traiter correctement cette nouvelle gamme de caractères. J’utilise ici UTF-8 parce que cet encodage est en passe de devenir la norme : tous les caractères existants sont répertoriés pour une taille en mémoire raisonnable et suffisante dans la plupart des cas.

Basiquement, avec le XTerm lancé au démarrage, essayer de tapper un simple « é » dans le prompt n’affiche rien. Il faut encore préciser au shell un jeu de caractères assez étendu pour ce qu’on a à saisir. J’ai trouvé qu’il suffit en fait en général de changer la locale, et éventuellement d’autres variables d’environnement, et utiliser les options des programmes que j’utilise. Typiquement avec Bash, on doit exécuter (en plaçant éventuellement les commandes dans le .(my)bashrc pour que ce soit fait au démarrage) :

# Fixe la locale et la langue par défaut au français encodé en UTF-8
export LANG=fr_FR.UTF-8
export LC_ALL=fr_FR.UTF-8
# Force XTerm à utiliser le français en UTF-8 (il ne prend pas en compte
# la locale pour une raison mystérieuse…
export XTERM_LOCALE=fr_FR.UTF-8

Si, pour une raison ou pour une autre (parce que vous êtes en salle machine à Villejuif, par exemple) le shell est Tcsh, utilisez setenv à la place de export. Pour vérifier que les variables d’environnement sont bien configurées pendant une session, il suffit d’entrer :

env

Ces manipulations permettent à votre shell de travailler en UTF-8, mais il reste à paramétrer les logiciels en ligne de commande pour qu’ils le sachent. Certains prennent en compte la locale, mais d’autres non (comme XTerm). Dans le cas des logiciels qui travaillent en réseau (les cliens IRC, par exemple), il est nécessaire de configurer correctement les cliens des correspondants pour qu’ils puissent lire votre prose correctement.

Concernant SSH, il est utile de configurer la langue et la locale (LANG et LC_ALL), mais changer la disposition du clavier avec setxkbmap ou xkbcomp une fois connecté ne sert à rien : c’est la machine depuis laquelle on se connecte dont on doit s’occuper.

Pour configurer l’affichage d’Irssi (je ne parle pas des informations que celui-ci échange avec le réseau) en UTF-8, par exemple, on rentre dans son prompt :

/set term_charset UTF-8

Du reste, RTFM comme on dit. :-)

Discussion sur la configuration actuelle

Bienvenue dans la merde actuelle des encodages des caractères ! Le Bocal nous a forcé la main avec l’ASCII, probablement par flemme de bouger la configuration par défaut, ou alors pour nous « protéger » de ces problèmes. Sous-entendu : travaillez en ASCII, et vous n’aurez de problème nul part. En septembre 2009, j’ai discuté rapidement avec un AOC (qui était en Ing-1 à l’époque, donc) : il m’a expliqué que ça permettait de nous habituer aux configurations qui ne gèrent pas l’UTF-8, comme les vieux serveurs, par exemple. Personnelement, je trouve que c’est un très mauvais choix. Je vais tenter d’argumenter un peu… en partant du principe que l’UTF-8 est une solution standard très correcte (en effet, on gère tous les caractères existant, après certains pourront me rétorquer que c’est affreux parce que un caractère n’a pas de longueur définie en octets, ou parce que ça privilégie les caractères latins, …).

Il faut faire la part des choses : qu’est-ce qu’implique s’habituer à travailler en ASCII ? Et en UTF-8 ? S’accoutumer excessivement à l’ASCII, c’est certes s’ouvrir les portes des vieilles configurations ou des stations mal configurées sans douleur. En effet, on n’utilise que les caractères reconnus universellement, on migre d’une plateforme à l’autre sans changement. Mais c’est aussi ne savoir utiliser que ce que l’ASCII nous permet : quelques pauvres signes et un alphabet des plus minimal, le tout ne permettant même pas de s’exprimer dans un Anglais correct (je rappelle l’exemple de l’apostrophe, ou des « quotes »).

Résultat des courses : on se débrouille bien sous les vielles configurations, mais à partir du moment où on a théoriquement accès à l’ensemble des caractères existant on ne sait pas les utiliser, ou alors on n’a pas l’habitude. À partir de ce moment-là, on peut se demander quelle utilité peuvent avoir les jeux de caractères plus étendus que l’ASCII (comme l’UTF-8). Une autre manière de voir les choses est qu’on s’habitue à l’exception (un environnement en ASCII est rare quand ce n’est pas juste un problème de configuration, donc c’est une exception) en se retrouvant désemparé devant l’habituel (typiquement, on a accès à tous les caractères quand on fait de la bureatique ou quand on va sur le Web, ou toute autre application d’Internet).

Prenons les choses autrement. Admettons que les machines soient par défaut en UTF-8 et que seules les machines « sensibles » soient en ASCII (et encore, sensible reste à définir). À ce moment-là, on apprend au quotidien à s’habituer à saisir du texte correctement. C’est plus facile à lire, l’ordinateur le comprend bien mieux, on peut foutre des caractères bizarre dans les chats pour le fun… bref, tout le monde est content. Et puisqu’il est nécessaire de se préparer aux configurations en ASCII (c’est-à-dire rarement), on s’entraîne pendant un court laps de temps à s’y limiter. L’ASCII étant assez simple à gérer, c’est vraiment pas la mère à boire.

Si je peux me permettre une comparaison qui nous parle, on ne passe pas notre temps à utiliser des structures de données en mémoire statique simplement parce que certaines machines minimalistes (sur lesquelles on travaille très rarement pour la plupart d’entre nous) n’ont pas de gestion de la mémoire dynamique. De la même manière, on s’appuie quotidiennement (ou presque) sur la mémoire dynamique, et parfois, on se restreint à la mémoire statique. « Au cas où. » Je m’excuse pour cet exemple un peu rapide, mais je le trouvais assez éloquent. :-)

Documentation annexe

D’où viennent les dispositions QWERTY et AZERTY ?
http://bepo.fr/wiki/Pr%C3%A9sentation#Contraintes_de_la_disposition_azerty
Qu’est-ce que le Bépo ?
http://bepo.fr/wiki/Pr%C3%A9sentation
Comment installer Bépo sur son système ?
http://bepo.fr/wiki/Installation
Qu’est-ce qu’un encodage de caractères ?
http://fr.wikipedia.org/wiki/Codage_de_caract%C3%A8res
http://www.alsacreations.com/astuce/lire/83-sy-retrouver-entre-ascii-ansi-latin1-iso-8859-1-macroman-windows-1252-etc.html
Que sont l’ASCII et l’UTF-8 ?
http://fr.wikipedia.org/wiki/ASCII
http://fr.wikipedia.org/wiki/UTF-8
Qu’est-ce qu’un shell ?
http://fr.wikipedia.org/wiki/Shell_Unix
http://en.wikipedia.org/wiki/Shell_(computing)
Qu’est-ce qu’une variable d’environnement ?
http://fr.wikipedia.org/wiki/Variable_d%27environnement
Que sont les locales ?
http://fr.wikipedia.org/wiki/Param%C3%A8tres_r%C3%A9gionaux
Document plus exhaustif
http://jp.barralis.com/howto/linux/Unicode-HOWTO/Unicode-HOWTO.php

Créé fin 2009 et dernière mise à jour début août 2010.