Bagaimana cara membuat xterm untuk mengirim kunci Alt ke emacs sebagai Meta?

9

Saya melihat bahwa pertanyaan ini telah ditanyakan beberapa kali . Solusi yang diberikan di sana sepertinya tidak berlaku untuk pengaturan saya. Inilah kisah saya:

Saya menggunakan ubuntu 12.0.04 LTS, dengan xmonad (tidak lebih dari gnome), dan menggunakan xterm untuk pekerjaan saya. Saya lebih suka menggunakan xterm daripada terminal yang berbeda atau jendela emacs sendiri. Saat menggunakan emacs -nw, saya melihat bahwa Alt tidak dikenali. Saya memverifikasi menggunakan xev bahwa Alt memang dihasilkan. Lebih jauh, jika saya menggunakan rxvt, saya melihat bahwa Alt dikenali oleh emacs -nw. Saya menggunakan mode jahat (sebagai pengguna lama vim, dan newbee emacs), dan saya benar-benar lebih suka tidak memiliki rebound kunci melarikan diri saya sebagai alt (yang merupakan solusi yang diberikan di thread lain). Apa yang harus saya lakukan? (Jika itu membantu, Alt-x pada jendela xterm tanpa menjalankan emacs menghasilkan "ø" atau jika saya menjalankan emacs -nw -Q).

rahul
sumber
Jika saya tidak salah Alt sedang dibaca sebagai M sebagai gantinya.
Braiam
Saya tidak mengerti, maksud Anda M daripada Meta kan? Mengapa kamu mengatakannya?
rahul
Kunci Meta Emacs. Tidak bisakah kamu menekan Mx?
Braiam
Oh, itu masalah saya. Saya mengharapkan Alt-x untuk menghasilkan Mx (seperti halnya pada mode grafis) tetapi tidak melakukannya pada xterm untuk saya. Alih-alih itu menghasilkan (ø)
rahul

Jawaban:

13

Seperti yang terlihat di Arch Wiki , Anda perlu membuat Xterm untuk mengirim kunci lolos yang benar ke program:

Jika Anda menggunakan Alttombol untuk pintasan keyboard, Anda akan membutuhkan ini di file sumber daya Anda:

XTerm*metaSendsEscape: true

Jadi, lakukan saja:

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

Dan mulai kembali sesi Xterm Anda.

Braiam
sumber
Terima kasih, itu berhasil. Jadi, jika Alt mengirim escape sekarang, bagaimana xterm menangani Escape? (Melarikan diri juga berfungsi, saya meminta pengertian saya.)
rahul
@rahul Saya tidak mengatakan "Esc" melarikan diri, tetapi melarikan diri dari tekan tombol "^ M"
Braiam
4
alih-alih memulai kembali sesi Anda, Anda juga dapat menjalankanxrdb -merge ~/.Xresources
Christian Fritz
2

Jika memperbarui ~ / .Xresources tidak berfungsi untuk Anda, lakukan seperti yang dikatakan dokumentasi dan perbarui di ~/.Xdefaults

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

Adam
sumber
Ini bekerja untuk saya di server X telanjang, seperti dengan startx /usr/bin/xterm, di mana ~/.Xresourcesdiabaikan.
Ruslan
1

Ada alternatif yang menarik untuk mengelola Anda .Xdefaults/ .Xresourcesfile dengan memberikan string sumber daya secara langsung sebagai xtermopsi baris perintah:

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

Ini berguna, misalnya, jika Anda memiliki alias kustom untuk apa pun x-terminal-emulator.

vog
sumber