« Compose » : différence entre les versions

De Disposition de clavier bépo
(Modification du lien vers UTF-8)
 
(61 versions intermédiaires par 20 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
Comme promis [http://gpl.insa-lyon.fr/pipermail/dvorak-fr/2007-December/002520.html ici] voici un début de base de données Compose pour GNU/Linux.
{{navigation|icone=Méthodologie.png|En savoir plus}}
{{Unicode}}


== Mais qu’est-ce donc que Compose ? ==
'''Compose''' est un mécanisme pour GNU/Linux (venant d’Unix) qui permet de ''taper des caractères à la volée'' en combinant plusieurs [[Touche morte|touches mortes]]. Il est également disponible sous Windows grâce au petit logiciel [[Windows#Touche compose|WinCompose]].


C’est un mécanisme qui permet de taper des caractères à la volée en combinant plusieurs touches. Ça existe sous Unix depuis… bien longtemps. D’ailleurs les touches mortes (qui combinent deux touches) ne sont qu’un cas particulier, et le mécanisme du Compose étends cette idée à d’autres combinaisons (jusqu’à 8 touches dans le Xorg courant).
Un grand nombre de séquences compose correspondent à l'enchaînement de deux touches mortes et d'une touche de composition finale, mais ce n'est pas une limitation : le mécanisme Compose autorise jusqu'à huit touches dans la séquence, dans la version actuelle d’X.Org.


Voir pour plus info [http://wiki.mandriva.com/fr/La_touche_compose cet article Mandriva].
L'intérêt de Compose est d'offrir un accès relativement simple à un très grand nombre de caractères [[Glossaire#UTF-8|UTF-8]]. Par exemple, si vous êtes amenés à taper régulièrement des documents scientifiques comportant des symboles mathématiques spécialisés, vous pourrez trouver intéressant de vous créer un fichier {{c|.XCompose}} qui vous donnera accès à tous ces caractères ''via'' une combinaison de touches mortes adéquate.


== Comment l’activer ? ==
== Comment l’activer ? ==
{{Note|type=attention|Compose nécessite l’utilisation de l’[[Glossaire#UTF-8|UTF-8]] : si votre distribution est extrêmement vieille, il se peut que vous deviez la configurer en UTF-8.}}
{{Note|type=attention|Il est impossible d’utiliser un fichier XCompose personnalisé si vous utilisez [http://fr.wikipedia.org/wiki/Smart_Common_Input_Method SCIM], mais aucun soucis avec iBus.}}


'''Sous KDE''': Dans le « Centre de Configuration » , section « Disposition du Clavier », « Options XKb », il suffit de cocher par exemple « Compose est assignée à la touche Windows droite ». D'autres localisations sont possibles.
; Sous KDE : Dans le {{c|(Centre de) Configuration}}, section {{c|Disposition du Clavier}}, onglet {{c|Options XKb}}, il suffit de cocher par exemple « Compose est assignée à la touche Windows droite ». D’autres localisations sont possibles.
; Sous Gnome : Dans « Système » > « Préférence » > « Clavier » : onglet « agencement », puis bouton « Options d’agencement » (ou bien un clic droit sur l’« indicateur de claviers » si ce dernier se trouve sur votre tableau de bord). Il y a une section « Position de la touche Compose » dans laquelle il suffit de cocher l’emplacement désiré.
; Méthode générique : Dans le fichier {{c|symbols}}, mettre: {{c|key <RWIN> { [ Multi_key, Multi_key ] };}}


'''Sous Gnome''': Dans « Système » > « Préférence » > « Clavier ». Onglet « Options d’agencement » (ou bien un clic droit sur l’« indicateur de claviers » si ce dernier se trouve sur votre tableau de bord). Il y a une section « Position de la touche Compose » dans laquelle il suffit de cocher l’emplacement désiré.
Une fois une touche transformée en touche Compose, il suffit de l’utiliser : Compose suivi de « s » suivie de « s » va créer le [[wp:ß|eszett allemand]] « ß » (U00DF) par exemple.


'''Sous XKb''': Dans le fichier "symbols", mettre: <pre><nowiki>key <RWIN> { [  Multi_key, Multi_key ] };</nowiki></pre>
== Comment installer ses propres combinaisons (ou celles proposées ici) ==


Une fois une touche transformée en touche Compose, il suffit de l’utiliser: « Compose » suivie de « s » suivie de « s » va créer le [http://fr.wikipedia.org/wiki/ß eszett allemand ß] (U00DF) par exemple.
Il suffit de copier-coller le texte ci-dessous dans un fichier nommé {{c|.XCompose}} à la racine de son répertoire utilisateur ({{c|~/.XCompose}}) et toutes les combinaisons ci-dessous s’ajouteront à celles par défaut car on utilise ici le fichier le plus complet.  


== Comment installer ses propres combinaisons (ou celles proposées ici) ==
En tant qu’administrateur, vous pouvez aussi ajouter les changements proposés ici au fichier par défaut, afin de rendre les changements visibles pour tous les utilisateurs, mais alors là, attention pendant les mises à jour système…
 
== Création d’une nouvelle touche morte personnalisée==
=== Démarche ===
Si vous souhaitez créer une nouvelle touche morte, par exemple pour des symboles mathématiques, voici la marche à suivre.
* Choisissez une touche que vous n’utilisez jamais (voir mappez un symbole étranger inconnu)
* Récupérer son keysym dans {{c|/usr/include/X11/keysymdef.h}} (en enlevant le XK_ devant pour avoir le nom à utiliser)
* Modifiez votre fichier {{c|~/.XCompose}} de manière à inclure vos nouvelles combinaisons.


Il suffit de copier coller le texte dans le cadre ci-dessous dans un fichier nommé « .XCompose » à la racine de son répertoire utilisateur, et toutes les combinaisons ci dessous s’ajoutent à celles par défaut (car on inclue ici le fichier le plus complet).
Remarque : la touche choisi ne sera plus accessible en accès direct


En tant qu’administrateur vous pouvez aussi ajouter les changements proposés ici au fichier par défaut afin de rendre les changements visibles pour tous les utilisateurs, mais alors attention pendant les mises à jour…
=== Exemple ===
* Supposons que je n’écrive jamais allemand. Je n’utilise donc pas la touche ß nommé ssharp dans {{c|/usr/include/X11/keysymdef.h}}.
* Je veux une touche morte pour écrire mes souriants. Je choisi donc ssharp comme touche morte souriant, que j’écrirais désormais <souriant>
* Ainsi pour avoir le souriant :-) d’accessible en tapant <souriant> <)>, je dois ajouter dans mon fichier {{c|~/.XCompose}}
<source>
<ssharp> <parenright>              : ":-)"
</source>


Note: UTF-8 est nécessaire ici, et si vous êtes encore en ISO8859-1 je ne peux que vous recommander de passer votre système en UTF-8.
De même pour avoir {ssharp} comme touche morte mathématique pour avoir « √ » (racine carré) en tapant <mathématique> <r>
<source>
<ssharp> <r> : "√"
</source>


== Fichier .XCompose ==
=== Contre-exemple à ne surtout pas faire ===
Ici je vais donner un contre-exemple. Mon objectif était de remplacer le premier espace dans la chaine " ! " par un espace insécable de manière automatique, et c’était UNE TRÈS MAUVAISE IDÉE, en effet ma touche espace était devenu inutilisable dans la majorité des applications.
<source>
CONTRE EXEMPLE : LA TOUCHE ESPACE DEVIENT INUTILISABLE
<space> <exclam> <space> : " !_"
nb : le _ étais un espace insécable dans mon fichier.
</source>


<pre>
== Fichier {{c|~/.XCompose}} ==
<nowiki>
Gestion en particulier des touches mortes sous Linux, et bien plus.
# Fichier .XCompose donnant accès :
# - Aux lettres greques en Compose + espace + lettre_latine = lettre_greque
# - À divers symbols mathématiques comme = + > = ⇒, > + / = ≯, > + > = ≫, ⇒ + / = ⇏, etc.
# - Quelques raccourcis bien pratiques discutés dans le projet bépo (exposants, etc)
# existent déjà dans la base de donnée Compose par défaut, mais sont recopiés ici à
# titre d'exemple.


# Fichier en cours de construction, v080124
On couvre ici beaucoup plus de fonctionalités que les besoins exprimés dans le projet, et bien plus aussi apparemment que les possibilités offertes par les outils équivalents sous d’autres systèmes d’exploitation plus limités.
# Nicolas Brodu <nicolas.brodu@free.fr>


# Démo pour le support du dead_stroke ainsi que les touches mortes multiples.
Il faudra donc décider de ce qui est fourni en « standard », ce qui est réalisable multi-plateformes et officiellement pris en charge par le projet, et ce qui est disponible en plus sous GNU/Linux et systèmes basés sur XKB. Car même si les autres systèmes ne peuvent pas tout gérer, il serait dommage de s’en priver ici!
# TODO: Rajouter les autres lettres, ł ð, etc.
<dead_stroke> <o> : "⊘" oslash
<dead_stroke> <O> : "Ø" Oslash
<dead_stroke> <dead_acute> <o> : "ǿ" U01FF
<dead_acute> <dead_stroke> <o> : "ǿ" U01FF
<dead_acute> <dead_stroke> <O> : "Ǿ" U01FE
<dead_stroke> <dead_acute> <O> : "Ǿ" U01FE
<dead_stroke> <equal> : "≠" U2260


# Note:  
Le fichier .XCompose suivant donne accès :
# Dans le fichier xkb, il faut affecter un dead_stroke à une touche au choix.
* À divers symbols mathématiques comme = + > = ⇒, > + / = ≯, > + > = ≫, ⇒ + / = ⇏, etc.
# Par exemple pour un / mort sur le AltGr + l :
* Quelques raccourcis bien pratiques discutés dans le projet bépo (exposants, etc)
#    key <AD09> { [ l, L, dead_stroke ] };
existent déjà dans la base de donnée Compose par défaut, mais sont recopiés ici à
titre d'exemple.


Nicolas Brodu <nicolas.brodu @ free.fr><br />
Cf discussions sur la liste pour certains exemples ci-dessous


{{archive|titre=.XCompose|
<pre class="xkb">
<nowiki>
# On charge la base de donnée de Compose la plus complète en UTF-8
# On charge la base de donnée de Compose la plus complète en UTF-8
include "/usr/share/X11/locale/en_US.UTF-8/Compose"
include "/usr/share/X11/locale/en_US.UTF-8/Compose"


# Accents morts ⇒ non mort (recopiés depuis le fichier inclus)
###################
<dead_tilde> <space>                : "~"  asciitilde # TILDE
#    Ensembles   #
<dead_tilde> <dead_tilde>          : "~"  asciitilde # TILDE
###################
<dead_acute> <space>                : "'"  apostrophe # APOSTROPHE
<dead_acute> <dead_acute>          : "´"  acute # ACUTE ACCENT
<dead_grave> <space>                : "`"  grave # GRAVE ACCENT
<dead_grave> <dead_grave>          : "`"  grave # GRAVE ACCENT
<dead_circumflex> <space>          : "^"  asciicircum # CIRCUMFLEX ACCENT
<dead_circumflex> <dead_circumflex>    : "^"  asciicircum # CIRCUMFLEX ACCENT
<dead_abovering> <space>            : "°"  degree # DEGREE SIGN
<dead_abovering> <dead_abovering>  : "°"  degree # DEGREE SIGN
<dead_macron> <space>              : "¯"  macron # MACRON
<dead_macron> <dead_macron>        : "¯"  macron # MACRON
<dead_breve> <space>                : "˘"  breve # BREVE
<dead_breve> <dead_breve>          : "˘"  breve # BREVE
<dead_abovedot> <space>            : "˙"  abovedot # DOT ABOVE
<dead_abovedot> <dead_abovedot>    : "˙"  abovedot # DOT ABOVE
<dead_diaeresis> <dead_diaeresis>  : "¨"  diaeresis # DIAERESIS
<dead_diaeresis> <space>            : "\""  quotedbl # REVERSE SOLIDUS
<dead_doubleacute> <space>          : "˝"  U2dd # DOUBLE ACUTE ACCENT
<dead_doubleacute> <dead_doubleacute>  : "˝"  U2dd # DOUBLE ACUTE ACCENT
<dead_caron> <space>                : "ˇ"  caron # CARON
<dead_caron> <dead_caron>          : "ˇ"  caron # CARON
<dead_cedilla> <space>              : "¸"  cedilla # CEDILLA
<dead_cedilla> <dead_cedilla>      : "¸"  cedilla # CEDILLA
<dead_ogonek> <space>              : "˛"  ogonek # OGONEK
<dead_ogonek> <dead_ogonek>        : "˛"  ogonek # OGONEK
<dead_iota> <space>                : "ͺ"  U37a # GREEK YPOGEGRAMMENI
<dead_iota> <dead_iota>            : "ͺ"  U37a # GREEK YPOGEGRAMMENI
 
# Exposants recopiés depuis le fichier inclus, pour l'exemple
<dead_circumflex> <0>              : "⁰"  U2070 # SUPERSCRIPT ZERO
<Multi_key> <asciicircum> <0>      : "⁰"  U2070 # SUPERSCRIPT ZERO
<dead_circumflex> <KP_0>            : "⁰"  U2070 # SUPERSCRIPT ZERO
<Multi_key> <asciicircum> <KP_0>   : "⁰"  U2070 # SUPERSCRIPT ZERO
<dead_circumflex> <1>              : "¹"  onesuperior # SUPERSCRIPT ONE
<Multi_key> <asciicircum> <1>      : "¹"  onesuperior # SUPERSCRIPT ONE
<dead_circumflex> <KP_1>            : "¹"  onesuperior # SUPERSCRIPT ONE
<Multi_key> <asciicircum> <KP_1>   : "¹"  onesuperior # SUPERSCRIPT ONE
<dead_circumflex> <2>              : "²"  twosuperior # SUPERSCRIPT TWO
<Multi_key> <asciicircum> <2>      : "²"  twosuperior # SUPERSCRIPT TWO
<dead_circumflex> <KP_2>            : "²"  twosuperior # SUPERSCRIPT TWO
<Multi_key> <asciicircum> <KP_2>    : "²"  twosuperior # SUPERSCRIPT TWO
<dead_circumflex> <3>              : "³"  threesuperior # SUPERSCRIPT THREE
<Multi_key> <asciicircum> <3>      : "³"  threesuperior # SUPERSCRIPT THREE
<dead_circumflex> <KP_3>            : "³"  threesuperior # SUPERSCRIPT THREE
<Multi_key> <asciicircum> <KP_3>    : "³"  threesuperior # SUPERSCRIPT THREE
<dead_circumflex> <4>              : "⁴"  U2074 # SUPERSCRIPT FOUR
<Multi_key> <asciicircum> <4>      : "⁴"  U2074 # SUPERSCRIPT FOUR
<dead_circumflex> <KP_4>            : "⁴"  U2074 # SUPERSCRIPT FOUR
<Multi_key> <asciicircum> <KP_4>    : "⁴"  U2074 # SUPERSCRIPT FOUR
<dead_circumflex> <5>              : "⁵"  U2075 # SUPERSCRIPT FIVE
<Multi_key> <asciicircum> <5>      : "⁵"  U2075 # SUPERSCRIPT FIVE
<dead_circumflex> <KP_5>            : "⁵"  U2075 # SUPERSCRIPT FIVE
<Multi_key> <asciicircum> <KP_5>    : "⁵"  U2075 # SUPERSCRIPT FIVE
<dead_circumflex> <6>              : "⁶"  U2076 # SUPERSCRIPT SIX
<Multi_key> <asciicircum> <6>      : "⁶"  U2076 # SUPERSCRIPT SIX
<dead_circumflex> <KP_6>            : "⁶"  U2076 # SUPERSCRIPT SIX
<Multi_key> <asciicircum> <KP_6>    : "⁶"  U2076 # SUPERSCRIPT SIX
<dead_circumflex> <7>              : "⁷"  U2077 # SUPERSCRIPT SEVEN
<Multi_key> <asciicircum> <7>      : "⁷"  U2077 # SUPERSCRIPT SEVEN
<dead_circumflex> <KP_7>            : "⁷"  U2077 # SUPERSCRIPT SEVEN
<Multi_key> <asciicircum> <KP_7>    : "⁷"  U2077 # SUPERSCRIPT SEVEN
<dead_circumflex> <8>              : "⁸"  U2078 # SUPERSCRIPT EIGHT
<Multi_key> <asciicircum> <8>      : "⁸"  U2078 # SUPERSCRIPT EIGHT
<dead_circumflex> <KP_8>            : "⁸"  U2078 # SUPERSCRIPT EIGHT
<Multi_key> <asciicircum> <KP_8>    : "⁸"  U2078 # SUPERSCRIPT EIGHT
<dead_circumflex> <9>              : "⁹"  U2079 # SUPERSCRIPT NINE
<Multi_key> <asciicircum> <9>      : "⁹"  U2079 # SUPERSCRIPT NINE
<dead_circumflex> <KP_9>            : "⁹"  U2079 # SUPERSCRIPT NINE
<Multi_key> <asciicircum> <KP_9>    : "⁹"  U2079 # SUPERSCRIPT NINE
<dead_circumflex> <plus>            : "⁺"  U207A # SUPERSCRIPT PLUS SIGN
<Multi_key> <asciicircum> <plus>    : "⁺"  U207A # SUPERSCRIPT PLUS SIGN
<dead_circumflex> <KP_Add>          : "⁺"  U207A # SUPERSCRIPT PLUS SIGN
<Multi_key> <asciicircum> <KP_Add>  : "⁺"  U207A # SUPERSCRIPT PLUS SIGN
<dead_circumflex> <U10002212>      : "⁻"  U207B # SUPERSCRIPT MINUS
<Multi_key> <asciicircum> <U10002212>  : "⁻"  U207B # SUPERSCRIPT MINUS
<dead_circumflex> <equal>          : "⁼"  U207C # SUPERSCRIPT EQUALS SIGN
<Multi_key> <asciicircum> <equal>  : "⁼"  U207C # SUPERSCRIPT EQUALS SIGN
<dead_circumflex> <KP_Equal>        : "⁼"  U207C # SUPERSCRIPT EQUALS SIGN
<Multi_key> <asciicircum> <KP_Equal>    : "⁼"  U207C # SUPERSCRIPT EQUALS SIGN
<dead_circumflex> <parenleft>      : "⁽"  U207D # SUPERSCRIPT LEFT PARENTHESIS
<Multi_key> <asciicircum> <parenleft>  : "⁽"  U207D # SUPERSCRIPT LEFT PARENTHESIS
<dead_circumflex> <parenright>      : "⁾"  U207E # SUPERSCRIPT RIGHT PARENTHESIS
<Multi_key> <asciicircum> <parenright>  : "⁾"  U207E # SUPERSCRIPT RIGHT PARENTHESIS
 


<Multi_key> <underscore> <0>        : "₀"  U2080 # SUBSCRIPT ZERO
<Multi_key> <underscore> <KP_0>    : "₀"  U2080 # SUBSCRIPT ZERO
<Multi_key> <underbar> <0>          : "₀"  U2080 # SUBSCRIPT ZERO
<Multi_key> <underbar> <KP_0>      : "₀"  U2080 # SUBSCRIPT ZERO
<Multi_key> <underscore> <1>        : "₁"  U2081 # SUBSCRIPT ONE
<Multi_key> <underscore> <KP_1>    : "₁"  U2081 # SUBSCRIPT ONE
<Multi_key> <underbar> <1>          : "₁"  U2081 # SUBSCRIPT ONE
<Multi_key> <underbar> <KP_1>      : "₁"  U2081 # SUBSCRIPT ONE
<Multi_key> <underscore> <2>        : "₂"  U2082 # SUBSCRIPT TWO
<Multi_key> <underscore> <KP_Space>    : "₂"  U2082 # SUBSCRIPT TWO
<Multi_key> <underscore> <KP_2>    : "₂"  U2082 # SUBSCRIPT TWO
<Multi_key> <underbar> <2>          : "₂"  U2082 # SUBSCRIPT TWO
<Multi_key> <underbar> <KP_Space>  : "₂"  U2082 # SUBSCRIPT TWO
<Multi_key> <underbar> <KP_2>      : "₂"  U2082 # SUBSCRIPT TWO
<Multi_key> <underscore> <3>        : "₃"  U2083 # SUBSCRIPT THREE
<Multi_key> <underscore> <KP_3>    : "₃"  U2083 # SUBSCRIPT THREE
<Multi_key> <underbar> <3>          : "₃"  U2083 # SUBSCRIPT THREE
<Multi_key> <underbar> <KP_3>      : "₃"  U2083 # SUBSCRIPT THREE
<Multi_key> <underscore> <4>        : "₄"  U2084 # SUBSCRIPT FOUR
<Multi_key> <underscore> <KP_4>    : "₄"  U2084 # SUBSCRIPT FOUR
<Multi_key> <underbar> <4>          : "₄"  U2084 # SUBSCRIPT FOUR
<Multi_key> <underbar> <KP_4>      : "₄"  U2084 # SUBSCRIPT FOUR
<Multi_key> <underscore> <5>        : "₅"  U2085 # SUBSCRIPT FIVE
<Multi_key> <underscore> <KP_5>    : "₅"  U2085 # SUBSCRIPT FIVE
<Multi_key> <underbar> <5>          : "₅"  U2085 # SUBSCRIPT FIVE
<Multi_key> <underbar> <KP_5>      : "₅"  U2085 # SUBSCRIPT FIVE
<Multi_key> <underscore> <6>        : "₆"  U2086 # SUBSCRIPT SIX
<Multi_key> <underscore> <KP_6>    : "₆"  U2086 # SUBSCRIPT SIX
<Multi_key> <underbar> <6>          : "₆"  U2086 # SUBSCRIPT SIX
<Multi_key> <underbar> <KP_6>      : "₆"  U2086 # SUBSCRIPT SIX
<Multi_key> <underscore> <7>        : "₇"  U2087 # SUBSCRIPT SEVEN
<Multi_key> <underscore> <KP_7>    : "₇"  U2087 # SUBSCRIPT SEVEN
<Multi_key> <underbar> <7>          : "₇"  U2087 # SUBSCRIPT SEVEN
<Multi_key> <underbar> <KP_7>      : "₇"  U2087 # SUBSCRIPT SEVEN
<Multi_key> <underscore> <8>        : "₈"  U2088 # SUBSCRIPT EIGHT
<Multi_key> <underscore> <KP_8>    : "₈"  U2088 # SUBSCRIPT EIGHT
<Multi_key> <underbar> <8>          : "₈"  U2088 # SUBSCRIPT EIGHT
<Multi_key> <underbar> <KP_8>      : "₈"  U2088 # SUBSCRIPT EIGHT
<Multi_key> <underscore> <9>        : "₉"  U2089 # SUBSCRIPT NINE
<Multi_key> <underscore> <KP_9>    : "₉"  U2089 # SUBSCRIPT NINE
<Multi_key> <underbar> <9>          : "₉"  U2089 # SUBSCRIPT NINE
<Multi_key> <underbar> <KP_9>      : "₉"  U2089 # SUBSCRIPT NINE
<Multi_key> <underscore> <plus>    : "₊"  U208A # SUBSCRIPT PLUS SIGN
<Multi_key> <underscore> <KP_Add>  : "₊"  U208A # SUBSCRIPT PLUS SIGN
<Multi_key> <underbar> <plus>      : "₊"  U208A # SUBSCRIPT PLUS SIGN
<Multi_key> <underbar> <KP_Add>    : "₊"  U208A # SUBSCRIPT PLUS SIGN
<Multi_key> <underscore> <U10002212>    : "₋"  U208B # SUBSCRIPT MINUS
<Multi_key> <underbar> <U10002212>  : "₋"  U208B # SUBSCRIPT MINUS
<Multi_key> <underscore> <equal>    : "₌"  U208C # SUBSCRIPT EQUALS SIGN
<Multi_key> <underscore> <KP_Equal>    : "₌"  U208C # SUBSCRIPT EQUALS SIGN
<Multi_key> <underbar> <equal>      : "₌"  U208C # SUBSCRIPT EQUALS SIGN
<Multi_key> <underbar> <KP_Equal>  : "₌"  U208C # SUBSCRIPT EQUALS SIGN
<Multi_key> <underscore> <parenleft>    : "₍"  U208D # SUBSCRIPT LEFT PARENTHESIS
<Multi_key> <underbar> <parenleft>  : "₍"  U208D # SUBSCRIPT LEFT PARENTHESIS
<Multi_key> <underscore> <parenright>  : "₎"  U208E # SUBSCRIPT RIGHT PARENTHESIS
<Multi_key> <underbar> <parenright>    : "₎"  U208E # SUBSCRIPT RIGHT PARENTHESIS
# Lettres greques
<Multi_key> <space> <a> : "α"  Greek_alpha
<Multi_key> <space> <A> : "Α"  Greek_ALPHA
<Multi_key> <space> <b> : "β"  Greek_beta
<Multi_key> <space> <B> : "Β"  Greek_BETA
<Multi_key> <space> <g> : "γ"  Greek_gamma
<Multi_key> <space> <G> : "Γ"  Greek_GAMMA
<Multi_key> <space> <d> : "δ"  Greek_delta
<Multi_key> <space> <D> : "Δ"  Greek_DELTA
<Multi_key> <space> <e> : "ε"  Greek_epsilon
<Multi_key> <space> <E> : "Ε"  Greek_EPSILON
<Multi_key> <space> <z> : "ζ"  Greek_zeta
<Multi_key> <space> <Z> : "Ζ"  Greek_ZETA
<Multi_key> <space> <h> : "η"  Greek_eta
<Multi_key> <space> <H> : "Η"  Greek_ETA
<Multi_key> <space> <v> : "θ"  Greek_theta
<Multi_key> <space> <V> : "Θ"  Greek_THETA
<Multi_key> <space> <i> : "ι"  Greek_iota
<Multi_key> <space> <I> : "Ι"  Greek_IOTA
<Multi_key> <space> <k> : "κ"  Greek_kappa
<Multi_key> <space> <K> : "Κ"  Greek_KAPPA
<Multi_key> <space> <l> : "λ"  Greek_lambda
<Multi_key> <space> <L> : "Λ"  Greek_LAMBDA
<Multi_key> <space> <m> : "μ"  Greek_mu
<Multi_key> <space> <M> : "Μ"  Greek_MU
<Multi_key> <space> <n> : "ν"  Greek_nu
<Multi_key> <space> <N> : "Ν"  Greek_NU
<Multi_key> <space> <c> : "ξ"  Greek_xi
<Multi_key> <space> <C> : "Ξ"  Greek_XI
<Multi_key> <space> <o> : "ο"  Greek_omicron
<Multi_key> <space> <O> : "Ο"  Greek_OMICRON
<Multi_key> <space> <p> : "π"  Greek_pi
<Multi_key> <space> <P> : "Π"  Greek_PI
<Multi_key> <space> <r> : "ρ"  Greek_rho
<Multi_key> <space> <R> : "Ρ"  Greek_RHO
<Multi_key> <space> <s> : "σ"  Greek_sigma
<Multi_key> <space> <S> : "Σ"  Greek_SIGMA
<Multi_key> <space> <q> : "ς"  Greek_finalsmallsigma
<Multi_key> <space> <Q> : "Σ"  Greek_SIGMA
<Multi_key> <space> <t> : "τ"  Greek_tau
<Multi_key> <space> <T> : "Τ"  Greek_TAU
<Multi_key> <space> <u> : "υ"  Greek_upsilon
<Multi_key> <space> <U> : "Υ"  Greek_UPSILON
<Multi_key> <space> <f> : "φ"  Greek_phi
<Multi_key> <space> <F> : "Φ"  Greek_PHI
<Multi_key> <space> <x> : "χ"  Greek_chi
<Multi_key> <space> <X> : "Χ"  Greek_CHI
<Multi_key> <space> <y> : "ψ"  Greek_psi
<Multi_key> <space> <Y> : "Ψ"  Greek_PSI
<Multi_key> <space> <w> : "ω"  Greek_omega
<Multi_key> <space> <W> : "Ω"  Greek_OMEGA
# A tester: <dead_acute> <Multi_key> <space> XXX pour lettre Greque accentuée
# Sets
<Multi_key> <N> <N> : "ℕ" U2115
<Multi_key> <N> <N> : "ℕ" U2115
<Multi_key> <Z> <Z> : "ℤ" U2124
<Multi_key> <Z> <Z> : "ℤ" U2124
Ligne 278 : Ligne 100 :
<Multi_key> <slash> <U2287> : "⊉" U2289
<Multi_key> <slash> <U2287> : "⊉" U2289


# equality and relations
 
################################
#    equality and relations   #
################################
 
<Multi_key> <equal> <equal> : "≣" U2263
<Multi_key> <equal> <equal> : "≣" U2263
<Multi_key> <equal> <minus> : "≡" U2261
<Multi_key> <equal> <minus> : "≡" U2261
Ligne 324 : Ligne 150 :
<Multi_key> <greater> <period> : "⋗" U22D7
<Multi_key> <greater> <period> : "⋗" U22D7
<Multi_key> <less> <period> : "⋖" U22D6
<Multi_key> <less> <period> : "⋖" U22D6


<Multi_key> <bar> <bar> : "∥" U2225
<Multi_key> <bar> <bar> : "∥" U2225
Ligne 330 : Ligne 155 :
<Multi_key> <bar> <slash> : "∤" U2224
<Multi_key> <bar> <slash> : "∤" U2224


# Arrows
 
<Multi_key> <minus> <greater> : "→" U2192
#################
#    Flèches    #
#################
 
<Multi_key> <minus> <greater> : "→" U2192         # déjà présent de base
<Multi_key> <minus> <less> : "←" U2190            # consistent with equal-less
<Multi_key> <minus> <less> : "←" U2190            # consistent with equal-less
<Multi_key> <bar> <asciicircum> : "↑" U2191
<Multi_key> <bar> <asciicircum> : "↑" U2191
Ligne 345 : Ligne 174 :




# Misc operators
###########################
#    Opérateurs divers    #
###########################
 
#slash-o, period-o, etc already taken => use o-slash, etc
#slash-o, period-o, etc already taken => use o-slash, etc
<Multi_key> <o> <plus> : "⊕" U2295
<Multi_key> <o> <plus> : "⊕" U2295
Ligne 364 : Ligne 196 :
<Multi_key> <asterisk> <o> : "∘" U2218
<Multi_key> <asterisk> <o> : "∘" U2218


#<Multi_key> <> <> : "" U
# LaTeX commands <Multi_key> <c> <o> <m> <m> <a> <n> <d>
# Partially started in another file
</nowiki>
</pre>
}}
=== Démos ===
* La possibilité d'insérer des espaces insécables autour des guillemets. L’idée est alors de taper Compose + Guillemet au lieu d’Espace + Guillemet. Ces espaces devraient être insécables fines, mais celles-ci ne sont malheureusement pas toujours bien gérées par les polices de caractères. En attendant, insérer un espace insécable aussi simplement est déjà bien!
* Une idée trouvée sur la [[Utilisateur:Laurent#.C2.AB_et_.C2.BB_en_acc.C3.A8s_indirect_mais_directement_avec_espace_ins.C3.A9cable|page de Laurent]] est de faire en sorte que la touche « et » insèrent en même temps l'espace insécable.
* Enfin, des tas de flèches!
{{archive|titre=.XCompose|
<pre class="xkb">
<nowiki>
##################################################
#    Espaces insécables autour des guillemets    #
##################################################
# Avec touche Compose
<Multi_key> <guillemotleft> : "« "
<Multi_key> <guillemotright> : " »"
# L'autre solution: l'ajout direct
<guillemotleft> : "« "
<guillemotright> : " »"
###############################
#    Caractères combinants    #
###############################
# Démo pour le support des caractères combinés via Unicode "combining modifiers"
# Note: Le symbole entre quotes de la ligne ci-dessous est un "e" suivi d’un caractère
# unicode U030A "Combining ring above". Il devrait s’afficher comme un seul caractère.
<dead_abovering> <e> : "e̊"
# Démo pour un support générique des caractères combinants avec BackSpace


#<Multi_key> <> <> : "" U
# exemple de combining above
<Multi_key> <BackSpace> <U2218> : U030A
<Multi_key> <BackSpace> <degree> : U030A
<Multi_key> <BackSpace> <dead_abovering> : U030A
 
# exemple de combining below
<Multi_key> <BackSpace> <BackSpace> <U2218> : U0325
<Multi_key> <BackSpace> <BackSpace> <degree> : U0325
# cas limite, ça change la sémantique du dead_abovering
<Multi_key> <BackSpace> <BackSpace> <dead_abovering> : U0325
<Multi_key> <BackSpace> <BackSpace> <underscore> : U0332
<Multi_key> <BackSpace> <BackSpace> <equal> : U0333
 
# exemple de combining overlay
<Multi_key> <BackSpace> <BackSpace> <BackSpace> <U2218> : U20D8
<Multi_key> <BackSpace> <BackSpace> <BackSpace> <degree> : U20D8
<Multi_key> <BackSpace> <BackSpace> <BackSpace> <dead_abovering> : U20D8
 
# on peut même écrire du t̲e̲x̲t̲e̲ s̲o̲u̲l̲i̲g̲n̲é̲ ou du t̶e̶x̶t̶e̶ ̶b̶a̶r̶r̶é̶ si on veut,
# ou plus exotique le d̳o̳u̳b̳l̳e̳ s̳o̳u̳l̳i̳g̳n̳é̳
<Multi_key> <BackSpace> <BackSpace> <BackSpace> <U2013> : U0336    # barré, grand (LONG STROKE)
<Multi_key> <BackSpace> <BackSpace> <BackSpace> <minus> : U0335    # barré, petit (SHORT STROKE)
 
# transforme → en → combinante (pour les vecteurs, etc)
<Multi_key> <BackSpace> <U2192> : U20D7
<Multi_key> <BackSpace> <Right> : U20D7
<Multi_key> <BackSpace> <BackSpace> <U2192> : U20EF
<Multi_key> <BackSpace> <BackSpace> <Right> : U20EF
 
# Même chose pour ←
<Multi_key> <BackSpace> <U2190> : U20D6
<Multi_key> <BackSpace> <Left> : U20D6
<Multi_key> <BackSpace> <BackSpace> <U2190> : U20EE
<Multi_key> <BackSpace> <BackSpace> <Left> : U20EE
 
 
#################
#    Flèches    #
#################
 
# Cette solution n’est pas forcément portable sous d’autres OS
# mais elle est simple. Une autre proposition a été faite sur
# la liste de discussion pour ^ + pavé numérique, mais pose
# d’autres inconvénients comme le support de ¹²³⁴⁵...
 
<Multi_key> <Up> : "↑" U2191
<Multi_key> <Right> : "→" U2192
<Multi_key> <Left> : "←" U2190
<Multi_key> <Down> : "↓" U2193
 
<Multi_key> <Multi_key> <Up> : "⇑" U21D1
<Multi_key> <Multi_key> <Right> : "⇒" U21D2
<Multi_key> <Multi_key> <Left> : "⇐" U21D0
<Multi_key> <Multi_key> <Down> : "⇓" U21D3
<Multi_key> <Multi_key> <Multi_key> <Right> : "⇛" U21DB
<Multi_key> <Multi_key> <Multi_key> <Left> : "⇚" U21DA
 
<Multi_key> <KP_Up> : "↑" U2191
<Multi_key> <KP_Right> : "→" U2192
<Multi_key> <KP_Left> : "←" U2190
<Multi_key> <KP_Down> : "↓" U2193
<Multi_key> <KP_Begin> : "↔" U2194
 
<Multi_key> <KP_8> : "↑" U2191
<Multi_key> <KP_6> : "→" U2192
<Multi_key> <KP_4> : "←" U2190
<Multi_key> <KP_2> : "↓" U2193
<Multi_key> <KP_5> : "" U2194


# TODO Autres Symboles mathématiques ⇒ + / = ⇏, etc.
# À faire : rajouter les ↗ et consors
# Exemple: ↑ + =


# À faire également: rajouter les ½, ¼, etc
# Exemple: 1 + / + 2 = ½


# LaTeX commands <Multi_key> <c> <o> <m> <m> <a> <n> <d>
# A tester: <dead_acute> <Multi_key> <space> XXX pour lettre Greque accentuée
# Partially started in another file
</nowiki>
</nowiki>
</pre>
</pre>
}}
=== Fichier compose personnalisés créé par les utilisateurs ===
Voici la liste non exhaustive des personnes ayant créé un fichier .XCompose personnalisés :
[[Utilisateur:Robin#fichier .XCompose|Robin]] : nombreux symboles mathématiques.
== Le mécanisme de Compose (et de touches mortes) ne fonctionne pas ==
=== Première étape ===
Dans les applications utilisant GTK (dont les applications GNOME, Firefox ou LibreOffice), certaines touches mortes ne fonctionnent pas (notamment pour l’alphabet grec et les symboles monétaires), ainsi que les autres fonctionnalités de Compose. Mais il y a une solution !
==== Méthode générique ====
Il suffit d’ajouter la ligne <code>export GTK_IM_MODULE=xim</code> dans le fichier {{c|/etc/profile}} pour tous les utilisateurs (nécessite les droits d’administration) ou dans {{c|~/.bash_profile}} (ou {{c|~/.zprofile}} si vous avez installé zsh).
Pour tout le système :
<code>
sudo echo "export GTK_IM_MODULE=xim" >> /etc/profile
</code>
Seulement pour l’utilisateur en cours (si on a pas les droits d'administration) :
<code>
echo "export GTK_IM_MODULE=xim" >> ~/.bash_profile
</code>
==== Pour Debian, Ubuntu et dérivées ====
* Tapez <code>im-switch -c</code> dans un terminal. Vous allez obtenir quelque chose qui ressemble à ceci :
<pre>
There are 6 candidates which provide IM for /home/kaze/.xinput.d/fr_FR:
  Selection    Alternative
  -----------------------------------------------
      1        default
*    2        default-xim
      3        none
      4        scim
      5        scim-immodule
      6        th-xim
System wide default for fr_FR (or all_ALL) locale is marked with [+].
Press enter to keep the current selection[*], or type selection number:
</pre>
* choisir « default-xim » et valider, dans le cas ci-dessus : 2 [Enter]
* redémarrer l’ordinateur (vous pouvez aussi simplement redémarrer X.org si vous savez comment faire)
Si les touches mortes ne fonctionnent toujours pas, passez à la deuxième étape.
=== Deuxième étape ===
Si cela n’a pas fonctionné, c’est probablement parce que vous utilisez une version trop ancienne d’IBus. Si vous n’écrivez pas dans une langue asiatique, vous pouvez supprimer IBus sans problème (il suffit de supprimer tous les paquets dont le nom commence par « ibus »). Sinon, il faudra le mettre à jour par vos propres moyens à une version supérieure ou égale à 1.5.9.
{{note|type=note|Si malgré cela, toutes les touches mortes fonctionnent sauf celle pour l'alphabet grec c'est que votre distribution n'est pas assez récente. Dans ce cas, il faut créer [[Lettre grecque sous Linux|un fichier XCompose spécifique pour les lettres grecques]].}}
== Liens externes ==
* Sur wiki.mandriva.com, [http://wiki.mandriva.com/fr/La_touche_compose un article très complet] sur la touche compose.
[[Catégorie:Installation]]

Dernière version du 10 avril 2023 à 17:07

Si certains caractères s’affichent mal (carrés vides, points d’interrogation), consultez l’aide Unicode sur Wikipédia.

Compose est un mécanisme pour GNU/Linux (venant d’Unix) qui permet de taper des caractères à la volée en combinant plusieurs touches mortes. Il est également disponible sous Windows grâce au petit logiciel WinCompose.

Un grand nombre de séquences compose correspondent à l'enchaînement de deux touches mortes et d'une touche de composition finale, mais ce n'est pas une limitation : le mécanisme Compose autorise jusqu'à huit touches dans la séquence, dans la version actuelle d’X.Org.

L'intérêt de Compose est d'offrir un accès relativement simple à un très grand nombre de caractères UTF-8. Par exemple, si vous êtes amenés à taper régulièrement des documents scientifiques comportant des symboles mathématiques spécialisés, vous pourrez trouver intéressant de vous créer un fichier .XCompose qui vous donnera accès à tous ces caractères via une combinaison de touches mortes adéquate.

Comment l’activer ?

Attention

Compose nécessite l’utilisation de l’UTF-8 : si votre distribution est extrêmement vieille, il se peut que vous deviez la configurer en UTF-8.

Attention

Il est impossible d’utiliser un fichier XCompose personnalisé si vous utilisez SCIM, mais aucun soucis avec iBus.

Sous KDE
Dans le (Centre de) Configuration, section Disposition du Clavier, onglet Options XKb, il suffit de cocher par exemple « Compose est assignée à la touche Windows droite ». D’autres localisations sont possibles.
Sous Gnome
Dans « Système » > « Préférence » > « Clavier » : onglet « agencement », puis bouton « Options d’agencement » (ou bien un clic droit sur l’« indicateur de claviers » si ce dernier se trouve sur votre tableau de bord). Il y a une section « Position de la touche Compose » dans laquelle il suffit de cocher l’emplacement désiré.
Méthode générique
Dans le fichier symbols, mettre: key <RWIN> { [ Multi_key, Multi_key ] };

Une fois une touche transformée en touche Compose, il suffit de l’utiliser : Compose suivi de « s » suivie de « s » va créer le eszett allemand « ß » (U00DF) par exemple.

Comment installer ses propres combinaisons (ou celles proposées ici)

Il suffit de copier-coller le texte ci-dessous dans un fichier nommé .XCompose à la racine de son répertoire utilisateur (~/.XCompose) et toutes les combinaisons ci-dessous s’ajouteront à celles par défaut car on utilise ici le fichier le plus complet.

En tant qu’administrateur, vous pouvez aussi ajouter les changements proposés ici au fichier par défaut, afin de rendre les changements visibles pour tous les utilisateurs, mais alors là, attention pendant les mises à jour système…

Création d’une nouvelle touche morte personnalisée

Démarche

Si vous souhaitez créer une nouvelle touche morte, par exemple pour des symboles mathématiques, voici la marche à suivre.

  • Choisissez une touche que vous n’utilisez jamais (voir mappez un symbole étranger inconnu)
  • Récupérer son keysym dans /usr/include/X11/keysymdef.h (en enlevant le XK_ devant pour avoir le nom à utiliser)
  • Modifiez votre fichier ~/.XCompose de manière à inclure vos nouvelles combinaisons.

Remarque : la touche choisi ne sera plus accessible en accès direct

Exemple

  • Supposons que je n’écrive jamais allemand. Je n’utilise donc pas la touche ß nommé ssharp dans /usr/include/X11/keysymdef.h.
  • Je veux une touche morte pour écrire mes souriants. Je choisi donc ssharp comme touche morte souriant, que j’écrirais désormais <souriant>
  • Ainsi pour avoir le souriant :-) d’accessible en tapant <souriant> <)>, je dois ajouter dans mon fichier ~/.XCompose
<ssharp> <parenright>               : ":-)"

De même pour avoir {ssharp} comme touche morte mathématique pour avoir « √ » (racine carré) en tapant <mathématique> <r>

<ssharp> <r> : "√"

Contre-exemple à ne surtout pas faire

Ici je vais donner un contre-exemple. Mon objectif était de remplacer le premier espace dans la chaine " ! " par un espace insécable de manière automatique, et c’était UNE TRÈS MAUVAISE IDÉE, en effet ma touche espace était devenu inutilisable dans la majorité des applications.

CONTRE EXEMPLE : LA TOUCHE ESPACE DEVIENT INUTILISABLE
<space> <exclam> <space> : " !_"
nb : le _ étais un espace insécable dans mon fichier.

Fichier ~/.XCompose

Gestion en particulier des touches mortes sous Linux, et bien plus.

On couvre ici beaucoup plus de fonctionalités que les besoins exprimés dans le projet, et bien plus aussi apparemment que les possibilités offertes par les outils équivalents sous d’autres systèmes d’exploitation plus limités.

Il faudra donc décider de ce qui est fourni en « standard », ce qui est réalisable multi-plateformes et officiellement pris en charge par le projet, et ce qui est disponible en plus sous GNU/Linux et systèmes basés sur XKB. Car même si les autres systèmes ne peuvent pas tout gérer, il serait dommage de s’en priver ici!

Le fichier .XCompose suivant donne accès :

  • À divers symbols mathématiques comme = + > = ⇒, > + / = ≯, > + > = ≫, ⇒ + / = ⇏, etc.
  • Quelques raccourcis bien pratiques discutés dans le projet bépo (exposants, etc)

existent déjà dans la base de donnée Compose par défaut, mais sont recopiés ici à titre d'exemple.

Nicolas Brodu <nicolas.brodu @ free.fr>
Cf discussions sur la liste pour certains exemples ci-dessous

.XCompose

# On charge la base de donnée de Compose la plus complète en UTF-8
include "/usr/share/X11/locale/en_US.UTF-8/Compose"

###################
#    Ensembles    #
###################

<Multi_key> <N> <N> : "ℕ" U2115
<Multi_key> <Z> <Z> : "ℤ" U2124
<Multi_key> <Q> <Q> : "ℚ" U211A
<Multi_key> <R> <R> : "ℝ" U211D
<Multi_key> <C> <C> : "ℂ" U2102
<Multi_key> <H> <H> : "ℍ" U210D
<Multi_key> <P> <P> : "ℙ" U2119
<Multi_key> <i> <n> : "⊂" U2282
<Multi_key> <n> <i> : "⊃" U2283
<Multi_key> <slash> <i> <n> : "⊄" U2284
<Multi_key> <slash> <n> <i> : "⊅" U2285
<Multi_key> <slash> <U2282> : "⊄" U2284
<Multi_key> <slash> <U2283> : "⊅" U2285
<Multi_key> <equal> <i> <n> : "⊆" U2286
<Multi_key> <equal> <n> <i> : "⊇" U2287
<Multi_key> <slash> <equal> <i> <n> : "⊈" U2288
<Multi_key> <slash> <equal> <n> <i> : "⊉" U2289
<Multi_key> <slash> <U2286> : "⊈" U2288
<Multi_key> <slash> <U2287> : "⊉" U2289


################################
#    equality and relations    #
################################

<Multi_key> <equal> <equal> : "≣" U2263
<Multi_key> <equal> <minus> : "≡" U2261
<Multi_key> <equal> <asciitilde> : "≅" U2245
<Multi_key> <minus> <asciitilde> : "≃" U2243
<Multi_key> <asciitilde> <asciitilde> : "≈" U2248
<Multi_key> <asciitilde> <minus> : "≂" U2242
<Multi_key> <equal> <d> : "≝" U225D
<Multi_key> <equal> <degree> : "≗" U2257
<Multi_key> <equal> <asciicircum> : "≙" U2259
<Multi_key> <equal> <v> : "≚" U225A
<Multi_key> <equal> <asterisk> : "≛" U225B
<Multi_key> <equal> <Greek_DELTA> : "≜" U225C
<Multi_key> <equal> <space> <D>: "≜" U225C
<Multi_key> <equal> <m> : "≞" U225E
<Multi_key> <equal> <question> : "≟" U225F
<Multi_key> <equal> <slash> : "≠" U2260
<Multi_key> <slash> <minus> <asciitilde> : "≄" U2244
<Multi_key> <slash> <equal> <asciitilde> : "≇" U2247
<Multi_key> <slash> <equal> <minus> : "≢" U2262
<Multi_key> <greater> <equal> : "≥" U2265
<Multi_key> <less> <equal> : "≤" U2264
<Multi_key> <greater> <asciitilde> : "≳" U2273
<Multi_key> <less> <asciitilde> : "≲" U2272
<Multi_key> <less> <less> : "≪" U226A
<Multi_key> <greater> <greater> : "≫" U226B
<Multi_key> <greater> <less> : "≶" U2276
<Multi_key> <less> <greater> : "≷" U2277
<Multi_key> <slash> <greater> <equal> : "≱" U2271
<Multi_key> <slash> <less> <equal> : "≰" U2270
<Multi_key> <slash> <greater> <asciitilde> : "≵" U2275
<Multi_key> <slash> <less> <asciitilde> : "≴" U2274
<Multi_key> <slash> <greater> <less> : "≸" U2278
<Multi_key> <slash> <less> <greater> : "≹" U2279
<Multi_key> <greater> <slash> : "≯" U226F
<Multi_key> <less> <slash> : "≮" U226E
<Multi_key> <greater> <bar> : "⊳" U22B3
<Multi_key> <less> <bar> : "⊲" U22B2
<Multi_key> <bar> <greater> <equal> : "⊵" U22B5
<Multi_key> <bar> <less> <equal> : "⊴" U22B4
<Multi_key> <slash> <greater> <bar> : "⋫" U22EB
<Multi_key> <slash> <less> <bar> : "⋪" U22EA
<Multi_key> <slash> <bar> <greater> <equal> : "⋭" U22ED
<Multi_key> <slash> <bar> <less> <equal> : "⋬" U22EC
<Multi_key> <greater> <period> : "⋗" U22D7
<Multi_key> <less> <period> : "⋖" U22D6

<Multi_key> <bar> <bar> : "∥" U2225
<Multi_key> <slash> <bar> <bar> : "∦" U2226
<Multi_key> <bar> <slash> : "∤" U2224


#################
#    Flèches    #
#################

<Multi_key> <minus> <greater> : "→" U2192         # déjà présent de base
<Multi_key> <minus> <less> : "←" U2190            # consistent with equal-less
<Multi_key> <bar> <asciicircum> : "↑" U2191
<Multi_key> <bar> <v> : "↓" U2193
<Multi_key> <minus> <x> : "↔" U2194
<Multi_key> <equal> <greater> : "⇒" U21D2
<Multi_key> <equal> <less> : "⇐" U21D0            # less equal is taken
<Multi_key> <U2225> <asciicircum> : "⇑" U21D1
<Multi_key> <U2225> <v> : "⇓" U21D3
<Multi_key> <quotedbl> <asciicircum> : "⇑" U21D1
<Multi_key> <quotedbl> <v> : "⇓" U21D3
<Multi_key> <equal> <x> : "⇔" U21D4


###########################
#    Opérateurs divers    #
###########################

#slash-o, period-o, etc already taken => use o-slash, etc
<Multi_key> <o> <plus> : "⊕" U2295
<Multi_key> <o> <minus> : "⊝" U229D
<Multi_key> <o> <asterisk> : "⊛" U229B
<Multi_key> <o> <slash> : "⊘" U2298
<Multi_key> <o> <x> : "⊗" U2297
<Multi_key> <o> <o> : "⊚" U229A
<Multi_key> <o> <period> : "⊙" U2299
<Multi_key> <o> <equal> : "⊜" U229C
<Multi_key> <v> <v> : "√" U221A
<Multi_key> <2> <v> : "√" U221A
<Multi_key> <3> <v> : "∛" U221B
<Multi_key> <4> <v> : "∜" U221C
<Multi_key> <asterisk> <asterisk> : "∗" U2217
<Multi_key> <asterisk> <x> : "×" multiply
<Multi_key> <asterisk> <period> : "·" periodcentered
<Multi_key> <asterisk> <o> : "∘" U2218

#<Multi_key> <> <> : "" U

# LaTeX commands <Multi_key> <c> <o> <m> <m> <a> <n> <d>
# Partially started in another file

Démos

  • La possibilité d'insérer des espaces insécables autour des guillemets. L’idée est alors de taper Compose + Guillemet au lieu d’Espace + Guillemet. Ces espaces devraient être insécables fines, mais celles-ci ne sont malheureusement pas toujours bien gérées par les polices de caractères. En attendant, insérer un espace insécable aussi simplement est déjà bien!
  • Une idée trouvée sur la page de Laurent est de faire en sorte que la touche « et » insèrent en même temps l'espace insécable.
  • Enfin, des tas de flèches!
.XCompose

##################################################
#    Espaces insécables autour des guillemets    #
##################################################

# Avec touche Compose
<Multi_key> <guillemotleft> : "« "
<Multi_key> <guillemotright> : " »"

# L'autre solution: l'ajout direct
<guillemotleft> : "« "
<guillemotright> : " »"

###############################
#    Caractères combinants    #
###############################

# Démo pour le support des caractères combinés via Unicode "combining modifiers"
# Note: Le symbole entre quotes de la ligne ci-dessous est un "e" suivi d’un caractère
# unicode U030A "Combining ring above". Il devrait s’afficher comme un seul caractère.
<dead_abovering> <e> : "e̊"


# Démo pour un support générique des caractères combinants avec BackSpace

# exemple de combining above
<Multi_key> <BackSpace> <U2218> : U030A
<Multi_key> <BackSpace> <degree> : U030A
<Multi_key> <BackSpace> <dead_abovering> : U030A

# exemple de combining below
<Multi_key> <BackSpace> <BackSpace> <U2218> : U0325
<Multi_key> <BackSpace> <BackSpace> <degree> : U0325
# cas limite, ça change la sémantique du dead_abovering
<Multi_key> <BackSpace> <BackSpace> <dead_abovering> : U0325
<Multi_key> <BackSpace> <BackSpace> <underscore> : U0332
<Multi_key> <BackSpace> <BackSpace> <equal> : U0333

# exemple de combining overlay
<Multi_key> <BackSpace> <BackSpace> <BackSpace> <U2218> : U20D8
<Multi_key> <BackSpace> <BackSpace> <BackSpace> <degree> : U20D8
<Multi_key> <BackSpace> <BackSpace> <BackSpace> <dead_abovering> : U20D8

# on peut même écrire du t̲e̲x̲t̲e̲ s̲o̲u̲l̲i̲g̲n̲é̲ ou du t̶e̶x̶t̶e̶ ̶b̶a̶r̶r̶é̶ si on veut,
# ou plus exotique le d̳o̳u̳b̳l̳e̳ s̳o̳u̳l̳i̳g̳n̳é̳
<Multi_key> <BackSpace> <BackSpace> <BackSpace> <U2013> : U0336    # barré, grand (LONG STROKE)
<Multi_key> <BackSpace> <BackSpace> <BackSpace> <minus> : U0335    # barré, petit (SHORT STROKE)

# transforme → en → combinante (pour les vecteurs, etc)
<Multi_key> <BackSpace> <U2192> : U20D7
<Multi_key> <BackSpace> <Right> : U20D7
<Multi_key> <BackSpace> <BackSpace> <U2192> : U20EF
<Multi_key> <BackSpace> <BackSpace> <Right> : U20EF

# Même chose pour ←
<Multi_key> <BackSpace> <U2190> : U20D6
<Multi_key> <BackSpace> <Left> : U20D6
<Multi_key> <BackSpace> <BackSpace> <U2190> : U20EE
<Multi_key> <BackSpace> <BackSpace> <Left> : U20EE


#################
#    Flèches    #
#################

# Cette solution n’est pas forcément portable sous d’autres OS
# mais elle est simple. Une autre proposition a été faite sur
# la liste de discussion pour ^ + pavé numérique, mais pose
# d’autres inconvénients comme le support de ¹²³⁴⁵...

<Multi_key> <Up> : "↑" U2191
<Multi_key> <Right> : "→" U2192
<Multi_key> <Left> : "←" U2190
<Multi_key> <Down> : "↓" U2193

<Multi_key> <Multi_key> <Up> : "⇑" U21D1
<Multi_key> <Multi_key> <Right> : "⇒" U21D2
<Multi_key> <Multi_key> <Left> : "⇐" U21D0
<Multi_key> <Multi_key> <Down> : "⇓" U21D3
<Multi_key> <Multi_key> <Multi_key> <Right> : "⇛" U21DB
<Multi_key> <Multi_key> <Multi_key> <Left> : "⇚" U21DA

<Multi_key> <KP_Up> : "↑" U2191
<Multi_key> <KP_Right> : "→" U2192
<Multi_key> <KP_Left> : "←" U2190
<Multi_key> <KP_Down> : "↓" U2193
<Multi_key> <KP_Begin> : "↔" U2194

<Multi_key> <KP_8> : "↑" U2191
<Multi_key> <KP_6> : "→" U2192
<Multi_key> <KP_4> : "←" U2190
<Multi_key> <KP_2> : "↓" U2193
<Multi_key> <KP_5> : "↔" U2194

# À faire : rajouter les ↗ et consors
# Exemple: ↑ + → = ↗

# À faire également: rajouter les ½, ¼, etc
# Exemple: 1 + / + 2 = ½

# A tester: <dead_acute> <Multi_key> <space> XXX pour lettre Greque accentuée

Fichier compose personnalisés créé par les utilisateurs

Voici la liste non exhaustive des personnes ayant créé un fichier .XCompose personnalisés :

Robin : nombreux symboles mathématiques.

Le mécanisme de Compose (et de touches mortes) ne fonctionne pas

Première étape

Dans les applications utilisant GTK (dont les applications GNOME, Firefox ou LibreOffice), certaines touches mortes ne fonctionnent pas (notamment pour l’alphabet grec et les symboles monétaires), ainsi que les autres fonctionnalités de Compose. Mais il y a une solution !

Méthode générique

Il suffit d’ajouter la ligne export GTK_IM_MODULE=xim dans le fichier /etc/profile pour tous les utilisateurs (nécessite les droits d’administration) ou dans ~/.bash_profile (ou ~/.zprofile si vous avez installé zsh).

Pour tout le système : sudo echo "export GTK_IM_MODULE=xim" >> /etc/profile

Seulement pour l’utilisateur en cours (si on a pas les droits d'administration) : echo "export GTK_IM_MODULE=xim" >> ~/.bash_profile

Pour Debian, Ubuntu et dérivées

  • Tapez im-switch -c dans un terminal. Vous allez obtenir quelque chose qui ressemble à ceci :
There are 6 candidates which provide IM for /home/kaze/.xinput.d/fr_FR:

  Selection    Alternative
  -----------------------------------------------
      1        default
*     2        default-xim
      3        none
      4        scim
      5        scim-immodule
      6        th-xim
System wide default for fr_FR (or all_ALL) locale is marked with [+].
Press enter to keep the current selection[*], or type selection number:
  • choisir « default-xim » et valider, dans le cas ci-dessus : 2 [Enter]
  • redémarrer l’ordinateur (vous pouvez aussi simplement redémarrer X.org si vous savez comment faire)

Si les touches mortes ne fonctionnent toujours pas, passez à la deuxième étape.

Deuxième étape

Si cela n’a pas fonctionné, c’est probablement parce que vous utilisez une version trop ancienne d’IBus. Si vous n’écrivez pas dans une langue asiatique, vous pouvez supprimer IBus sans problème (il suffit de supprimer tous les paquets dont le nom commence par « ibus »). Sinon, il faudra le mettre à jour par vos propres moyens à une version supérieure ou égale à 1.5.9.

Si malgré cela, toutes les touches mortes fonctionnent sauf celle pour l'alphabet grec c'est que votre distribution n'est pas assez récente. Dans ce cas, il faut créer un fichier XCompose spécifique pour les lettres grecques.

Liens externes