LDP/LDP/howto/linuxdoc/Francophones-HOWTO.sgml

3240 lines
106 KiB
Plaintext
Raw Normal View History

<!doctype linuxdoc system>
<article>
<title>Le Francophones-HOWTO : Linux &amp; la langue fran&ccedil;aise
2000-10-05 13:59:58 +00:00
<author>&Eacute;crit par Guylhem Aznar, &lt;<tt/guylhem(&agrave;)metalab.unc.edu/&gt;
2001-12-03 14:28:20 +00:00
<date>v3.2.2 ; D<>cembre 2001
<abstract>
Copyright &copy; 1997, 1998, 1999, Guylhem Aznar ; librement
distribuable selon les termes du GNU Free Documentation License,
<url url="http://www.fsf.org/licenses/fdl.html">.
Toutes les marques cit<69>es appartiennent <20> leurs propri<72>taires
respectifs.
</abstract>
<toc>
<sect>Pr<50>sentation<p>
<sect1>Introduction<p>
Ce document a <20>t<EFBFBD> r<>dig<69> pour aider <20> configurer un ordinateur dot<6F> du
syst<EFBFBD>me d'exploitation Linux pour des utilisateurs francophones.
Il y est expliqu<71> par exemple comment configurer p<>riph<70>riques et
applications afin de prendre en compte les particularit<69>s et les
sp<EFBFBD>cificit<EFBFBD>s de notre langue...
Toutefois, ce document ne traite pas de l'installation du syst<73>me
d'exploitation Linux ; il est implicitement suppos<6F> que vous ayez
correctement install<6C> une distribution de Linux, RedHat, Debian ou
Suse, cette liste n'<27>tant pas exhaustive, et que vous vous
appr<EFBFBD>tiez maintenant <20> mieux la configurer ; veuillez donc vous
r<EFBFBD>f<EFBFBD>rer <20> d'autres HOWTOs pour l'installation.
Les adresses <20>lectroniques ont <20>t<EFBFBD> volontairement supprim<69>es ou
modifi<EFBFBD>es en rempla<6C>ant les <20> a enroul<75>s <20> par des <20> (<28>) <20> afin d'<27>viter
les publipostages tr<74>s g<>nants.
Si quelque terme employ<6F> vous semble un peu obscur, je vous invite <20>
vous reporter au lexique (<28> Vocabulaire : un petit lexique <20>),
expliquant certains mots tels 8 bits, AZERTY ou QWERTY, qui sont
employ<EFBFBD>s tout au long de ce document.
<sect1>Fichiers utilis<69>s dans ce HOWTO<p>
Tous les fichiers cit<69>s dans ce HOWTO, sont disponibles sous licence GPL
sur <htmlurl name="ma page" url="http://metalab.unc.edu/guylhem/">
Je vous recommande de t<>l<EFBFBD>charger tous ces fichiers pour les utiliser
selon les exemples propos<6F>s.
<sect1>Les Fran<61>ais ne sont pas les seuls francophones !<p>
<sect2>a) Diff<66>rentes versions<p>
Pour chaque manipulation d<>pendant du pays concern<72>, un certain nombre
de versions peuvent <20>tre propos<6F>es :
<itemize>
<item>une canadienne normalis<69>e (cn)
<item>une belge wallonne (be)
<item>une fran<61>aise (fr)
<item>une qu<71>b<EFBFBD>coise (qc)
<item>une suisse romande (sf)
<item>une <20>tats-unienne internationale (usx)
</itemize>
<sect2>b) Les <20>tats-uniens : raccourcis claviers<p>
La version <20>tats-unienne internationale permet <20> tous
les francophones utilisant un clavier <20> 7 bits <20> aussi nomm<6D>
<EFBFBD> QWERTY <20> de b<>n<EFBFBD>ficier de l'<27>tendue des caract<63>res 8 bits.
Est disponible aussi une version pour ceux qui utilisent un
clavier <20> Happy Hacking <20>.
<sect2>c) Le Luxembourg : comme la France<p>
Le Grand Duch<63> du Luxembourg utilisant les conventions fran<61>aises,
j'invite les lecteurs luxembourgeois <20> se reporter aux exemples
fran<EFBFBD>ais.
<sect2>d) Le Canada : 3 claviers<p>
Il est classique de parler des claviers <20> canadien international <20>,
surtout destin<69>s aux anglophones (qui leur pr<70>f<EFBFBD>rent toutefois les claviers
QWERTY standard) et les claviers <20> canadien fran<61>ais <20>, aux lettres
accentu<EFBFBD>es.
Mais, de nouveaux claviers dits <20> canadiens normalis<69>s <20> ont fait leur
apparition r<>cemment pour fusionner les mod<6F>les <20> canadien international
<EFBFBD>, non concern<72> par le cadre du Francophones HOWTO, et <20> canadien fran<61>ais <20>.
Ces nouveaux claviers r<>pondent aux normes CAN/CSA Z243.200-92 et ISO
9995-7 ; ils sont pr<70>vus pour <20>tre utilis<69>s dans n'importe quelle
langue, en rempla<6C>ant par exemple les intitul<75>s des touches par des
pictogrammes : <20> Del <20>, en anglais, qui se traduisait par <20> Suppr <20> en
fran<EFBFBD>ais devient ainsi trois barres obliques fines orient<6E>es
sud-ouest/nord-est.
Plus d'explications sont disponibles sur le <htmlurl
name="site de l'Office de la Langue Fran<61>aise" url="
http://www.olf.gouv.qc.ca/technologies/technopages/claviernorm.html">.
Toutefois je n'ai pas pu r<>ussir <20> me procurer un tel clavier ; mes
fichiers de configuration sont donc uniquement bas<61>s sur les
(<htmlurl name="illustrations"
url="http://www.olf.gouv.qc.ca/images/clavier.gif">) et les normes
th<EFBFBD>oriques, et non les normes pratiques.
Par exemple, si j'ai compris que la touche <20> Control <20> de droite est
utilis<EFBFBD>e comme une <20> AltGr <20> mais sert <20> obtenir encore d'autres
caract<EFBFBD>res, je n'ai aucune id<69>e du comportement de ces touches lorsque
seule l'autre a une s<>rigraphie pr<70>vue...
Si on peut m'envoyer un tel clavier, et surtout son pilote, je promets
de mettre les fichiers de configuration <20> jour :-)
<sect1>Attention<p>
<sect2>a) ROOT<p>
Certaines manipulations recommand<6E>es par ce document ne peuvent
<EFBFBD>tre effectu<74>es que sous le compte privil<69>gi<67> <20> root <20> ; la plus grande
prudence est alors de rigueur car toute action inad<61>quate peut mettre en
p<EFBFBD>ril le contenu des disques.
Sauvegarder les fichiers existants, par exemple en les copiant sous le
m<EFBFBD>me nom suivi du pr<70>fixe .old, avant de les modifier ou remplacer.
<sect2>b) CHERCHER<p>
Le paquetage GNU nomm<6D> <sq>find</sq> offre un programme appel<65>
<tt/locate/, gr<67>ce auquel l'utilisateur peut retrouver le nom complet,
chemin de r<>pertoires, d'un fichier dont il ne conna<6E>t que le nom.
Certaines distributions Linux fournissent cela en /usr/bin/locate.
En tant que root, lancer <tt>updatedb</tt> invoque un
<tt>find&nbsp;/</tt> sur les disques mont<6E>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<69> dans les distributions
modernes.)
<tt/locate/ permet ensuite de localiser l'un d'eux :
<tscreen><verb>
(guylhem@victis:guylhem)$ locate noms_des_fichiers_<73>_retrouver
</verb></tscreen>
<sect>Les probl<62>mes<p>
<sect1>Pr<50>sentation<p>
Le probl<62>me de tout utilisateur francophone apr<70>s l'installation de
Linux est de lui faire comprendre qu'il utilise des normes diff<66>rentes
des standards par d<>faut <20>tats-uniens..
Cela a des cons<6E>quences sur :
<itemize>
<item> la police de caract<63>res donc les caract<63>res sp<73>ciaux que l'on utilise,
accentu<EFBFBD>s comme &Eacute; &Egrave; &Agrave; &Ccedil; ou bien ligatur<75>s
comme &AElig; , voire <20> e dans l'o <20> qui vient d'appara<72>tre sous Linux gr<67>ce <20>
la norme ISO-8859-15 aussi nomm<6D>e latin-9
<item> la correspondance entre la s<>rigraphie des cabochons ou <20> touches <20> du clavier sur lesquelles vous appuyez, et les codes que Linux renvoie, celui-ci
supposant un clavier QWERTY <20>tats-unien par d<>faut
<item> le format de page pris en charge par les programmes que vous utilisez
pour imprimer, diff<66>rent entre les &Eacute;tats-Unis; (14<31>8,5 pouces
pour du papier dit l<>gal) et l'Europe (29,7<>21 cm pour des feuilles a4)
<item> le format des dates et de l'heure, la position des jours et des
mois <20>tant variable selon les r<>gions de la francophonie
<item> le format de la monnaie, aussi variable selon les francophones
<item> la langue utilis<69>e pour les messages d'erreur
</itemize>
<sect1>Solutions<p>
Tout est pr<70>configur<75> pour un <20>tats-unien : bien que ceux-ci ne
repr<EFBFBD>sentent pas la majorit<69> de la population mondiale, ils ont <20>t<EFBFBD>
pr<EFBFBD>curseurs en informatique.
Il faut donc se faire reconna<6E>tre comme une <20> exception <20> par les
diff<EFBFBD>rents programmes, par des options ou des variables <20> 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<73>me tr<74>s ouvert
<EFBFBD> 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<74>s
correct.
<sect1>Aider<p>
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'<27>me d'un traducteur, n'h<>sitez pas <20> contacter l'<27>quipe de
traduction des HOWTOs ; pour cela, adressez-vous <20> &Eacute;ric Dumas
&lt;dumas(<28>)freenix.fr&gt; ou &lt;dumas(<28>)linux.eu.org&gt;.
<sect>Le vocabulaire : petit lexique<p>
Tout d'abord, un mot sur le vocabulaire employ<6F> :
<sect1>8 bits<p>
Des caract<63>res sont dits <20> 8 bits <20> s'ils correspondent <20> des accents ou
<EFBFBD> des signes sp<73>ciaux comme <20> <20> <20>, non inclus dans le standard
<tt/ASCII/ <20> 7 bits <20>.
Ce standard, sans accents ni caract<63>res sp<73>ciaux, correspond aux 128
(2^7) premiers caract<63>res des 256 (2^8), de 0 <20> 255.
Pour des raisons historiques (place disponible, inutilit<69> pour les <20>tats
uniens) seuls les 128 (2^7) premiers caract<63>res ont <20>t<EFBFBD> normalis<69>s par
l'ASCII : par exemple le A qui est le 65e caract<63>re de la table ASCII
s'<27>crit 0100 0001 en notation binaire.
Pour les caract<63>res situ<74>s hors de la norme ASCII, diff<66>rentes <20> normes
<EFBFBD> ou <20> standards <20> incompatibles, comme l'Unicode, l'iso-8859, le latin,
le cp (...) fixent ces correspondances.
Par exemple, dans le standard ASCII <20>tendu par l'iso-8859-1, le 224<32>me
caract<EFBFBD>re <20>quivalent not<6F> <20> eb <20> en hexad<61>cimal correspond <20> <20> <20> <20>.
<sect1>La police de caract<63>res<p>
Une police de caract<63>res est une correspondance entre des codes
informatiques et des caract<63>res (alphanum<75>riques...) affichables par
l'ordinateur.
La police de caract<63>res est l'ensemble des repr<70>sentations graphiques des
caract<EFBFBD>res d'un standard.
<sect1>Les polices de caract<63>res<p>
Il existe plusieurs polices de caract<63>res 8 bits pouvant r<>pondre au
besoins des francophones.
Je vous recommande de lire <20> ce sujet l'excellent site de Roman Czyborra
qui a fait une th<74>se sur ce sujet et qui vous donnera une
<htmlurl name="explication fort d<>taill<6C>e"
url="http://czyborra.com/charsets/iso8859.html">
Pour r<>sumer, il est n<>cessaire de choisir une police de caract<63>res pour
que tous les caract<63>res fran<61>ais soient disponibles.
Voici la liste des polices dites <20> ISO 8859 <20>, mais attention, il existe
leurs <20>quivalents en <20> code page <20> pour windows (comme cp1252).
<itemize>
<item> ISO 8859-1 : latin 1 : langues d'Europe de l'ouest, Afrikaans,
Swahili.
Le Swahili, n'utilise aucun caract<63>re accentu<74> (comme l'Anglais, le
Malais et l'Indon<6F>sien), donc n'importe quel version fait l'affaire.
Pour l'Afrikaans, je ne sais plus exactement quel <20>tait le choix initial
(c'est-<2D>-dire o<> avait <20>t<EFBFBD> rang<6E> 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.
<item> ISO 8859-2 : latin 2 : langues d'Europe centrale et orientale.
Dans les faits : Polonais, Tch<63>que, Slovaque, Slov<6F>ne, Croate, Hongrois,
Roumain, probablement aussi le Sorbe ou Sorabe (Wende en allemand).
Officiellement, je crois que l'Albanais s'<27>crit aussi en Latin-2, mais
comme dans les faits c'est identique au Latin 1...
Il y a un probl<62>me pour le Roumain, car le Latin 2 contient formellement
les caract<63>res avec une c<>dille, quand en roumain on utilise une virgule
souscrite.
<item> ISO 8859-3 : latin 3 : Esp<73>ranto et Maltais.
Initialement, c'<27>tait pr<70>vu pour les langues d'Europe du Sud, y compris
le Turc, les langues d'Espagne (donc Catalan, Basque), le Fran<61>ais.
Mais dans la pratique, c'est limit<69> <20> ces deux langues.
<item> ISO 8859-4 : latin 4 : langues baltes (incomplet).
Pas utilis<69> dans la pratique, remplac<61> par Latin 7 (iso-8859-13), ou
plut<EFBFBD>t en pratique la codepage 1257 Windows.
Pour l'Este ou Estonien, on peut aussi utiliser Latin 9.
<item> ISO 8859-9 : latin 5 (comme latin 1, moins l'Islandais, plus le
Turc).
Usage : le Turc et peut-<2D>tre l'Az<41>ri, mais il manque le schwa, un <20> e <20>
renvers<EFBFBD>.
Codage officiel aux Pays-Bas du fait des Turcs qui y habitent.
<item> ISO 8859-10 : latin 6 : langues nordiques, sauf le Lapon Skolt.
Pas utilis<69> dans la pratique : ne servirait que pour les langues sames
(ou lapones), mais il manque des caract<63>res, et le public concern<72> est
de toute mani<6E>re assez limit<69>.
<item> ISO 8859-11 : Thai.
Pas encore officiellement adopt<70>.
<item> ISO 8859-12 : Indien (n'existe pas encore).
Pr<EFBFBD>vu pour le devanagari, pour <20>crire l'Hindi, la langue principale de
l'Inde, et aussi un grand nombre d'autres langues indiennes, dont le
Sanskrit.
<item> 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 <20> l'Este ou Estonien.
<item> ISO 8859-14 : latin 8 : langues celtes.
Pour le Breton, le Ga<47>lique et les dialectes parl<72>es au Pays de Galles
et en Irlande.
<item> ISO 8859-15 : latin 9 : comme latin 1, en y comblant quelques
manques.
Pour le Fran<61>ais, le Finnois (en concurrence avec Latin 1) et l'Este ou
Estonien (en concurrence avec Latin 7).
</itemize>
De cette longue liste, il convient de ne retenir que :
<itemize>
<item>ISO 8859-1 latin 1 : police ouest-europ<6F>enne utilis<69>e par la
majorit<EFBFBD> des syst<73>mes UNIX, elle permet de disposer de tous les
caract<EFBFBD>res Fran<61>ais sauf les <20> o e li<6C>s <20>, l'euro et l'y tr<74>ma majuscule
<item>cp850 : <20>quivalent sous DOS de cette police, mais incompatible :
il faut utiliser un outil de traduction de fichiers tel GNU recode.
<item>ISO 8859-15 latin 9 : police de l'union europ<6F>enne, il s'agit
d'une version r<>vis<69>e de l'ISO 8859-1 latin 1 pour inclure tous les
caract<EFBFBD>res des pays europ<6F>ens ; ainsi on y retrouve les caract<63>res
Fran<EFBFBD>ais manquant, l'euro, et des caract<63>res finlandais manquants.
<item>latin 0 : l'ISO 8859-15 latin 9 est souvent incorrectement
abr<EFBFBD>g<EFBFBD>e en latin0, qui correspondait au nom du projet, de par
son ambition <20> remplacer le latin 1 un jour. Je vous renvoie au
<htmlurl name="site de l'ISO"
url="http://www.iso.ch/catf/d29505.html"> et <20> la
<htmlurl name="documentation compl<70>te de ce standard"
url="http://www.indigo.ie/egt/standards/iso8859/8859-15-fr.pdf">
<item>cp1252 : <20>quivalent sous Windows de cette police, aussi
incompatible, qui apporte les m<>mes caract<63>res manquants, du fait d'une
r<EFBFBD>vision r<>cente de cette norme.
<item>ISO 8859-9 latin 5 : police officielle en Turquie et en Hollande,
o<EFBFBD> les caract<63>res Islandais peu utilis<69>s ont <20>t<EFBFBD> remplac<61>s par les
caract<EFBFBD>res turcs.
<item>cp1254 : <20>quivalent sous Windows de cette police, aussi
incompatible, qui apporte les caract<63>res manquant au Fran<61>ais
pr<EFBFBD>c<EFBFBD>demment cit<69>s et remplace les caract<63>res Islandais peu utilis<69>s par
les caract<63>res turcs.
</itemize>
Les choix de polices de caract<63>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 :
<itemize>
<item>Il supporte l'int<6E>gralit<69> des caract<63>res utilis<69>s en Fran<61>ais de
mani<EFBFBD>re standard sur les UNIX, pour les <20>changes de fichiers entre
Solaris et Linux par exemple
<item>Il s'agit de la police 8 bits choisie par l'union europ<6F>enne si
l'Unicode, <20>volution du 8 bits, n'est pas disponible
<item>Il permet d'<27>crire des textes avec l'int<6E>gralit<69> des
caract<EFBFBD>res utilis<69>s dans l'union
<item>Il est en train de devenir le nouveau standard dans la
messagerie <20>lectronique au sens large, supplantant progressivement l'ISO
8859-1 latin 1
</itemize>
Le Francophones HOWTO utilise donc le latin 9 dans tous les exemples, car il y
a de grandes chances que votre syst<73>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<EFBFBD>cidez d'en choisir une autre, je vous recommande d'<27>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 <20> remplacer les <20> latin9 <20> par des <20> latin1 <20>
<sect1>Table de clavier<p>
Une table de clavier est un fichier permettant de faire correspondre
l'empreinte physique des cabochons, <20> touches <20> du clavier, au r<>sultat
obtenu sur l'<27>cran de l'ordinateur.
Pour linux, ces fichiers sont dans /usr/lib/kbd/keytables/ ou
/usr/share/kbd/keytables/
Par exemple, les claviers fran<61>ais AZERTY ont une table de clavier
diff<EFBFBD>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<63>res sur le clavier, et non son
<EFBFBD>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.
<sect1><3E> Home <20>, <20> End <20>, <20> Page_Up <20> et <20> Page_Down <20><p>
Les touches <20> Home <20>, <20> End <20>, <20> Page_Up <20> et <20> Page_Down <20> 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 <20> ces touches sont respectivement 102 et 107 pour <20>
Home <20> et <20> End <20> en mode terminal.
Dans les pictogrammes des claviers ISO 9995-7, ces touches sont
repr<EFBFBD>sent<EFBFBD>s par des fl<66>ches aux traits appuy<75>s.
Lorsqu'on presse une touche, le clavier <20>met un code, qui est
intercept<EFBFBD> par la table de clavier.
La table de clavier, si elle reconnait le code, renvoie la chaine
associ<EFBFBD>e <20> la touche, en l'occurence<63> "\e[4~ <20> pour <20> End <20>.
Lorsque bash ou un autre programme re<72>oit cette chaine, il ne la connait
pas !
Donc il faut lui dire, dans le .inputrc que "\e[4~" signifie "aller <20> 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:
<tscreen><verb>
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
</verb></tscreen>
Les premi<6D>res lignes permettent d'afficher les caract<63>res 8 bits, et de
remplacer le <20> bip <20> en cas d'erreur par un <20>clair blanc <20> l'<27>cran.
<sect1>Touches mortes<p>
Les touches mortes sont des touches qui ne produisent pas de caract<63>res
en elles-m<>mes, mais qui modifient la fa<66>on dont la frappe suivante va
<EFBFBD>tre interpr<70>t<EFBFBD>e, par exemple, le tr<74>ma ou l'accent circonflexe sont en
g<EFBFBD>n<EFBFBD>ral des touches mortes.
Une touche morte est une touche qui doit donc <20>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 :
<tscreen><verb>
<09> ^ <20> puis <20> e <20> donne <20> <20> <20>
<09> ^ <20> puis <20> espace <20> donne <20> ^ <20>
</verb></tscreen>
Les touches mortes sont :
<itemize>
<item> be et fr: l'accent aigu en AltGr de 1 pour les Fran<61>ais et en
AltGr de <20> pour les Belges, l'accent grave en AltGr de 7 pour les
fran<EFBFBD>ais &amp en AltGr de carr<72>/cube pour les Belges, le tr<74>ma et
l'accent circonflexe tous deux <20> c<>t<EFBFBD> du P
<item> sf et usx: les accent aigus, graves, circonflexes, les
tr<EFBFBD>mas et la tilde
<item> qc: les accent graves, circonflexes, les tr<74>mas et la c<>dille
</itemize>
<sect1><3E> BackSpace <20> et <20> Delete <20><p>
En raison d'une erreur volontaire et historique sous Linux, pour
<EFBFBD> <20>muler <20> le fonctionnement d'un clavier de console VT, ces 2 touches
sont fr<66>quemments m<>lang<6E>es, au mieux fonctionnant <20> l'identique, au
pire ne fonctionnant pas du tout.
Commen<EFBFBD>ons donc par bien les d<>finir :
<itemize>
<item>BackSpace : touche plac<61>e en haut <20> droite du pav<61> principal, au
dessus d' <20> Entr<74>e <20>, au cabochon marqu<71> d'une fl<66>che vers la gauche.
<item>Delete : touche du pav<61> curseur au cabochon marqu<71> <20> Suppr <20> ou
<EFBFBD> Del <20>, <20> gauche de <20> Fin <20> ; en ISO 9995-7 elle correspond <20> trois
barres obliques fines orient<6E>es sud-ouest/nord-est.
</itemize>
Le pav<61> num<75>rique offre une touche au marquage identique et <20> effet
identique lorsque <20> Verr Num <20> ou <20> Num Lock <20> est d<>sactiv<69>.
Ces deux touches correspondent chacune <20> un de ces codes :
<itemize>
<item>BS : caract<63>re ASCII 0x08, ou control-h.
<item>DEL : caract<63>re ASCII 0x7F, ou control-?
<item>^D : caract<63>re ASCII 0x04, ou control-d.
</itemize>
Ceci dans le but d'effacer <20> gauche du curseur avec BackSpace, <20> droite du
curseur avec Delete.
<sect1><3E> UTC <20> et <20> GMT <20><p>
Chaque partie du monde a sa propre norme horaire, bas<61>e sur des
fuseaux.
La France se trouve en zone MET, <20> heure moyenne europ<6F>enne <20> soit GMT+1 ;
la zone <20> MET DST <20> correspond <20> l'heure d'<27>t<EFBFBD> activ<69>e soit GMT+2.
<itemize>
<item>GMT est l'heure solaire moyenne de Greenwich. L'heure est compt<70>e <20>
partir de midi et est donc d<>cal<61>e de 12 h par rapport au temps
universel. GMT est bas<61>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.
<item>UTC, <20> temps universel coordonn<6E> <20>, est compt<70> <20> partir de
minuit toujours par rapport au m<>ridien z<>ro. Il est
bas<EFBFBD> sur des <20>talons atomiques, mais des secondes intercalaires
sont ajout<75>es occasionnellement pour faire en sorte qu'il ne
s'<27>carte jamais de plus de une seconde de l'heure solaire moyenne.
<htmlurl name="Le site de l'opdaf" url="http://opdaf1.obspm.fr/"> et
<htmlurl name="le lexique"
url="http://opdaf1.obspm.fr/www/lexique.html"> donnent plus de
renseignements. </itemize>
C'est le temps UTC, d<>fini <20> Paris, qui sert de r<>f<EFBFBD>rence aux
diff<EFBFBD>rentes heures l<>gales.
L'acronyme <20> GMT <20> est employ<6F> 99% du temps pour
d<EFBFBD>signer UTC, mais c'est une erreur ou un abus de langage.
Enfin, <20> titre purement indicatif, il existe l'heure astronomique, aussi
compt<EFBFBD>e sur des <20>talons atomiques mais d<>cal<61>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 <20>toiles.
<sect>R<>glage du clavier sous Linux<p>
<sect1>Introduction<p>
Il existe deux programmes pour configurer votre clavier : un pour la console :
<tt/loadkeys/ et un pour XFree : <tt/xkbd/.
Pour installer un clavier fran<61>ais sous Linux, tapez selon votre clavier
une des lignes suivantes :
<tscreen><verb>
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
</verb></tscreen>
<sect1>Attention au stty !<p>
Avec les tables latin 9 recommand<6E>es dans ce HOWTO, pour linux-console
aussi bien que pour X window, <tt/N'UTILISEZ PLUS/ :
<tscreen><verb>
stty erase ^H
</verb></tscreen>
ou :
<tscreen><verb>
stty erase ^?
</verb></tscreen>
<EFBFBD> stty erase <20> ne sert en effet qu'<27> <20>tablir une correspondance
entre le code que renvoie une touche et la fonction <tt/erase/ pour
effacer le caract<63>re.
Les tables ici fournies fonctionnent correctement et ne n<>cessitent donc
pas de <tt/stty erase/ qui risquerait surtout de perturber leur bon
fonctionnement !
Supprimez-donc ces lignes de vos fichiers d'initialisation de l'interpr<70>teur de
commandes <20> shell <20>, comme .bashrc, .bash_profile ou .tcshrc .
<sect1>Faire de ces modifications les d<>fauts au d<>marrage<p>
D'habitude, loadkeys est ex<65>cut<75> par des scripts au
d<EFBFBD>marrage ; par exemple dans <tt>/etc/rc.d/init.d/keytable</tt> ou
<tt>/etc/rc.d/rc.local</tt>, <tt>init.d/keytable</tt> ou <tt>rc.keymap</tt>.
La commande :
<tscreen><verb>
find /etc/rc.d -type f | xargs grep loadkeys
</verb></tscreen>
vous fournira le nom exact du fichier lan<61>ant loadkeys ; il vous
suffit alors de l'<27>diter pour que vos modifications soient
d<EFBFBD>sormais prise en en compte <20> chaque d<>marrage.
Les distributions RedHat et Debian constituent des exceptions : la table
de clavier par d<>faut <20>tant d<>finie dans
<tt>/etc/sysconfig/keyboard</tt> pour la RedHat et
<tt>/etc/kbd/config</tt> pour les Debian.
Remplacer donc dans le fichier propre <20> votre distribution la table de
clavier en question par la bonne table comme fr-latin9.map (selon votre
mod<EFBFBD>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<EFBFBD>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 <htmlurl name="l'archive"
url="http://metalab.unc.edu/guylhem/francophones-howto.tgz">,
enregistrez-la dans votre r<>pertoire ~/, puis d<>tarrez-la avec la
commande:
<tscreen><verb>
tar -xzvf francophones-howto.tgz
</verb></tscreen>
Cela cr<63>e un r<>pertoire ~/french : placez-vous dans ce r<>pertoire
puis tapez :
<tscreen><verb>
cp tables-clavier/linux-console/fr-latin9.map /usr/lib/kbd/keytables/i386/azerty/
</verb></tscreen>
Pour afficher les caract<63>res latin9, vous devrez ex<65>cuter les
instructions de la section <20> polices de caract<63>re <20>.
<sect1>Polices de caract<63>re<p>
Si vous utilisez console-tools-1998.08.11.tar.gz, vous pourrez remplacer
<EFBFBD> setfont <20> par <20> consolechars <20> : ces programmes servent <20> charger une
police sous linux console.
<tscreen><verb>
setfont /usr/lib/kbd/consolefonts/xxxE-NN.psf.gz
</verb></tscreen>
Je vous conseille pour des raisons d<>velopp<70>es plus bas :
<tscreen><verb>
setfont /usr/lib/kbd/consolefonts/lat9-16u.psf.gz
</verb></tscreen>
Je ne vous conseille pas les fichiers <20> lat1 <20>, qui ne supportent pas
l'euro ni les autres caract<63>res fran<61>ais.
Vous trouverez aussi des fichiers <20> .uni <20> qui ne sont utiles que pour
cr<EFBFBD>er des polices ou pour ceux qui utilisent l'unicode : ils fixent des
correspondances entre les <20> dessins <20> des caract<63>res dans la police et
les codes des dits caract<63>res, un m<>me dessin pouvant correspondre <20>
plusieurs codes dans l'example de d'unicode.
Pour les polices toutes faites, vous pouvez forcer cette correspondace
avec l'option <20> -u fichier.uni <20>.
Si vous tenez <20> les installer, copiez de la m<>me mani<6E>re tous les
fichiers commen<65>ant par <20> lat9 <20> et se terminant par <20> .uni <20> dans le
r<EFBFBD>pertoire /usr/lib/kbd/consoletrans avec la commande:
<tscreen><verb>
cp lat9*.uni /usr/lib/kbd/consoletrans
</verb></tscreen>
D'habitude, setfont est ex<65>cut<75> par des scripts au d<>marrage ; par
exemple dans <tt>/etc/rc.d/init.d/keytable</tt> ou
<tt>/etc/rc.d/rc.local</tt>, <tt>init.d/keytable</tt> ou
<tt>rc.keymap</tt>.
La commande :
<tscreen><verb>
find /etc/rc.d -type f | xargs grep setfont
</verb></tscreen>
vous fournira sur le nom exact du fichier lan<61>ant setfont ; il vous
suffit alors de l'<27>diter pour que vos modifications soient
d<EFBFBD>sormais prise en en compte <20> chaque d<>marrage...
Les distributions RedHat et Debian constituent des exceptions : la
police par d<>faut <20>tant d<>finie dans <tt>/etc/sysconfig/i18n</tt>
pour la RedHat et <tt>/etc/kbd/config</tt> pour les Debian.
Dans <tt>/etc/sysconfig/i18n</tt> rajouter une ligne de la forme :
<tscreen><verb>
SYSFONT=xxxE-NN.psf
</verb></tscreen>
<itemize>
<item> xxx repr<70>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<63>res <20> <20>tendus <20> comme les voyelles
accentu<EFBFBD>s, symboles de ponctuation comme paragraphe...
<item> E repr<70>sente l'encodage latin, par exemple 1 pour latin1, 0 ou 9
pour latin9
<item> NNN repr<70>sente la taille individuelle de chaque caract<63>re ; 08
est presque illisible mais 16 est un peu gros... &Agrave; r<>gler selon
les go&ucirc;ts de chacun.
</itemize>
Je vous conseille la police lat9-16u.psf ou son <20>quivalent lat0-16.psf
install<EFBFBD>e par d<>faut sur la plupart des distributions, tr<74>s souvent
compress<EFBFBD>e donc avec le suffixe <20> .gz <20> .
[ rajouter une explication sur comment installer la police ]
La section <20> une police, des polices <20> vous donnera plus de d<>tails sur
les polices disponibles.
<sect1>Vieilles versions<p>
Si lors du chargement de la table de clavier vous rencontrez un message
d'erreur similaire au suivant :
<tscreen><verb>
(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
</verb></tscreen>
Cela signifie que votre version de kbd dont le programme loadkeys
d<EFBFBD>pend est trop vieille : il faut vous procurer une version plus
r<EFBFBD>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<EFBFBD>su<EFBFBD>tude puisque la grande majorit<69> des programmes prennent d<>sormais
en charge ces fameuses touches mortes et les caract<63>res accentu<74>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 <20>t<EFBFBD> pr<70>vus :
<sect1>Am<41>liorations sp<73>cifiques au clavier fran<61>ais latin9<p>
<EFBFBD>a y est, vous pouvez taper du texte latin 9 sous Linux en mode console !
Seules 2 touches ont <20>t<EFBFBD> modifi<66>es :
<sect2>a) carr<72>/cube<p>
Elle sert maintenant <20> oe/OE li<6C>s ; en AltGr on y trouve les guillemets
fran<EFBFBD>ais.
Le carr<72> & le cube restent respectivement accessibles en AltGr (<28>) et Alt
Gr(*), les guillemets <20>tant aussi directement accessibles avec AltGr (w)
et AltGr (x), selon la norme ISO 9995 part 3 appliqu<71>e <20> la norme AZERTY
fran<EFBFBD>aise.
En r<>sum<75> :
<itemize>
<item> AltGr (oe) : <20>
<item> AltGr + Shift (oe) : <20>
<item> AltGr (w) : <20>
<item> AltGr (x) : <20>
<item> AltGr (m) : <20>
<item> AltGr (<28>) : <20>
<item> AltGr (*) : <20>
</itemize>
<sect2>b) dollar / livre / symbole mon<6F>taire international<p>
<EFBFBD>tant donn<6E> que le symbole mon<6F>taire international n'est plus disponible
dans la norme d'encodage ISO 8859-15, il a <20>t<EFBFBD> remplac<61> par la division
cent<EFBFBD>simale de l'euro : le cent, disponible donc en AltGr ($).
Dans les pr<70>c<EFBFBD>dentes versions, le dollar & la livre, des monnaies
<EFBFBD>trang<EFBFBD>res, avaient <20>t<EFBFBD> d<>plac<61>s pour laisser la place <20> l'euro et au
cent, notre monnaie.
De telles modifications <20>taient permises par les recommandations
officielles de l'EURO WORKSHOP mais allaient <20> l'encontre de la norme
AZERTY : si la position AltGr (e) est d<>j<EFBFBD> occup<75>e sur un clavier, la
position de l'euro est laiss<73>e au libre choix des programmeurs.
AltGr (e) sert <20> faire <20> <20> <20> depuis 1992 sous Linux, mais devant les
protestations l<>gitimes d'utilisateurs disposant d'un clavier o<> l'euro
est s<>rigraphi<68> en AltGr (e), j'ai du d<>placer le <20> en AltGr + Shift
($).
D<EFBFBD>sol<EFBFBD> d'avoir rompu la <20> tradition <20> linuxienne pour conserver la
compatibilit<EFBFBD> <20> la norme AZERTY & aux recommandations officielles de
l'EURO WORKSHOP !
En r<>sum<75> :
<itemize>
<item> AltGr (e) : euro
<item> AltGr ($) : cent
<item> AltGr + Shift ($) : <20>
</itemize>
<sect1>Pour les autres claviers latin9<p>
L'euro & les cents ont <20>t<EFBFBD> rajout<75>s respectivement en AltGr (e) & en
AltGr (c).
La touche AltGr a donc <20>t<EFBFBD> rajout<75>e ; pour utiliser ces
fonctions avec toute table de clavier, il suffit de charger
other-latin9.map apr<70>s votre table nationale.
La plupart des am<61>liorations du clavier fran<61>ais ont <20>t<EFBFBD> transpos<6F>es aux
claviers nationaux par des auteurs externes.
Toutefois, je ne poss<73>de pas chaque mod<6F>le de clavier et ne peut
expliquer en d<>tail toutes ces modifications ; des sections sp<73>cifiques
seront donc rajout<75>es par la suite par d'autres auteurs.
<sect1>Dans tous les cas<p>
<EFBFBD> Home <20>, <20> End <20>, <20> Delete <20> et <20> BackSpace <20> ont <20>t<EFBFBD> corrig<69>es & les
touches <20> Windows <20> ont <20>t<EFBFBD> correctement d<>finies, pour passer d'une
console virtuelle <20> l'autre.
Des <20> Composes <20>, s<>quences <20> pr<70>fixer par la touche compose ( <20>
Impr<EFBFBD>cran <20> ou <20> Print Screen <20> par d<>faut) ont <20>t<EFBFBD> rajout<75>es, mais cela
reste transparent pour l'utilisateur.
Par exemple:
<itemize>
<item> COMPOSE ^ suivi d'une des lettres (s,S,z,Z) sert <20> obtenir les lettres finlandaises rajout<75>es
<item> COMPOSE " suivi d'une des lettres (y,Y) sert <20> obtenir les y tr<74>mas franco-n<>erlandais rajout<75>s
<item> COMPOSE - suivi d'une des lettres (e,c,l,y) sert <20> obtenir l'euro, le cent, la livre, le yen
</itemize>
<sect>XFree<p>
<sect1>Introduction<p>
Il y a quelques ann<6E>es, <20> xmodmap <20> servait <20> changer les tables de
clavier sous XFree, un fichier de configuration d'ordinaire nomm<6D>
/usr/X11/lib/X11/xinit/.Xmodmap <20>tant pris en charge gr<67>ce <20> votre
<tt/.xinitrc/ ou <tt>/etc/X11/xinit/xinitrc</tt>
Pour convertir une table console correcte, on utilisait <20> mk_modmap <20> livr<76> avec
l'archive kbd et g<>n<EFBFBD>ralement install<6C> en /usr/lib/kbd/keytables
Les utilisateurs d<>sirant personnaliser leur table xmodmap employaient le
programme <20> xkeycaps <20>.
Puis XFree 2.1 et les version ult<6C>rieures ont reconnu la disposition des
touches du clavier g<>r<EFBFBD>e par <20> loadkeys <20>, rendant th<74>oriquement
xmodmap inutile.
Mais la gestion de la touche <20> COMPOSE <20> assur<75>e par XFree 3.1 laissait
un peu <20> d<>sirer, la table h<>rit<69>e de <20> loadkeys <20> ne servant gu<67>re.
Il fallait donc continuer <20> employer xmodmap, l'utilitaire logiciel standard
permettant d'obliger le serveur X <20> associer les <20>v<EFBFBD>nements souris/clavier <20>
des caract<63>res.
Sous XFree version 3.2 et post<73>rieures, <20> xkb <20> rendit xmodmap d<>finitivement
obsol<EFBFBD>te.
Mais ne voil<69>-t-il pas les rumeurs qui voulaient que les prochaines versions
de XFree ne supporte plus les touches mortes se sont confirm<72>es !!!
Dans la distribution X11 du X Consortium, donc XFree86, qui en est
directement issu, il n'existe plus de m<>canisme g<>n<EFBFBD>ral de gestion des
touches mortes, ou des solutions approximatives obligeant <20> supprimer
aussi xkb ou modifier des biblioth<74>ques de programmes !
<sect1>Mal programmer<p>
<EFBFBD> chaque programme de bien g<>rer les touches mortes au lieu de faire
confiance <20> X pour cette t<>che.
En r<>alit<69>, il n'est pas compliqu<71> de g<>rer des touches mortes, il suffit
d'utiliser la bonne fonction, XmbLookupString() dans les programmes
Motif, au lieu de XLookupString().
<sect1>Le clavier en pratique<p>
Quelle histoire compliqu<71>e !
De ce fait, elles ne fonctionnent que pour les clients X
<EFBFBD> internationalis<69>s <20>, c'est-<2D>-dire qui g<>rent eux-m<>mes les probl<62>mes
li<EFBFBD>s aux m<>thodes d'entr<74>e de donn<6E>es des diff<66>rentes langues
nationales.
Ceci est tr<74>s g<>nant lorsqu'on veut pouvoir saisir du texte
comportant des lettres accentu<74>es, alors que le client utilis<69>
n'est pas internationalis<69> !
<sect2>a) Solution utilisant xmodmap<p>
Taper :
<tscreen><verb>
cp fr-latin9.xmod /usr/X11R6/lib/X11/xinit/Xmodmap
cp fr-latin9.xmod ~/.Xmodmap
</verb></tscreen>
<sect2>b) Solution utilisant xkb (recommand<6E>e)<p>
Taper :
<tscreen><verb>
cp fr-latin9 /usr/X11R6/lib/X11/xkb/symbols
</verb></tscreen>
Puis <20>diter votre <tt/XF86Config/ pour y rajouter dans la section <20> Keyboard
<EFBFBD> les lignes xkb idoines :
<tscreen><verb>
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<63>res sp<73>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
</verb></tscreen>
Pour cette partie Xkb, certains pr<70>f<EFBFBD>rent :
<tscreen><verb>
XkbKeymap "xfree86(fr-latin9)"
XkbKeycodes "xfree86"
XkbSymbols "en_US(pc101)+fr-latin9"
XkbGeometry "pc(pc101)"
</verb></tscreen>
Bien sur, remplacer <20> fr <20> par <20> cn <20>, <20> be <20>, <20> ch <20> ou <20> usx <20> selon
votre clavier...
<sect2>c) Solution du compose<p>
Une autre m<>thode pour obtenir des caract<63>res 8 bits :
Dans <tt>/usr/X11R6/lib/X11/locale/iso8859-1/Compose</tt> se trouve une
table de <20> correspondance <20> entre deux caract<63>res et un r<>sultat ; les
deux caract<63>res sont <20>m<EFBFBD>lang<6E>s<EFBFBD> lors de l'appui sur la touche Compose :
par exemple;
<tscreen><verb>
COMPOSE suivi de <20> e <20> puis <20> ^ <20>
</verb></tscreen>
a toutes les chances de vous donner <20>, y compris dans l'ordre oppos<6F> (<28>
^ <20> puis <20> e <20>)
Mais pour utiliser la touche Compose, vous devez l'affecter <20> une touche !
Le param<61>trage pr<70>conis<69>, r<>gl<67> dans XF86Config, la fait correspondre <20>
la touche <20> Arr<72>t D<>fil <20> inutile sous X, par la commande :
<tscreen><verb>
ScrollLock Compose
</verb></tscreen>
dans la section Keyboard.
Attention, sous Linux en mode console, cette touche est utile (pour
bloquer temporairement la console virtuelle) et c'est <20> Impr <20>cran <20> ou
<EFBFBD> Print Screen <20> qui, ne servant <20> rien, est affect<63>e <20> <20> Compose <20>.
<sect2>d) Solution modifiant la libX11<p>
Thomas Quinot &lt;Thomas.Quinot(<28>)cuivre.fdn.fr&gt; vous propose donc sa
<tt>libX11</tt> modifi<66>e, qui g<>re les touches mortes de
mani<EFBFBD>re transparente pour tous les clients.
Elle permet <20>galement de traiter les s<>quences compos<6F>es
inconnues comme des paires de caract<63>res, par exemple :
<tscreen><verb>
~ + / = ~/
</verb></tscreen>
Pour l'utiliser :
<itemize>
<item>R<>cup<75>rez libX11-XF3.3.1.tar.gz ;
<item>Extrayez le fichier <tt>libX11.so.6.1</tt> ;
<item>Placez-le dans <tt>/usr/X11R6/lib/</tt> ;
<item>Ex<45>cutez <tt>ldconfig</tt> ;
<item>D<>sactivez l'extension XKB en utilisant l'option
<tt>XkbDisable</tt> dans la section <tt>Keyboard</tt> de votre
<tt>XF86Config</tt>.
</itemize>
<sect2>e) Est-ce n<>cessaire ?<p>
Personnellement, je vous recommande de ne pas toucher <20> 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
<tt>/usr/X11R6/lib/X11/xkb/symbols/</tt> 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<EFBFBD>t d'<27>viter cette option, aussi bien que l'ancien gestionnaire de
clavier <tt/Xmodmap/.
Il se peut aussi que sans aucune commande pour xkb, XFree vous consid<69>re
comme utilisateur d'un clavier 7 bits !
Il convient donc d'utiliser une table adapt<70>e avec xkb.
<sect1><3E> latin9 <20> ou <20> latin1 <20> ?<p>
Je vous conseille de choisir les tables <tt/latin9/ que je maintiens <20>
jour, plus r<>centes que les versions <tt/latin1/, permettant d'utiliser
de multiples am<61>liorations, d<>taill<6C>es dans la section clavier sous
linux-console, pour disposer du plus de confort possible
et plus adapt<70>es car maintenu par des francophones.
Les nombreuses am<61>liorations dont elles b<>n<EFBFBD>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 <20> ou des <20> sur les claviers des Belges et Fran<61>ais, puisque
la touche morte <20> accent circonflexe <20> est le seul moyen d'obtenir ces
caract<EFBFBD>res !
<EFBFBD> fr-latin9 <20> r<>pond <20> ce probl<62>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<EFBFBD>ma !
<sect1>Table de correspondances<p>
<itemize>
<item> AltGr (voyelle) : voyelle accent grave
<item> AltGr + Shift (voyelle) : voyelle tr<74>ma
<item> AltGr (touche au dessous de la voyelle) : voyelle majuscule accent grave
<item> AltGr + Shift (touche au dessous de la voyelle) : voyelle majuscule
tr<EFBFBD>ma
<item> AltGr + Shift (minuscule accentu<74>e) : majuscule accentu<74>e
</itemize>
Par exemple :
<itemize>
<item> AltGr (a) : <20>
<item> AltGr (q) : <20>
<item> AltGr + Shift (<28>) : <20>
</itemize>
L'astuce marche aussi pour le c c<>dille :
<itemize>
<item> AltGr + Shift (<28>) : <20>
</itemize>
Donc m<>me dans les pires conditions, si aucune touche morte ne
fonctionne, on peut quand m<>me acc<63>der <20> toutes les
voyelles accentu<74>es, majuscules et minuscules !
Vous y trouverez en plus les guillemets fran<61>ais (<28> <20>), les symboles
employ<EFBFBD>s en physique (&szlig;, &aring;, delta, phi ...), des signes
de monnaies (yen, cent) ou de copyright (<tt/tm/, &copy;) ainsi que des
lettres d'autres langues (&Oslash;, &AElig; ...).
Tous ces signes s'obtiennent gr<67>ce <20> AltGr (lettre), par exemple
AltGr (b) donne &szlig;, AltGr (r) donne <tt/tm/, AltGr (y) donne yen...
Pour vous rapeller simplement de tout cel<65>, tapez par exemple :
<tscreen><verb>
more /usr/lib/kbd/keytables/i386/azerty/fr-latin9.map
</verb></tscreen>
Pour ce qui est du choix entre latin1 et latin9... <20> vous de voir !
Un conseil : essayez l'un puis l'autre si vous avez le temps.
<sect1>Les polices ISO 8859-15 latin 9 sous X<p>
Il est bien d'avoir une table de clavier compatible latin 9, mais sans
police adapt<70>e jamais vous ne verrez les caract<63>res rajout<75>s dans cette
norme.
Il faut donc utiliser l'utilitaire de conversion <20> bdftopcf <20> qui en
quelque sorte permet de compiler les polices de caract<63>res fournies.
Placez-vous dans le r<>pertoire de l'archive que vous avez r<>cup<75>r<EFBFBD> puis
sous root, taper par exemple pour Xlat9-10x20.bdf ou un autre bdf :
<tscreen><verb>
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
</verb></tscreen>
Cel<EFBFBD> cr<63>e un fichier <20> Xlat9-10x20-lat9.pcf <20> qu'il faut compresser avec
gzip, on obtient alors le fichier <20> Xlat9-10x20-lat9.pcf.gz <20> qui doit
<EFBFBD>tre mis dans le r<>pertoire ad<61>quat, pour lequel l'index des polices de
caract<EFBFBD>res sera mis <20> jour.
Alors, ajoutez la table de composition latin9 aux compositions par
d<EFBFBD>faut de X, sp<73>cifiques <20> l'iso 8859-1 :
<tscreen><verb>
cat XCompose-lat9 >> /usr/X11R6/lib/X11/locale/iso8859-1/Compose
</verb></tscreen>
Nous faisons un cat vers l'ISO 8859-1, car X ne reconna<6E>t pas l'ISO
8859-15 latin9.
De l<>, red<65>marrer X ou taper sous son compte d'utilisateur normal :
<tscreen><verb>
xset +fp /usr/X11R6/lib/X11/fonts/misc
</verb></tscreen>
Si vous utilisez xmodmap, lancez :
<tscreen><verb>
xmodmap ~/.Xmodmap
</verb></tscreen>
Pour choisir les polices latin9, lancer xfontsel et chercher les
encodages iso8859-15.
Ou plus simplement, taper :
<tscreen><verb>
grep Xlat9-10x20.pcf /usr/X11R6/lib/X11/fonts/misc/*
</verb></tscreen>
Puis utiliser le second param<61>tre comme nom de police, par exemple avec
rxvt, xiterm, aterm ou wterm:
<tscreen><verb>
aterm -fn -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso8859-15
</verb></tscreen>
Cela lance un terminal X utilisant une des polices latin9.
<sect>R<>glage du clavier pour les applications en mode texte<p>
<sect1>Tout d'abord<p>
Le huiti<74>me bit doit survivre <20> l'entr<74>e du noyau,
assurez-vous-en donc avec :
<tscreen><verb>
stty cs8 -istrip -parenb
</verb></tscreen>
Ensuite, il convient de s'assurer que l'application est apte <20> supporter
les caract<63>res 8 bits : par exemple, ispell n'est pas compil<69>
pour des caract<63>res 8 bits par d<>faut : il faut le recompiler
sans l'option :
<tscreen><verb>
-NO8BIT
</verb></tscreen>
<sect1>Une police, des polices...<p>
Avant d'aborder cette section, je vous conseille de lire l'introduction
sur les polices pour appr<70>hender un peu mieux le vocabulaire de base et
les diff<66>rentes normes de polices.
<sect2>a) Historique des polices<p>
De l'ASCII <20> l'Unicode, en passant par l'ISO 8859, le latin et le cp, on
peut r<>sumer l'histoire des polices en grandes <20>tapes :
Au d<>but <20>tait l'ASCII, qui codait ses caract<63>res sur 7 bits.
Pr<EFBFBD>vu pour des <20>tats-uniens, il <20>tait impossible d'incorporer des
caract<EFBFBD>res accentu<74>s <20> la norme d<>j<EFBFBD> pr<70>sente de 127 caract<63>res.
Ainsi vint le 8 bits qui <20>tendit le nombre de caract<63>res <20> 255 et les
normes ISO 8859, latin et cp, pour les plus connues, qui vinrent pallier
<EFBFBD> cette d<>ficience du fait des 128 positions suppl<70>mentaires disponibles
en encodant les caract<63>res sur 8 bits.
Mais plusieurs de ces normes <20>taient n<>cessaire du fait de
l'impossibilit<69> de faire tenir les caract<63>res de toutes les langues du
monde sur 8 bits.
La norme ISO 8859-1 latin 1, la plus utilis<69>e, se destine par exemple au
langues d'Europe de l'ouest, du nord, d'Am<41>rique, la norme ISO 8859-2
latin 2 est pr<70>vue pour l'Europe de l'est...
L'Unicode est l'un de ces standard, destin<69> <20> terme <20> remplacer les
diff<EFBFBD>rentes <20>volutions de l'ASCII ; comme le passage du 7 bits au 8 bits
il correspond <20> 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<69> du parc install<6C>.
L'Unicode offre l'avantage de proposer les caract<63>res n<>cessaires <20>
toutes les langues du monde, mais reste encore peu utilis<69> ou
impl<EFBFBD>ment<EFBFBD>.
En effet, il est impossible de l'utiliser en pratique sous
linux-console, la m<>moire exig<69>e de la carte vid<69>o ne permettant pas de
stocker tous les caract<63>res de l'Unicode, et sous X la gestion actuelle
des polices rendrait son utilisation trop inconfortable.
Attendons un peu que les polices <20> True Type <20> se r<>pandent sous X, gr<67>ce
<EFBFBD> des outils comme freetype, xfstt (...) et le tr<74>s attendu XFree 4 qui
devrait les supporter en natif.
Actuellement, la nouvelle norme europ<6F>enne ISO 8859-15 latin 9 est
cens<EFBFBD>e permettre la transition vers l'Unicode en apportant <20> l'ancien
ISO 8859-1 latin 1 les caract<63>res qu'il manquait actuellement.
Toutefois elle est partiellement incompatible avec l'Unicode puisque
l'ISO 8859-1 latin 1 avait <20>t<EFBFBD> choisi comme base pour l'Unicode, mais
que cette police veut compl<70>ter les failles de l'ISO 8859-1 latin 1 en y
rajoutant des caract<63>res d<>j<EFBFBD> pr<70>sents dans l'Unicode...
Quelle complexit<69> pour de simple lettres !
<sect2>b) ISO 8859-15 latin 9<p>
De nous jours, il vaut mieux installer par d<>faut la nouvelle norme ISO
8859-15 latin 9, destin<69>e <20> remplacer l'ensemble des polices europ<6F>ennes
par une seule.
Son but est voisin de l'Unicode, mais elle a l'avantage d'<27>tre plus l<>g<EFBFBD>re que
celui-ci et d'<27>tre applicable tout de suite.
Elle apporte notamment des caract<63>res qui manquaient beaucoup pour les
Fran<EFBFBD>ais et les Finlandais :
<itemize>
<item> <20> e dans l'o <20> en majuscule et minuscule pour les Fran<61>ais, par
exemple pour les mots oeuf, coeur, boeuf, oeil ...
<item> <20> s chapeau invers<72> <20> en majuscule et minuscule pour les Finlandais
<item> <20> z chapeau invers<72> <20> en majuscule et minuscule pour les Finlandais
<item> <20> l'EURO <20> pour tous les pays europ<6F>ens
</itemize>
Cette nouvelle norme, ISO 8859-15 latin 9 aussi connue sous le nom g<>n<EFBFBD>rique
latin0, reste cependant encore tr<74>s peu r<>pandue par rapport <20> la norme
actuelle ISO 8859-1 latin 1.
<sect2>c) Utiliser les polices ISO 8859-15 latin 9<p>
Vous n'avez besoin que d'une seule police !
Or il en existe plusieurs types r<>pondant diff<66>remment <20> la m<>me norme
iso-8859-15 latin9 <20> latin0 <20> sous linux :
<itemize>
<item> par tradition l'opposition latN/latNu selon l'inclusion ou non d'une
table de correspondance Unicode.
<item> en r<>alit<69> les diff<66>rences vont bien plus loin, de l'ordre dans
lequel sont les caract<63>res de la police, ce qui joue sur l'aspect des
applications semi graphique, les correspondances avec des caract<63>res
latin1 <20> latin9 <20> Unicode ce qui a un r<>le dans la compatibilit<69> crois<69>e
ou exclusive, par exemple purement Unicode...
</itemize>
J'ai donc compl<70>t<EFBFBD> par 2 types de ma cr<63>ation pour r<>pondre au mieux aux
diff<EFBFBD>rents besoins.
<tscreen><verb>
| Encodage dans | Inclusion d'une | Compatibilit<69> | Compatibilit<69>
| l'ordre iso | table Unicode | exclusive | crois<69>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
--------------------------------------------------------------------------
</verb></tscreen>
Voici plus d'explications :
<itemize>
<item> les lat9 tout court ne contiennent pas de table de correspondance
Unicode, ce qui fait que tous les symboles mon<6F>taires internationaux
appara<EFBFBD>tront comme des euro, ce qui peut poser des probl<62>mes pour les
fichiers issus d'un ordinateur sous windows ; le cp1252 ou le latin1 sont
<EFBFBD> incompatibles <20> 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 <htmlurl name="site de
Yann Dirson"
url="http://www.multimania.com/ydirson/en/lct/lct/lct-6.html">, il
semble donc que toutes les polices devraient contenir une table de
correspondance Unicode...
<item> des lat9u encod<6F>es dans un ordre non standard, mais identique <20>
celui des polices latXu de kbd, par rapport aux polices pr<70>c<EFBFBD>dentes, en
amenant les m<>mes probl<62>mes avec le cp1252 et le latin1 mais en incluant
une table de correspondance Unicode, ce qui permet d'avoir de jolis
caract<EFBFBD>res semi graphiques sous Yast, mc, ou d'autres programmes bas<61>s
sur ncurses ou dialog.
<item> des lat9v encod<6F>es dans l'ordre officiel iso comme les
lat9 mais avec une table Unicode compl<70>te : l<> aucun symbole mon<6F>taire
international ne sera remplac<61> par l'euro !
Ces polices sont utiles pour <20>viter les probl<62>mes d'export, gr<67>ce <20>
l'Unicode *pur*, avec une table de clavier Unicode adapt<70>e : tous les
caract<EFBFBD>res latin9 sont remplac<61>s par des caract<63>res Unicodes et affich<63>s
ainsi, ce qui a le m<>rite d'<27>tre compatible avec le latin9, l'Unicode,
d'<27>tre <20>l<EFBFBD>gant techniquement mais inutilisable <20> normalement <20> sous
linux-console. Presque aucun syst<73>me n'est enti<74>rement pr<70>t pour
l'Unicode !
</itemize>
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<6D>diatement, en
posant quelques probl<62>mes pour les caract<63>res latin1 qui seront
remplac<EFBFBD>s par leurs <20>quivalents latin9, mais sans rendre l'Unicode
obligatoire comme les lat9U, sans emm<6D>ler les caract<63>res graphiques
comme les lat9, et en permettant aussi d'afficher les caract<63>res
sp<EFBFBD>cifiques au latin9 en Unicode *pur*, <20> l'exception des caract<63>res
sp<EFBFBD>cifiques au latin1 donc...
Je vous rassure, vous n'<27>tes pas oblig<69>s de comprendre tout ce qui suit
pour <20> passer <20> l'euro <20>, 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.
<tscreen><verb>
loadunimap fonts/linux-console/lat9.uni
setfont fonts/linux-console/lat9-16.psf
</verb></tscreen>
Pour utiliser la police lat9w-16.psf ou une autre lat9u, lat9v ou
lat9w :
<tscreen><verb>
setfont /fonts/linux-console/lat9w-16.psf
</verb></tscreen>
<sect2>d) Unicode<p>
Une alternative est l'Unicode, mais les programmes l'utilisant sont encore trop
peu nombreux pour qu'elle soit valable.
Citons quand m<>me yuedit et le projet <20> 9 <20> (9term, 9wm... rien <20> voir
avec l'op<6F>rateur t<>l<EFBFBD>com fran<61>ais du m<>me nom) qui utilisent l'Unicode
sous X, avec plus ou moins de succ<63>s.
En revanche, sous linux-console, tout programme peut utiliser l'Unicode.
Mais, h<>las!, aussi grande que soit la m<>moire des cartes vid<69>os actuelles,
elle ne peut charger l'int<6E>gralit<69> des caract<63>res d'une police Unicode.
Il existe donc des <20> jeux de caract<63>res <20> limit<69>s mais bien utiles pour les
langues baltiques, asiatiques, est-africaines...
<sect2>e) Utiliser les possibilit<69>s Unicode<p>
Essayez par exemple ce fichier <tt/unicode-lance/ pour passer en mode Unicode:
<tscreen><verb>
#!/bin/sh
echo -e '\033%8'
kbd_mode -u
loadkeys fr-unicode.map
setfont lat9u-16.psf
</verb></tscreen>
et ce fichier <tt/latin-retourne/ pour revenir en mode latin normal:
<tscreen><verb>
#!/bin/sh
echo -e '\033%@'
kbd_mode -a
loadkeys fr-latin9.map
setfont lat9w-16.psf
</verb></tscreen>
Essayez par exemple de lire le fichier <tt/unicode.txt/, encod<6F> en
Unicode, une fois <tt/unicode-lance/ activ<69>.
Vous ne verrez sinon qu'un texte mal encod<6F>, sans caract<63>res 8 bits,
comme cet exemple :
<tscreen><verb>
Ceci est un essai de texte en UNICODE !
On constate que les bétas (<28>~_) et autres lettres 8 bits ne sortent pas bien
si l'on regarde ce fichier en mode latin !
Les accents éè<C3A9>| ù non plus d'ailleurs...
Enfin, heureusement que l'on ne marche pas sur des <20>~RUFS, enfin, <20>~Sufs !
<EFBFBD>~Ga marche moyennement disons !
</verb></tscreen>
<sect1>Les locales, messages en Fran<61>ais<p>
Linux en 'version fran<61>aise' existe... mais ne semble pas facile
<EFBFBD> obtenir.
La librairie locale(7) [cf aussi perllocale, setlocale, getlocale]
utilis<EFBFBD>e par la librairie C se sert de variables d'environnement pour
d<EFBFBD>finir les pr<70>f<EFBFBD>rences linguistiques et nationales.
Pablo Saratxaga r<>pondait ainsi <20> Pascal Rigaux en prenant l'exemple de sort :
<tscreen><verb>
PR> J'ai d<>couvert aujourd'hui la variable d'environnement LANG. C'est assez
PR> surprenant de se retrouver avec de l'aide en fran<61>ais (m<>me si elle n'est pas
PR> toujours aussi pr<70>cise que la version anglaise) quand on fait ls --help.
C'est agr<67>able n'est-ce pas ?
PR> Par contre je ne comprend pas pourquoi un programme comme sort(1) n'utilise pas
PR> cette information pour obtenir un tri acceptable pour les accents (du genre ne
PR> pas mettre <20> <20>tre <20> apr<70>s <20> zen <20>). Il devrait au moins proposer une option de
PR> ce genre.
Il faudrait regarder les sources de sort...
La fonction <20> utiliser est strcoll() :
****
STRCOLL(3) Manuel du programmeur Linux STRCOLL(3)
NOM
strcoll - Comparaison de deux cha<68>nes suivant la localisa-
tion en cours.
SYNOPSIS
#include &lt;string.h&gt;
int strcoll (const char *s1, const char *s2);
DESCRIPTION
La fonction strcoll() compare les deux cha<68>nes s1 et s2.
Elle renvoie un entier inf<6E>rieur, <20>gal ou sup<75>rieur a z<>ro
si s1 est respectivement inf<6E>rieure, <20>gale, ou sup<75>rieure
a s2. La comparaison est effectu<74>e en se basant sur la
localisation en cours pour la cat<61>gorie LC_COLLATE. (Voir
setlocale(3)).
****
qui est donc l'<27>quivalent de strcmp() mais qui tiens compte des locales.
Il faudra s'<27>crire un strcasecoll() aussi pour bien faire, en utilisant
toupper()/tolower() qui d'apr<70>s la page de manuel supporte les locales.
Qui s'y colle ? <20>a devrait <20>tre assez simple <20> r<>aliser sur un syst<73>me GNU
en tout cas.
</verb></tscreen>
Il existe diff<66>rente variables <20> exporter, avec chacune une fonction
sp<EFBFBD>cifique ; le format standardis<69> est:
<tscreen><verb>
langue[_PAYS[.CHARSET]][@variante]
</verb></tscreen>
Les crochets d<>notent l'optionalit<69>, par exemple: 'fr', 'fr_BE',
'fr_CH.ISO-8859-15', no@bokmaal, no@nynorsk,...
Les fonctions de la libc, celle de GNU en tout cas, iront chercher dans
<EFBFBD> l'ordre d<>croissant <20> si on peut dire; par exemple si on sp<73>cifie
'fr_CH.ISO-8859-15' elles chercheront d'abord avec cette valeur, puis
avec 'fr_CH' puis avec 'fr'.
<itemize>
<item> LC_COLLATE d<>finit les <20>quivalences de caract<63>res pour les comparaisons
(&aelig; peut <20>tre <20>quivalent <20> ae), pour les ligatures et pour les c<>sures.
<item> LC_CTYPE d<>finit les caract<63>res affichables
<item> LC_MONETARY d<>finit le format et le symbole de la monnaie utilis<69>e
<item> LC_NUMERIC d<>finit le format num<75>rique : regroupement, marqueur
d<EFBFBD>cimal...
<item> LC_MESSAGES d<>finit la langue des messages
<item> LC_TIME d<>finit le format de la date, les noms des jours et
des mois
<item> LC_ALL valeur par d<>faut des variables pr<70>c<EFBFBD>dentes : si une
LC_ n'est pas d<>finie, LC_ALL est prise en compte, sinon la libc se
rabat sur LANG.
<item> LANG diff<66>rent des variables pr<70>c<EFBFBD>dentes, contient
le code langue au format iso : fr,en,de...
<item> LANGUAGE liste des locales par ordre de pr<70>f<EFBFBD>rence s<>par<61>es
par deux points (fr:es:dk:en), c'est une particularit<69> GNU, fort
utile si un document n'existe que dans une langue comme certaines pages
de manuel
</itemize>
Les valeurs utilisables pour les francophones sont:
<itemize>
<item> fr fran<61>ais g<>n<EFBFBD>rique
<item> fr_FR fran<61>ais de France
<item> fr_BE fran<61>ais de Belgique
<item> fr_CH fran<61>ais de Suisse
<item> fr_LU fran<61>ais du Luxembourg
<item> fr_CA fran<61>ais du Canada
</itemize>
Par exemple, si vous <20>tre un Fran<61>ais de France, il suffit d'indiquer
sous bash :
<tscreen><verb>
export LANGUAGE=fr_FR
</verb></tscreen>
Exemple :
<tscreen><verb>
bash# export LANGUAGE=es_ES
bash# ls fichier_n_existant_pas
ls: fichier_n_existant_pas: No existe el fichero o el directorio
bash# export LANGUAGE=de_DE
bash# ls fichier_n_existant_pas
ls: fichier_n_existant_pas: Datei oder Verzeichnis nicht gefunden
bash# export LANGUAGE=en_US
bash# ls fichier_n_existant_pas
ls: fichier_n_existant_pas: No such file or directory
bash# export LANGUAGE=fr_FR
bash# ls fichier_n_existant_pas
ls: fichier_n_existant_pas: Aucun fichier ou r<>pertoire de ce type
</verb></tscreen>
Toutefois, avec le passage <20> l'euro, ces locales ne sont plus adapt<70>es.
Je vous conseille donc d'utiliser dans les pays de l'union passant <20>
l'euro le suffixe <20> @euro <20> :
<tscreen><verb>
export LC_ALL="fr_FR@euro"
</verb></tscreen>
Pour cela, installer les nouveaux fichiers sources de locales dans
<tt>/usr/share/i18n/</tt> en lan<61>ant :
<tscreen><verb>
cp charmaps/ISO-8859-15 /usr/share/i18n/charmaps/ISO-8859-15
cp locales/* /usr/share/i18n/locales/
</verb></tscreen>
Alors, r<>g<EFBFBD>n<EFBFBD>rer les locales <20> binaires <20> de <tt>/usr/share/locales</tt>, par exemple :
<tscreen><verb>
localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
</verb></tscreen>
fr_FR@euro inclus les caract<63>res latin 9, c'est utile pour l'utilisation
de LC_COLLATE et LC_CTYPE en fait, et la nouvelle monnaie unique.
Pour le moment, le Franc Fran<61>ais (FRF) est toujours la monnaie
officielle en France par exemple, mais lorsque ce sera l'euro, il
suffira de remplacer la locale fr_FR par fr_FR@euro.
<tscreen><verb>
cd /usr/lib/locales
rm -fr fr_FR
mv fr_FR@euro fr_FR
</verb></tscreen>
La solution <20> @euro <20> est support<72>e par les autres UNIX comme Solaris.
Pour les shell scripts, il peut <20>tre utile de rajouter <20> LC_TIME=C <20> pour
emp<EFBFBD>cher la date d'<27>tre localis<69>, emb<6D>tant pour les grep et autres qui
cherchent <20> Mon <20> <20> Tue <20>... et non <20> Lun <20>, <20> Mar <20>...
Les donn<6E>es correspondantes aux pr<70>f<EFBFBD>rences se trouvent g<>n<EFBFBD>ralement
dans <tt>/usr/share/locale</tt>. S'ils manquent, vous pouvez r<>cup<75>rer
leur <htmlurl name="source" url="ftp://dkuug.dk/i18n/WG15-collection">
Concernant les autres fichiers abord<72>s dans cet article, vous les
trouverez avec les autres fichiers de cet HOWTO sur
<htmlurl name="ma page"
url="http://metalab.unc.edu/guylhem/francophones-howto.tgz">.
<sect1>Son linux en fran<61>ais<p>
Pour se faire <tt/SON/ linux en fran<61>ais il faut en pratique disposer des
sources de la libc et d'un minimum de comp<6D>tences en langage C ; ces
manipulations sont inutiles pour l'utilisateur standard de Linux qui
se contentera d'utiliser les locales de la section pr<70>c<EFBFBD>dente.
Mais voici donc, pour la bonne bouche, quelques renseignements collect<63>s...
Laurent Chemla nous pilote :
<tscreen><verb>
Si j'ai suivi, il y a deux trucs qui font la m<>me chose, d'o<> embrouille, les
locales et un truc appel<65> nls.
Les locales, sous Linux, <20>a va par d<>faut dans /usr/lib/locale,
et <20>a contient de quoi pr<70>ciser entre autres le format des
nombres (LC_NUMERIC), les retours des fonctions ctype (isalpha etc) (LC_CTYPE),
le format des sommes d'argent (LC_MONETARY), le format des dates (LC_TIME) et
encore d'autres d<>tails. Sur certains Unix, il y a aussi LC_MESSAGES,
qui contient les messages de l'OS dans la langue choisie par la variable
d'environnement LC_MESSAGES. Pas sous Linux. Sous Linux, c'est nls qui fait
<EFBFBD>a, et de fait, nls g<>re un fichier qui est dans /etc/locale/.
(NDG : De nos jours, ils se trouvent plut<75>t dans /usr/lib/locale)
D'o<> l'embrouille. Ils auraient mis <20>a dans /usr/lib/nls, comme
tout le monde, <20>a aurait <20>vite la confusion. Mais bon.
Donc, si l'on veut se tenir <20> jour d'nls, il suffit d'aller dans les
sources de libc/nls, faire <20> make french <20> et copier libc.dat dans
/etc/locale/C/libc.dat et toc, tous les messages sont en fran<61>ais. Y compris
ceux des programmes qui n'utilisent pas setlocale(): c'est perror() qui fait le
boulot (du moins je suppose).
Si l'on veut en plus que les programmes qui utilisent setlocale() utilisent nos
r<EFBFBD>gles fran<61>aises, l<> il faut aller dans les sources de
libc/locale et dans chacun des sous-r<>pertoires jeter un oeil sur le
fichier exemple, le modifier pour le fran<61>ais (c'est des tout petits
fichiers), et faire <20> make <20>, avant de copier le r<>sultat dans
/usr/lib/local/fr/ et de faire un <20> export LC_ALL=fr <20>.
</verb></tscreen>
Autre astuce pour m<>nager les vieux logiciels :
<tscreen><verb>
cd /usr/lib
ln -sf /usr/share/locale .
</verb></tscreen>
Ne pas oublier de t<>l<EFBFBD>charger sur le <htmlurl name="site du lip6"
url="ftp://ftp.lip6.fr"> :
<itemize>
<item> Les pages de manuel en fran<61>ais, archive man-fr-*, adapt<70>es par C.
Blaess. Il suffit d'extraire le contenu de l'archive dans le r<>pertoire
/usr/man/fr.
<item> Une int<6E>ressante documentation technique : locale.fr, par P. D'Cruze,
adapt<EFBFBD>e par <20>. Dumas
</itemize>
Pour en apprendre davantage lire la page de manuel de <20> locale <20> : biblioth<74>que
de pages de manuel 5 ou 7 :
<tscreen><verb>
bash# man 5 locale
bash# man 7 locale
</verb></tscreen>
<sect1>Les variables<p>
Ces variables doivent <20>tre export<72>es <20> chaque login :
mettez les donc dans <tt/.bashrc/ et <tt/.bash_login/, <tt/.tcshrc/ ou
/etc/profile :
<tscreen><verb>
# pour tcsh, utiliser setenv au lieu de export, par exemple <20>setenv LANG fr<66>
# Les locales
LC_CTYPE=ISO-8859-1
LANGUAGE=fr
LC_MESSAGES=fr
LC_ALL=fr
LANG=fr
LESSCHARSET=latin1
export LC_CTYPE LANGUAGE LC_MESSAGES LC_ALL LANG LESSCHARSET
# Les raccourcis : sans ll ou d, impossible de voir les fichiers comprenant des
# caract<63>res 8 bits ...
alias q="cd .."
alias ll="ls --color=auto -a -N -l"
alias d="ls --color=auto -a -N"
alias indent="indent -kr"
alias netscape="export LC_ALL=en_EN ; netscape $* ; LC_ALL=fr_FR"
# Au cas o<> Del/BackSpace ne fonctionne pas, essayez l'un des deux :
#stty erase ^?
#stty erase ^H
</verb></tscreen>
N'oubliez pas : tous les fichiers ici cit<69>s dont le nom commence par
<EFBFBD> . <20> doivent se trouver dans votre r<>pertoire maison ~/
<sect1>Les caract<63>res 8 bits dans les programmes utilisant readline tels bash ou ncftp...<p>
Readline est une librairie de saisie de caract<63>res avec historique et
compl<EFBFBD>tion ; elle est utilis<69>e par de nombreux programmes comme bash, ncftp,
gnuplot...
Par d<>faut, le 8e bit sert <20> coder la touche Meta.
Elle est utilis<69>e pour coder certaines commandes mais la touche <20> Escape <20>
ou <20> <20>chap <20> peut la remplacer.
Si vous souhaitez voir et saisir des accents avec les applications
compil<EFBFBD>es avec readline, comme bash pour les versions sup<75>rieures <20>
1.13, ajoutez ceci dans votre fichier $INPUTRC, par d<>faut
<tt>~/.inputrc</tt>) :
<tscreen><verb>
# Permettre de rentrer & recevoir des caract<63>res accentu<74>s
set meta-flag on
set convert-meta off
set input-meta on
set output-meta on
# Pas de bip audible mais visible
# set bell-style visible
# Pour faire marcher Home, End, Delete, Esc + Delete & Esc + BackSpace
"\e[1&tilde;":beginning-of-line
"\e[3&tilde;":delete-char
"\e[4&tilde":end-of-line
"\e\C-h": backward-kill-word
"\e\e[3&tilde;": kill-word
</verb></tscreen>
Cela vous permettra d'effacer des caract<63>res vers l'avant avec
<EFBFBD> Delete <20> et vers l'arri<72>re avec <20> BackSpace <20>, ceci n'<27>tant pas
pr<EFBFBD>vu sur les tables de clavier par d<>faut <20> mimant <20> le
comportement d'un clavier de console VT100 .
Les deux derni<6E>res options vous permettront d'utiliser <20> Home <20> et <20> End <20>
pour aller au d<>but et <20> la fin de la ligne en cours
d'<27>dition.
Pour pouvoir employer une touche il suffit d'obtenir son code et
l'associer <20> une fonction gr<67>ce <20> ce fichier ; pour obtenir le code
d'une touche invoquer cat puis appuyer sur la touche : son code
appara<EFBFBD>t.
Le code physique :
<tscreen><verb>
^[
</verb></tscreen>
correspond <20> la s<>quence d'<27>chappement.
Par exemple, si le code de <20> Home <20> est <20> ^[[7~ <20> il suffit d'ajouter
une ligne :
<tscreen><verb>
"\e[7~": beginning-of-line
</verb></tscreen>
au <tt/.inputrc/.
Plus de documentation est disponible sur la page de manuel de bash, section
<tt/READLINE/.
On peut aussi, gr<67>ce <20> la variable d'environnement <tt/INPUTRC/, utiliser un
fichier commun <20> tous les utilisateurs.
Enfin, je vous recommande d'utiliser ce fichier <tt/.bashrc/ <20> placer
dans votre r<>pertoire maison :
<tscreen><verb>
# ~/.bashrc : ex<65>cut<75> par bash(1) pour les shells lanc<6E>s apr<70>s le login.
# Le path
PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin:/usr/local/bin"
# Le prompt
PS1="(\u@\h:\W)$ "
# L'utilisateur
ENV=$HOME/.bashrc
USERNAME="votre nom"
# Les locales
_CTYPE=ISO-8859-1
LANGUAGE=fr
LC_MESSAGES=fr
LC_ALL=fr
LANG=fr
LESSCHARSET=latin1
export LC_CTYPE LANGUAGE LC_MESSAGES LC_ALL LANG LESSCHARSET
# Les raccourcis
alias q="cd .."
alias ll="ls --color=auto -a -N -l"
alias d="ls --color=auto -a -N"
alias indent="indent -kr"
alias elm-box="elm -f ~/Mail/Inbox"
alias netscape="export LC_ALL=en_EN ; netscape $* ; LC_ALL=fr_FR"
# Au cas o<> Del/BackSpace ne fonctionne pas, essayez l'un des deux :
#stty erase
#stty erase ^H
# Refuser le talk & le write
#mesg n
# Permettre les coredumps
#ulimit -c nombre_max_de_Ko
#Fixer le masque de cr<63>ation de fichiers
#umask 022
</verb></tscreen>
Le fichier .bash_profile ou .bash_login, ex<65>cut<75> par bash(1) lors des
logins, y est strictement identique mais peut, si vous le voulez,
pr<EFBFBD>senter des diff<66>rences pour afficher par exemple une citation en
la<EFBFBD>ant le programme <20> fortune <20>.
<sect1>zsh<p>
Celui-ci devrait se contenter d'un <tt/stty pass8/.
Si cela ne suffisait pas, rajouter dans le <tt/.zshrc/ ou dans
<tt>/etc/zshrc</tt>:
<tscreen><verb>
bindkey "\e[2~" yank
bindkey "\e[3~" delete-char
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line
bindkey "\e[5~" up-line-or-history
bindkey "\e[6~" down-line-or-history
</verb></tscreen>
<sect1>tcsh<p>
Pour tcsh, placer, dans le fichier <tt>/etc/csh.login</tt> ou dans les
fichiers <tt/.tcshrc/ des utilisateurs concern<72>s, les variables
indiqu<EFBFBD>es plus haut en rempla<6C>ant export par setenv:
<tscreen><verb>
setenv LC_CTYPE=ISO-8859-1
setenv LANGUAGE=fr
setenv LC_MESSAGES=fr
setenv LC_ALL=fr
setenv LANG=fr
setenv LESSCHARSET=latin1
</verb></tscreen>
<sect1>Pour tous les shells<p>
Remplacer 'iso_8859_1' par 'iso-8859-1' si cela ne fonctionne pas, voire
french.iso88591.fr_FR ou fr_BR, fr_CA, fr_CH, fr_LU...
&Agrave; propos de LANG, il vaut mieux <20>viter fr_FR et lui pr<70>f<EFBFBD>rer fr
car certains programmes ne passent pas vraiment par la resolution de
locales mais lisent LANG directement...
Si nls est install<6C>, les routines correspondantes sont utilis<69>es, sinon
tcsh agit en iso_8859_1, quelle que soit les valeurs donn<6E>es <20> LANG et
LC_CTYPE : cf. la section NATIVE LANGUAGE SYSTEM de tcsh(1).
Selon le Danish-HOWTO, utiliser :
<tscreen><verb>
(guylhem@victis:tcsh)# setenv LC_CTYPE ISO-8859-1
(guylhem@victis:tcsh)# stty pass8
</verb></tscreen>
<sect1>L'heure<p>
Rien n'est plus facile que de laisser <20> Linux le soin de passer de
l'heure d'<27>t<EFBFBD> <20> l'heure d'hiver et
r<EFBFBD>ciproquement...
a) D'abord, quelle heure est-il :-) ?
Apr<EFBFBD>s avoir regard<72> sur la pendule la plus proche de vous, tapez :
<tt>
clock
</tt>
puis
<tt>
date
</tt>
La premi<6D>re heure est celle du bios, la seconde celle calcul<75>e
par Linux <20> partir de <tt>/etc/zoneconfig</tt>.
Pour peu que vous ayez install<6C> timezone, votre machine peut jongler
ais<EFBFBD>ment entre les diff<66>rents fuseaux horaires... ce que les DOS
ou Windows ne permettent pas !
b) L'heure du choix !
De l<>, deux possibilit<69>es : soit vous d<>cidez de laisser
l'heure syst<73>me <20> l'heure locale, peu pratique, except<70> si
vous h<>bergez aussi sur votre disque dur ces syst<73>mes
d'exploitation peu <20>volu<6C>, ne sachant m<>me pas exploiter
les fuseaux horaires, soit vous passez <20> l'heure de Greenwich, Linux se
chargeant de l'adapter <20> votre fuseau horaire.
Dans ce cas, les grands voyages <20> l'<27>tranger avec un portable
tout neuf <20>quip<69> de Linux se feront en toute simplicit<69> :
le dernier paragraphe vous expliquera comment changer de fuseau horaire
facilement...
c) Le r<>glage
Pour proc<6F>der, regardez d'abord si l'heure syst<73>me
retourn<EFBFBD>e par clock est l'heure locale ou l'heure de Greenwich.
Vous avez bien regard<72> une pendule comme je vous le conseille plus haut,
n'est-ce pas ?
Si clock vous retourne l'heure locale, il va falloir jongler un peu avec les
fuseaux horaires, sinon passez directement <20> l'<27>tape
<EFBFBD> r<>glage du fuseau <20>.
<itemize>
<item> Pour les fran<61>ais, belges wallons et suisses romands :
</itemize>
Vous <20>tes normalement dans une zone horaire MET (Medium European Time,
soit GMT+1).
La zone <20> MET DST <20> correspond elle <20> l'heure d'<27>t<EFBFBD> active
(GMT + 2).
Selon les d<>cisions futures de la cour europ<6F>enne, l'heure
d'<27>t<EFBFBD> <20> daylight savings <20> risque d'<27>tre abandonn<6E>...
ce qui compliquera cette explication !
<itemize>
<item> Pour les canadiens fran<61>ais :
</itemize>
Vous <20>tes dans une zone horaire GMT-4 si vous habitez autour de
Montr<EFBFBD>al .
Pour les autres provinces, consulter un dictionnaire !
Premi<EFBFBD>rement, effacez le fichier /etc/localtime ou
/usr/lib/zoneinfo/localtime (l'emplacement varie selon les distributions ; si
vous avez les deux fichiers, effacez /etc/localtime : l'autre fichier doit
certainement <20>tre un lien vers /etc/localtime).
D<EFBFBD>s lors, clock et date doivent vous retourner la m<>me heure...
<itemize>
<item> Pour les canadiens fran<61>ais : utilisez GMT+4
</itemize>
<itemize>
<item> Pour les fran<61>ais, belges wallons et suisses romands :
</itemize>
Si vous lisez ce document en <20>t<EFBFBD>, le d<>calage de l'heure
locale par rapport <20> l'heure de Greenwich est de deux heures, on va donc
mettre temporairement le fuseau en GMT-2, soit vous lisez ce document en hiver
et il convient de remplacer tous les <20> 2 <20> par des <20> 1 <20> dans les exemples
suivants...
GMT-2 ?!!? Alors que le fuseau est GMT+2 ?
Ceci va vous retourner l'heure de Greenwich dont on a besoin pour r<>gler
le syst<73>me : tapez :
<tt>
ln -sf /usr/lib/zoneinfo/Etc/GMT-2 /etc/zoneconfig
</tt>
<tt>
clock
</tt>
<tt>
date
</tt>
L'heure calcul<75>e correspond donc <20> l'heure de Greenwich, l'heure
syst<EFBFBD>me <20> l'heure locale... soit l'inverse de ce que l'on veut.
Un simple :
<tt>
clock -w
</tt>
Va alors mettre l'heure du syst<73>me en heure de Greenwich, utilisant pour
cela l'heure locale invers<72>e volontairement avec l'heure
syst<EFBFBD>me.
d) R<>gler le fuseau horaire :
Tapez alors :
<tt>
ln -sf /usr/lib/zoneinfo/Europe/Votre-ville /etc/zoneconfig
</tt>
Et voil<69> ! Le syst<73>me est <20> l'heure de Greenwich, la
conversion vers le fuseau horaire local et l'heure d'<27>t<EFBFBD> se
faisant automatiquement.
Si vous habitez hors Europe, proc<6F>dez de m<>me en rempla<6C>ant
les <20> -2 <20> par <20> X <20>, X repr<70>sentant l'oppos<6F> de votre
d<EFBFBD>calage horaire (par exemple -4 au Qu<51>bec, donc X=+4...)
e) Modifier le fuseau horaire :
Si vous partez <20> l'<27>tranger, il est alors simple de modifier
l'heure locale de votre portable : par exemple si vous partez pour Moscou :
<tt>
ln -sf /usr/lib/zoneinfo/Europe/Moscow /etc/zoneconfig
</tt>
Tr<EFBFBD>s simple et tr<74>s utile : plus besoin de se souvenir du
d<EFBFBD>calage horaire (plus ou moins X heures) puisque Linux se charge
d<EFBFBD>sormais de tout !
<sect1>vi<p>
Normalement, aucune modification n'est n<>cessaire <20> part l'utilisation de
loadkeys (d<>taill<6C>e plus haut).
Ce fichier <tt/.vimrc/ pourrait toutefois vous <20>tre utile si vous utilisez
<tt/vim/ au lieu d'<tt/elvis/ :
<tscreen><verb>
" Les guillemets anglais <20> " <20> signifient <20> mis en commentaire <20>
" <20>viter un avertissement <20> version incorrecte <20> :
version 4.0
" Utiliser les d<>fauts de vim, bien mieux
set nocompatible
" Autoriser le <20> BackSpace <20> sur tout :
set bs=2
" Police <20> utiliser sous X11 :
"set guifont=-misc-fixed-medium-r-normal--14-130-75-75-c-70-iso8859-1
" Fixer la c<>sure automatique de la ligne <20> N caract<63>res :
set tw=72
" Faire appara<72>tre les tabulations et les espaces
set list
" Changer les d<>fauts pour voir les espaces inutiles et les tabulations
set listchars=tab:<3A><>,trail:<3A>
hi nontext ctermfg=red
hi nontext ctermbg=blue
" Indentation (pour les programmeurs) :
" set cindent
" R<>glages souris :
"set mouse=a
" Ligne
set nowrapscan
" Montrer les correspondances :
set showmatch
" Montrer le mode
set showmode
" Indentation intelligente (pour les programmeurs) :
" set uc=0
" Faire fonctionner BackSpace :
set t_kD=^?
" Doit se trouver apr<70>s
map ^H X
" Faire fonctionner Delete :
map \e[3~ x
" Cacher la souris lorsqu'on tape :
set mousehide
" Faire voir les correspondances lors de recherches :
" set hlsearch
" Colorer <20> l'int<6E>rieur des commentaires en C :
let c_comment_strings=1
" Couleur pour xiterm, rxvt, nxterm, color-xterm :
if has("terminfo")
set t_Co=8
set t_Sf=\e[3%p1%dm
set t_Sb=\e[4%p1%dm
else
set t_Co=8
set t_Sf=\e[3%dm
set t_Sb=\e[4%dm
endif
" Coloration syntaxique :
if ett_Co > 1
syntax on
endif
" Autoriser l'<27>dition de fichiers gzipp<70>s
augroup gzip
" Supprimer toutes les autocommandes
au!
autocmd BufReadPre,FileReadPre *.gz set bin
autocmd BufReadPost,FileReadPost *.gz '[,']!gunzip
autocmd BufReadPost,FileReadPost *.gz set nobin
autocmd BufReadPost,FileReadPost *.gz execute ":doautocmd BufReadPost " . expand("%:r")
autocmd BufWritePost,FileWritePost *.gz !mv <afile> <afile>:r
autocmd BufWritePost,FileWritePost *.gz !gzip <afile>:r
autocmd FileAppendPre *.gz !gunzip <afile>
autocmd FileAppendPre *.gz !mv <afile>:r <afile>
autocmd FileAppendPost *.gz !mv <afile> <afile>:r
autocmd FileAppendPost *.gz !gzip <afile>:r
augroup END
augroup bzip
au!
autocmd BufReadPre,FileReadPre *.bz2 set bin
autocmd BufReadPost,FileReadPost *.bz2 '[,']!bunzip2
autocmd BufReadPost,FileReadPost *.bz2 set nobin
autocmd BufReadPost,FileReadPost *.bz2 execute ":doautocmd BufReadPost " . expand("%:r")
autocmd BufWritePost,FileWritePost *.bz2 !mv <afile> <afile>:r
autocmd BufWritePost,FileWritePost *.bz2 !bzip2 <afile>:r
autocmd FileAppendPre *.bz2 !bunzip2 <afile>
autocmd FileAppendPre *.bz2 !mv <afile>:r <afile>
autocmd FileAppendPost *.bz2 !mv <afile> <afile>:r
autocmd FileAppendPost *.bz2 !bzip2 <afile>:r
augroup END
augroup cprog
au!
autocmd BufRead * set formatoptions=tcql nocindent comments&
autocmd BufRead *.c,*.h set formatoptions=croql cindent comments=sr:/*,mb:*,el:*/,://
augroup END
</verb></tscreen>
<sect1>Emacs<p>
Voici un fichier de configuration de base pour employer les accents.
<tscreen><verb>
;;
;; Fichier .emacs: initialisation d'emacs
;; Tir<69> du Guide du Rootard
;;
(display-time) ;; Pour avoir l'heure dans la barre d'<27>tat
(setq display-time-24hr-format t) ;; Format 24 heures
;; Nouveaux modes
(autoload 'c++-mode "cplus-md" "C++ Editing Mode" t)
(autoload 'perl-mode "perl-mode" "Perl Editing Mode" t)
(autoload 'c-mode "c-mode" "C Editing Mode" t)
; mieux vaudrait utiliser le "cc-mode"
(autoload 'jargon-mode "jargon" "Jargon Mode" t)
;; Auto-Mode Settings : positionne le mode selon l'extension
(setq auto-mode-alist
(append '(("\.c$" . c-mode) ;; utilise le mode C++ m<>me pour C
("\.h$" . c-mode)
("\.C$" . c++-mode)
("\.H$" . c++-mode)
("\.cc$" . c++-mode)
("\.C$" . c++-mode)
("\.pl$" . perl-mode) ;; Perl
("/tmp/snd\.[0-9]*" . text-mode);; Text (pour le courriel)
("[Rr][Ee][0-9]*" . text-mode)
("\.ada$" . ada-mode) ;; Ada
("\.spec$" . ada-mode)
("\.body$" . ada-mode)
("makefile$" . makefile-mode) ;; Makefile
("Makefile$" . makefile-mode)
("Imakefile$" . makefile-mode))
auto-mode-alist))
; Remappages vari<72>s <20> mettre ici
(global-set-key "\eg" 'goto-line) ;; ESC G = Aller <20> une ligne
(put 'eval-expression 'disabled nil)
;; Accents...
(standard-display-european 1)
(load-library "iso-syntax")
(set-input-mode (car (current-input-mode))
(nth 1 (current-input-mode))
0)
;; Sous X-Window, texte en couleurs (C/C++/Shell/Makefile,etc)
(cond (window-system
(setq hilit-mode-enable-list '(not text-mode)
hilit-background-mode 'light
hilit-inhibit-hooks nil
hilit-inhibit-rebinding nil)
(require 'hilit19)
))
(if (not (equal window-system ""))
(global-set-key "\C-?" 'delete-char))
))
</verb></tscreen>
Le Keyboard-HOWTO conseille quand <20> lui :
<tscreen><verb>
(standard-display-european t)
(set-input-mode nil nil 1)
(require 'iso-syntax)
(load-library "iso-insert.el")
(define-key global-map [?\C-.] 8859-1-map)
</verb></tscreen>
Utilisez une version au moins <20>gale <20> 19.27, modifiez le fichier global
(commun <20> tous les utilisateurs)
<tt>/usr/lib/emacs/site-lisp/site-start.el</tt> ou le <tt>./emacs</tt>
de chaque utilisateur concern<72> pour y ajouter :
<tscreen><verb>
(standard-display-european t)
(set-input-mode (car (current-input-mode))
(nth 1 (current-input-mode))
0)
(global-set-key [delete] 'delete-char)
(global-set-key [home] 'beginning-of-line)
(global-set-key [end] 'end-of-line)
(global-set-key [prior] 'scroll-down)
(global-set-key [next] 'scroll-up)
(global-set-key [C-right] 'forward-word)
(global-set-key [C-left] 'backward-word)
(global-set-key [C-prior] 'beginning-of-buffer)
(global-set-key [C-next] 'end-of-buffer)
(global-set-key "\033[A" 'previous-line)
(global-set-key "\033[B" 'next-line)
(global-set-key "\033[C" 'forward-char)
(global-set-key "\033[D" 'backward-char)
(global-set-key "\033[H" 'beginning-of-line)
(global-set-key "\033[Y" 'end-of-line)
(global-set-key "\033[1~" 'beginning-of-line)
(global-set-key "\033[2~" 'overwrite-mode)
;; le delete-char peut correspondre <20> \004 ou <20> \033[3~
(global-set-key "\033[3~" 'delete-char)
(global-set-key "\033[4~" 'end-of-line)
(global-set-key "\033[5~" 'scroll-down)
(global-set-key "\033[6~" 'scroll-up)
</verb></tscreen>
Pour les autres versions :
<itemize>
<item> 19.19 :
<tscreen><verb>
(standard-display-european 1)
(set-input-mode (car (current-input-mode))
(nth 1 (current-input-mode))
0)
</verb></tscreen>
Lire <20> ce propos le fichier emacs.info.
<item> 19.22 :
<tscreen><verb>
(load-library "iso-transl")
(standard-display-european t)
</verb></tscreen>
<item> Autres :
<tscreen><verb>
(standard-display-european 1)
(load-library "iso-transl")
</verb></tscreen>
</itemize>
XEmacs les accepte lui par d<>faut sans broncher mais peut des fois
rencontrer des probl<62>mes avec les BackSpaces dans le mini-buffer en
console.
Ajouter dans le <tt/.emacs/ :
<tscreen><verb>
(if (eq window-system 'x)
(global-set-key (read-kbd-macro "DEL") 'delete-char)
(or (global-set-key "^[[3~" 'delete-char))
)
</verb></tscreen>
Le mode ispell d'emacs a un certain nombre de dictionnaires pr<70>d<EFBFBD>finis
qui ne sont pas forcement ceux qui sont en place sur le syst<73>me.
Si vous constatez des probl<62>mes, vous devez red<65>finir la liste
ispell-dictionary-alist des dictionnaires.
Cette liste contient :
<itemize>
<item> le nom du dictionnaire
<item> la liste des caract<63>res composant un mot
<item> la lise oppos<6F>e des caract<63>res ne composant pas un mot
<item> les caract<63>res de liaison <20> l'int<6E>rieur des mots ("-", "'"...)
<item> vrai ou faux si ces caract<63>res peuvent <20>tre pr<70>sents en plusieurs
exemplaire dans le mot
<item> une liste d'arguments pour ispell
<item> le mode d'ispell (tex, nroff..)
</itemize>
Par exemple, dans le fichier <tt/.emacs/ :
<tscreen><verb>
(setq ispell-dictionary-alist
'((nil ; francais.aff
"[A-Za-z<><7A><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]" "[^A-Za-z<><7A><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]"
"[---']" nil ("-n") "~nroff")
("english" ; rosbif
"[A-Za-z]" "[^A-Za-z]" "[---']" nil ("-B") nil)
("american" ; yankee
"[A-Za-z]" "[^A-Za-z]" "[---']" nil nil nil)
("francais" ; fran<61>ais
"[A-Za-z<><7A><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]" "[^A-Za-z<><7A><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]"
"[---']" nil ("-n") "~nroff")
("francais-TeX" ; fran<61>ais
"[A-Za-z<><7A><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\\]" "[^A-Za-z<><7A><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\\]"
"[---'^`\"]" t nil "~tex")
("espanol" ; espa~nol.aff
"[A-Za-z<><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]" "[^A-Za-z<><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]"
"[---'^`\"]" t nil "~nroff")
("dansk" ; danois et norv<72>gien
"[A-Za-z<><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]" "[^A-Za-z<><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]"
"[---'^`\"]" t nil "~nroff")
))
</verb></tscreen>
Le dictionnaire "francais-TeX" est un lien symbolique sur "francais"
qui permet d'ajouter une entr<74>e pour les accents <20> la TeX (ex: \'e).
Si vous utilisez X11, vous voudrez peut-<2D>tre reconstruire les menus et
il vous faudra recharger une partie de lisp/loaddefs.el dans votre
<tt/.emacs/ :
<tscreen><verb>
(setq ispell-menu-map nil)
(if ispell-menu-map-needed
(let ((dicts (reverse (cons (cons "default" nil) ispell-dictionary-alist)))
name)
;; Can put in defvar when external defines are removed.
(setq ispell-menu-map (make-sparse-keymap "Spell"))
(while dicts
(setq name (car (car dicts))
dicts (cdr dicts))
(if (stringp name)
(define-key ispell-menu-map (vector (intern name))
(cons (concat "Select " (capitalize name))
(list 'lambda () '(interactive)
(list 'ispell-change-dictionary name))))))))
(if ispell-menu-map-needed
(progn
;; Define commands in opposite order you want them to appear in menu.
(define-key ispell-menu-map [ispell-change-dictionary]
'("Change Dictionary" . ispell-change-dictionary))
(define-key ispell-menu-map [ispell-kill-ispell]
'("Kill Process" . ispell-kill-ispell))
(define-key ispell-menu-map [ispell-pdict-save]
'("Save Dictionary" . (lambda () (interactive) (ispell-pdict-save t))))
(define-key ispell-menu-map [ispell-complete-word]
'("Complete Word" . ispell-complete-word))
(define-key ispell-menu-map [ispell-complete-word-interior-frag]
'("Complete Word Frag" . ispell-complete-word-interior-frag))
(define-key ispell-menu-map [ispell-continue]
'("Continue Check" . ispell-continue))
(define-key ispell-menu-map [ispell-region]
'("Check Region" . ispell-region))
(define-key ispell-menu-map [ispell-word]
'("Check Word" . ispell-word))
(define-key ispell-menu-map [ispell-buffer]
'("Check Buffer" . ispell-buffer))
(define-key ispell-menu-map [ispell-message]
'("Check Message" . ispell-message))
(define-key ispell-menu-map [ispell-help]
'("Help" . (lambda () (interactive) (describe-function 'ispell-help))))
(put 'ispell-region 'menu-enable 'mark-active)))
(fset 'ispell-menu-map (symbol-value 'ispell-menu-map))
</verb></tscreen>
<sect1>less<p>
<tt>/etc/profile</tt> ou les fichiers de d<>marrage du shell (comme
<tt/.bashrc/ et <tt/.bash_profile/ dans votre r<>pertoire maison)
doivent contenir :
<tscreen><verb>
export LESSCHARSET=latin1
</verb></tscreen>
Comme fichier <tt/.lessrc/ je vous recommande :
<tscreen><verb>
\e[B forw-line
\e[A back-line
\e[6~ forw-scroll
\e[5~ back-scroll
\e[1~ goto-line
\e[4~ goto-end
\e[C next-file
\e[D prev-file
\eOA back-line
\eOB forw-line
</verb></tscreen>
Pour rentrer un Esc (parfois nomm<6D> <20>chap) taper <20> \e <20> ou, sous
vi, mettez vous en mode insertion avec i puis tapez <20> ctrl+v <20> et enfin <20> Esc <20>.
Ce fichier permet d'utiliser les touches <20> Home <20>, <20> End <20>, <20> Page_Up <20> & <20> Page_Down <20>.
Pour s'en servir, taper :
<tscreen><verb>
lesskey -o .less .lessrc
</verb></tscreen>
N'oubliez pas de mettre le fichier .less dans votre r<>pertoire maison :
il permet d'employer les touches fl<66>ch<63>es, <20> Page_Up <20>, <20> Page_Down <20>,
<EFBFBD> Home <20> et <20> End <20>.
Ne pas n<>gliger la page de manuel de less car il peut <20>tre int<6E>ressant de
changer la valeur de sa variable d'environnement de configuration ("LESS").
J'utilise : '-C -M -i -x2'
<sect1>ls<p>
Utilisez les options :
<tscreen><verb>
-N --color=auto
</verb></tscreen>
ou, plus simplement, d<>finissez dans les fichiers de d<>marrage de
votre shell les alias suivants permettant de voir les fichiers dont le nom
comprend des caract<63>res 8 bits :
<tscreen><verb>
alias ll="ls --color=auto -N -l -a"
alias d="ls --color=auto -N"
</verb></tscreen>
Un simple <tt>d</tt> remplacera le classique <tt>ls</tt>, en y ajoutant la
couleur, alors que <tt>ll</tt> vous offrira une liste compl<70>te de tous
les fichiers pr<70>sents dans le r<>pertoire, avec leurs attributs,
leurs tailles...
--color=auto est pr<70>f<EFBFBD>rable car --color=yes fera avoir des codes escape
lorsqu'on redirige vers un fichier ou un programme o<> si le terminal ne
supporte pas la couleur.
<sect1>flex<p>
Donnez l'option :
<tscreen><verb>
-8
</verb></tscreen>
si l'analyseur g<>n<EFBFBD>r<EFBFBD> doit accepter les entr<74>es 8-bits
(bien s<>r qu'il doit le faire !).
<sect1>elm<p>
Rajoutez ces trois lignes dans votre <tt>.elm/elmrc</tt> :
<tscreen><verb>
charset = iso-8859-1
displaycharset = iso-8859-1
textencoding = 8bit
</verb></tscreen>
<sect1>col<p>
Assurez-vous :
1) qu'il a <20>t<EFBFBD> corrig<69> et fasse un
<tscreen><verb>
setlocale(LC_CTYPE,"");
</verb></tscreen>
2) de d<>finir
<tscreen><verb>
LC_CTYPE=ISO-8859-1
</verb></tscreen>
dans l'environment.
<sect1>rlogin<p>
Utilisez l'option :
<tscreen><verb>
-8
</verb></tscreen>
<sect1>joe<p>
Utiliser <htmlurl name="joe 2.8"
url="ftp://metalab.unc.edu:/pub/Linux/apps/editors/joe-2.8.tar.gz"> ou
plus r<>cent qui devraient fonctionner apr<70>s <20>dition du fichier de
configuration : placer l'option -asis dans <tt>/usr/lib/joerc</tt> en
premi<EFBFBD>re colonne.
<sect1>TeX et LaTeX<p>
Le plus simple consiste <20> employer GuTemberg, une distribution de LaTeX
avec tous les d<>fauts r<>gl<67>s pour des francophones par des
francophones !
Mais si vous pr<70>f<EFBFBD>rez une version <tt>standard</tt> non modifi<66>e, il suffit
d'ajouter au d<>but de chaque fichier :
<itemize>
<item>
Pour LaTeX:
<tscreen><verb>
\documentstyle[isolatin]{article}
</verb></tscreen>
<item>
Pour LaTeX2e:
<tscreen><verb>
\documentclass[12pt,a4paper]{letter}
\usepackage{isolatin1}
\usepackage[french]{babel}
\usepackage{t1enc}
</verb></tscreen>
ou alors :
<tscreen><verb>
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
</verb></tscreen>
</itemize>
Au cas o<> votre distribution soit trop vieille pour l'inclure,
<tt>isolatin.sty</tt> est disponible <htmlurl name="s<>par<61>ment"
url="ftp://ftp.vlsivie.tuwien.ac.at/pub/8bit">
Pour gs et xdvi, il faut utiliser des options sp<73>ciales (sur ma machine,
ce sont des alias). En effet, ils sont souvent configur<75>s pour un papier
<EFBFBD>tats-unien dit <20> l<>gal <20>, de taille proche, mais non exactement <20>gale,
<EFBFBD> celle du standard <20> A4 <20>.
Ces options sont les suivantes :
<tt>
gs -sPAPERSIZE=a4
xdvi -paper a4
ghostview -a4
</tt>
Pour que dvips convertisse les documents dans un format papier a4, il faut
sp<EFBFBD>cifier dans le fichier config.ps (le chemin varie en fonction des versions
de LaTeX) : /usr/lib/texmf/dvips/config.ps ou <tt>.dvipsrc</tt>
<tt>
@ a4 210mm 297mm
@+ ! %%DocumentPaperSizes: a4
@+ %%PaperSize: a4
@+ %%BeginPaperSize: a4
@+ a4
</tt>
Sinon ajoutez <20> votre <tt>.Xresources</tt> :
<tscreen><verb>
XDvi.paper: a4
Ghostview.pageMedia: A4
</verb></tscreen>
<sect1>Manuel<p>
Tout d'abord, il faut vous procurer les pages de manuel Linux traduites en
<htmlurl name="fran<61>ais"
url="ftp://ftp.lip6.fr/pub/linux">
Si vous utilisez une distribution RedHat ou Debian, celles-ci sont
pr<EFBFBD>sentes sur le c<>d<EFBFBD>rom : il suffit de les
s<EFBFBD>lectionner lors de l'installation.
De l<>, deux possibilit<69>s :
<itemize>
<item> soit vous ne voulez que des manuels en Fran<61>ais, auquel cas il
faut faire un :
<tscreen><verb>
export MANPATH=/usr/man/fr_FR
</verb></tscreen>
NB: fr_FR se remplace par fr_BE, fr_CA, fr_CH ou fr_LU selon le pays concern<72>.
<item> soit vous pr<70>f<EFBFBD>rez par d<>faut des manuels en
Fran<EFBFBD>ais et si la page n'existe pas, vous vous rabattez vers l'Anglais,
il suffira alors de taper :
<tscreen><verb>
export LANG=fr
</verb></tscreen>
</itemize>
<tt>man</tt> ira chercher dans le <20> MANPATH <20> des pages en <20> LANG <20> par
d<EFBFBD>faut et se rabattra sinon sur des pages en anglais.
Si vous d<>sirez installer la page de manuel expliquant la norme ISO
8859-15 latin 9, il faut installer le fichier iso_8859_15.7.gz :
<tscreen><verb>
cp standard/iso_8859_15.7.gz /usr/local/man/man7/
</verb></tscreen>
<sect1>Correcteur orthographique ispell<p>
Vous pouvez vous le procurer sur le <htmlurl name="site original d'Hydro Qu<51>bec"
url="ftp://ftp.ireq-robot.hydro.qc.ca:/pub/ispell/francais-IREQ-1.3.tar.gz">
ou sur le <htmlurl name="mirroir du lip6"
url="ftp://ftp.lip6.fr/pub/ispell/francais">
Un fichier LISEZMOI explique pas <20> pas et en Fran<61>ais
l'installation.
<sect1>Les claviers 105 touches<p>
Aussi appel<65>s <20> claviers Microsoft (tm) <20>, ils ont trois touches de plus
que les claviers normaux.
Comment s'en servir ?
En mode console, <20>diter <tt>french.map</tt> et d<>commenter les lignes
en parlant !
De m<>me pour <tt>french</tt> (pour Xwindow).
<sect1>PGP<p>
Attention, dans certains pays totalitaires, l'utilisation de logiciels
de cryptographie est consid<69>r<EFBFBD>e comme usage d'armes de guerre, ce qui
est punissable par la loi !
Sautez donc ce paragraphe si votre l<>gislation locale ne permet pas
d'utiliser des logiciels de cryptographie.
Premi<EFBFBD>rement, il faut se procurer pgp-international (<28> cause de
probl<EFBFBD>mes de patentes et de l<>gislation sur l'export d'armes de
guerre, il existe pgp-us et pgp-international, ce dernire <20>tant
dot<EFBFBD> d'un algorithme encore plus puissant) sur le
<htmlurl name="site norv<72>gien de PGP" url="ftp://ftp.ifi.uio.no/pub/pgp/">
Ensuite, mettre dans votre r<>pertoire maison, dans un sous
r<EFBFBD>pertoire .pgp les fichiers :
<tscreen><verb>
config.txt
language.idx
pgpdoc1.txt
pgpdoc2.txt
language.txt
fr.hlp
en.hlp
pgp.hlp
</verb></tscreen>
Enfin, <20>diter le fichier <tt>.pgp/config.txt</tt> pour y rajouter :
<tscreen><verb>
Language = fr
CharSet = latin1
</verb></tscreen>
Lisez ensuite <tt>.pgp/fr.hlp</tt> pour apprendre <20> vous servir de pgp !
<sect1>Impression en mode ascii<p>
Pour l'impression de texte simple, beaucoup d'imprimantes attendent des lettres
en codage IBM (cp850) comme sous MS DOS.
Si le fichier est cod<6F> en latin1, on doit utiliser <20> recode latin1:ibmpc <20>
(<28> placer dans les filtres lpr de /etc/ par exemple), sous peine de voir
imprimer des <20> alpha<68><61> <20> la place de <20> <20> <20>, et autres choses du m<>me genre.
Il existe d'autres utilisation au programme <tt/recode/ : <20> ibmpc:lat1 <20> ou
<EFBFBD> lat1:ibmpc <20> (de ou vers MS-DOS) ou <20> applemac <20> pour Macintosh (tm).
<sect1>Unicode/latin/cp... je n'ai pas compris ce dernier paragraphe !<p>
Voici donc plus d'explications gr<67>ce <20> Pablo Sartxaga (srtxg <20>
chanae.alphanet.ch) dans un message explicant la diff<66>rence Unicode/latin/cp :
<tscreen><verb>
DB> quand on lance <20> setfont <20> sans argument
DB> il semble qu'on obtienne le m<>me effet que setfont -u none
Normal et logique.
DB> --> en un mot la table de conversion <20> Unicode <20> est d<>sactiv<69>e
DB> ce qui transforme le <20> e accent aig<69> (dec 130) <20> en <20> th<74>ta (dec 233) <20>
Non. Il ne transforme rien du tout, il affiche tout simplement sans
*aucune* transformation au contraire, <20> toi de t'assurer que la police
que tu charges poss<73>des les glyphes <20> la bonne place par rapport au codage
de caract<63>res que tu utilises (iso-8859-1).
Autrement dit si ta police n'est pas iso-8859-1 tu dois dire <20> setfont de
faire des mappings; en particulier s ic'est une police qui utilise l'encodage
DOS cp437 tu fais <20> setfont -u cp437 nomdelapolice <20>. Moi par exemple j'aime
beaucoup la police <20> t.fnt <20> de la Slackware, et j'ai donc quelque part
dans /etc/rc.d/* une ligne <20> setfont -u cp437 t.fnt <20>
Ou alors tu modifies la police (il y a un logiciel qui fait cela avec
interface svgalib, et un autre nomm<6D> <20> chedit <20> qui permet de cr<63>er des
images an ascii-art, un fichier par caract<63>re (256 fichiers donc), il te
suffit alors de jongler avec les fichiers pour les changer de place et
r<EFBFBD>g<EFBFBD>nerer la police). Note cependant que le codage cp437 n'inclut pas
tous les caract<63>res de iso-8859-1, notamment manquent quasi toutes les
majuscules accentu<74>es, et les lettres <20><> n<>cessaires en portugais. Tu
peux toujours modifier la police pour cr<63>er ces caract<63>res manquants.
DB> sur ma Slackware 3.2, <20> aucun moment setfont n'appara<72>t dans les scripts
DB> de d<>marrage ni dans les ~/profiles et autres ~/.bashrc
Donc c'est la police dans la ROM de la carte video qui est utilis<69>e.
DB> et pourtant cette
DB> conversion est effectu<74>e correctement puisque j'ai les accents <20> l'<27>cran.
Je suppose que le kernel pr<70>suppose (<28> juste titre) que la police en ROM vid<69>o
est au codage cp437.
DB> une fois que je lance <20> setfont -u none <20> je perds donc les accents.
Normal, car d<>s lors que tu charges une police tu est suppos<6F> savoir ce que
tu veux (au contraire de la police en ROM o<> tu n'as pas le choix).
Autrefois (du temps des 1.2.* et avant) le d<>faut de setfont <20>tait cp437
(et il n'utilisait pas encore des tables Unicode, mais on pouvait
changer par \e(B et \e(K entre codage cp437 et iso (on peut toujours
d'ailleurs)), mais maintenant le d<>faut est <20> straight to font <20>, pas de
conversion.
DB> j'en conclue que Linux utilise la police r<>sidente par d<>faut de
DB> la carte EGA/VGA
DB> [Q] --> comment retrouver cette police ?
Il y a un programme nomm<6D> <20> restoretextmode <20> qui est assez populaire
aupr<EFBFBD>s des possesseurs de certaines cartes graphiques chez qui le
passage X11 -> console bousille les polices; il permet de faire un dump
sur un fichier; il faudrait donc que tu le lances avant de modifier la
police avec setfont. Le paquetage s'appelle quelque chose comme
SVGATextMode ou quelque chose d'approchant.
DB> [Q] --> quelle table appeler pour la remapper et ravoir les accents ?
setfont -u cp437 policedos
Ou sinon, si tu ne veux pas lancer setfont et tu veux donc garder la
police de la carte graphique; essaye un <20> echo -e \033(B <20> (l'ennuyant
c'est que tu dois le faire dans chaque console)
DB> (en g<>n<EFBFBD>ral setfont -u def.uni (par exemple) renvoie une
DB> erreur : PIO_UNIMAPCLR: Invalid argument et je reste
DB> en caracteres <20> graphiques <20>)
Ah ? Chez moi <20>a marche; quels kernel et kbd as-tu ?
Sinon je te conseille <20> cp437 <20> plut<75>t que <20> def <20>, ils font _presque_ la m<>me
chose, mais <20> cp437 <20> est visuellement plus agr<67>able car il remplace les
caract<EFBFBD>res non pr<70>sents dans la police par les lettres non accentu<74>es si c'est
des lettres, C pour <20> et R pour <20> et par un carr<72> blanc pour le reste, ce qui
permet de garder le formatage et la lecture agr<67>ables; <20> def <20> lui ne mets
totu simplement rien pour les caract<63>res manquants, si bien que tu te
trouves avec des trous, ce qui est l'horreur si tu <20>dites un texte par
exemple avec vi, puisque le curseur est affich<63> plusieurs caract<63>res
<EFBFBD> gauche <20> cause des caract<63>res de largeur nulle :)
Essaye aussi la police <20> t.fnt <20>, elle est assez jolie, toute en rondeurs, je la
trouve r<>posante, et quand je dois utiliser un PC avec les polices style
courier par d<>faut je trouve <20>a tr<74>s agressif je me demande comment ils
peuvent travailler avec :)
</verb></tscreen>
Lire aussi les articles de news : <20> FAQ - les accents fran<61>ais et Usenet<65> de F.
Yergeau dans les groupes fr.usenet.reponses et fr.usenet.8bits <20> ISO
8859-1 National Character Set FAQ<41> de mike (<28>) vlsivie.tuwien.ac.at dans
comp.answers .
<sect1>ncurses<p>
Rappelons que ncurses est un librairie C qui permet de manipuler facilement
l'affichage en mode console texte : fen<65>trage, lignes de saisie, <20>dition de
formulaires, couleurs, caract<63>res <20> ALT <20> ascii semi-graphique ibm, comme sous
dos...
<sect2>Introduction<p>
La version standard de curses utilise le huiti<74>me bit pour la vid<69>o
invers<EFBFBD>e (voir le flag _STANDOUT d<>fini dans /usr/include/curses.h).
Cependant, ncurses semble fonctionner en 8-bits et affiche le
iso-latin-8859-1 correctement.
<sect2>Les accents<p>
Remarque: les distributions de Linux sont livr<76>es en g<>n<EFBFBD>ral avec la
version 1.9.9e de ncurses, or il se trouve que la librairie form de
cette version est BUGG<47>E (probl<62>mes de rafra<72>chissement des fen<65>tres).
Ne pas utiliser la 1.9.9e donc si on veut travailler avec <20> form <20> : ce bug est
d'ailleurs clairement <20>nonc<6E> sur le site de ncurses, et je m'<27>tonne que
ce soit justement cette version qui soit encore livr<76>e sur la plupart
des distributions (RedHat 4.2, 5.0, 5.1, Slackware 3.2, Debian 1.9) en
tout cas.
Sympt<EFBFBD>me : la fonction wgetch() de ncurses renvoie les codes suivants :
<itemize>
<item> je tape '<27>' et wgetch retourne <20> meta-i <20> code 233 (decimal)
<item> " " '<27>' " " " <20> meta-h <20> code 234 (decimal)
<item> etc
</itemize>
C'est normal avec les polices iso-8859-1 !
Il faut installer les <20> locales <20> ou mettre <20> jour sa version de
ncurses.
<sect1>Perl<p>
Si tout d'un coup apr<70>s une mise <20> jour il raconte :
<tscreen><verb>
(guylhem@victis:guylhem)$ perl
perl: warning: Setting locale failed for the categories:
LC_CTYPE LC_COLLATE
perl: warning: Please check that your locale settings:
LC_ALL = "fr_FR",
LC_CTYPE = "ISO-8859-1",
LC_COLLATE = (unset),
LANG = "fr"
are supported and installed on your system.
perl: warning: Falling back to the "C" locale.
(guylhem@victis:guylhem)$
</verb></tscreen>
En libc6 le format des fichiers binaires de d<>finition des locales a
(encore) chang<6E> : il faut les r<>g<EFBFBD>n<EFBFBD>rer <20> partir des sources <htmlurl
name="sources WG15collection.tar.gz"
url="ftp://ftp.lip6.fr:/pub/linux/GCC"> par exemple et des programmes <20>
locale <20> et <20> localedef <20> qui sont fournis dans les sources de la libc.
Sinon on peut <20>galement se passer des locales :
<tscreen><verb>
unset LANG
unset LC_CTYPE
unset LC_COLLATE
export LC_ALL=fr_FR.ISO-8859-1
</verb></tscreen>
<sect1>Installer les locales<p>
Les <20> locales <20> sont des fichiers qui vont modifier le comportement de
certains programmes pour qu'ils s'adaptent aux <20> sp<73>cificit<69>s culturelles du
pays <20>.
Cela sert <20> r<>soudre les erreurs rapport<72>es par perl ou une mauvaise
gestion des accents par ncurses.
<itemize>
<item> r<>cup<75>rer pour la libc5 la collection de
<htmlurl name="locales POSIX"
url="ftp://ftp.lip6.fr/pub/linux/GCC/WG15-collection.linux.tar.gz">
<item> ou pour la libc6, elle est dans l'ajout
<htmlurl name="<22> glibc-localedata <20>"
url="ftp://ftp.lip6.fr/pub/gnu/glibc-localedata-2.0.6.tar.gz">
<item> copier dans le r<>pertoire /usr/share/locale les fichiers fr_FR et en_DK
(qui est inclus dans fr_FR)
<item> cr<63>er le r<>pertoire /usr/share/i18n/charmap et copier le fichier
ISO_8859-1:1987
<item> faire man localedef et lancer la commande :
<tscreen><verb>
localedef -f ISO_8859-1:1987 -i fr_FR fr
</verb></tscreen>
Ceci cr<63>era l'entr<74>e fr dans /usr/share/locale soit :
<tscreen><verb>
/usr/share/locale/fr
</verb></tscreen>
Ce r<>pertoire devrait maintenant contenir les fichiers :
<tscreen><verb>
LC_COLLATE
LC_CTYPE
LC_MESSAGES
LC_MONETARY
LC_NUMERIC
LC_TIME
</verb></tscreen>
<item> lire le fichier <20> locale.fr <20> que l'on peut trouver sur le serveur
ftp.lip6.fr (chercher sous doc, linux...) et dont la traduction fran<61>aise a <20>t<EFBFBD>
faite par &Eacute;ric DUMAS (h<>las ce doc ne traite principalement que de
LC_MESSAGES. <20> quand la suite <20>ric ? ;-) )
<item> compl<70>ter <20>ventuellement l'initialisation des variables du shell comme
d<EFBFBD>crit dans la section sur bash ou tcsh
<item> dans un programme, utilisez la fonction setlocale() (man setlocale.3)
pour fixer les param<61>tres locaux CAR le noyau linux initialise toujours cette
fonction avec l'argument une locale <20> C <20> (POSIX) donc sans accents !
<tscreen><verb>
setlocale(LC_CTYPE,"fr_FR");
</verb></tscreen>
<item> <20>a y est ! Les accents sont disponibles dans ncurses.
</itemize>
<sect2>Midnight Commander (mc)<p>
En changeant de police, il peut arriver que les lignes de cadre soient
remplac<EFBFBD>es par divers caract<63>res.
2 possibilit<69>es :
<itemize>
<item> La police charg<72>e ne dispose pas de caract<63>res dits <20> semi
graphiques <20>, qui permettent de dessiner des cadres
<item> Il y a discordance entre la police et sa table de mappage
</itemize>
Pour le premier cas, la seule solution est de changer de police, mais
dans le second cas, il suffit en g<>n<EFBFBD>ral de charger la table avec
loadunimap par exemple :
<tscreen><verb>
loadunimap lat1u.uni
loadunimap lat5u.uni
loadunimap lat9u.uni
</verb></tscreen>
<sect1>Kernel<p>
Pour mettre un support pour le clavier fran<61>ais directement dans le
kernel, ce qui est pratique pour les syst<73>mes embarqu<71>s ou ne d<>marrant que sur
disquettes, afin de gagner le maximum de place :
<tscreen><verb>
/usr/bin/loadkeys loadkeys --mktable votre-table-de-clavier.map > /usr/src/linux/drivers/char/defkeymap.c
</verb></tscreen>
<sect1>Lilo<p>
Depuis la version 20, on peut sp<73>cifier un clavier (fran<61>ais, par
exemple) au d<>marrage de LILO.
Bien sur, cela ne fait qu'<27>changer quelques touches (a/q,m/:,... pour un
clavier fr) mais cela est assez utile lorsque l'on veut taper <20> win <20>.
Je vous conseille toutefois de ne pas faire de label utilisant des
touches qui diff<66>rent entre l'AZERTY et le QWERTY, ne serait-ce que si
vous devez avoir un jour un autre utilisateur sur votre ordinateur...
Il est plus simple de faire des labels courts et d'utiliser des
programmes comme GAG ou GRUB, rempla<6C>ant fort avantageusement les lignes
de lilo par un magnifique menu graphique dans le cas de GAG.
<sect1>Groff (man)<p>
Sur certaines distributions, le programme man n'est pas configur<75> pour
afficher les accents.
Si vous rencontrez ce probl<62>me, <20>ditez son fichier de configuration
(/etc/man.config sur les distributions actuelles) et localisez une ligne
ressemblant <20> cela :
<tscreen><verb>
NROFF /usr/bin/groff -Tascii -mandoc
</verb></tscreen>
Remplacez-l<> par :
<tscreen><verb>
NROFF /usr/bin/groff -Tlatin1 -mandoc
</verb></tscreen>
Les vieilles versions de man utilisent aussi col, et le point suivant
s'applique aussi.
<sect1>Divers<p>
Une belle discussion sur le th<74>me de l'ISO-8859-1 et sur <20> comment
manipuler les caract<63>res 8-bits <20> est
<htmlurl name="disponible"
url="ftp://grasp.insa-lyon.fr/pub/faq/fr/accents">
<sect>R<>glage du clavier pour les applications X
<sect1>Les xterminaux (xterm, nxterm, rxvt...)<p>
Les faire fonctionner avec toutes les touches standard du clavier 102 touches
rel<EFBFBD>ve du miracle, quant aux accents, seule une recompilation vous
permettra de les utiliser !
Pour xterm, essayez de mettre dans votre <tt>.Xdefaults</tt> :
<tscreen><verb>
XTerm*eightBitInput: true
XTerm*eightBitOutput: true
*customization: -color
XTerm*VT100*Translations: #override\n\
XTerm*pointerColor: red
None<Key>Begin: string(0x1b) string("[1~")\n\
None<Key>End: string(0x1b) string("[4~")\n\
None<Key>Prior: scroll-back(1,halfpage)\n\
None<Key>Next: scroll-forw(1,halfpage)\n\
Shift<Key>Prior: scroll-back(1,page)\n\
Shift<Key>Next: scroll-forw(1,page)
XTerm*fontMenu*fontdefault*Label: Default
XTerm*VT100*font: 9x15
XTerm*fontMenu*font1*Label: Illisible
XTerm*VT100*font1: nil2
XTerm*fontMenu*font2*Label: Minuscule
XTerm*VT100*font2: 5x7
XTerm*fontMenu*font3*Label: Petit
XTerm*VT100*font3: 6x10
XTerm*fontMenu*font4*Label: Normal
XTerm*VT100*font4: fixed
XTerm*fontMenu*font5*Label: Moyen
XTerm*VT100*font5: 7x13
XTerm*fontMenu*font6*Label: Tres grand
XTerm*VT100*font6: 10x20
</verb></tscreen>
Dans <tt>.inputrc</tt> :
<tscreen><verb>
# pour rxvt
"\e[7&tilde;":beginning-of-line
"\e[8&tilde;":end-of-line
# pour xterm
"\e[H": beginning-of-line
"\e[F": end-of-line
</verb></tscreen>
Mais ces deux solutions ne vous garantissent pas de r<>soudre tous les
probl<EFBFBD>mes de rxvt et de xterm ...
Pour les r<>soudre sans cr<63>er de fichiers dans
<tt>/usr/X11R6/lib/X11/app-defaults</tt>, je tiens sinon <20> votre
disposition un xiterm, un terminal X supportant *TOUTES* les touches des
claviers standard, avec Home, End, Page_Up (...) et m<>me le
pav<EFBFBD> num<75>rique, fonctionnant comme en mode console, i.e.
Shift-Page_Up permettant de faire d<>filer une page, voire mieux : le
pav<EFBFBD> num<75>rique reconnaissant enfin la diff<66>rence entre
Verr. Num allum<75> et Verr. Num <20>teint.
X international terminal (xiterm pour les intimes) est bien s<>r sous GPL et
mis <20> jour pour suivre parall<6C>lement l'<27>volution de rxvt.
Sur par exemple <htmlurl name="mon site"
url="http://metalab.unc.edu/guylhem/xiterm"> vous trouverez donc xiterm,
qui remplace votre xterm classique en y apportant la couleurs, les
accents et les touches <20>tendues.
Pour l'installer, compilez-le, devenez root et tapez :
<tscreen><verb>
rm /usr/X11R6/bin/xterm
rm /usr/X11R6/lib/X11/app-defaults/xterm
rm /usr/X11R6/lib/X11/app-defaults/rxvt
rm /usr/X11R6/lib/X11/app-defaults/Xterm
rm /usr/X11R6/lib/X11/app-defaults/XTerm
rm /usr/X11R6/lib/X11/app-defaults/Rxvt
rm /usr/X11R6/lib/X11/app-defaults/RXvt
cp xiterm /usr/local/bin
ln -sf /usr/local/bin/xiterm /usr/X11R6/bin/xterm
ln -sf /usr/local/bin/xiterm /usr/X11R6/bin/rxvt
</verb></tscreen>
<sect1>Les applications Motif<p>
L<EFBFBD>, je n'ai malheureusement aucun rem<65>de miracle !
Il faudrait modifier le code source, code indiqu<71> plus haut, pour
remplacer XLookupString par XmLookupString.
Utilisez les possibilit<69>s du fichier french au lieu des touches mortes
(AltGr (voyelle) : voyelle accent circonflexe... ) !
<sect1>Le manuel<p>
Pablo Saratxaga tient <20> votre disposition un xman modifi<66>
pour qu'il supporte la variable <20> LANG <20> et puisse afficher les pages en
d'autres langues qu'anglais.
Il est disponible sur le lip6 en <htmlurl name="sources"
url="ftp.lip6.fr:/pub/linux/distributions/redhat-contrib/SRPMS/xman-3.1.6-3.src.rpm">
ou en <htmlurl name="binaires"
url="ftp.lip6.fr:/pub/linux/distributions/redhat-contrib/i386/xman-3.1.6-3.i386.rpm">
<sect1>NumLock<p>
Pour l'activer sous X, mettre en commentaire ServerNumLock dans la
section keyboard de XF86Config, puis rajouter au dessous Xleds 2, ce qui
allumera la led.
Attention, ce conseil ne s'applique que lorsque l'on n'utilise pas xkb,
i.e. qu'on met XkbDisable dans XF86Config...
<sect1>XDM<p>
/etc/X11/xdm/Xresources sert <20> ne rencontrer aucun probl<62>me avec les
touches <20> sp<73>ciales <20> (Home, End ...) sous X.
<tscreen><verb>
xlogin*login.translations: #override\
Ctrl<Key>R: abort-display() \n\
<Key>BackSpace: delete-previous-character() \n\
<Key>Home: move-to-begining() \n\
<Key>Delete: delete-character() \n\
<Key>End: move-to-end() \n\
<Key>Left: move-backward-character() \n\
<Key>Return: set-session-argument() finish-field() \n\
<Key>Right: move-forward-character()
</verb></tscreen>
<sect>Remerciements<p>
Ce document ne serait pas ce qu'il est sans l'aide de Nat Makar<61>vitch
(nat <20> nataa.fr.eu.org) qui l'a relu et m'a aid<69> <20> le modifier de nombreuses
fois.
Un excellent document plus g<>n<EFBFBD>rique, traitant de l'installation par ex,
est le Guide du Rootard, disponible sur <htmlurl
name="freenix"
url="http://www.freenix.fr/linux/Guide"> ou <htmlurl
name="le lip6"
url="ftp://ftp.lip6.fr:/pub/linux/french/docs/">
Remercions enfin par ordre alphab<61>tique ces contributeurs :
<verb>
Jean-Michel Antoine
Michel Billaud
Chmouel Boudjnah
Stephane Bortzmeyer
Denis Braussen
R<EFBFBD>my Card
Julien Cassaigne
Xavier Cazin
Laurent Chemla
Ren<EFBFBD> Cougnenc
Bruno Cornec
Yann Dirson
&Eacute;ric Dubreuil
&Eacute;ric Dumas
Arnaud Gomes-do-Vale
Pierre Ficheux
Laurent Frigault
Hugolino
Antoine Leca
Frederic Lepied
Jeannot Langlois
Stephane Marzloff
Marc Merlin
Thomas Parmelan
Fr<EFBFBD>d<EFBFBD>ric Petit
Thomas Quinot
David Robert
Olivier Robert
Benjamin Ryzman
Pablo Saratxaga
Julien Simon
Lo<EFBFBD>c Tortay
J.M. Vansteene
</verb>
Surtout, si je vous oublie, signalez-le moi !
De m<>me si vous ne voulez plus figurer dans cette liste...
2000-10-05 13:59:58 +00:00
Envoyez moi vos suggestions et modifications (guylhem <20> metalab.unc.edu), je me
ferai un plaisir de les int<6E>grer dans les prochaines versions !
Signalez-moi aussi les erreurs : cet HOWTO est en perp<72>tuel changement, avec
des nouveaut<75>s incluses <20> chaque version ; des erreurs peuvent facilement s'y
glisser !
</article>