Next: Transparent Key Bindings, Previous: Binding Commands to Keys, Up: The Command Interpreter [Contents][Index]
Key translation is a process that the command interpreter applies to keys before doing anything else. There are two kinds of key translations: substitution and bit-prefix. In either case, the command interpreter translates a key when a specified key-event sequence appears in a key.
In a substitution translation, the system replaces the matched subsequence with another key-event sequence. Key translation is not recursively applied to the substituted key-events.
In a bit-prefix translation, the system removes the matched subsequence and effectively sets the specified bits in the next key-event in the key.
While translating a key, if the system encounters an incomplete final subsequence of key-events, it aborts the translation process. This happens when those last key-events form a prefix of some translation. It also happens when they translate to a bit-prefix, but there is no following key-event to which the system can apply the indicated modifier. If there is a binding for this partially untranslated key, then the command interpreter will invoke that command; otherwise, it will wait for the user to type more key-events.
This form is setf’able and allows users to register key translations that the command interpreter will use as users type key-events.
This function returns the key translation for key, returning nil if there is none. Key is either a key-event or a sequence of key-events. If key is a prefix of a translation, then this returns :prefix.
A key translation is either a key or modifier specification. The bits translations have a list form: (:bits {bit-name}*).
Whenever key appears as a subsequence of a key argument to the binding manipulation functions, that portion will be replaced with the translation.
Next: Transparent Key Bindings, Previous: Binding Commands to Keys, Up: The Command Interpreter [Contents][Index]