CiとTABを区別する方法は?
通常、歴史的な理由から、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。 しかし、私たちはもはやコンピューティングの石積みに住んでいないので、これは非常に迷惑です。これを回避するためにできることはいくつかあります。例えば 「TABを変更せずにコマンドをCiにバインドするにはどうすればよいですか?」 Treyのソリューションは私の場合local-function-key-mapsは機能しませんでした。変数は変更されません。変数を使用するdeleteよりも使用するように変更するとdelq、変数が変更されますが、resolve ... tabとCtrl+ iは同じままです。 ハイパーマップへの翻訳は、 1980年代の回避策のように思えます... Hyper+ を使用することiもできます。 を使用して、いくつかのポスト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ソースコードで変更/修正されるかどうかをコメントできますか?