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’ (SeeInput 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.  SeeInput 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, See(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 ‘<...>’.  See
      (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]