Jak zmusić xterm do wysłania klawisza Alt do emacsa jako Meta?

9

Widzę, że to pytanie zostało zadane wiele razy . Podane tam rozwiązania nie wydają się mieć zastosowania do mojej konfiguracji. Oto moja historia:

Używam Ubuntu 12.0.04 LTS, z Xmonadem (nie ponad gnome) i używam xterm do mojej pracy. Wolałbym używać xterm zamiast innego terminalu lub własnego okna emacsa. Kiedy używam emacs -nw, widzę, że Alt nie jest rozpoznawany. Sprawdziłem za pomocą xev, że Alt rzeczywiście jest generowany. Ponadto, jeśli używam rxvt, widzę, że Alt jest rozpoznawany przez emacs -nw. Korzystam z trybu zła (jako długoletni użytkownik vima i nowicjusz emacsa) i naprawdę wolałbym, aby mój klucz ucieczki nie był odbijany jako alt (co było rozwiązaniem podanym w innym wątku). Co powinienem zrobić? (Jeśli to pomoże, Alt-x w oknie xterm bez uruchomionego emacsa generuje „ø” lub jeśli uruchamiam emacs -nw -Q).

Rahul
źródło
Jeśli się nie mylę, zamiast tego Alt jest odczytywany jako M.
Braiam
Nie rozumiem, masz na myśli M, a nie Metę, prawda? Dlaczego to mówisz?
rahul
Emacs Meta key. Nie możesz nacisnąć Mx?
Braiam
To mój problem. Spodziewałem się, że Alt-x wygeneruje Mx (jak ma to miejsce w trybie graficznym), ale dla mnie nie robi tego na xterm. Zamiast tego generuje (ø)
rahul

Odpowiedzi:

13

Jak widać na Arch Wiki , musisz zmusić Xterm do wysłania poprawnego klawisza Esc do programu:

Jeśli używasz Altklawisza do skrótów klawiaturowych, będziesz potrzebować tego w pliku zasobów:

XTerm*metaSendsEscape: true

Więc po prostu wykonaj:

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

I uruchom ponownie sesję Xterm.

Braiam
źródło
Dzięki, działało. Więc jeśli Alt wysyła teraz ucieczkę, w jaki sposób xterm obsługuje Escape? (Escape też działa, proszę o wyrozumiałość.)
rahul
@rahul Nie powiedziałem „Esc” Escape, ale klawisz Esc uciekł, naciśnij „^ M”
Braiam
4
zamiast wznawiać sesję, możesz także uruchomićxrdb -merge ~/.Xresources
Christian Fritz
2

Jeśli aktualizacja ~ / .Xresources nie działa dla Ciebie, zrób tak, jak mówi dokumentacja i zaktualizuj ją ~/.Xdefaults

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

Adam
źródło
Działa to dla mnie na gołym serwerze X, na przykład z startx /usr/bin/xterm, gdzie ~/.Xresourceszostało zignorowane.
Ruslan
1

Istnieje interesująca alternatywa do zarządzania plikami .Xdefaults/ .Xresourcesprzez podanie ciągu zasobów bezpośrednio jako xtermopcji wiersza poleceń:

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

Jest to przydatne na przykład, jeśli i tak masz niestandardowy alias x-terminal-emulator.

vog
źródło