通常、歴史的な理由から、emacsはTAB
キーコードとC-i
キーを同じものとして扱います。cf。ファンクションキーに関するemacs lispのドキュメント、または「TABとの違いは何ですか?」という質問に対するabo-aboの回答 。
注:この記事では、キーコードがあり
TAB
、<tab>
とC-i
。一方tab、Ctrl+ はキーボードの物理キーです。 iしかし、現時点では、Emacsの扱い
TAB
とC-i
同じもののように、すなわち(equal (kbd "TAB") (kbd "C-i"))
- >t
。
しかし、私たちはもはやコンピューティングの石積みに住んでいないので、これは非常に迷惑です。これを回避するためにできることはいくつかあります。例えば
を使用して、いくつかのポストASCII制御コードに+
input-decode-map
をマッピングすることCtrliは、ほとんど私が探しているものです。+kbd
をバインドするソースコードのすべてのビットを変更する必要があることを意味するマクロで適切に動作しないことを除きます。すべてのソースコードが適切に変更されていることを考えると、おそらくこれが最良のソリューションです。Ctrli使用
(kbd "<tab>")
のためにtabと(kbd "C-i")
(に変換され(kbd "TAB")
、つまり\t
ためにリテラルを)Ctrl+は、i 仕事をしていますが、変更する必要があると思い、すべての間違った種類使用するソースファイルtab[読む:キーコードTAB
]迷惑です。
これは、たとえばgithubの問題やemacs.sxでも提案されています。
これらの解決策はどれも本当の解決策ではないようで、回避策やハッキング(既存のバグの)を検討したいと思います。
するそこに方法があり、強制的にマップするのemacsをtabする
(kbd "<tab>")
と(kbd "TAB")
しながら、Ctrl+ iにマッピングされている(kbd "C-i")
Emacsのソースコードをmodyfingの短いは?このアプローチはつまり、ユーザーには完全に見えなくする必要がありますtabキーコードのような
<tab>
とはTAB
しながら結合1にマップする必要がありますCtrl+ iキーコードのようなC-i
別の結合にマップする必要があります。
それほど深刻ではありませんが、ここにあるemacs開発者は、これがいつかemacsソースコードで変更/修正されるかどうかをコメントできますか?
kbd
TABを[tab]として翻訳することをアドバイスすることです。Emacsのプリロードされた部分では機能しません。
TAB
andC-i
(コードではなく、キー)はの定義により同一であることに注意してくださいTAB
。