如何区分TAB与Ci?


20

通常,出于历史原因,emacs将TAB密钥代码和C-i密钥视为相同,参见cf。有关功能键的emacs lisp文档abo-abo关于“ TAB和?有什么区别?”问题的答案

注:在这篇文章中,键编码是TAB<tab>C-i; 另一方面tabCtrl+ 和+ i是键盘上的物理键。

但是,此刻,emacs将TABC-i视为相同,即(equal (kbd "TAB") (kbd "C-i"))-> t

但是,由于我们不再生活在计算的困境中,所以我发现这非常烦人。有一些建议可以解决此问题,例如

这些解决方案都不是真正的解决方案,我宁愿考虑它们(现有bug)的变通办法或黑客手段。

有没有办法强制 emacs映射tab(kbd "<tab>")和,(kbd "TAB")Ctrl+ i被映射为(kbd "C-i")缺少对emacs源代码的修改呢?

这种做法应该是在用户完全不可见,这意味着tab像键码<tab>,并TAB应该映射到一个而结合Ctrl+ i类似的键码C-i应该映射到另一个结合。

不太严重的一点是:这里的任何emacs开发人员可以评论是否会在某个时候在emacs源代码中对其进行更改/修复?


2
请注意,TABC-i(根据代码的定义,不是键)是一个并且相同TAB
Stefan 2015年

@Stefan这就是为什么我添加Note的原因。我将编辑帖子并将其放在其中。
elemakil


IMO,这个问题不是重复的,因为它想重新定位在TAB上定义的所有键绑定(甚至是来自外部软件包的键绑定),改用<tab>。另一个问题是询问如何在自己的代码中区分它们。
马拉巴巴

我的建议是建议kbd将TAB翻译为[tab]。它仅适用于Emacs的预加载部分。
马拉巴巴

Answers:


21

未来已一去不复返了,计算的石器时代即将来临。所有文字终端,我知道还是发送完全相同的字节序列为Emacs的C-i作为TAB,让原本需要“统一”起来还是非常符合我们的。

input-decode-map(àla (define-key input-decode-map "\C-i" [C-i]))大约和现在一样好。

作为Emacs的前维护者,我欢迎一个更好的解决方案,以释放GUI下的C-i(和C-mC-[)键(可能使它们“为用户保留”)。但是我不知道如何在不引起现有程序包很多问题的情况下做到这一点。



想知道您使用哪种键盘?使用典型的QWERT键盘,区别很明显,而无法区分这些键真是令人痛苦……
Ivan Huang
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.