Touches mortes sous Linux : retrouver le comportement Windows
Sous Linux, deux accents graves coûtent quatre frappes, deux sous Windows. Comprendre les tables Compose et rétablir le comportement Windows avec ~/.XCompose.
Vous écrivez du Markdown sur un clavier à touches mortes ? Alors vous connaissez le supplice de la clôture de code. Sur ma Debian, ouvrir un bloc avec trois accents graves demande six frappes. Sous Windows : trois, plus une espace. Le coupable n’est ni votre bureau, ni votre distribution — ce sont les tables Compose.
Le problème en chiffres
Avec une disposition à touches mortes, la touche accent grave n’insère rien par elle-même : elle attend le caractère suivant. Accent + voyelle = voyelle accentuée. Accent + espace = l’accent seul. Jusque-là, tout va bien.
Note : le nom vient de la machine à écrire. La touche « morte » imprimait l’accent sans faire avancer le chariot — pas d’espacement, donc pas de caractère à elle seule. La lettre suivante se surimprimait à la même place, formant
éencre sur encre. L’informatique a hérité du terme : X11 nomme littéralement ces touchesdead_grave,dead_acute…
| À produire | Linux (défaut) | Windows |
|---|---|---|
| Un accent grave | 2 frappes | 2 frappes |
| Deux accents graves | 4 frappes | 2 frappes |
Une clôture ``` | 6 frappes | 4 frappes (3 + espace) |
Sous Windows, taper deux fois une touche morte émet le caractère deux fois. Sous Linux, chaque paire de frappes ne produit qu’un seul caractère. D’où la facture double pour `` et ```.
La cause : les tables Compose
Sous Linux, la résolution des touches mortes est définie par les tables Compose — historiquement X11, aujourd’hui implémentées aussi par libxkbcommon. La table de votre locale vit sous /usr/share/X11/locale/. Pour une locale en_US.UTF-8 :
grep "<dead_grave>" /usr/share/X11/locale/en_US.UTF-8/Compose
<dead_grave> <space> : "`"
<dead_grave> <dead_grave> : "`"
Voilà le coupable : la seconde ligne mappe deux frappes de la touche morte sur un seul accent grave. C’est la convention X11, et elle est partout : GNOME, KDE Plasma, MATE et XFCE résolvent les touches mortes via les mêmes tables, que ce soit à travers GTK, Qt, IBus ou fcitx — tous implémentent la même spécification. Windows et macOS sont les exceptions : chez eux, la touche morte doublée émet le caractère deux fois.
Changer d’environnement graphique ne vous sauvera donc pas. Surcharger la table, si.
Le correctif : ~/.XCompose
La table se surcharge au niveau utilisateur, dans ~/.XCompose :
# ~/.XCompose — surcharges personnelles
# Conserve toute la table système (accents morts, Multi_key, etc.)
include "%L"
# Comportement « Windows » : une touche morte doublée émet le caractère deux fois
<dead_grave> <dead_grave> : "``"
# La même astuce pour les autres touches mortes, si besoin :
# <dead_acute> <dead_acute> : "''"
# <dead_circumflex> <dead_circumflex> : "^^"
# <dead_tilde> <dead_tilde> : "~~"
La directive include "%L" inclut la table système de votre locale (%L est remplacé par son chemin) ; la ligne suivante la surcharge.
Attention : sans l’
include,~/.XComposeremplace la table système entière — adieu è, à, ù et toutes les autres compositions (lettres avec accent “manuel” aussi).
L’activer
La table est chargée au démarrage de la session et des applications :
- IBus tourne (le cas sous GNOME, et bien souvent ailleurs) :
ibus restartdans un terminal de votre session, puis fermez et rouvrez vos applications. - Sinon : déconnexion, reconnexion.
- Sous Wayland, GTK et Qt s’appuient sur libxkbcommon, qui lit le même
~/.XComposeau lancement de chaque application — redémarrer l’application suffit généralement.
Le mécanisme n’est donc pas spécifique à X11 : X11 ou Wayland, même table, même correctif.
Vérifier que tout marche
| Frappe | Résultat attendu |
|---|---|
Accent grave puis e | è — les accents n’ont pas bougé |
| Accent grave puis espace | ` — inchangé |
| Accent grave × 2 | `` — 2 frappes au lieu de 4 |
| Accent grave × 3 puis espace | ``` — parité Windows |
Pour aller plus loin
- La page de manuel
Compose(5)documente le format complet : inclusions,Multi_key, séquences longues. - Le wiki Arch sur XCompose recense les pièges connus par toolkit.
- Le même principe s’applique à toutes les touches mortes : circonflexe, tréma, tilde — lignes prêtes, commentées, dans le fichier ci-dessus.
Conclusion
Six frappes pour une clôture de code, ce n’était pas une fatalité — juste une convention de table Compose, surchargeable en trois lignes. Mon ~/.XCompose me permet maintenant d’économiser des frappes, et l’écriture de mes blocs Markdown est simplifiée.
Commentaires