elisp: Ctl-Char Syntax

 
 2.3.3.3 Control-Character Syntax
 ................................
 
 Control characters can be represented using yet another read syntax.
 This consists of a question mark followed by a backslash, caret, and the
 corresponding non-control character, in either upper or lower case.  For
 example, both ‘?\^I’ and ‘?\^i’ are valid read syntax for the character
 ‘C-i’, the character whose value is 9.
 
    Instead of the ‘^’, you can use ‘C-’; thus, ‘?\C-i’ is equivalent to
 ‘?\^I’ and to ‘?\^i’:
 
      ?\^I ⇒ 9     ?\C-I ⇒ 9
 
    In strings and buffers, the only control characters allowed are those
 that exist in ASCII; but for keyboard input purposes, you can turn any
 character into a control character with ‘C-’.  The character codes for
 these non-ASCII control characters include the 2**26 bit as well as the
 code for the corresponding non-control character.  Ordinary text
 terminals have no way of generating non-ASCII control characters, but
 you can generate them straightforwardly using X and other window
 systems.
 
    For historical reasons, Emacs treats the <DEL> character as the
 control equivalent of ‘?’:
 
      ?\^? ⇒ 127     ?\C-? ⇒ 127
 
 As a result, it is currently not possible to represent the character
 ‘Control-?’, which is a meaningful input character under X, using ‘\C-’.
 It is not easy to change this, as various Lisp files refer to <DEL> in
 this way.
 
    For representing control characters to be found in files or strings,
 we recommend the ‘^’ syntax; for control characters in keyboard input,
 we prefer the ‘C-’ syntax.  Which one you use does not affect the
 meaning of the program, but may guide the understanding of people who
 read it.