5. XFree

5.1. Introduction

Il y a quelques ann�es, � xmodmap � servait � changer les tables de clavier sous XFree, un fichier de configuration d'ordinaire nomm� /usr/X11/lib/X11/xinit/.Xmodmap �tant pris en charge gr�ce � votre .xinitrc ou /etc/X11/xinit/xinitrc

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

Les utilisateurs d�sirant personnaliser leur table xmodmap employaient le programme � xkeycaps �.

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

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

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

Sous XFree version 3.2 et post�rieures, � xkb � rendit xmodmap d�finitivement obsol�te.

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

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

5.2. Mal programmer

� chaque programme de bien g�rer les touches mortes au lieu de faire confiance � X pour cette t�che.

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

5.3. Le clavier en pratique

Quelle histoire compliqu�e !

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

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

5.3.1. a) Solution utilisant xmodmap

Taper :

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

5.3.2. b) Solution utilisant xkb (recommand�e)

Taper :

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

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

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

Pour cette partie Xkb, certains pr�f�rent :
	XkbKeymap       "xfree86(fr-latin9)"
 XkbKeycodes     "xfree86"
 XkbSymbols      "en_US(pc101)+fr-latin9"
 XkbGeometry     "pc(pc101)"

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

5.3.3. c) Solution du compose

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

Dans /usr/X11R6/lib/X11/locale/iso8859-1/Compose se trouve une table de � correspondance � entre deux caract�res et un r�sultat ; les deux caract�res sont �m�lang�s� lors de l'appui sur la touche Compose : par exemple;
	COMPOSE suivi de � e � puis � ^ �

a toutes les chances de vous donner �, y compris dans l'ordre oppos� (� ^ � puis � e �)

Mais pour utiliser la touche Compose, vous devez l'affecter � une touche !

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

	ScrollLock       Compose

dans la section Keyboard.

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

5.3.4. d) Solution modifiant la libX11

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

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

	~ + / = ~/

Pour l'utiliser :

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

  • Extrayez le fichier libX11.so.6.1 ;

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

  • Ex�cutez ldconfig ;

  • D�sactivez l'extension XKB en utilisant l'option XkbDisable dans la section Keyboard de votre XF86Config.

5.3.5. e) Est-ce n�cessaire ?

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

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

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

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

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

Il convient donc d'utiliser une table adapt�e avec xkb.

5.4. � latin9 � ou � latin1 � ?

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

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

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

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

5.5. Table de correspondances

Par exemple :

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.

5.6. Les polices ISO 8859-15 latin 9 sous X

Il est bien d'avoir une table de clavier compatible latin 9, mais sans police adapt�e jamais vous ne verrez les caract�res rajout�s dans cette norme.

Il faut donc utiliser l'utilitaire de conversion � bdftopcf � qui en quelque sorte permet de compiler les polices de caract�res fournies.

Placez-vous dans le r�pertoire de l'archive que vous avez r�cup�r� puis sous root, taper par exemple pour Xlat9-10x20.bdf ou un autre bdf :

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

Cel� cr�e un fichier � Xlat9-10x20-lat9.pcf � qu'il faut compresser avec gzip, on obtient alors le fichier � Xlat9-10x20-lat9.pcf.gz � qui doit �tre mis dans le r�pertoire ad�quat, pour lequel l'index des polices de caract�res sera mis � jour.

Alors, ajoutez la table de composition latin9 aux compositions par d�faut de X, sp�cifiques � l'iso 8859-1 :

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

Nous faisons un cat vers l'ISO 8859-1, car X ne reconna�t pas l'ISO 8859-15 latin9.

De l�, red�marrer X ou taper sous son compte d'utilisateur normal :

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

Si vous utilisez xmodmap, lancez :

	xmodmap ~/.Xmodmap

Pour choisir les polices latin9, lancer xfontsel et chercher les encodages iso8859-15.

Ou plus simplement, taper :

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

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

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

Cela lance un terminal X utilisant une des polices latin9.

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:25