Ctrl-'のOS Xターミナルキーの組み合わせ/エスケープシーケンスを探す

Ctrl-'のOS Xターミナルキーの組み合わせ/エスケープシーケンスを探す

私のEmacsキーバインディングの1つは、C-'GUIでうまく機能することです。ただし、端末では認識されません。端末に送信された実際の文字を見つけて、C-'それをemacs設定にマップする必要があることを知っています。

次の提案に従ってくださいBashでショートカットを再マップするためのターミナルキーコードのリストはどこにありますか?sed -n l私に返されるのは終わりがなくても空行です$。端末がC-'シーケンスをまったく認識しないのでしょうか?

ベストアンサー1

端末はキーではなくバイトを送信します。Ctrl+などのキーコードは'一連のバイトでエンコードする必要があります。ほとんどのキーとコードには、修飾子がないか、またはのみ印刷可能な文字以外の対応する文字がなく、代わりにエスケープ文字(バイト値が27の文字)のエスケープシーケンスとして送信されます。これは、次の方法で作成されたEmacs文字でShift使用できます。\e文字列から)。しかし、多くのキーコードには従来の標準エスケープシーケンスがなく、多くの端末はこれらのキーコードを送信しないか、修飾子に関する情報を削除します(Ctrl文字で+のみ送信)。''

一部の端末では、各キーとコードのエスケープシーケンスを設定できます。端末アプリケーションではキーボード設定でこれを行うことができます。

Ctrl+の場合または次を'選択します。これは、libtermkeyスキームとxtermスキームという2つの新しい標準です。バラより\033[39;5~\033[27;5;39~端末使用時のキーバインディングの問題より多くの情報を知りたいです。

Emacsは次のようにエスケープシーケンスを内部キー表現に変換します。input-decode-mapまたはlocal-function-key-map(またはfunction-key-mapEmacs 23より前)。次のいずれかを初期化ファイルに入れます。

(define-key input-decode-map "\033[39;5~" [(control ?\')])
(define-key input-decode-map "\033[27;5;39~" [(control ?\')])

おすすめ記事