emacs
具有双重猜测我按下的组合键(和弦)的默认行为。当我按下的组合键未分配时,它会自动向下转换为较小的和弦,例如。<C-M-up> (translated from <C-M-S-up>)
我怎样才能关闭它?
我实在看不出它有什么价值,但是对于某些用户来说肯定是这样。我还想知道这个(可疑的)功能提供了什么优势......
答案1
简短的回答:没有简单的方法可以禁用到绑定的未转换版本的转换。
如果你想找到未绑定的按键序列,你可以尝试M-x describe-unbound-keys。它确实发现 是未绑定的(在提示复杂性时C-S-up输入)。15
该命令可以在可用的库describe-unbound-keys中找到unbound
这里在维基上。
更长的答案:
相关文档可以在按键顺序输入其中指出:
如果输入字符是大写字符(或具有 Shift 修饰符)并且没有键绑定,但其小写字符具有键绑定,则 read-key-sequence 会将该字符转换为小写字符。请注意,lookup-key 不会以这种方式执行大小写转换。
显然您不喜欢这种行为,但要更改此特定翻译,您必须keyboard.c
在 Emacs 源代码中进行修改 - 查找注释:
/* If KEY is not defined in any of the keymaps,
and cannot be part of a function key or translation,
and is a shifted function key,
use the corresponding unshifted function key instead. */
并禁用if
其后面的语句。
一般来说,键盘翻译的存在是出于其他原因(如本答案顶部的文档链接中所述),您可以通过自定义它提到的各种键盘映射来自定义它们。
答案2
没有任何设置可以禁用所有键的行为。对于特定的移位键组合,您可以将键绑定到ignore
该键上,这将阻止 Emacs 自动将键映射到未移位的版本。
至于为什么存在自动映射,该系统的一个优点是它允许您在仅大写的终端上使用 Emacs,而不必复制所有(通常)小写的绑定。当大量此类终端仍在使用时,GNU Emacs 就已经存在了。