tmux send-keys syntax

xxjjnn picture xxjjnn · Oct 11, 2013 · Viewed 48.6k times · Source

On the tmux man page I found no reference to how it names keys.

For example, to send ctrl + r to tmux you would do:

tmux send-keys C-r

and to send the esc key you do

tmux send-keys Escape

Is there a list which maps keyboard keys to how tmux sendkeys expects you to name them? I have a feeling that I missed a memo that its using some-long-forgotten-program's syntax for convenience.

Note, this is nothing to do with key bindings.

Answer

Chris Johnsen picture Chris Johnsen · Oct 12, 2013

The key names used by send-keys are the same ones that bind-key uses.
From the Key Bindings section of the tmux manpage:

When specifying keys, most represent themselves (for example ‘A’ to ‘Z’). Ctrl keys may be prefixed with ‘C-’ or ‘^’, and Alt (meta) with ‘M-’. In addition, the following special key names are accepted: Up, Down, Left, Right, BSpace, BTab, DC (Delete), End, Enter, Escape, F1 to F20, Home, IC (Insert), NPage/PageDown/PgDn, PPage/PageUp/PgUp, Space, and Tab.

Although they are not listed in the man page, there are also special names for keypad-specific keys: KP0 through KP9, KP/, KP*, KP-, KP+, KP., and KPEnter.

Several of the more cryptic key names (BTab, IC, DC, NPage, PPage) probably come from the terminfo library.

Emacs shares the convention of using C- and M- prefixes to indicate modifiers (I would not be surprised if there were earlier uses of this convention).