逆方向制御コード照会端末

逆方向制御コード照会端末

私が理解したように、端末は通常、英数字以外の文字のシーケンスを表すためにANSI制御コードを使用します。たとえば、.inputrcLinux で Bash を編集するときは、次のコードシーケンスを簡単に見つけることができます。

"\e[A": history-search-backward
"\e[B": history-search-forward
"\e[C": forward-char
"\e[D": backward-char
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[3~": delete-char
"\e[2~": quoted-insert
"\e[5C": forward-word
"\e[5D": backward-word

上記のコマンド定義Bashコマンドhistory-search-backwardなどのキーバインディング

bashでは、readキーボードに入力された文字がANSI制御コードにどのようにマップされているかを確認できます。たとえば、実行してread入力すると、Ctrl-P次のような結果が表示されます^P。同様にと入力すると、 Alt-W次の結果が表示されます^[W

私の質問は:その逆を実行するプログラム、ツール、またはウェブサイトはありますか?つまり、特定のANSI制御コードシーケンスを取得するためにキーボードに入力する必要があるキーボードキーシーケンスを出力または表示するツールです。たとえば、入力は次のように出力する必要が^[Wあります。Alt-W

ありがとうございます!

答え1

infocmp助けることができるorの\E代わりにescapeを書き込みます。\e^[

たとえば、これを見つけるには、\e[A履歴を逆にします。

$ infocmp -1x | grep -F '=\E[A,'
       cuu1=\E[A,
$ man 5 terminfo | grep '  cuu1  '
       cursor_up                     cuu1       up       up one line

上矢印とも呼ばれるカーソルを上に押すように求められます。

+-xなどの特定の組み合わせを表示するには、上記のフラグが必要です。Ctrl<-

これらの拡張キーは標準の一部ではないため、terminfoのマニュアルページには表示されませんが、次の文書に文書化されています。用語情報ファイル

また、使用する端末によって制御手順が異なりますのでご注意ください。

infocmp -1x <terminal>たとえば、などを使用してさまざまな端末に関する情報を取得できますinfocmp -1x rxvtinfocmp -1x putty

どのterminfoを持っていると思うかを理解したら、変数を一致させるように設定するとTERM作業が簡単になります。

答え2

これcatはキーボードが実際に送信内容を表示するために使用できるため、これを行う一般的な方法です。 bash は端末データベースの拡張情報を使用しません。サブセット伝統的なtermcap機能の一部)。

catもちろん使用の欠点は

^[[A

はい^[A または escapeA\e(Bashはこの文字の印刷可能な表現を提供しますescape。)

実際には、電子を無視することができます。デフォルトでは、誰もこの3文字の文字を送信せず、「すべての人」が文字として^[送信しますescape

追加資料:

関連情報