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