The canonical representation of editor input is a key-event structure. Users
can bind commands to keys (see section key-bindings), which are non-zero
length sequences of key-events. A key-event consists of an identifying token
known as a keysym and a field of bits representing modifiers. Users define
keysyms, integers between 0 and 65535 inclusively, by supplying names that
reflect the legends on their keyboard’s keys. Users define modifier names
similarly, but the system chooses the bit and mask for recognizing the
modifier. You can use keysym and modifier names to textually specify
key-events and Hemlock keys in a #k
syntax. The following are some
examples:
#k"C-u" #k"Control-u" #k"c-m-z" #k"control-x meta-d" #k"a" #k"A" #k"Linefeed"
This is convenient for use within code and in init files containing
bind-key
calls.
The #k
syntax is delimited by double quotes, but the system parses the
contents rather than reading it as a Common Lisp string. Within the double
quotes, spaces separate multiple key-events. A single key-event optionally
starts with modifier names terminated by hyphens. Modifier names are
alphabetic sequences of characters which the system uses case-insensitively.
Following modifiers is a keysym name, which is case-insensitive if it consists
of multiple characters, but if the name consists of only a single character,
then it is case-sensitive.
You can escape special characters — hyphen, double quote, open angle bracket, close angle bracket, and space — with a backslash, and you can specify a backslash by using two contiguously. You can use angle brackets to enclose a keysym name with many special characters in it. Between angle brackets appearing in a keysym name position, there are only two special characters, the closing angle bracket and backslash.
For more information on key-events see section key-events.