11 11 TEX L^{A}TEX

Le Francophones-HOWTO : Linux & la langue française

Écrit par Guylhem Aznar, <guylhem(à)oeil.qc.ca> v3.2 ; Décembre 1999

Copyright \begin{matrix}c \\ ◯ \end{matrix} 1997, 1998, 1999, Guylhem Aznar ; librement distribuable selon les termes du LDP. Toutes les marques citées appartiennent à leurs propriétaires respectifs.

Contents

1 Présentation

1.1 Introduction

Ce document a été rédigé pour aider à configurer un ordinateur doté du système d’exploitation Linux pour des utilisateurs francophones.

Il y est expliqué par exemple comment configurer périphériques et applications afin de prendre en compte les particularités et les spécificités de notre langue...

Toutefois, ce document ne traite pas de l’installation du système d’exploitation Linux ; il est implicitement supposé que vous ayez correctement installé une distribution de Linux, RedHat, Debian ou Suse, cette liste n’étant pas exhaustive, et que vous vous apprêtiez maintenant à mieux la configurer ; veuillez donc vous référer à d’autres HOWTOs pour l’installation.

Les adresses électroniques ont été volontairement supprimées ou modifiées en remplaçant les « a enroulés » par des « (à) » afin d’éviter les publipostages très gênants.

Si quelque terme employé vous semble un peu obscur, je vous invite à vous reporter au lexique (« Vocabulaire : un petit lexique »), expliquant certains mots tels 8 bits, AZERTY ou QWERTY, qui sont employés tout au long de ce document.

1.2 Fichiers utilisés dans ce HOWTO

Tous les fichiers cités dans ce HOWTO, sont disponibles sous licence GPL sur ma page

Je vous recommande de télécharger tous ces fichiers pour les utiliser selon les exemples proposés.

1.3 Les Français ne sont pas les seuls francophones !

1.3.1 a) Différentes versions

Pour chaque manipulation dépendant du pays concerné, un certain nombre de versions peuvent être proposées :

• une canadienne normalisée (cn)

• une belge wallonne (be)

• une française (fr)

• une québécoise (qc)

• une suisse romande (sf)

• une états-unienne internationale (usx)

1.3.2 b) Les états-uniens : raccourcis claviers

La version états-unienne internationale permet à tous les francophones utilisant un clavier « 7 bits » aussi nommé « QWERTY » de bénéficier de l’étendue des caractères 8 bits.

Est disponible aussi une version pour ceux qui utilisent un clavier « Happy Hacking ».

1.3.3 c) Le Luxembourg : comme la France

Le Grand Duché du Luxembourg utilisant les conventions françaises, j’invite les lecteurs luxembourgeois à se reporter aux exemples français.

1.3.4 d) Le Canada : 3 claviers

Il est classique de parler des claviers « canadien international », surtout destinés aux anglophones (qui leur préfèrent toutefois les claviers QWERTY standard) et les claviers « canadien français », aux lettres accentuées.

Mais, de nouveaux claviers dits « canadiens normalisés » ont fait leur apparition récemment pour fusionner les modèles « canadien international », non concerné par le cadre du Francophones HOWTO, et « canadien français ».

Ces nouveaux claviers répondent aux normes CAN/CSA Z243.200-92 et ISO 9995-7 ; ils sont prévus pour être utilisés dans n’importe quelle langue, en remplaçant par exemple les intitulés des touches par des pictogrammes : « Del », en anglais, qui se traduisait par « Suppr » en français devient ainsi trois barres obliques fines orientées sud-ouest/nord-est.

Plus d’explications sont disponibles sur le site de l’Office de la Langue Française.

Toutefois je n’ai pas pu réussir à me procurer un tel clavier ; mes fichiers de configuration sont donc uniquement basés sur les (illustrations) et les normes théoriques, et non les normes pratiques.

Par exemple, si j’ai compris que la touche « Control » de droite est utilisée comme une « AltGr » mais sert à obtenir encore d’autres caractères, je n’ai aucune idée du comportement de ces touches lorsque seule l’autre a une sérigraphie prévue...

Si on peut m’envoyer un tel clavier, et surtout son pilote, je promets de mettre les fichiers de configuration à jour :-)

1.4 Attention

1.4.1 a) ROOT

Certaines manipulations recommandées par ce document ne peuvent être effectuées que sous le compte privilégié « root » ; la plus grande prudence est alors de rigueur car toute action inadéquate peut mettre en péril le contenu des disques.

Sauvegarder les fichiers existants, par exemple en les copiant sous le même nom suivi du préfixe .old, avant de les modifier ou remplacer.

1.4.2 b) CHERCHER

Le paquetage GNU nommé “find” offre un programme appelé locate, grâce auquel l’utilisateur peut retrouver le nom complet, chemin de répertoires, d’un fichier dont il ne connaît que le nom.

Certaines distributions Linux fournissent cela en /usr/bin/locate.

En tant que root, lancer updatedb invoque un find / sur les disques montés et place les noms de tous les fichiers sous forme hash dans /usr/lib/locate/find.codes (ou /var/lib/slocate/slocate.db pour slocate, utilisé dans les distributions modernes.)

locate permet ensuite de localiser l’un d’eux :

             (guylhem@victis:guylhem)$ locate noms_des_fichiers_à_retrouver

2 Les problèmes

2.1 Présentation

Le problème de tout utilisateur francophone après l’installation de Linux est de lui faire comprendre qu’il utilise des normes différentes des standards par défaut états-uniens..

Cela a des conséquences sur :

• la police de caractères donc les caractères spéciaux que l’on utilise, accentués comme É È À Ç ou bien ligaturés comme Æ , voire « e dans l’o » qui vient d’apparaître sous Linux grâce à la norme ISO-8859-15 aussi nommée latin-9

• la correspondance entre la sérigraphie des cabochons ou « touches » du clavier sur lesquelles vous appuyez, et les codes que Linux renvoie, celui-ci supposant un clavier QWERTY états-unien par défaut

• le format de page pris en charge par les programmes que vous utilisez pour imprimer, différent entre les États-Unis; (14×8, 5poucespourdupapierditlgal)etl′Europe(29, 7 × 21cmpourdesfeuillesa4)leformatdesdatesetdel′heure, lapositiondesjoursetdesmoistantvariableselonlesrgionsdelafrancophonie

• • le format de la monnaie, aussi variable selon les francophones

• la langue utilisée pour les messages d’erreur

2.2 Solutions

Tout est préconfiguré pour un états-unien : bien que ceux-ci ne représentent pas la majorité de la population mondiale, ils ont été précurseurs en informatique.

Il faut donc se faire reconnaître comme une « exception » par les différents programmes, par des options ou des variables à exporter voire dans les pires des cas une modification du code source suivie d’une recompilation.

Heureusement, la philosophie GNU de Linux rend le système très ouvert à des modifications de toutes sortes et comme vous allez le découvrir au fil de ce document, et il est assez simple d’obtenir un résultat très correct.

2.3 Aider

Pour le moment, le futur de l’internationalisation de Linux porte sur la traduction des messages d’erreur, des programmes comme KDE ou GNOME, des pages de manuel et de la documentation, alors si vous vous sentez l’âme d’un traducteur, n’hésitez pas à contacter l’équipe de traduction des HOWTOs ; pour cela, adressez-vous à Éric Dumas <dumas(à)freenix.fr> ou <dumas(à)linux.eu.org>.

3 Le vocabulaire : petit lexique

Tout d’abord, un mot sur le vocabulaire employé :

3.1 8 bits

Des caractères sont dits « 8 bits » s’ils correspondent à des accents ou à des signes spéciaux comme « § », non inclus dans le standard ASCII « 7 bits ».

Ce standard, sans accents ni caractères spéciaux, correspond aux 128 (2ˆ 7) premiers caractères des 256 (2ˆ 8), de 0 à 255.

Pour des raisons historiques (place disponible, inutilité pour les états uniens) seuls les 128 (2ˆ 7) premiers caractères ont été normalisés par l’ASCII : par exemple le A qui est le 65e caractère de la table ASCII s’écrit 0100 0001 en notation binaire.

Pour les caractères situés hors de la norme ASCII, différentes « normes » ou « standards » incompatibles, comme l’Unicode, l’iso-8859, le latin, le cp (...) fixent ces correspondances.

Par exemple, dans le standard ASCII étendu par l’iso-8859-1, le 224ème caractère équivalent noté « eb » en hexadécimal correspond à « ë ».

3.2 La police de caractères

Une police de caractères est une correspondance entre des codes informatiques et des caractères (alphanumériques...) affichables par l’ordinateur.

La police de caractères est l’ensemble des représentations graphiques des caractères d’un standard.

3.3 Les polices de caractères

Il existe plusieurs polices de caractères 8 bits pouvant répondre au besoins des francophones.

Je vous recommande de lire à ce sujet l’excellent site de Roman Czyborra qui a fait une thèse sur ce sujet et qui vous donnera une explication fort détaillée

Pour résumer, il est nécessaire de choisir une police de caractères pour que tous les caractères français soient disponibles.

Voici la liste des polices dites « ISO 8859 », mais attention, il existe leurs équivalents en « code page » pour windows (comme cp1252).

• ISO 8859-1 : latin 1 : langues d’Europe de l’ouest, Afrikaans, Swahili. Le Swahili, n’utilise aucun caractère accentué (comme l’Anglais, le Malais et l’Indonésien), donc n’importe quel version fait l’affaire. Pour l’Afrikaans, je ne sais plus exactement quel était le choix initial (c’est-à-dire où avait été rangé le ’n au départ), mais il ne me semble pas que ce soit dans Latin 1. Dans la pratique, bien sûr, les Afrikaaner utilisent Latin 1 ; la même chose se passe pour un certain nombre des cas qui suivent.

• ISO 8859-2 : latin 2 : langues d’Europe centrale et orientale. Dans les faits : Polonais, Tchèque, Slovaque, Slovène, Croate, Hongrois, Roumain, probablement aussi le Sorbe ou Sorabe (Wende en allemand).

Officiellement, je crois que l’Albanais s’écrit aussi en Latin-2, mais comme dans les faits c’est identique au Latin 1... Il y a un problème pour le Roumain, car le Latin 2 contient formellement les caractères avec une cédille, quand en roumain on utilise une virgule souscrite.

• ISO 8859-3 : latin 3 : Espéranto et Maltais.

Initialement, c’était prévu pour les langues d’Europe du Sud, y compris le Turc, les langues d’Espagne (donc Catalan, Basque), le Français. Mais dans la pratique, c’est limité à ces deux langues.

• ISO 8859-4 : latin 4 : langues baltes (incomplet).

Pas utilisé dans la pratique, remplacé par Latin 7 (iso-8859-13), ou plutôt en pratique la codepage 1257 Windows. Pour l’Este ou Estonien, on peut aussi utiliser Latin 9.

• ISO 8859-9 : latin 5 (comme latin 1, moins l’Islandais, plus le Turc).

Usage : le Turc et peut-être l’Azéri, mais il manque le schwa, un « e » renversé. Codage officiel aux Pays-Bas du fait des Turcs qui y habitent.

• ISO 8859-10 : latin 6 : langues nordiques, sauf le Lapon Skolt.

Pas utilisé dans la pratique : ne servirait que pour les langues sames (ou lapones), mais il manque des caractères, et le public concerné est de toute manière assez limité.

• ISO 8859-11 : Thai.

Pas encore officiellement adopté.

• ISO 8859-12 : Indien (n’existe pas encore).

Prévu pour le devanagari, pour écrire l’Hindi, la langue principale de l’Inde, et aussi un grand nombre d’autres langues indiennes, dont le Sanskrit.

• ISO 8859-13 : latin 7 : langues baltes.

Plus exactement : couvre les langues du pourtour de la mer Baltique, donc aussi le Polonais, l’Allemand et les langues de scandinavie. Mais dans la pratique il est réduit en utilisation aux langues baltes et à l’Este ou Estonien.

• ISO 8859-14 : latin 8 : langues celtes.

Pour le Breton, le Gaélique et les dialectes parlées au Pays de Galles et en Irlande.

• ISO 8859-15 : latin 9 : comme latin 1, en y comblant quelques manques.

Pour le Français, le Finnois (en concurrence avec Latin 1) et l’Este ou Estonien (en concurrence avec Latin 7).

De cette longue liste, il convient de ne retenir que :

• ISO 8859-1 latin 1 : police ouest-européenne utilisée par la majorité des systèmes UNIX, elle permet de disposer de tous les caractères Français sauf les « o e liés », l’euro et l’y tréma majuscule

• cp850 : équivalent sous DOS de cette police, mais incompatible : il faut utiliser un outil de traduction de fichiers tel GNU recode.

• ISO 8859-15 latin 9 : police de l’union européenne, il s’agit d’une version révisée de l’ISO 8859-1 latin 1 pour inclure tous les caractères des pays européens ; ainsi on y retrouve les caractères Français manquant, l’euro, et des caractères finlandais manquants.

• latin 0 : l’ISO 8859-15 latin 9 est souvent incorrectement abrégée en latin0, qui correspondait au nom du projet, de par son ambition à remplacer le latin 1 un jour. Je vous renvoie au site de l’ISO et à la documentation complète de ce standard

• cp1252 : équivalent sous Windows de cette police, aussi incompatible, qui apporte les mêmes caractères manquants, du fait d’une révision récente de cette norme.

• ISO 8859-9 latin 5 : police officielle en Turquie et en Hollande, où les caractères Islandais peu utilisés ont été remplacés par les caractères turcs.

• cp1254 : équivalent sous Windows de cette police, aussi incompatible, qui apporte les caractères manquant au Français précédemment cités et remplace les caractères Islandais peu utilisés par les caractères turcs.

Les choix de polices de caractères sont souvent des questions ou la raison se heurte aux habitudes.

Pour ma part, si vous hésitez, je vous recommande l’ISO 8859-15 latin 9, pour diverses raisons :

• Il supporte l’intégralité des caractères utilisés en Français de manière standard sur les UNIX, pour les échanges de fichiers entre Solaris et Linux par exemple

• Il s’agit de la police 8 bits choisie par l’union européenne si l’Unicode, évolution du 8 bits, n’est pas disponible

• Il permet d’écrire des textes avec l’intégralité des caractères utilisés dans l’union

• Il est en train de devenir le nouveau standard dans la messagerie électronique au sens large, supplantant progressivement l’ISO 8859-1 latin 1

Le Francophones HOWTO utilise donc le latin 9 dans tous les exemples, car il y a de grandes chances que votre système ne soit pas encore compatible latin 9... autant donc vous proposer des manipulations et des travaux pratiques utiles :-)

Toutefois, si vous ne pouvez utiliser l’ISO 8859-15 latin 9 et décidez d’en choisir une autre, je vous recommande d’éviter les cp propres au monde DOS/Windows et de vous rabattre sur l’ISO 8859-1 latin 1 qui est encore un standard fort répandu : dans chaque exemple je vous invite alors à remplacer les « latin9 » par des « latin1 »

3.4 Table de clavier

Une table de clavier est un fichier permettant de faire correspondre l’empreinte physique des cabochons, « touches » du clavier, au résultat obtenu sur l’écran de l’ordinateur.

Pour linux, ces fichiers sont dans /usr/lib/kbd/keytables/ ou /usr/share/kbd/keytables/

Par exemple, les claviers français AZERTY ont une table de clavier différente des claviers suisse romands QWERTZ, ou des claviers du reste du monde, QWERTY.

Cela ne concerne que l’apparence du clavier, l’empreinte des cabochons, donc disposition relative des caractères sur le clavier, et non son électronique interne ; si votre clavier ne vous convient pas, il vous suffit donc d’utiliser des autocollants pour le transformer en un autre clavier francophone.

3.5 « Home », « End », « Page_Up » et « Page_Down »

Les touches « Home », « End », « Page_Up » et « Page_Down » dont les noms varient selon les claviers sont les touches permettant respectivement d’aller en début/fin de ligne et de monter/descendre d’une page.

Les codes affectes à ces touches sont respectivement 102 et 107 pour « Home » et « End » en mode terminal.

Dans les pictogrammes des claviers ISO 9995-7, ces touches sont représentés par des flèches aux traits appuyés.

Lorsqu’on presse une touche, le clavier émet un code, qui est intercepté par la table de clavier.

La table de clavier, si elle reconnait le code, renvoie la chaine associée à la touche, en l’occurence« "\e[4 » pour « End ».

Lorsque bash ou un autre programme reçoit cette chaine, il ne la connait pas !

Donc il faut lui dire, dans le .inputrc que "\e[4 " signifie "aller à la fin de la ligne"

Donc pour que ces touches fonctionnent dans le shell bash, on ajoutera donc dans le fichier .inputrc (dans votre / ou dans /etc/inputrc) les lignes:

     set meta-flag on
     set convert-meta off
     set input-meta on
     set output-meta on
     set bell-style visible
     "\e[1~":beginning-of-line
     "\e[3~":delete-char
     "\e[4~":end-of-line
     "\e\C-h": backward-kill-word
     "\e\e[3~": kill-word

Les premières lignes permettent d’afficher les caractères 8 bits, et de remplacer le « bip » en cas d’erreur par un éclair blanc à l’écran.

3.6 Touches mortes

Les touches mortes sont des touches qui ne produisent pas de caractères en elles-mêmes, mais qui modifient la façon dont la frappe suivante va être interprétée, par exemple, le tréma ou l’accent circonflexe sont en général des touches mortes.

Une touche morte est une touche qui doit donc être suivie d’un espace pour obtenir l’accent seul, ou dans le cas où elle est suivie d’une voyelle y positionne un accent, par exemple :

             « ^» puis « e » donne « ê »
             « ^» puis « espace » donne « ^»

Les touches mortes sont :

• be et fr: l’accent aigu en AltGr de 1 pour les Français et en AltGr de ù pour les Belges, l’accent grave en AltGr de 7 pour les français & en AltGr de carré/cube pour les Belges, le tréma et l’accent circonflexe tous deux à côté du P

• sf et usx: les accent aigus, graves, circonflexes, les trémas et la tilde

• qc: les accent graves, circonflexes, les trémas et la cédille

3.7 « BackSpace » et « Delete »

En raison d’une erreur volontaire et historique sous Linux, pour « émuler » le fonctionnement d’un clavier de console VT, ces 2 touches sont fréquemments mélangées, au mieux fonctionnant à l’identique, au pire ne fonctionnant pas du tout.

Commençons donc par bien les définir :

• BackSpace : touche placée en haut à droite du pavé principal, au dessus d’ « Entrée », au cabochon marqué d’une flèche vers la gauche.

• Delete : touche du pavé curseur au cabochon marqué « Suppr » ou « Del », à gauche de « Fin » ; en ISO 9995-7 elle correspond à trois barres obliques fines orientées sud-ouest/nord-est.

Le pavé numérique offre une touche au marquage identique et à effet identique lorsque « Verr Num » ou « Num Lock » est désactivé.

Ces deux touches correspondent chacune à un de ces codes :

• BS : caractère ASCII 0x08, ou control-h.

• DEL : caractère ASCII 0x7F, ou control-?

• ˆ D : caractère ASCII 0x04, ou control-d.

Ceci dans le but d’effacer à gauche du curseur avec BackSpace, à droite du curseur avec Delete.

3.8 « UTC » et « GMT »

Chaque partie du monde a sa propre norme horaire, basée sur des fuseaux.

La France se trouve en zone MET, « heure moyenne européenne » soit GMT+1 ; la zone « MET DST » correspond à l’heure d’été activée soit GMT+2.

• GMT est l’heure solaire moyenne de Greenwich. L’heure est comptée à partir de midi et est donc décalée de 12 h par rapport au temps universel. GMT est basée sur la rotation de la terre, ce n’est donc pas un temps régulier. En effet, la vitesse de rotation de la Terre subit des variations faibles mais assez chaotiques, en plus elle diminue sur le long terme.

• UTC, « temps universel coordonné », est compté à partir de minuit toujours par rapport au méridien zéro. Il est basé sur des étalons atomiques, mais des secondes intercalaires sont ajoutées occasionnellement pour faire en sorte qu’il ne s’écarte jamais de plus de une seconde de l’heure solaire moyenne. Le site de l’opdaf et le lexique donnent plus de renseignements.

C’est le temps UTC, défini à Paris, qui sert de référence aux différentes heures légales.

L’acronyme « GMT » est employé 99% du temps pour désigner UTC, mais c’est une erreur ou un abus de langage.

Enfin, à titre purement indicatif, il existe l’heure astronomique, aussi comptée sur des étalons atomiques mais décalée de 4 minutes par jour de l’heure terrestre car se basant sur la position de la terre dans l’espace par rapport aux étoiles.

4 Réglage du clavier sous Linux

4.1 Introduction

Il existe deux programmes pour configurer votre clavier : un pour la console : loadkeys et un pour XFree :

xkbd.

Pour installer un clavier français sous Linux, tapez selon votre clavier une des lignes suivantes :

             loadkeys tables-clavier/fr/fr-latin9.map
             loadkeys tables-clavier/qc/qc-latin1.map
             loadkeys tables-clavier/cn/cn-latin1.map
             loadkeys tables-clavier/be/be-latin9.map
             loadkeys tables-clavier/sf/sf-latin1.map
             loadkeys tables-clavier/usx/usx-latin1.map
             loadkeys tables-clavier/usx/usx-happy-hacking-latin9.map

4.2 Attention au stty !

Avec les tables latin 9 recommandées dans ce HOWTO, pour linux-console aussi bien que pour X window,

N'UTILISEZ PLUS :
             stty erase ^H

ou :

             stty erase ^?

« stty erase » ne sert en effet qu’à établir une correspondance entre le code que renvoie une touche et la fonction erase pour effacer le caractère.

Les tables ici fournies fonctionnent correctement et ne nécessitent donc pas de stty erase qui risquerait surtout de perturber leur bon fonctionnement !

Supprimez-donc ces lignes de vos fichiers d’initialisation de l’interpréteur de commandes « shell », comme .bashrc, .bash_profile ou .tcshrc .

4.3 Faire de ces modifications les défauts au démarrage

D’habitude, loadkeys est exécuté par des scripts au démarrage ; par exemple dans

/etc/rc.d/init.d/keytable ou /etc/rc.d/rc.local, init.d/keytable ou rc.keymap.

La commande :

             find /etc/rc.d -type f | xargs grep loadkeys

vous fournira le nom exact du fichier lançant loadkeys ; il vous suffit alors de l’éditer pour que vos modifications soient désormais prise en en compte à chaque démarrage.

Les distributions RedHat et Debian constituent des exceptions : la table de clavier par défaut étant définie

dans /etc/sysconfig/keyboard pour la RedHat et /etc/kbd/config pour les Debian.

Remplacer donc dans le fichier propre à votre distribution la table de clavier en question par la bonne table comme fr-latin9.map (selon votre modèle de clavier)

Vous devrez mettre une copie de la table que vous utilisez dans le répertoire où votre distribution va chercher les tables de clavier ; en général /usr/lib/kbd/keymaps/i386/azerty/ pour une RedHat et /usr/share/kbd/keymaps/i386/azerty/ pour une Debian.

Allez donc sur télechargez l’archive, enregistrez-la dans votre répertoire /, puis détarrez-la avec la commande:

             tar -xzvf francophones-howto.tgz

Cela crée un répertoire /french : placez-vous dans ce répertoire puis tapez :

             cp tables-clavier/linux-console/fr-latin9.map /usr/lib/kbd/keytables/i386/azerty/

Pour afficher les caractères latin9, vous devrez exécuter les instructions de la section « polices de caractère ».

4.4 Polices de caractère

Si vous utilisez console-tools-1998.08.11.tar.gz, vous pourrez remplacer « setfont » par « consolechars » : ces programmes servent à charger une police sous linux console.

             setfont /usr/lib/kbd/consolefonts/xxxE-NN.psf.gz

Je vous conseille pour des raisons développées plus bas :

             setfont /usr/lib/kbd/consolefonts/lat9-16u.psf.gz

Je ne vous conseille pas les fichiers « lat1 », qui ne supportent pas l’euro ni les autres caractères français.

Vous trouverez aussi des fichiers « .uni » qui ne sont utiles que pour créer des polices ou pour ceux qui utilisent l’unicode : ils fixent des correspondances entre les « dessins » des caractères dans la police et les codes des dits caractères, un même dessin pouvant correspondre à plusieurs codes dans l’example de d’unicode.

Pour les polices toutes faites, vous pouvez forcer cette correspondace avec l’option « -u fichier.uni ».

Si vous tenez à les installer, copiez de la même manière tous les fichiers commençant par « lat9 » et se terminant par « .uni » dans le répertoire /usr/lib/kbd/consoletrans avec la commande:

         cp lat9*.uni /usr/lib/kbd/consoletrans

D’habitude, setfont est exécuté par des scripts au démarrage ; par exemple dans

/etc/rc.d/init.d/keytable ou /etc/rc.d/rc.local, init.d/keytable ou rc.keymap.

La commande :

             find /etc/rc.d -type f | xargs grep setfont

vous fournira sur le nom exact du fichier lançant setfont ; il vous suffit alors de l’éditer pour que vos modifications soient désormais prise en en compte à chaque démarrage...

Les distributions RedHat et Debian constituent des exceptions : la police par défaut étant définie dans

/etc/sysconfig/i18n pour la RedHat et /etc/kbd/config pour les Debian.

Dans /etc/sysconfig/i18n rajouter une ligne de la forme :

             SYSFONT=xxxE-NN.psf

• xxx représente le type de police ; il doit s’agir d’une lat pour les francophones ce qui signifie ISO 8859 ou latin. Sans cela il n’y a plus de caractères « étendus » comme les voyelles accentués, symboles de ponctuation comme paragraphe...

• E représente l’encodage latin, par exemple 1 pour latin1, 0 ou 9 pour latin9

• NNN représente la taille individuelle de chaque caractère ; 08 est presque illisible mais 16 est un peu gros... À régler selon les goûts de chacun.

Je vous conseille la police lat9-16u.psf ou son équivalent lat0-16.psf installée par défaut sur la plupart des distributions, très souvent compressée donc avec le suffixe « .gz » .

[ rajouter une explication sur comment installer la police ]

La section « une police, des polices » vous donnera plus de détails sur les polices disponibles.

4.5 Vieilles versions

Si lors du chargement de la table de clavier vous rencontrez un message d’erreur similaire au suivant :

             (guylhem@victis:guylhem)$ loadkeys fr-latin9.map
             Loading /usr/lib/kbd/keytables/fr-latin9.map
             unknown keysym 'dead_cedilla'
             /usr/lib/kbd/keytables/fr-latin9.map:67: parse error
             syntax error in map file
             key bindings not changed

Cela signifie que votre version de kbd dont le programme loadkeys dépend est trop vieille : il faut vous procurer une version plus récente du programme.

Il existait et existe encore des versions des tables de clavier pour ceux ne voulant ni touches mortes ni accents, mais celles-ci tombent actuellement en désuétude puisque la grande majorité des programmes prennent désormais en charge ces fameuses touches mortes et les caractères accentués.

De plus, les tables fournies avec ce HOWTO permettent de se servir des touches mortes ou de s’en passer si un programme les refuse, les deux cas ayant été prévus :

4.6 Améliorations spécifiques au clavier français latin9

Ça y est, vous pouvez taper du texte latin 9 sous Linux en mode console !

Seules 2 touches ont été modifiées :

4.6.1 a) carré/cube

Elle sert maintenant à oe/OE liés ; en AltGr on y trouve les guillemets français.

Le carré & le cube restent respectivement accessibles en AltGr (ù) et Alt Gr(*), les guillemets étant aussi directement accessibles avec AltGr (w) et AltGr (x), selon la norme ISO 9995 part 3 appliquée à la norme AZERTY française.

En résumé :

• AltGr (oe) : «

• AltGr + Shift (oe) : »

• AltGr (w) : «

• AltGr (x) : »

• AltGr (m) : ^{1}AltGr() : ^{2}

• • AltGr (*) : ^{3}

4.6.2 b) dollar / livre / symbole monétaire international

Étant donné que le symbole monétaire international n’est plus disponible dans la norme d’encodage ISO 8859-15, il a été remplacé par la division centésimale de l’euro : le cent, disponible donc en AltGr ($).

Dans les précédentes versions, le dollar & la livre, des monnaies étrangères, avaient été déplacés pour laisser la place à l’euro et au cent, notre monnaie.

De telles modifications étaient permises par les recommandations officielles de l’EURO WORKSHOP mais allaient à l’encontre de la norme AZERTY : si la position AltGr (e) est déjà occupée sur un clavier, la position de l’euro est laissée au libre choix des programmeurs.

AltGr (e) sert à faire « ê » depuis 1992 sous Linux, mais devant les protestations légitimes d’utilisateurs disposant d’un clavier où l’euro est sérigraphié en AltGr (e), j’ai du déplacer le ê en AltGr + Shift ($).

Désolé d’avoir rompu la « tradition » linuxienne pour conserver la compatibilité à la norme AZERTY & aux recommandations officielles de l’EURO WORKSHOP !

En résumé :

• AltGr (e) : euro

• AltGr ($) : cent

• AltGr + Shift ($) : ê

4.7 Pour les autres claviers latin9

L’euro & les cents ont été rajoutés respectivement en AltGr (e) & en AltGr (c).

La touche AltGr a donc été rajoutée ; pour utiliser ces fonctions avec toute table de clavier, il suffit de charger other-latin9.map après votre table nationale.

La plupart des améliorations du clavier français ont été transposées aux claviers nationaux par des auteurs externes.

Toutefois, je ne possède pas chaque modèle de clavier et ne peut expliquer en détail toutes ces modifications ; des sections spécifiques seront donc rajoutées par la suite par d’autres auteurs.

4.8 Dans tous les cas

« Home », « End », « Delete » et « BackSpace » ont été corrigées & les touches « Windows » ont été correctement définies, pour passer d’une console virtuelle à l’autre.

Des « Composes », séquences à préfixer par la touche compose ( « ImprÉcran » ou « Print Screen » par défaut) ont été rajoutées, mais cela reste transparent pour l’utilisateur.

Par exemple:

• COMPOSE ˆ suivi d’une des lettres (s,S,z,Z) sert à obtenir les lettres finlandaises rajoutées

• COMPOSE " suivi d’une des lettres (y,Y) sert à obtenir les y trémas franco-néerlandais rajoutés

• COMPOSE - suivi d’une des lettres (e,c,l,y) sert à obtenir l’euro, le cent, la livre, le yen

5 XFree

5.1 Introduction

Il y a quelques années, « xmodmap » servait à changer les tables de clavier sous XFree, un fichier de configuration d’ordinaire nommé /usr/X11/lib/X11/xinit/.Xmodmap étant pris en charge grâce à votre

.xinitrc ou /etc/X11/xinit/xinitrc

Pour convertir une table console correcte, on utilisait « mk_modmap » livré avec l’archive kbd et généralement installé en /usr/lib/kbd/keytables

Les utilisateurs désirant personnaliser leur table xmodmap employaient le programme « xkeycaps ».

Puis XFree 2.1 et les version ultérieures ont reconnu la disposition des touches du clavier gérée par « loadkeys », rendant théoriquement xmodmap inutile.

Mais la gestion de la touche « COMPOSE » assurée par XFree 3.1 laissait un peu à désirer, la table héritée de « loadkeys » ne servant guère.

Il fallait donc continuer à employer xmodmap, l’utilitaire logiciel standard permettant d’obliger le serveur X à associer les événements souris/clavier à des caractères.

Sous XFree version 3.2 et postérieures, « xkb » rendit xmodmap définitivement obsolète.

Mais ne voilà-t-il pas les rumeurs qui voulaient que les prochaines versions de XFree ne supporte plus les touches mortes se sont confirmées !!!

Dans la distribution X11 du X Consortium, donc XFree86, qui en est directement issu, il n’existe plus de mécanisme général de gestion des touches mortes, ou des solutions approximatives obligeant à supprimer aussi xkb ou modifier des bibliothèques de programmes !

5.2 Mal programmer

À chaque programme de bien gérer les touches mortes au lieu de faire confiance à X pour cette tâche.

En réalité, il n’est pas compliqué de gérer des touches mortes, il suffit d’utiliser la bonne fonction, XmbLookupString() dans les programmes Motif, au lieu de XLookupString().

5.3 Le clavier en pratique

Quelle histoire compliquée !

De ce fait, elles ne fonctionnent que pour les clients X « internationalisés », c’est-à-dire qui gèrent eux-mêmes les problèmes liés aux méthodes d’entrée de données des différentes langues nationales.

Ceci est très gênant lorsqu’on veut pouvoir saisir du texte comportant des lettres accentuées, alors que le client utilisé n’est pas internationalisé !

5.3.1 a) Solution utilisant xmodmap

Taper :

             cp fr-latin9.xmod /usr/X11R6/lib/X11/xinit/Xmodmap
             cp fr-latin9.xmod ~/.Xmodmap

5.3.2 b) Solution utilisant xkb (recommandée)

Taper :

             cp fr-latin9 /usr/X11R6/lib/X11/xkb/symbols

Puis éditer votre XF86Config pour y rajouter dans la section « Keyboard » les lignes xkb idoines :

5. XFree 15

Section "Keyboard"
Protocol        "Standard"
AutoRepeat      500 30
LeftAlt         Meta
RightAlt        ModeShift               # Important pour Alt-gr, mais dans les
                                        # versions récentes de XFree, AltGr et
                                        # RightAlt sont synonymes.
ScrollLock      Compose                 # Pour faire des caractères spéciaux.
                                        # Utiliser sinon une des 3 touches des
                                        # nouveaux claviers 105 touches...
RightCtl        Control                 # Garder la touche normale
XkbKeycodes     "xfree86"
XkbRules        "xfree86"
XkbTypes        "default"
XkbCompat       "default"
XkbSymbols      "fr-latin9(pc105)"
XkbGeometry     "pc(pc105)"
XkbModel        "pc105"
EndSection

Pour cette partie Xkb, certains préfèrent :

        XkbKeymap       "xfree86(fr-latin9)"
        XkbKeycodes     "xfree86"
        XkbSymbols      "en_US(pc101)+fr-latin9"
        XkbGeometry     "pc(pc101)"

Bien sur, remplacer « fr » par « cn », « be », « ch » ou « usx » selon votre clavier...

5.3.3 c) Solution du compose

Une autre méthode pour obtenir des caractères 8 bits :

Dans /usr/X11R6/lib/X11/locale/iso8859-1/Compose se trouve une table de « correspondance » entre

deux caractères et un résultat ; les deux caractères sont «mélangés» lors de l’appui sur la touche Compose : par exemple;

        COMPOSE suivi de « e » puis « ^»

a toutes les chances de vous donner ê, y compris dans l’ordre opposé (« ˆ » puis « e »)

Mais pour utiliser la touche Compose, vous devez l’affecter à une touche !

Le paramétrage préconisé, réglé dans XF86Config, la fait correspondre à la touche « Arrêt Défil » inutile sous X, par la commande :

        ScrollLock       Compose

dans la section Keyboard.

Attention, sous Linux en mode console, cette touche est utile (pour bloquer temporairement la console virtuelle) et c’est « Impr Écran » ou « Print Screen » qui, ne servant à rien, est affectée à « Compose ».

5.3.4 d) Solution modifiant la libX11

Thomas Quinot <Thomas.Quinot(à)cuivre.fdn.fr> vous propose donc sa libX11 modifiée, qui gère les touches mortes de manière transparente pour tous les clients.

Elle permet également de traiter les séquences composées inconnues comme des paires de caractères, par exemple :

             ~ + / = ~/

Pour l’utiliser :

• Récupérez libX11-XF3.3.1.tar.gz ;

• Extrayez le fichier libX11.so.6.1 ;

   • Placez-le dans /usr/X11R6/lib/ ;

• Exécutez ldconfig ;

• Désactivez l’extension XKB en utilisant l’option XkbDisable dans la section Keyboard de votre

     XF86Config.

5.3.5 e) Est-ce nécessaire ?

Personnellement, je vous recommande de ne pas toucher à la libX11, d’oublier xmodmap et de l’alternative xkb + fichiers latin9 en attendant un autre changement de la politique du X Consortium envers les touches mortes (ou en rajoutant les options d’internationalisation au code source de vos programmes.)

Actuellement, si vous n’avez pas de répertoire /usr/X11R6/lib/X11/xkb/symbols/ cela signifie que vous n’utilisez pas xkb : procurez-vous donc une version plus récente de X window !

Sans xkb, XFree se rabattra par défaut sur votre configuration de clavier pour Linux avec loadkeys.

Toutefois, la translation n’est pas parfaite et je vous recommanderais plutôt d’éviter cette option, aussi bien que l’ancien gestionnaire de clavier Xmodmap.

Il se peut aussi que sans aucune commande pour xkb, XFree vous considère comme utilisateur d’un clavier 7 bits !

Il convient donc d’utiliser une table adaptée avec xkb.

5.4 « latin9 » ou « latin1 » ?

Je vous conseille de choisir les tables latin9 que je maintiens à jour, plus récentes que les versions latin1, permettant d’utiliser de multiples améliorations, détaillées dans la section clavier sous linux-console, pour disposer du plus de confort possible et plus adaptées car maintenu par des francophones.

Les nombreuses améliorations dont elles bénéficient permettent de pallier au déficiences de nombreux programmes.

Par exemple, certains programmes en Motif comme Netscape (tm) ne savent pas encore gérer les touches mortes ... donc impossible de taper par exemple des ê ou des î sur les claviers des Belges et Français, puisque la touche morte « accent circonflexe » est le seul moyen d’obtenir ces caractères !

« fr-latin9 » répond à ce problème en proposant une solution de remplacement : AltGr (voyelle) permet d’obtenir la voyelle avec un accent grave, AltGr+Shift (voyelle) permet d’obtenir la voyelle avec un tréma !

5.5 Table de correspondances

• AltGr (voyelle) : voyelle accent grave

• AltGr + Shift (voyelle) : voyelle tréma

• AltGr (touche au dessous de la voyelle) : voyelle majuscule accent grave

• AltGr + Shift (touche au dessous de la voyelle) : voyelle majuscule tréma

• AltGr + Shift (minuscule accentuée) : majuscule accentuée

Par exemple :

• AltGr (a) : â

• AltGr (q) : Â

• AltGr + Shift (ù) : Ù

L’astuce marche aussi pour le c cédille :

• AltGr + Shift (ç) : Ç

Donc même dans les pires conditions, si aucune touche morte ne fonctionne, on peut quand même accéder à toutes les voyelles accentuées, majuscules et minuscules !

Vous y trouverez en plus les guillemets français (« »), les symboles employés en physique (ß, å, delta, phi ...), des signes de monnaies (yen, cent) ou de copyright (tm, \begin{matrix}c \\ ◯ \end{matrix}) ainsi que des lettres d’autres langues (Ø, Æ ...).

Tous ces signes s’obtiennent grâce à AltGr (lettre), par exemple AltGr (b) donne ß, AltGr (r) donne tm, AltGr (y) donne yen...

Pour vous rapeller simplement de tout celà, tapez par exemple :

             more /usr/lib/kbd/keytables/i386/azerty/fr-latin9.map

Pour ce qui est du choix entre latin1 et latin9... à vous de voir !

Un conseil : essayez l’un puis l’autre si vous avez le temps.

5.6 Les polices ISO 8859-15 latin 9 sous X

Il est bien d’avoir une table de clavier compatible latin 9, mais sans police adaptée jamais vous ne verrez les caractères rajoutés dans cette norme. Il faut donc utiliser l’utilitaire de conversion « bdftopcf » qui en quelque sorte permet de compiler les polices de caractères fournies. Placez-vous dans le répertoire de l’archive que vous avez récupéré puis sous root, taper par exemple pour Xlat9-10x20.bdf ou un autre bdf :

             bdftopcf Xlat9-10x20.bdf > Xlat9-10x20-lat9.pcf
             gzip Xlat9-10x20-lat9.pcf
             mv Xlat9-10x20-lat9.pcf.gz /usr/X11R6/lib/X11/fonts/misc
             mkfontdir /usr/X11R6/lib/X11/fonts/misc

Celà crée un fichier « Xlat9-10x20-lat9.pcf » qu’il faut compresser avec gzip, on obtient alors le fichier « Xlat9-10x20-lat9.pcf.gz » qui doit être mis dans le répertoire adéquat, pour lequel l’index des polices de caractères sera mis à jour. Alors, ajoutez la table de composition latin9 aux compositions par défaut de X, spécifiques à l’iso 8859-1 :

             cat XCompose-lat9 >> /usr/X11R6/lib/X11/locale/iso8859-1/Compose

Nous faisons un cat vers l’ISO 8859-1, car X ne reconnaît pas l’ISO 8859-15 latin9. De là, redémarrer X ou taper sous son compte d’utilisateur normal :

             xset +fp /usr/X11R6/lib/X11/fonts/misc

Si vous utilisez xmodmap, lancez :

             xmodmap ~/.Xmodmap

Pour choisir les polices latin9, lancer xfontsel et chercher les encodages iso8859-15. Ou plus simplement, taper :

             grep Xlat9-10x20.pcf /usr/X11R6/lib/X11/fonts/misc/*

Puis utiliser le second paramètre comme nom de police, par exemple avec rxvt, xiterm, aterm ou wterm:

             aterm -fn -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso8859-15

Cela lance un terminal X utilisant une des polices latin9.

6 Réglage du clavier pour les applications en mode texte

6.1 Tout d’abord

Le huitième bit doit survivre à l’entrée du noyau, assurez-vous-en donc avec :

             stty cs8 -istrip -parenb

Ensuite, il convient de s’assurer que l’application est apte à supporter les caractères 8 bits : par exemple, ispell n’est pas compilé pour des caractères 8 bits par défaut : il faut le recompiler sans l’option :

             -NO8BIT

6.2 Une police, des polices...

Avant d’aborder cette section, je vous conseille de lire l’introduction sur les polices pour appréhender un peu mieux le vocabulaire de base et les différentes normes de polices.

6.2.1 a) Historique des polices

De l’ASCII à l’Unicode, en passant par l’ISO 8859, le latin et le cp, on peut résumer l’histoire des polices en grandes étapes :

Au début était l’ASCII, qui codait ses caractères sur 7 bits.

Prévu pour des états-uniens, il était impossible d’incorporer des caractères accentués à la norme déjà présente de 127 caractères.

Ainsi vint le 8 bits qui étendit le nombre de caractères à 255 et les normes ISO 8859, latin et cp, pour les plus connues, qui vinrent pallier à cette déficience du fait des 128 positions supplémentaires disponibles en encodant les caractères sur 8 bits.

Mais plusieurs de ces normes étaient nécessaire du fait de l’impossibilité de faire tenir les caractères de toutes les langues du monde sur 8 bits.

La norme ISO 8859-1 latin 1, la plus utilisée, se destine par exemple au langues d’Europe de l’ouest, du nord, d’Amérique, la norme ISO 8859-2 latin 2 est prévue pour l’Europe de l’est...

L’Unicode est l’un de ces standard, destiné à terme à remplacer les différentes évolutions de l’ASCII ; comme le passage du 7 bits au 8 bits il correspond à une extension de la place disponible, tout en reprenant l’ancienne partie comme ASCII et ISO 8859-1 latin 1 pour rester compatible avec la majorité du parc installé.

L’Unicode offre l’avantage de proposer les caractères nécessaires à toutes les langues du monde, mais reste encore peu utilisé ou implémenté.

En effet, il est impossible de l’utiliser en pratique sous linux-console, la mémoire exigüe de la carte vidéo ne permettant pas de stocker tous les caractères de l’Unicode, et sous X la gestion actuelle des polices rendrait son utilisation trop inconfortable.

Attendons un peu que les polices « True Type » se répandent sous X, grâce à des outils comme freetype, xfstt (...) et le très attendu XFree 4 qui devrait les supporter en natif.

Actuellement, la nouvelle norme européenne ISO 8859-15 latin 9 est censée permettre la transition vers l’Unicode en apportant à l’ancien ISO 8859-1 latin 1 les caractères qu’il manquait actuellement.

Toutefois elle est partiellement incompatible avec l’Unicode puisque l’ISO 8859-1 latin 1 avait été choisi comme base pour l’Unicode, mais que cette police veut compléter les failles de l’ISO 8859-1 latin 1 en y rajoutant des caractères déjà présents dans l’Unicode...

Quelle complexité pour de simple lettres !

6.2.2 b) ISO 8859-15 latin 9

De nous jours, il vaut mieux installer par défaut la nouvelle norme ISO 8859-15 latin 9, destinée à remplacer l’ensemble des polices européennes par une seule.

Son but est voisin de l’Unicode, mais elle a l’avantage d’être plus légère que celui-ci et d’être applicable tout de suite.

Elle apporte notamment des caractères qui manquaient beaucoup pour les Français et les Finlandais :

• « e dans l’o » en majuscule et minuscule pour les Français, par exemple pour les mots oeuf, coeur, boeuf, oeil ...

• « s chapeau inversé » en majuscule et minuscule pour les Finlandais

• « z chapeau inversé » en majuscule et minuscule pour les Finlandais

• « l’EURO » pour tous les pays européens

Cette nouvelle norme, ISO 8859-15 latin 9 aussi connue sous le nom générique latin0, reste cependant encore très peu répandue par rapport à la norme actuelle ISO 8859-1 latin 1.

6.2.3 c) Utiliser les polices ISO 8859-15 latin 9

Vous n’avez besoin que d’une seule police !

Or il en existe plusieurs types répondant différemment à la même norme iso-8859-15 latin9 « latin0 » sous linux :

• par tradition l’opposition latN/latNu selon l’inclusion ou non d’une table de correspondance Unicode.

• en réalité les différences vont bien plus loin, de l’ordre dans lequel sont les caractères de la police, ce qui joue sur l’aspect des applications semi graphique, les correspondances avec des caractères latin1 ±latin9 ± Unicodecequiaunrledanslacompatibilitcroiseouexclusive, parexemplepurementUnicode...

J’ai donc complété par 2 types de ma création pour répondre au mieux aux différents besoins.

           | Encodage dans | Inclusion d'une | Compatibilité | Compatibilité
           |  l'ordre iso  |  table Unicode  |   exclusive   |    croisée
     --------------------------------------------------------------------------
     lat9  |     oui       |      non        |     non       |   lat1 + lat9
     --------------------------------------------------------------------------
     lat9u |     non       |      oui        |     non       |   lat1 + lat9

     --------------------------------------------------------------------------
     lat9v |     oui       |      oui        |   Unicode     |       non
     --------------------------------------------------------------------------
     lat9w |     oui       |      oui        |     non       |lat1+lat9+Unicode
     --------------------------------------------------------------------------

Voici plus d’explications :

• les lat9 tout court ne contiennent pas de table de correspondance Unicode, ce qui fait que tous les symboles monétaires internationaux apparaîtront comme des euro, ce qui peut poser des problèmes pour les fichiers issus d’un ordinateur sous windows ; le cp1252 ou le latin1 sont « incompatibles » avec le latin9, mais ce dernier a l’avantage de fonctionner tout de suite sous linux. Dans les versions récentes du noyau, selon le site de Yann Dirson, il semble donc que toutes les polices devraient contenir une table de correspondance Unicode...

• des lat9u encodées dans un ordre non standard, mais identique à celui des polices latXu de kbd, par rapport aux polices précédentes, en amenant les mêmes problèmes avec le cp1252 et le latin1 mais en incluant une table de correspondance Unicode, ce qui permet d’avoir de jolis caractères semi graphiques sous Yast, mc, ou d’autres programmes basés sur ncurses ou dialog.

• des lat9v encodées dans l’ordre officiel iso comme les lat9 mais avec une table Unicode complète : là aucun symbole monétaire international ne sera remplacé par l’euro ! Ces polices sont utiles pour éviter les problèmes d’export, grâce à l’Unicode *pur*, avec une table de clavier Unicode adaptée : tous les caractères latin9 sont remplacés par des caractères Unicodes et affichés ainsi, ce qui a le mérite d’être compatible avec le latin9, l’Unicode, d’être élégant techniquement mais inutilisable « normalement » sous linux-console. Presque aucun système n’est entièrement prêt pour l’Unicode !

Donc n’utilisez les polices lat9, lat9u ou lat9v que si vous savez ce que vous faites, je vous recommande pour ma part le meilleur compromis : les polices lat9w qui permettent de passer au latin9 immédiatement, en posant quelques problèmes pour les caractères latin1 qui seront remplacés par leurs équivalents latin9, mais sans rendre l’Unicode obligatoire comme les lat9U, sans emmêler les caractères graphiques comme les lat9, et en permettant aussi d’afficher les caractères spécifiques au latin9 en Unicode *pur*, à l’exception des caractères spécifiques au latin1 donc...

Je vous rassure, vous n’êtes pas obligés de comprendre tout ce qui suit pour « passer à l’euro », si effectivement vous ne savez toujours pas de quelle police vous avez besoin, un conseil : utiliser les lat9w.

Pour utiliser la police lat9-16.psf ou un autre lat9 .psf, vous devez pallier l’absence d’une table Unicode en en chargeant une.

                     loadunimap fonts/linux-console/lat9.uni
                     setfont fonts/linux-console/lat9-16.psf

Pour utiliser la police lat9w-16.psf ou une autre lat9u, lat9v ou lat9w :

                     setfont /fonts/linux-console/lat9w-16.psf