ASCII制御コードキー入力

ASCII制御コードキー入力

さて、最近、制御キー入力と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エスケープシーケンスが報告されます。

関連情報