历史上,Emacs 支持多种不同的按键定义语法。如今文档推荐的按键绑定方式,是使用
key-valid-p 所支持的语法,这也是 keymap-set、keymap-lookup
等函数所支持的语法。本节介绍旧式语法与接口函数;新代码中不应使用这些内容。
define-key(以及其他用于重新绑定按键的底层函数)可识别多种按键语法。
可以使用一个由修饰键名称加一个基础事件(字符或功能键名称)组成的列表。
例如 [(control ?a) (meta b)] 等价于 C-a M-b,
[(hyper control left)] 等价于 C-H-left。
在内部,按键序列常使用针对 Shift、Control、Meta 修饰键的特殊转义序列表示为字符串(see 字符串类型),
用户在重新绑定按键时也可使用这种表示形式。像 "\M-x" 这样的字符串会被解析为单个 M-x,
"\C-f" 被解析为单个 C-f,而 "\M-\C-x" 与 "\C-\M-x"
均会被解析为单个 C-M-x。
这是按键序列的另一种内部表示形式。它比字符串形式支持更丰富的修饰键,同时也支持功能键。 例如 ‘[?\C-\H-x home]’ 代表按键序列 C-H-x home。 See 字符类型.
该函数与 keymap-set 类似(see 修改按键绑定),
但仅支持旧式按键语法。
此外,该函数还有一个 remove 参数。若其为非nil,则会移除该按键定义。
这与将定义设为 nil 效果基本相同,但在 keymap 存在父映射、且 key
遮蔽了父映射中同名绑定时会产生差异。使用 remove 时,后续查找会返回父映射中的绑定;
而设为 nil 定义时,查找会直接返回 nil。
以下是其他旧式按键定义函数与命令,并列出新代码中应替代使用的现代函数。
该函数将当前全局映射中 key 的绑定设为 binding。
请改用 keymap-global-set。
该函数从当前全局映射中移除 key 的绑定。
请改用 keymap-global-unset。
该函数将当前局部按键映射中 key 的绑定设为 binding。
请改用 keymap-local-set。
该函数从当前局部映射中移除 key 的绑定。
请改用 keymap-local-unset。
该函数将 keymap 中所有绑定到 olddef 的按键,替换为绑定到 newdef。
换言之,olddef 出现的所有位置都会被替换为 newdef。函数返回 nil。
请改用 keymap-substitute。
在 map 中为 key 定义值为 binding 的绑定,用法与 define-key 一致,
但会将该绑定放置在 map 中事件 after 的绑定之后。参数 key 长度应为 1—即仅含一个元素的向量或字符串。而 after 应为单个事件类型—符号或字符,而非序列。
新绑定会位于 after 绑定之后。若 after 为 t 或被省略,
则新绑定放在按键映射的最后面。不过,新绑定会添加在任何继承的按键映射之前。
请改用 keymap-set-after 替代此函数。
该函数修改 keyboard-translate-table,将字符编码 from 转换为字符编码 to。
如有必要,它会创建键盘转换表。请改用 key-translate。
该函数根据当前生效的按键映射返回 key 的绑定。若 key 在映射中未定义,结果为 nil。
参数 accept-defaults 控制是否检查默认绑定,规则与 lookup-key 一致(see 按键查找函数)。
若 no-remap 为非nil,key-binding 会忽略命令重映射(see 命令重映射),
直接返回为 key 指定的绑定。可选参数 position 应为缓冲区位置或类似 event-start
返回值的事件位置;它指定函数基于该位置查询对应的映射。
若 key 不是字符串或向量,Emacs 会抛出错误。
请改用 keymap-lookup 替代此函数。
该函数返回 key 在 keymap 中的定义。若字符串或向量 key 并非 keymap 中前缀按键所指定的有效按键序列,则说明其过长,末尾存在不属于单个按键序列的多余事件。 此时返回值为一个数字,表示 key 前端可构成完整按键的事件数量。
若 accept-defaults 为非nil,lookup-key 会同时考虑默认绑定与
key 中具体事件的绑定;否则仅报告 key 对应序列的绑定,忽略默认绑定,除非显式指定。
请改用 keymap-lookup 替代此函数。
该函数返回 key 在当前局部按键映射中的绑定,若未定义则返回 nil。
参数 accept-defaults 控制是否检查默认绑定,规则与 lookup-key(见上文)一致。
请改用 keymap-local-lookup 替代此函数。
该函数返回 key 在当前全局按键映射中的绑定,若未定义则返回 nil。
参数 accept-defaults 控制是否检查默认绑定,规则与 lookup-key(见上文)一致。
请改用 keymap-global-lookup 替代此函数。
该函数将由修饰键名称与基础事件类型组成的列表,转换为包含全部修饰信息的事件类型。 基础事件类型必须是列表的最后一个元素。例如:
(event-convert-list '(control ?a))
⇒ 1
(event-convert-list '(control meta ?a))
⇒ -134217727
(event-convert-list '(control super f1))
⇒ C-s-f1