GNU Emacs Manual - Function Keys

Go to the first, previous, next, last section, table of contents.

### Rebinding Function Keys

Key sequences can contain function keys as well as ordinary characters. Just as Lisp characters (actually integers) represent keyboard characters, Lisp symbols represent function keys. If the function key has a word as its label, then that word is also the name of the corresponding Lisp symbol. Here are the conventional Lisp names for common function keys:

`left`, `up`, `right`, `down`
  Cursor arrow keys.
`begin`, `end`, `home`, `next`, `prior`
  Other cursor repositioning keys.
`select`, `print`, `execute`, `backtab`
`insert`, `undo`, `redo`, `clearline`
`insertline`, `deleteline`, `insertchar`, `deletechar`,
  Miscellaneous function keys.
`f1`, `f2`, ... `f35`
  Numbered function keys (across the top of the keyboard).
`kp-add`, `kp-subtract`, `kp-multiply`, `kp-divide`
`kp-backtab`, `kp-space`, `kp-tab`, `kp-enter`
`kp-separator`, `kp-decimal`, `kp-equal`
  Keypad keys (to the right of the regular keyboard), with names or punctuation.
`kp-0`, `kp-1`, ... `kp-9`
  Keypad keys with digits.
`kp-f1`, `kp-f2`, `kp-f3`, `kp-f4`
  Keypad PF keys.

These names are conventional, but some systems (especially when using X windows) may use different names. To make certain what symbol is used for a given function key on your terminal, type `C-h c` followed by that key.

A key sequence which contains function key symbols (or anything but ASCII characters) must be a vector rather than a string. The vector syntax uses spaces between the elements, and square brackets around the whole vector. Thus, to bind function key ``f1'` to the command `rmail`, write the following:

    (global-set-key [f1] 'rmail)

To bind the right-arrow key to the command `forward-char`, you can use this expression:

    (global-set-key [right] 'forward-char)

This uses the Lisp syntax for a vector containing the symbol `right`. (This binding is present in Emacs by default.)

See section Rebinding Keys in Your Init File, for more information about using vectors for rebinding.

You can mix function keys and characters in a key sequence. This example binds `C-x `NEXT`` to the command `forward-page`.

    (global-set-key [?\C-x next] 'forward-page)

where `?\C-x` is the Lisp character constant for the character `C-x`. The vector element `next` is a symbol and therefore does not take a question mark.

You can use the modifier keys `CTRL`, `META`, `HYPER`, `SUPER`, `ALT` and `SHIFT` with function keys. To represent these modifiers, add the strings ``C-'`, ``M-'`, ``H-'`, ``s-'`, ``A-'` and ``S-'` at the front of the symbol name. Thus, here is how to make `Hyper-Meta-`RIGHT`` move forward a word:

    (global-set-key [H-M-right] 'forward-word)

Go to the first, previous, next, last section, table of contents.