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 2


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:

  1. Edit the terminal description:

    $ infocmp >xterm-color.ti
    $ printf '\tkcbt=\E[Z,\n' >>xterm-color.ti
    $ sudo tic xterm-color.ti
  2. 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?

  • 1
    I am trying to use "shift-TAB" to cycle through all headings expanded vs closed in emacs org-mode.
    – hpy
    Commented Mar 11, 2011 at 22:36
  • 1
    Ok, 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>).
    – geekosaur
    Commented 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. Commented 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.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .