elisp: Key Sequences
21.1 Key Sequences
==================
A “key sequence”, or “key” for short, is a sequence of one or more input
events that form a unit. Input events include characters, function
keys, mouse actions, or system events external to Emacs, such as
‘iconify-frame’ (Input Events). The Emacs Lisp representation
for a key sequence is a string or vector. Unless otherwise stated, any
Emacs Lisp function that accepts a key sequence as an argument can
handle both representations.
In the string representation, alphanumeric characters ordinarily
stand for themselves; for example, ‘"a"’ represents ‘a’ and ‘"2"’
represents ‘2’. Control character events are prefixed by the substring
‘"\C-"’, and meta characters by ‘"\M-"’; for example, ‘"\C-x"’
represents the key ‘C-x’. In addition, the <TAB>, <RET>, <ESC>, and
<DEL> events are represented by ‘"\t"’, ‘"\r"’, ‘"\e"’, and ‘"\d"’
respectively. The string representation of a complete key sequence is
the concatenation of the string representations of the constituent
events; thus, ‘"\C-xl"’ represents the key sequence ‘C-x l’.
Key sequences containing function keys, mouse button events, system
events, or non-ASCII characters such as ‘C-=’ or ‘H-a’ cannot be
represented as strings; they have to be represented as vectors.
In the vector representation, each element of the vector represents
an input event, in its Lisp form. Input Events. For example,
the vector ‘[?\C-x ?l]’ represents the key sequence ‘C-x l’.
For examples of key sequences written in string and vector
representations, (emacs)Init Rebinding.
-- Function: kbd keyseq-text
This function converts the text KEYSEQ-TEXT (a string constant)
into a key sequence (a string or vector constant). The contents of
KEYSEQ-TEXT should use the same syntax as in the buffer invoked by
the ‘C-x C-k <RET>’ (‘kmacro-edit-macro’) command; in particular,
you must surround function key names with ‘<...>’.
(emacs)Edit Keyboard Macro.
(kbd "C-x") ⇒ "\C-x"
(kbd "C-x C-f") ⇒ "\C-x\C-f"
(kbd "C-x 4 C-f") ⇒ "\C-x4\C-f"
(kbd "X") ⇒ "X"
(kbd "RET") ⇒ "\^M"
(kbd "C-c SPC") ⇒ "\C-c "
(kbd "<f1> SPC") ⇒ [f1 32]
(kbd "C-M-<down>") ⇒ [C-M-down]