
さて、最近、制御キー入力とASCII制御コードの間の対応関係に気づきました。たとえば、^D は、EOT が ASCII コード 4 で D がアルファベットの 4 番目の文字であるため、EOT 文字を送信します。 10進数26桁を超える文字(ESC、FS、GS、RS、USなど)のキーストロークが何であるかを知りたいです。 EscキーはESC文字を送信しますか? Telnetからシェルへの基本^]キー入力エスケープはどうですか? ESC文字を送りますか?
話題に合わないと謝ります。他に置く場所を見つけることができません。
答え1
他の制御文字のキーストロークは次のとおりです。
^[ - Escape
^\ - File Separator
^] - Group Separator
^^ - Record Separator
^_ - Unit Separator
telnet
対話型インターフェイスのエスケープ文字としてグループ区切り文字を使用します。エスケープ文字はターミナルアプリケーションで頻繁に使用されるため、通常はTelnet接続のリモートエンドに送信されます。
答え2
あなたの手紙を使用するascii(7)
ためにLinuxで複数の行を読んでみると、次のことがわかり^D
ました。
004 4 04 EOT (end of transmission) 104 68 44 D
その後、^]
同じ対応を使用してください。
035 29 1D GS (group separator) 135 93 5D ]
ターミナルを生モードに切り替えてキーの16進コードを印刷したら、次の16進コードを見つけて確認することもできますascii(7)
。
perl -MTerm::ReadKey -e 'warn "PID $$\n"; $SIG{TERM}=sub {ReadMode 0; exit};' \
-e 'ReadMode 4; while ($k=ReadKey(0)) { printf "%02x\n", ord $k }'
答え3
キーボードがASCIIコードをキーボードポートに直接転送する場合は、Controlキーと文字キー、その他6つのキーを押すとASCIIコントロールコードが生成されます。 IBMタイプのマイクロプロセッサーでは、キーボードはスキャンコードを生成し、BIOSまたはオペレーティングシステムはこれらのコードと適切なASCIIコード(コントロールまたはグラフィック)をアプリケーションに報告します。
答え4
申し訳ありません。以前の投稿は良い答えではありませんでした。少なくともLinuxでは、ESCキーはCtrl-[と同じASCIIコードを報告し、EnterはCtrl-Mと同じです。バックスペースの場合はCtrl-?(DEL)が報告され、Ctrl-Backspaceの場合はCtrl-H(BS)が報告されますが、同じことを行います。削除キーの場合、ANSIエスケープシーケンスが報告されます。