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) 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.)
Note:Init Rebinding, 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)