23.12 按键序列

按键序列(key sequence)(简称按键(key))是由一个或多个输入事件构成的整体单元。输入事件包括字符、功能键、鼠标操作,或 Emacs 之外的系统事件,例如 iconify-frame(see 输入事件)。 Emacs Lisp 中按键序列的表示形式为字符串或向量。除非另有说明,所有接受按键序列作为参数的 Emacs Lisp 函数均可处理这两种表示形式。

在字符串表示形式中,字母与数字字符通常表示自身;例如 "a" 代表 a"2" 代表 2。控制字符事件以子串 "\C-" 为前缀,Meta 字符以 "\M-" 为前缀;例如 "\C-x" 代表按键 C-x。 此外,TABRETESCDEL 事件分别由 "\t""\r""\e""\d" 表示。完整按键序列的字符串形式 是其各组成事件字符串形式的拼接;因此 "\C-xl" 代表按键序列 C-x l

包含功能键、鼠标按键事件、系统事件,或非ASCII字符(如 C-=H-a)的按键序列无法用字符串表示,必须使用向量表示。

在向量表示形式中,向量的每个元素以其 Lisp 形式表示一个输入事件。See 输入事件。 例如,向量 [?\C-x ?l] 代表按键序列 C-x l

如需查看字符串与向量形式的按键序列示例,可参考 Init Rebinding in The GNU Emacs Manual

Function: kbd keyseq-text

该函数将文本 keyseq-text(字符串常量)转换为按键序列(字符串或向量常量)。 keyseq-text 的内容所使用的语法,与 C-x C-k RETkmacro-edit-macro) 命令所打开的缓冲区中的语法一致;特别地,功能键名称必须用 ‘<…>’ 包裹。 See Edit Keyboard Macro in The GNU Emacs Manual

(kbd "C-x") ⇒ "\C-x"
(kbd "C-x C-f") ⇒ "\C-x\C-f"
(kbd "C-x 4 C-f") ⇒ "\C-x4\C-f"
(kbd "X") ⇒ "X"
(kbd "RET") ⇒ "^M"
(kbd "C-c SPC") ⇒ "\C-c "
(kbd "<f1> SPC") ⇒ [f1 32]
(kbd "C-M-<down>") ⇒ [C-M-down]

kbd 函数兼容性极强,即便所用语法不完全规范,也会尽量返回合理结果。 若要检查语法是否真正有效,可使用 key-valid-p 函数。


emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike