目前,如果我按下 C-h c
,然后在键盘上连续按三次 ESC
键,就会得到以下结果
ESC ESC ESC (translated from <escape> <escape> <escape>) runs the command keyboard-escape-quit
ESC
和<escape>
有什么区别,我该如何利用这种差异来创建更多的键位绑定?
目前,如果我按下 C-h c
,然后在键盘上连续按三次 ESC
键,就会得到以下结果
ESC ESC ESC (translated from <escape> <escape> <escape>) runs the command keyboard-escape-quit
ESC
和<escape>
有什么区别,我该如何利用这种差异来创建更多的键位绑定?
在emacs
邮件列表归档中找到解决方案:
Escape键通常与转义字符相关联,但两者是不同的。在tty下,如果您键入escape键或C-[(两者都发送转义字符),Emacs将从终端接收到完全相同的字节序列。
另一方面,在GUI下,Emacs可以区分两者,因此在GUI下,escape键不会发送
?\ e
(也称为kbd的ESC
),而是发送escape
(即kbd的<escape>
),通常通过function-key-map转换为?\e
(即仅当没有对具有escape的键序列的对应绑定时)。Tab键(即TAB(又名
C-i
)与tab)以及回车(即RET(又名C-m
)与return)发生的情况也是如此。