是否可以阻止 emacs 向下翻译我的调和弦?

是否可以阻止 emacs 向下翻译我的调和弦?

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 就已经存在了。

相关内容