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.

  • 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
  • 6
    instead of restarting your session you can also run xrdb -merge ~/.Xresources Mar 24 '16 at 4:18

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.


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


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

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.