Comment faire xterm pour envoyer la clé Alt à emacs en tant que Meta?

9

Je vois que cette question a été posée plusieurs fois . Les solutions qui y sont données ne semblent pas s'appliquer à ma configuration. Voici mon histoire:

J'utilise ubuntu 12.0.04 LTS, avec xmonad (pas sur gnome), et j'utilise xterm pour mon travail. Je préférerais utiliser xterm plutôt qu'un autre terminal ou une propre fenêtre emacs. Lorsque j'utilise emacs -nw, je vois que Alt n'est pas reconnu. J'ai vérifié en utilisant xev que Alt est bien généré. De plus, si j'utilise rxvt, je vois que Alt est reconnu par emacs -nw. J'utilise le mode diabolique (en tant qu'utilisateur de longue date de vim et un newbee emacs), et je préférerais vraiment ne pas avoir le rebond de ma touche d'échappement comme alt (qui était la solution donnée dans un autre thread). Que devrais-je faire? (Si cela aide, Alt-x sur la fenêtre xterm sans emacs en cours d'exécution génère "ø" ou si je lance emacs -nw -Q).

rahul
la source
Si je ne me trompe pas, Alt est lu comme M à la place.
Braiam
Je ne comprenais pas, tu veux dire M plutôt que Meta non? Pourquoi dites vous cela?
rahul
Emacs Meta key. Tu ne peux pas appuyer sur Mx?
Braiam
Oh, c'est mon problème. Je m'attendais à ce qu'Alt-x génère Mx (comme il le fait en mode graphique), mais il ne le fait pas sur xterm pour moi. Au lieu de cela, il génère (ø)
rahul

Réponses:

13

Comme vu dans Arch Wiki , vous devez faire en sorte que Xterm envoie la bonne clé d'échappement au programme:

Si vous utilisez la Alttouche pour les raccourcis clavier, vous en aurez besoin dans votre fichier de ressources:

XTerm*metaSendsEscape: true

Alors, faites simplement:

echo 'XTerm*metaSendsEscape: true' >> ~/.Xresources

Et redémarrez votre session Xterm.

Braiam
la source
Merci, ça a marché. Donc, si Alt envoie un escape maintenant, comment xterm gère-t-il Escape? (L'évasion fonctionne aussi, je demande ma compréhension.)
rahul
@rahul Je n'ai pas dit "Esc", mais j'ai échappé, appuyez sur la touche "^ M"
Braiam
4
au lieu de redémarrer votre session, vous pouvez également exécuterxrdb -merge ~/.Xresources
Christian Fritz
2

Si la mise à jour de ~ / .Xresources ne fonctionne pas pour vous, procédez comme indiqué dans la documentation et mettez-la à jour dans ~/.Xdefaults

http://frequal.com/linux/XTermMetaSendsEscape.html

Adam
la source
Cela a fonctionné pour moi dans le serveur X nu, comme avec startx /usr/bin/xterm, où a ~/.Xresourcesété ignoré.
Ruslan
1

Il existe une alternative intéressante à la gestion de vos fichiers .Xdefaults/ .Xresourcesen fournissant la chaîne de ressource directement comme xtermoption de ligne de commande:

xterm -xrm 'xterm*VT100.metaSendsEscape: true'

C'est pratique, par exemple, si vous avez x-terminal-emulatorquand même un alias personnalisé .

vog
la source