すべてのキーの組み合わせを処理できるLinux端末はありますか?

すべてのキーの組み合わせを処理できるLinux端末はありますか?

私は端末モード()でemacsを使用するのが好きですが、ほとんどの(すべて?)端末は特定のキーの組み合わせ(または-nw)を処理できないようです。ほとんどの端末がこれらの組み合わせのないVT-100をエミュレートするので、私はこれを知っています。これらのキーの組み合わせを処理できるLinux端末(可能な限りKDE)はありますか?それとも、これはすべての端末の基本的な制限ですか?C-<RET>C-M-%

ベストアンサー1

端末でキーまたはキーの組み合わせを押すと、1つ以上の文字シーケンスで端末で実行されているアプリケーションに送信されます。たとえば、を押すとaアプリケーションが受信しますa。を押すと、Enterアプリケーションは文字CR^Mつまり「control-emm」と発音)、記号13、またはまたは\r\015を受け取ります。関連するキーの組み合わせは、Alt通常、文字ESC(またはまたは^[とも呼ばれる)の後に一連のキーまたはなしのキーの組み合わせが来るように送信されます。ファンクションキーと他のキーの組み合わせは、またはで始まるエスケープシーケンスで送信されます。\e\033Alt\e[\eO

エスケープシーケンスは完全に標準化されておらず、端末はしばしば特定のキーの特定の属性を無視する。たとえば、Ctrl++はShift通常デフォルトで+とletterまったく同じように送信されます。Ctrlletter

CtrlVシェルプロンプトで+を押してキーの組み合わせを押すか、Emacsでまたはキーの組み合わせを押して、端末から送信されたキーの組み合わせがC-q何でC-h cあるかを確認できます。

一部の端末エミュレータでは、各キーのエスケープシーケンスを設定できます。 Xtermでは、次のように実行されます。XResources。ほとんどの設定は、~/.XresourcesXが起動した時点からリソースを読み込みますxrdb -merge ~/.Xresources

Term.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ファンクションキー(15to 24for F5to F12- 歴史的な理由から、F1 toはF4別のエスケープシーケンスを持つ)を表し、number2修飾子(2for Shift3for Meta5for Ctrl7for Ctrl+ MetaShift少なくとも1つ、またはCtrlそのうちの1つを追加Meta)を表します。

Emacsは次のようにエスケープシーケンスを内部キー表現に変換します。input-decode-mapまたはlocal-function-key-map(またはfunction-key-mapEmacs 23より前)。

(define-key local-function-key-map "\033[73;5~" [(control return)])
(define-key local-function-key-map "\033[37;6~" [(control ?L)])

おすすめ記事