348 lines
13 KiB
HTML
348 lines
13 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
|
|
<TITLE>Le Francophones-HOWTO : Linux & la langue française: XFree</TITLE>
|
|
<LINK HREF="Francophones-HOWTO-6.html" REL=next>
|
|
<LINK HREF="Francophones-HOWTO-4.html" REL=previous>
|
|
<LINK HREF="Francophones-HOWTO.html#toc5" REL=contents>
|
|
</HEAD>
|
|
<BODY>
|
|
<A HREF="Francophones-HOWTO-6.html">Next</A>
|
|
<A HREF="Francophones-HOWTO-4.html">Previous</A>
|
|
<A HREF="Francophones-HOWTO.html#toc5">Contents</A>
|
|
<HR>
|
|
<H2><A NAME="s5">5. XFree</A></H2>
|
|
|
|
<P>
|
|
<P>
|
|
<H2><A NAME="ss5.1">5.1 Introduction</A>
|
|
</H2>
|
|
|
|
<P>
|
|
<P>Il y a quelques années, « xmodmap » servait à changer les tables de
|
|
clavier sous XFree, un fichier de configuration d'ordinaire nommé
|
|
/usr/X11/lib/X11/xinit/.Xmodmap étant pris en charge grâce à votre
|
|
<CODE>.xinitrc</CODE> ou <CODE>/etc/X11/xinit/xinitrc</CODE>
|
|
<P>Pour convertir une table console correcte, on utilisait « mk_modmap » livré avec
|
|
l'archive kbd et généralement installé en /usr/lib/kbd/keytables
|
|
<P>Les utilisateurs désirant personnaliser leur table xmodmap employaient le
|
|
programme « xkeycaps ».
|
|
<P>Puis XFree 2.1 et les version ultérieures ont reconnu la disposition des
|
|
touches du clavier gérée par « loadkeys », rendant théoriquement
|
|
xmodmap inutile.
|
|
<P>Mais la gestion de la touche « COMPOSE » assurée par XFree 3.1 laissait
|
|
un peu à désirer, la table héritée de « loadkeys » ne servant guère.
|
|
<P>Il fallait donc continuer à employer xmodmap, l'utilitaire logiciel standard
|
|
permettant d'obliger le serveur X à associer les événements souris/clavier à
|
|
des caractères.
|
|
<P>Sous XFree version 3.2 et postérieures, « xkb » rendit xmodmap définitivement
|
|
obsolète.
|
|
<P>Mais ne voilà-t-il pas les rumeurs qui voulaient que les prochaines versions
|
|
de XFree ne supporte plus les touches mortes se sont confirmées !!!
|
|
<P>Dans la distribution X11 du X Consortium, donc XFree86, qui en est
|
|
directement issu, il n'existe plus de mécanisme général de gestion des
|
|
touches mortes, ou des solutions approximatives obligeant à supprimer
|
|
aussi xkb ou modifier des bibliothèques de programmes !
|
|
<P>
|
|
<H2><A NAME="ss5.2">5.2 Mal programmer</A>
|
|
</H2>
|
|
|
|
<P>
|
|
<P>À chaque programme de bien gérer les touches mortes au lieu de faire
|
|
confiance à X pour cette tâche.
|
|
<P>En réalité, il n'est pas compliqué de gérer des touches mortes, il suffit
|
|
d'utiliser la bonne fonction, XmbLookupString() dans les programmes
|
|
Motif, au lieu de XLookupString().
|
|
<P>
|
|
<H2><A NAME="ss5.3">5.3 Le clavier en pratique</A>
|
|
</H2>
|
|
|
|
<P>
|
|
<P>Quelle histoire compliquée !
|
|
<P>De ce fait, elles ne fonctionnent que pour les clients X
|
|
« internationalisés », c'est-à-dire qui gèrent eux-mêmes les problèmes
|
|
liés aux méthodes d'entrée de données des différentes langues
|
|
nationales.
|
|
<P>Ceci est très gênant lorsqu'on veut pouvoir saisir du texte
|
|
comportant des lettres accentuées, alors que le client utilisé
|
|
n'est pas internationalisé !
|
|
<P>
|
|
<H3>a) Solution utilisant xmodmap</H3>
|
|
|
|
<P>
|
|
<P>Taper :
|
|
<P>
|
|
<BLOCKQUOTE><CODE>
|
|
<PRE>
|
|
cp fr-latin9.xmod /usr/X11R6/lib/X11/xinit/Xmodmap
|
|
cp fr-latin9.xmod ~/.Xmodmap
|
|
</PRE>
|
|
</CODE></BLOCKQUOTE>
|
|
<P>
|
|
<H3>b) Solution utilisant xkb (recommandée)</H3>
|
|
|
|
<P>
|
|
<P>Taper :
|
|
<P>
|
|
<BLOCKQUOTE><CODE>
|
|
<PRE>
|
|
cp fr-latin9 /usr/X11R6/lib/X11/xkb/symbols
|
|
</PRE>
|
|
</CODE></BLOCKQUOTE>
|
|
<P>Puis éditer votre <CODE>XF86Config</CODE> pour y rajouter dans la section « Keyboard
|
|
» les lignes xkb idoines :
|
|
<P>
|
|
<BLOCKQUOTE><CODE>
|
|
<PRE>
|
|
Section "Keyboard"
|
|
Protocol "Standard"
|
|
AutoRepeat 500 30
|
|
LeftAlt Meta
|
|
RightAlt ModeShift # Important pour Alt-gr, mais dans les
|
|
# versions récentes de XFree, AltGr et
|
|
# RightAlt sont synonymes.
|
|
|
|
ScrollLock Compose # Pour faire des caractères spéciaux.
|
|
# Utiliser sinon une des 3 touches des
|
|
# nouveaux claviers 105 touches...
|
|
|
|
RightCtl Control # Garder la touche normale
|
|
|
|
XkbKeycodes "xfree86"
|
|
XkbRules "xfree86"
|
|
XkbTypes "default"
|
|
XkbCompat "default"
|
|
XkbSymbols "fr-latin9(pc105)"
|
|
XkbGeometry "pc(pc105)"
|
|
XkbModel "pc105"
|
|
|
|
EndSection
|
|
</PRE>
|
|
</CODE></BLOCKQUOTE>
|
|
<P>Pour cette partie Xkb, certains préfèrent :
|
|
<BLOCKQUOTE><CODE>
|
|
<PRE>
|
|
XkbKeymap "xfree86(fr-latin9)"
|
|
XkbKeycodes "xfree86"
|
|
XkbSymbols "en_US(pc101)+fr-latin9"
|
|
XkbGeometry "pc(pc101)"
|
|
</PRE>
|
|
</CODE></BLOCKQUOTE>
|
|
<P>Bien sur, remplacer « fr » par « cn », « be », « ch » ou « usx » selon
|
|
votre clavier...
|
|
<P>
|
|
<H3>c) Solution du compose</H3>
|
|
|
|
<P>
|
|
<P>Une autre méthode pour obtenir des caractères 8 bits :
|
|
<P>Dans <CODE>/usr/X11R6/lib/X11/locale/iso8859-1/Compose</CODE> se trouve une
|
|
table de « correspondance » entre deux caractères et un résultat ; les
|
|
deux caractères sont «mélangés» lors de l'appui sur la touche Compose :
|
|
par exemple;
|
|
<BLOCKQUOTE><CODE>
|
|
<PRE>
|
|
COMPOSE suivi de « e » puis « ^ »
|
|
</PRE>
|
|
</CODE></BLOCKQUOTE>
|
|
<P>a toutes les chances de vous donner ê, y compris dans l'ordre opposé («
|
|
^ » puis « e »)
|
|
<P>Mais pour utiliser la touche Compose, vous devez l'affecter à une touche !
|
|
<P>Le paramétrage préconisé, réglé dans XF86Config, la fait correspondre à
|
|
la touche « Arrêt Défil » inutile sous X, par la commande :
|
|
<P>
|
|
<BLOCKQUOTE><CODE>
|
|
<PRE>
|
|
ScrollLock Compose
|
|
</PRE>
|
|
</CODE></BLOCKQUOTE>
|
|
<P>dans la section Keyboard.
|
|
<P>Attention, sous Linux en mode console, cette touche est utile (pour
|
|
bloquer temporairement la console virtuelle) et c'est « Impr Écran » ou
|
|
« Print Screen » qui, ne servant à rien, est affectée à « Compose ».
|
|
<P>
|
|
<H3>d) Solution modifiant la libX11</H3>
|
|
|
|
<P>
|
|
<P>Thomas Quinot <Thomas.Quinot(à)cuivre.fdn.fr> vous propose donc sa
|
|
<CODE>libX11</CODE> modifiée, qui gère les touches mortes de
|
|
manière transparente pour tous les clients.
|
|
<P>Elle permet également de traiter les séquences composées
|
|
inconnues comme des paires de caractères, par exemple :
|
|
<P>
|
|
<BLOCKQUOTE><CODE>
|
|
<PRE>
|
|
~ + / = ~/
|
|
</PRE>
|
|
</CODE></BLOCKQUOTE>
|
|
<P>Pour l'utiliser :
|
|
<UL>
|
|
<LI>Récupérez libX11-XF3.3.1.tar.gz ;</LI>
|
|
<LI>Extrayez le fichier <CODE>libX11.so.6.1</CODE> ;</LI>
|
|
<LI>Placez-le dans <CODE>/usr/X11R6/lib/</CODE> ;</LI>
|
|
<LI>Exécutez <CODE>ldconfig</CODE> ;</LI>
|
|
<LI>Désactivez l'extension XKB en utilisant l'option
|
|
<CODE>XkbDisable</CODE> dans la section <CODE>Keyboard</CODE> de votre
|
|
<CODE>XF86Config</CODE>.</LI>
|
|
</UL>
|
|
<P>
|
|
<H3>e) Est-ce nécessaire ?</H3>
|
|
|
|
<P>
|
|
<P>Personnellement, je vous recommande de ne pas toucher à la libX11,
|
|
d'oublier xmodmap et de l'alternative xkb + fichiers latin9 en
|
|
attendant un autre changement de la politique du X Consortium envers
|
|
les touches mortes (ou en rajoutant les options d'internationalisation
|
|
au code source de vos programmes.)
|
|
<P>Actuellement, si vous n'avez pas de répertoire
|
|
<CODE>/usr/X11R6/lib/X11/xkb/symbols/</CODE> cela signifie que vous
|
|
n'utilisez pas xkb : procurez-vous donc une version plus récente de X
|
|
window !
|
|
<P>Sans xkb, XFree se rabattra par défaut sur votre configuration de
|
|
clavier pour Linux avec loadkeys.
|
|
<P>Toutefois, la translation n'est pas parfaite et je vous recommanderais
|
|
plutôt d'éviter cette option, aussi bien que l'ancien gestionnaire de
|
|
clavier <CODE>Xmodmap</CODE>.
|
|
<P>Il se peut aussi que sans aucune commande pour xkb, XFree vous considère
|
|
comme utilisateur d'un clavier 7 bits !
|
|
<P>Il convient donc d'utiliser une table adaptée avec xkb.
|
|
<P>
|
|
<H2><A NAME="ss5.4">5.4 « latin9 » ou « latin1 » ?</A>
|
|
</H2>
|
|
|
|
<P>
|
|
<P>Je vous conseille de choisir les tables <CODE>latin9</CODE> que je maintiens à
|
|
jour, plus récentes que les versions <CODE>latin1</CODE>, permettant d'utiliser
|
|
de multiples améliorations, détaillées dans la section clavier sous
|
|
linux-console, pour disposer du plus de confort possible
|
|
et plus adaptées car maintenu par des francophones.
|
|
<P>Les nombreuses améliorations dont elles bénéficient permettent de
|
|
pallier au déficiences de nombreux programmes.
|
|
<P>Par exemple, certains programmes en Motif comme Netscape (tm) ne savent
|
|
pas encore gérer les touches mortes ... donc impossible de taper par
|
|
exemple des ê ou des î sur les claviers des Belges et Français, puisque
|
|
la touche morte « accent circonflexe » est le seul moyen d'obtenir ces
|
|
caractères !
|
|
<P>« fr-latin9 » répond à ce problème en proposant une solution de
|
|
remplacement : AltGr (voyelle) permet d'obtenir la voyelle avec un
|
|
accent grave, AltGr+Shift (voyelle) permet d'obtenir la voyelle avec un
|
|
tréma !
|
|
<P>
|
|
<H2><A NAME="ss5.5">5.5 Table de correspondances</A>
|
|
</H2>
|
|
|
|
<P>
|
|
<P>
|
|
<UL>
|
|
<LI> AltGr (voyelle) : voyelle accent grave</LI>
|
|
<LI> AltGr + Shift (voyelle) : voyelle tréma</LI>
|
|
<LI> AltGr (touche au dessous de la voyelle) : voyelle majuscule accent grave</LI>
|
|
<LI> AltGr + Shift (touche au dessous de la voyelle) : voyelle majuscule
|
|
tréma</LI>
|
|
<LI> AltGr + Shift (minuscule accentuée) : majuscule accentuée</LI>
|
|
</UL>
|
|
<P>Par exemple :
|
|
<P>
|
|
<UL>
|
|
<LI> AltGr (a) : â</LI>
|
|
<LI> AltGr (q) : Â</LI>
|
|
<LI> AltGr + Shift (ù) : Ù</LI>
|
|
</UL>
|
|
<P>L'astuce marche aussi pour le c cédille :
|
|
<P>
|
|
<UL>
|
|
<LI> AltGr + Shift (ç) : Ç</LI>
|
|
</UL>
|
|
<P>Donc même dans les pires conditions, si aucune touche morte ne
|
|
fonctionne, on peut quand même accéder à toutes les
|
|
voyelles accentuées, majuscules et minuscules !
|
|
<P>Vous y trouverez en plus les guillemets français (« »), les symboles
|
|
employés en physique (ß, å, delta, phi ...), des signes
|
|
de monnaies (yen, cent) ou de copyright (<CODE>tm</CODE>, ©) ainsi que des
|
|
lettres d'autres langues (Ø, Æ ...).
|
|
<P>Tous ces signes s'obtiennent grâce à AltGr (lettre), par exemple
|
|
AltGr (b) donne ß, AltGr (r) donne <CODE>tm</CODE>, AltGr (y) donne yen...
|
|
<P>Pour vous rapeller simplement de tout celà, tapez par exemple :
|
|
<P>
|
|
<BLOCKQUOTE><CODE>
|
|
<PRE>
|
|
more /usr/lib/kbd/keytables/i386/azerty/fr-latin9.map
|
|
</PRE>
|
|
</CODE></BLOCKQUOTE>
|
|
<P>Pour ce qui est du choix entre latin1 et latin9... à vous de voir !
|
|
<P>Un conseil : essayez l'un puis l'autre si vous avez le temps.
|
|
<P>
|
|
<H2><A NAME="ss5.6">5.6 Les polices ISO 8859-15 latin 9 sous X</A>
|
|
</H2>
|
|
|
|
<P>
|
|
<P>Il est bien d'avoir une table de clavier compatible latin 9, mais sans
|
|
police adaptée jamais vous ne verrez les caractères rajoutés dans cette
|
|
norme.
|
|
<P>Il faut donc utiliser l'utilitaire de conversion « bdftopcf » qui en
|
|
quelque sorte permet de compiler les polices de caractères fournies.
|
|
<P>Placez-vous dans le répertoire de l'archive que vous avez récupéré puis
|
|
sous root, taper par exemple pour Xlat9-10x20.bdf ou un autre bdf :
|
|
<P>
|
|
<BLOCKQUOTE><CODE>
|
|
<PRE>
|
|
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
|
|
</PRE>
|
|
</CODE></BLOCKQUOTE>
|
|
<P>Celà crée un fichier « Xlat9-10x20-lat9.pcf » qu'il faut compresser avec
|
|
gzip, on obtient alors le fichier « Xlat9-10x20-lat9.pcf.gz » qui doit
|
|
être mis dans le répertoire adéquat, pour lequel l'index des polices de
|
|
caractères sera mis à jour.
|
|
<P>Alors, ajoutez la table de composition latin9 aux compositions par
|
|
défaut de X, spécifiques à l'iso 8859-1 :
|
|
<P>
|
|
<BLOCKQUOTE><CODE>
|
|
<PRE>
|
|
cat XCompose-lat9 >> /usr/X11R6/lib/X11/locale/iso8859-1/Compose
|
|
</PRE>
|
|
</CODE></BLOCKQUOTE>
|
|
<P>Nous faisons un cat vers l'ISO 8859-1, car X ne reconnaît pas l'ISO
|
|
8859-15 latin9.
|
|
<P>De là, redémarrer X ou taper sous son compte d'utilisateur normal :
|
|
<P>
|
|
<BLOCKQUOTE><CODE>
|
|
<PRE>
|
|
xset +fp /usr/X11R6/lib/X11/fonts/misc
|
|
</PRE>
|
|
</CODE></BLOCKQUOTE>
|
|
<P>Si vous utilisez xmodmap, lancez :
|
|
<P>
|
|
<BLOCKQUOTE><CODE>
|
|
<PRE>
|
|
xmodmap ~/.Xmodmap
|
|
</PRE>
|
|
</CODE></BLOCKQUOTE>
|
|
<P>Pour choisir les polices latin9, lancer xfontsel et chercher les
|
|
encodages iso8859-15.
|
|
<P>Ou plus simplement, taper :
|
|
<P>
|
|
<BLOCKQUOTE><CODE>
|
|
<PRE>
|
|
grep Xlat9-10x20.pcf /usr/X11R6/lib/X11/fonts/misc/*
|
|
</PRE>
|
|
</CODE></BLOCKQUOTE>
|
|
<P>Puis utiliser le second paramètre comme nom de police, par exemple avec
|
|
rxvt, xiterm, aterm ou wterm:
|
|
<P>
|
|
<BLOCKQUOTE><CODE>
|
|
<PRE>
|
|
aterm -fn -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso8859-15
|
|
</PRE>
|
|
</CODE></BLOCKQUOTE>
|
|
<P>Cela lance un terminal X utilisant une des polices latin9.
|
|
<P>
|
|
<HR>
|
|
<A HREF="Francophones-HOWTO-6.html">Next</A>
|
|
<A HREF="Francophones-HOWTO-4.html">Previous</A>
|
|
<A HREF="Francophones-HOWTO.html#toc5">Contents</A>
|
|
</BODY>
|
|
</HTML>
|