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.
Terminal.app is actually doing what it's supposed to:
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?
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.