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 c
Emacsでキーの組み合わせを押すと、キーの組み合わせに対して端末が送信する内容を確認できます。
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-map
Emacs 23より前)を介して内部キー表現に変換します。
(define-key local-function-key-map "\033[32;16~" [(super ?\ )])
この投稿は、80%のリサイクル素材で構成されています。すべてのキーの組み合わせを処理できるLinux端末はありますか?