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
begin , end , home , next , prior
select , print , execute , backtab insert , undo , redo , clearline insertline , deleteline , insertchar , deletechar ,
f1 , f2 , ... f35
kp-add , kp-subtract , kp-multiply , kp-divide kp-backtab , kp-space , kp-tab , kp-enter kp-separator , kp-decimal , kp-equal
kp-0 , kp-1 , ... kp-9
kp-f1 , kp-f2 , kp-f3 , kp-f4 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 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)