Next: , Previous: , Up: Keystrokes   [Contents][Index]


2.1.2 Representing Key Sequences

A complete key sequence is a sequence of keystrokes that Emacs understands as a unit. Key sequences are significant because you can bind them to commands. Note that not all sequences of keystrokes are possible key sequences. In particular, the initial keystrokes in a key sequence must make up a prefix key sequence.

Emacs represents a key sequence as a vector of keystrokes. Thus, the schematic representation of a complete key sequence is as follows:

  [(modifier .. modifier keysym) ... (modifier .. modifier keysym)]

Here are some examples of complete key sequences:

[(control c) (control a)]

Typing C-c followed by C-a

[(control c) (control 65)]

Typing C-c followed by C-a. (Using the ASCII code for the character ‘a’)

[(control c) (break)]

Typing C-c followed by the break character.

A prefix key sequence is the beginning of a series of longer sequences that are valid key sequences; adding any single keystroke to the end of a prefix results in a valid key sequence. For example, control-x is standardly defined as a prefix. Thus there is a two-character key sequence starting with C-x for each valid keystroke, giving numerous possibilities. Here are some samples:

Adding one character to a prefix key does not have to form a complete key. It could make another, longer prefix. For example, [(control x) (\4)] is itself a prefix that leads to any number of different three-character keys, including [(control x) (\4) (f)], [(control x) (\4) (b)] and so on. It would be possible to define one of those three-character sequences as a prefix, creating a series of four-character keys, but we did not define any of them this way.

By contrast, the two-character sequence [(control f) (control k)] is not a key, because the (control f) is a complete key sequence in itself. You cannot give [(control f (control k)] an independent meaning as a command while (control f) is a complete sequence, because Emacs would understand C-f C-k as two commands.

The predefined prefix key sequences in Emacs are (control c), (control x), (control h), [(control x) (\4)], and escape. You can customize Emacs and could make new prefix keys or eliminate the default key sequences. See Key Bindings. For example, if you redefine (control f) as a prefix, [(control f) (control k)] automatically becomes a valid key sequence (complete, unless you define it as a prefix as well). Conversely, if you remove the prefix definition of [(control x) (\4)], [(control x) (\4) (f)] (or [(control x) (\4) anything]) is no longer a valid key sequence.

Note that the above paragraphs uses \4 instead of simply 4, because \4 is the symbol whose name is "4", and plain 4 is the integer 4, which would have been interpreted as the ASCII value. Another way of representing the symbol whose name is "4" is to write ?4, which would be interpreted as the number 52, which is the ASCII code for the character "4". We could therefore actually have written 52 directly, but that is far less clear.


Next: , Previous: , Up: Keystrokes   [Contents][Index]