CiとTABを区別する方法は?


20

通常、歴史的な理由から、emacsはTABキーコードとC-iキーを同じものとして扱います。cf。ファンクションキーに関するemacs lispのドキュメント、または「TABとの違いは何ですか?」という質問に対するabo-aboの回答

注:この記事では、キーコードがありTAB<tab>C-i。一方tabCtrl+ はキーボードの物理キーです。 i

しかし、現時点では、Emacsの扱いTABC-i同じもののように、すなわち(equal (kbd "TAB") (kbd "C-i"))- > t

しかし、私たちはもはやコンピューティングの石積みに住んでいないので、これは非常に迷惑です。これを回避するためにできることはいくつかあります。例えば

これらの解決策はどれも本当の解決策ではないようで、回避策やハッキング(既存のバグの)を検討したいと思います。

するそこに方法があり、強制的にマップするのemacsをtabする(kbd "<tab>")(kbd "TAB")しながら、Ctrl+ iにマッピングされている(kbd "C-i")Emacsのソースコードをmodyfingの短いは?

このアプローチはつまり、ユーザーには完全に見えなくする必要がありますtabキーコードのような<tab>とはTABしながら結合1にマップする必要がありますCtrl+ iキーコードのようなC-i別の結合にマップする必要があります。

それほど深刻ではありませんが、ここにあるemacs開発者は、これがいつかemacsソースコードで変更/修正されるかどうかをコメントできますか?


2
TABand C-i(コードではなく、キー)はの定義により同一であることに注意してくださいTAB
ステファン

@Stefanそれが私がノートの事を追加した理由です。投稿を編集してそこに配置します。
エレマキル


IMO、この質問は重複ではありません。TABで定義されたすべてのキーバインド(外部パッケージからのものを含む)を再配置し、代わりに<tab>を使用するためです。もう1つの質問は、独自のコードでそれらを区別する方法を尋ねることでした。
マラバルバ

私の提案は、kbdTABを[tab]として翻訳することをアドバイスすることです。Emacsのプリロードされた部分では機能しません。
マラバルバ

回答:


21

未来は遠い昔であり、コンピューティングの石器時代はもうすぐです。私はまだ知っているすべてのテキスト端末はのためのEmacsにまったく同じバイトシーケンスを送信するC-iためのようTABなので、彼らは私たちに非常にまだある「統一」にオリジナルが必要。

input-decode-map(àla (define-key input-decode-map "\C-i" [C-i]))は、たぶん今と同じくらい良いでしょう。

Emacsの元保守担当者として、この問題に対するより良い解決策を歓迎します。GUIで(C-iおよびC-mand C-[)キーを解放します(おそらく「ユーザー用に予約済み」にします)。しかし、私は既存のパッケージで多くの問題を引き起こすことなくそれを行う方法を知りません。



どのようなキーボードを使用していますか?典型的なQWERTキーボードでは、区別が明らかであり、これらのキーを区別できないことは非常に苦痛です...
Ivan Huang
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.