Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/03/2016, à 16:45

Arbiel

Prise en compte des caractères diacritiques

Bonsoir

Je ne parviens pas à comprendre la prise en compte des caractères diacritiques, ou plus exactement quel fichier xkb va chercher pour traiter les diacritiques.

La page de manuel Compose présente les informations suivantes

man Compose
…
       The compose file is searched for in  the following order:

       -      If  the  environment variable $XCOMPOSEFILE is set, its value is
              used as the name of the Compose file.

       -      If the user's home directory has a file named .XCompose,  it  is
              used as the Compose file.

       -      The  system  provided compose file is used by mapping the locale
              to a compose file from the  list  in  /usr/share/X11/locale/com‐
              pose.dir.

      Compose files can use an "include" instruction.  This allows local mod‐
       ifications to be made to existing compose files without  including  all
       of  the  content directly.  For example, the system's iso8859-1 compose
       file can be included with a line like this:
           include "%S/iso8859-1/Compose"

       There are several substitutions that can be made in the  file  name  of
       the include instruction:

       %H  expands  to  the user's home directory (the $HOME environment vari‐
           able)

Si je comprends bien ce texte, xkb va chercher le fichier compose à l'endroit indiqué par $XCOMPOSEFILE, si cette variable contient une référence, sinon xkb utilise mon fichier ~/.XCompose, s'il existe, sinon, il va chercher le fichier indiqué dans /usr/share/X11/locale/compose.dir pour ma variable LANG.

Comme j'ai des difficultés à mettre au point mon fichier compose, j'ai modifié quelques fichiers pour essayer d'y voir clair.

Ma configuration est présentée dans les quelques lignes ci-dessous :

remi@remi-Vostro-3550:~$ [ -z "${XCOMPOSEFILE}" ] && echo "La variable XCOMPOSEFILE n'est pas initialisée"  || echo "XCOMPOSEFILE=${XCOMPOSEFILE}"; 
La variable XCOMPOSEFILE n'est pas initialisée
remi@remi-Vostro-3550:~$ cat "${HOME}/.XCompose"
include "%H/Documents/Programmation/X11/fr.bepo.compose"
include "%H/Documents/Programmation/X11/gr.bepo.compose"
remi@remi-Vostro-3550:~$ for s in fr gr;   do echo "fichier= ${HOME}/Documents/Programmation/X11/${s}.bepo.compose" && cat "${HOME}/Documents/Programmation/X11/${s}.bepo.compose" && grep "<i>" "${HOME}/Documents/Programmation/X11/${s}.bepo.compose"; done;
fichier= /home/remi/Documents/Programmation/X11/fr.bepo.compose
# lettres avec accent circonflexe
<dead_circumflex> <a>            	: "â"
<dead_circumflex> <A>            	: "Â"
<dead_circumflex> <e>            	: "ê"
<dead_circumflex> <E>            	: "Ê"
<dead_circumflex> <i>            	: "ï"
<dead_circumflex> <I>            	: "Î"
<dead_circumflex> <o>            	: "ô"
<dead_circumflex> <O>            	: "Ô"
<dead_circumflex> <u>            	: "û"
<dead_circumflex> <U>            	: "Û"
# e avec accent aigu
<dead_acute> <e>            	    : "é"
<dead_acute> <E>            	    : "É"
# lettres avec accent grave
<dead_grave> <a>                 	: "à"
<dead_grave> <A>            	    : "À"
<dead_grave> <e>            	    : "è"
<dead_grave> <E>            	    : "È"
<dead_grave> <u>            	    : "ù"
<dead_grave> <U>            	    : "Ù"
# lettres avec tréma
<dead_diaeresis> <e>            	: "ë"
<dead_diaeresis> <E>            	: "Ë"
<dead_diaeresis> <i>            	: "ï"
<dead_diaeresis> <I>            	: "Ï"
<dead_diaeresis> <u>            	: "ü"
<dead_diaeresis> <U>            	: "Ü"
<dead_diaeresis> <y>            	: "ÿ"
<dead_diaeresis> <Y>            	: "Ÿ"


<dead_circumflex> <i>            	: "ï"
<dead_diaeresis> <i>            	: "ï"
fichier= /home/remi/Documents/Programmation/X11/gr.bepo.compose
<dead_dasia> <Greek_tau>       	: Greek_theta   U03B8 # GREEK SMALL LETTER THETA
remi@remi-Vostro-3550:~$ echo "Ma variable LANG vaut $LANG" ;
Ma variable LANG vaut fr_FR.UTF-8
remi@remi-Vostro-3550:~$ grep "fr_FR.UTF-8$" /usr/share/X11/locale/compose.dir
fr_FR.UTF-8/Compose		fr_FR.UTF-8
fr_FR.UTF-8/Compose:		fr_FR.UTF-8
remi@remi-Vostro-3550:~$ ls -l /usr/share/X11/locale/fr_FR.UTF-8/Compose
-rw-r--r-- 1 root root 0 mars  28 15:09 /usr/share/X11/locale/fr_FR.UTF-8/Compose
remi@remi-Vostro-3550:~$ cat /usr/share/X11/locale/fr_FR.UTF-8/Compose
remi@remi-Vostro-3550:~$ 

Ces lignes montrent que la variable XCOMPOSEFILE n'est pas initialisée. Le fichier .XCompose de mon répertoire personnel existe et comporte 2 lignes qui provoquent l'inclusion des deux fichiers "${HOME}/Documents/Programmation/X11/fr.bepo.compose" et "${HOME}/Documents/Programmation/X11/fr.bepo.compose" dans le fichier compose. Le répertoire /usr/share/X11/locale/fr_FR.UTF-8/Compose existe, et ne contient strictement rien.

Au total mon fichier compose comporte deux lignes pour l'application de l'accent circonflexe et du tréma sur le i minuscule. J'ai modifié l'application de l'accent circonflexe pour que le caractère produit soit i avec tréma. Or il se trouve que la succession de <dead_circumflex> et de <i> donne i avec un accent circonflexe et non i avec un tréma.

Par ailleurs, je viens de voir que le tréma appliqué a "t" donne ẗ, alors que rien dans mes fichiers ne définit cette application.

J'en déduis que xkb va chercher ailleurs le fichier compose.

Merci d'avance à quiconque pourra m'indiquer ce qu'il en est réellement.

Arbiel


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne