I am trying to use the key "shift-tab" in emacs running purely under Terminal.app, but got an error saying there is no keybinding for "M-[ z" (where M is the meta key, set to be the option key under Terminal.app preferences). In other words, emacs thinks I am pressing "option-[ z" when I pressed "shift-tab" on the keyboard of my MacBook Pro running Mac OS X 10.6.6, what is the problem and how do I correct it? Thank you.
2 Answers
Terminal.app is actually doing what it's supposed to: shift-TAB
sends ESC [ z
which Emacs reads as M-[ z
. The problem is that the terminal description for xterm-color
(the one usually used with Terminal.app and other terminal emulators) is missing the kcbt
declaration, so Emacs doesn't know that that's what the key sends.
There are two ways to fix this:
Edit the terminal description:
$ infocmp >xterm-color.ti $ printf '\tkcbt=\E[Z,\n' >>xterm-color.ti $ sudo tic xterm-color.ti
Tell Emacs about it directly:
$ echo "(global-set-key "\M-[Z" 'something)" >>~/.emacs
The problem in both cases is that there doesn't seem to be a backwards-tab
command to substitute for something
. Emacs.app binds backtab to yank
; what do you want it to do?
-
1I am trying to use "shift-TAB" to cycle through all headings expanded vs closed in emacs org-mode.– hpyMar 11, 2011 at 22:36
-
1Ok, I don't normally use that, but it has a
<backtab>
binding so you should use the first option (fixing the terminal description to define<backtab>
). Mar 11, 2011 at 22:41 -
If someone is only concerned with “fixing” their one account, then the
sudo
can be omitted to re-compile into~/.terminfo/
. This will also prevent it from being overwritten by a system update. Mar 11, 2011 at 22:50
As of Mac OS X Lion 10.7, Terminal is more compatible with modern xterm† and therefore the default $TERM value is now xterm-256color, which contains the kcbt entry, eliminating any need to edit the terminfo entry. xterm-color describes an older branch of xterm and is missing a number of things supported by modern xterm.
† Highlights include: Terminal now uses the BCE (Background Color Erase) color model, it supports 256 colors, and the latest xterm-compatible escape sequences for switching to/from the alternate screen buffer.