为什么 keymap 里有两个 esc ?

我看了一下 ivy-minibuffer-map 里有两个 esc,这个是什么意思?

image

按下 esc 的时候到底哪个在起作用?怎么决定的?

ESC^[ 字符,<escape> 是图形界面下的 esc 鍵的 keycode。在图形界面按 esc, Emacs 收到 后识別为 <escape>,用 key-translation-mapkey-translation-map 转成 ESC。在终端按 esc,终端收到后发给 Emacs ^[ 字符,Emacs 识別为 ESC

3 个赞

感觉这样设计让人很费解,请问<space>和SPC也是图形界面和终端的区别吗,我要定义快捷键得定义两个?

沒有 <space>。为什麼要有 <escape>ESC 的区別是因為终端下 altesc 发送的字符都是 ^[

1 个赞

那有<tab>吗,我看一些文章里有吗,还是只有esc有两种,区分客户端和终端

那在终端下alt和esc就无法区分了?是一样的?

<tab>,因为终端下 Tab 发送的字符和 C-i 一樣。

最多只能通過時否和其它字符一起发送來確定。比如 ^[a 如果是一起收到就是 Alt 和 a,两个隔一会時就是 ESC 和 a

1 个赞