在 Emacs 中,我将 Ctrl-= 绑定到自定义函数。
奇怪的是,当我在终端中运行 Emacs 时,按下 Ctrl-= 只是输入等号,而不会执行这个自定义函数。在 GUI 窗口中,一切都按预期进行。
我尝试过不同的终端程序,但这似乎没有什么区别。
Emacs 不接收 Ctrl-= 的原因可能是什么?
在我的键盘上,Ctrl-= 实际上是 Ctrl-Shift-0,如果这很重要的话。
我的系统是Kubuntu 22.04。
更新:
由于有人提出这个问题,在终端中不起作用的定义(在 Konsole 中,emacs 以 -nw 选项开头)是:
(global-set-key (kbd "C-M-<") 'indent-region)
(global-set-key (kbd "C-=") 'xxxx)
看来这是在终端中运行 Emacs 的限制。
这里 (https://www.gnu.org/software/emacs/manual/html_node/elisp/Other-Char-Bits.html) 它说:
2.4.3.5 其他字符修饰位
(...) ASCII 无法表示控制字符是大写还是小写。 Emacs 使用 2**25 位来指示在输入控制字符时使用了 Shift 键。这种区别 只能在图形显示上使用,例如 X 上的 GUI 显示;文本终端不报告区别。
据我所知,这扩展到了其他修饰键,例如 Alt、“super”和“hyper”,我将其设置为“Windows”键。