I see that this question has been asked multiple times. The solutions given there in does not seem to apply to my setup. Here is my story:

I use ubuntu 12.0.04 LTS, with xmonad (not over gnome), and use xterm for my work. I would prefer to use xterm rather than a different terminal or emacs own window. When using emacs -nw, I see that Alt is not recognized. I verified using xev that Alt is indeed getting generated. Further, if I am using rxvt, I see that Alt is getting recognized by emacs -nw. I am using evil mode (as a long time vim user, and an emacs newbee), and I would really prefer not having my escape key rebound as alt (which was the solution given in another thread). What should I do? (If it helps, Alt-x on the xterm window without emacs running generates "ø" or if I run emacs -nw -Q).

  • If I'm not mistaken Alt is being read as M instead. – Braiam Apr 3 '14 at 1:27
  • I didn't understand, you mean M rather than Meta right? Why do you say that? – rahul Apr 3 '14 at 1:38
  • Emacs Meta key. Can't you press M-x? – Braiam Apr 3 '14 at 1:44
  • Oh, that is my problem. I expected Alt-x to generate M-x (as it does on graphical mode) but it does not do that on xterm for me. Instead it generates (ø) – rahul Apr 3 '14 at 1:47

As seen in the Arch Wiki, you need to make Xterm to send the correct escaped key to the program:

If you use the Alt key for keyboard shortcuts, you will need this in your resource file:

XTerm*metaSendsEscape: true

So, just do:

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

And restart your Xterm session.

| improve this answer | |
  • Thanks, that worked. So, if Alt sends escape now, how does xterm handle Escape? (Escape works too, I am asking for my understanding.) – rahul Apr 3 '14 at 2:39
  • @rahul I didn't say "Esc" escape, but escaped key press "^M" – Braiam Apr 3 '14 at 2:40
  • 5
    instead of restarting your session you can also run xrdb -merge ~/.Xresources – Christian Fritz Mar 24 '16 at 4:18

If updating ~/.Xresources doesn't work for you, do as the documentation says and update it in ~/.Xdefaults


| improve this answer | |
  • This worked for me in bare X server, like with startx /usr/bin/xterm, where ~/.Xresources was ignored. – Ruslan Mar 18 at 18:33

There is an interesting alternative to managing your .Xdefaults / .Xresources files by providing the resource string directly as xterm command line option:

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

This is handy, for example, if you have a custom alias for x-terminal-emulator anyway.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.