« Compose » : différence entre les versions

De Disposition de clavier bépo
m (a redirigé XKBComposeDB vers Compose)
Aucun résumé des modifications
Ligne 61 : Ligne 61 :
# unicode U030A "Combining ring above". Il devrait s’afficher comme un seul caractère.
# unicode U030A "Combining ring above". Il devrait s’afficher comme un seul caractère.
<dead_abovering> <e> : "e̊"
<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
<Multi_key> <BackSpace> <BackSpace> <dead_abovering> : U0325 # cas limite, ça change la sémantique du dead_abovering
<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
# transforme ← en ← combinante (pour les vecteurs, etc)
<Multi_key> <BackSpace> <U2190> : U20D6
<Multi_key> <BackSpace> <Left> : U20D6
<Multi_key> <BackSpace> <BackSpace> <U2190> : U20EE
<Multi_key> <BackSpace> <BackSpace> <Left> : U20EE
# Démo pour les 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 : rajouter les ↗ et consors


# Démo pour transformation d'une touche non morte en morte
# Démo pour transformation d'une touche non morte en morte
# On peux rajouter ici tout les symboles monétaires, cf la liste de discussions
# On peux rajouter ici tout les symboles monétaires, cf la liste de discussions
# TODO : Mettre à jour cette section avec les pilote 0.6.5.1 ou peut-être l’enlever
<currency> <E> : "€" EuroSign
<currency> <E> : "€" EuroSign
<currency> <S> : "$" dollar
<currency> <S> : "$" dollar
Ligne 72 : Ligne 142 :


# Démo pour le support du dead_stroke ainsi que les touches mortes multiples.
# Démo pour le support du dead_stroke ainsi que les touches mortes multiples.
# TODO: Rajouter les autres lettres, ł ð, etc.
# TODO : Mettre à jour cette section avec les pilote 0.6.5.1 ou peut-être l’enlever
<dead_stroke> <o> : "ø" U00F8
<dead_stroke> <o> : "ø" U00F8
<dead_stroke> <O> : "Ø" U00D8
<dead_stroke> <O> : "Ø" U00D8

Version du 26 mars 2008 à 09:41

Comme promis ici voici un début de base de données Compose pour GNU/Linux.

Mais qu’est-ce donc que Compose ?

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).

Voir pour plus info cet article Mandriva.

Comment l’activer ?

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 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é.

Sous XKb: 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 » suivie 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 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).

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…

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.

Fichier .XCompose


# Gestion en particulier des touches mortes sous Linux, et bien plus.
# Ce fichier sert également à tester différentes idées, cf les Démos ci-dessous.

# 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 supporté 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!

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

# Démo pour l’ajout d’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!
<Multi_key> <guillemotleft> : "« "
<Multi_key> <guillemotright> : " »"

# Autre solution pour ajout direct (cf aussi page Wiki de Laurent)
<guillemotleft> : "« "
<guillemotright> : " »"

# 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
<Multi_key> <BackSpace> <BackSpace> <dead_abovering> : U0325 # cas limite, ça change la sémantique du dead_abovering
<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

# transforme ← en ← combinante (pour les vecteurs, etc)
<Multi_key> <BackSpace> <U2190> : U20D6
<Multi_key> <BackSpace> <Left> : U20D6
<Multi_key> <BackSpace> <BackSpace> <U2190> : U20EE
<Multi_key> <BackSpace> <BackSpace> <Left> : U20EE


# Démo pour les 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 : rajouter les ↗ et consors


# Démo pour transformation d'une touche non morte en morte
# On peux rajouter ici tout les symboles monétaires, cf la liste de discussions
# TODO : Mettre à jour cette section avec les pilote 0.6.5.1 ou peut-être l’enlever
<currency> <E> : "€" EuroSign
<currency> <S> : "$" dollar
<currency> <Y> : "¥" yen
<currency> <L> : "£" sterling
<currency> <currency> : "¤" currency
<currency> <space> : "¤" currency

# Démo pour le support du dead_stroke ainsi que les touches mortes multiples.
# TODO : Mettre à jour cette section avec les pilote 0.6.5.1 ou peut-être l’enlever
<dead_stroke> <o> : "ø" U00F8
<dead_stroke> <O> : "Ø" U00D8
<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: 
# Dans le fichier xkb, il faut affecter un dead_stroke à une touche au choix.
# Par exemple pour un / mort sur le AltGr + l :
#    key <AD09> { [ l, L, dead_stroke ] };

# 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.

# 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"

# Accents morts ⇒ non mort (recopiés depuis le fichier inclus)
<dead_tilde> <space>                : "~"   asciitilde # TILDE
<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> <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

# Arrows
<Multi_key> <minus> <greater> : "→" U2192
<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


# Misc operators
#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

# TODO Autres Symboles mathématiques ⇒ + / = ⇏, etc.


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