X11 Emacsでは、端末のエンコードとデコードを行わずにキーボード入力を受信し、テキストを表示できます。テキストモードエディタを使用する主な理由は、リモートマシンの画面またはtmux内で実行することですが、Trampのおかげで、通常はローカルEmacsでリモートファイルを編集する方が簡単です。そうは言っても、Xtermの場合、ターミナルエミュレーターが協力している限り、必要なことを行うことができます。
端末でキーまたはキーの組み合わせを押すと、1つ以上の文字のシーケンスとして端末で実行されているアプリケーションに送信されます。たとえば、を押すaと、アプリケーションはを受け取りaます。を押すEnterと、アプリケーションは文字CR(別名^M(「control-emm」と発音)、別名文字番号13、別名\rまたは\015)を受け取ります。関係するキーの組み合わせAltは、通常、文字ESC(a.ka. ^[aka \eまたは\033)として送信され、その後にキーのシーケンスまたはキーなしのキーの組み合わせが続きAltます。ファンクションキーと他のキーの組み合わせは、\e[またはで始まるエスケープシーケンスとして送信され\eOます。
エスケープシーケンスは完全に標準化されておらず、端末は通常、特定のキーの特定の属性を無視します。たとえば、hyperおよびsuper修飾子は通常無視されます。シェルプロンプトでCtrl+ を押しVてからそのキーの組み合わせを押すC-qか、またはC-h cEmacsでキーの組み合わせを押すと、キーの組み合わせに対して端末が送信する内容を確認できます。
Xtermでは、Xリソースを介して各キーのエスケープシーケンスを設定できます。ほとんどのセットアップは~/.Xresources、Xの起動時からリソースを読み取りますxrdb -merge ~/.Xresources。ファイルを手動でロードするには、を使用します。
XTerm.VT100.translations: #override \n\
Ctrl ~Shift ~Meta <Key> Return: string("\033[73;5~") \n\
Ctrl Shift ~Meta <Key> percent: string("\033[37;6~")
一般的な規則ではESC [ number1 ; number2 ~、修飾子付きのファンクションキーにフォームのエスケープシーケンスを使用します。number1(ファンクションキーを示し15に24するためF5にF12-歴史的な理由のために、F1を介してF4異なるエスケープシーケンスを有する)number2修飾子を示す(2ためShift、5ためCtrl、3ためMeta、8のためCtrl+ Meta、及び+に1を追加Shift-いいえ、それは非常に一貫していないが)。
あなたはと、その数によってハイパーやスーパー修飾子を指定する必要がありますMod1てMod5。実行xmodmap -pmして、keysymsの修飾子へのマッピングを確認します。たとえば、Super_LがMod5にバインドされている場合、次の行(この正確なケースを使用)はSuper+のバインドを定義しますSpace。
~Ctrl ~Meta Mod5 <Key> space: string("\033[32;16~") \n\
Emacsは、エスケープシーケンスを、input-decode-mapまたはlocal-function-key-map(function-key-mapEmacs 23より前)を介して内部キー表現に変換します。
(define-key local-function-key-map "\033[32;16~" [(super ?\ )])
この投稿は、80%のリサイクル素材で構成されています。すべてのキーの組み合わせを処理できるLinux端末はありますか?