A 键盘宏(keyboard macro)是一套预设的输入事件序列, 可被视为一条命令,并可作为某个键的定义。键盘宏的 Lisp 表述形式是 一个包含事件的字符串或向量。请不要将键盘宏与 Lisp 宏混淆 (see 宏)。
该函数将 kbdmacro 作为事件序列来执行。 如果 kbdmacro 是一个字符串或向量,那么其中的事件会被 完全如同由用户输入那样地执行。该序列 不 要求是单一的键序列; 通常,一个键盘宏的定义由多个键序列拼接而成。
如果 kbdmacro 是一个符号(symbol),则其函数定义将被用作 kbdmacro。如果该定义又是另一个符号,则此过程会重复进行。 最终的结果应当是一个字符串或向量。如果结果既不是符号、字符串也不是向量, 则会发出错误信号。
参数 count 是重复次数(repeat count);
kbdmacro 将被执行相应的次数。
如果省略 count 或其值为 nil,
则 kbdmacro 仅执行一次。
如果其值为 0,则 kbdmacro 将反复执行,
直到遇到错误或搜索失败为止。
如果 loopfunc 非 nil,它是一个无参函数,
会在宏的每次迭代执行之前被调用。
若 loopfunc 返回 nil,则宏的执行将停止。
关于使用 execute-kbd-macro 的示例,
see 读取单个事件。
该变量包含当前正在执行的键盘宏的定义字符串或向量。
若当前没有执行任何宏,其值为 nil。
一个命令可以通过检测此变量,
使其在由正在执行的宏调用时表现出不同的行为。
请勿手动设置此变量。
当且仅当正在定义一个键盘宏时,该变量的值为非 nil。
一个命令可以通过检测此变量,
使其在宏定义过程中表现出不同的行为。
当向现有宏的定义中追加内容时,该变量的值为 append。
命令 start-kbd-macro、kmacro-start-macro
和 end-kbd-macro 会设置该变量—请勿手动设置它。
该变量始终是当前终端(terminal)的本地变量,不能成为缓冲区本地(buffer-local)的。 See Multiple Terminals。
该变量存放最近一次定义的键盘宏的定义。其值为字符串、向量或 nil。
该变量始终是当前终端的局部变量,不能设为缓冲区局部变量。See Multiple Terminals。
该普通钩子会在键盘宏终止时运行,无论终止原因是什么(执行到宏末尾,或因错误提前结束宏)。