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

Pet*_*r.O 6 keyboard-shortcuts emacs

emacs具有双重猜测我按下的组合键(和弦)的默认行为。当我按下的组合键未分配时,它会自动向下转换为较小的和弦,例如。<C-M-up> (translated from <C-M-S-up>)

我怎样才能关闭它?

我真的看不出它有什么价值,但它一定是为某些用户服务的。我还想知道这个(可疑的)功能提供了什么优势......

Tre*_*son 7

简短回答:没有简单的方法可以禁用到绑定的未转换版本的转换。

如果要查找未绑定的键序列,可以尝试M-x describe-unbound-keys. 它确实发现C-S-up未绑定(15在提示复杂性时输入)。

该命令describe-unbound-keys可以在发现unbound这是可用库这里在wiki上。

更长的答案:

相关文档可以在Key Sequence Input 中找到,其中指出:

如果输入字符是大写的(或有 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.  */
Run Code Online (Sandbox Code Playgroud)

并禁用if它后面的语句。

通常,键盘翻译存在其他原因(如本答案顶部的文档链接中所述),您可以通过自定义它提到的各种键映射来自定义它们。