Aller au contenu
xreveillon.eu

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.

4 min de lecture

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 touches dead_grave, dead_acute

À produireLinux (défaut)Windows
Un accent grave2 frappes2 frappes
Deux accents graves4 frappes2 frappes
Une clôture ```6 frappes4 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, ~/.XCompose remplace 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 restart dans 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 ~/.XCompose au 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

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