#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