Ascii

ASCII 控制程式碼的擊鍵

  • February 8, 2019

好的,所以我最近意識到控制鍵擊和ASCII控制碼之間的對應關係,例如^D發送EOT字元,因為EOT是ASCII碼4,D是字母表中的第四個字母。我想知道十進制後 26 位以外的字元(即 ESC、FS、GS、RS 和 US)的擊鍵方式是什麼。Escape 鍵是否發送 ESC 字元?Telnet 中預設的 ^] 鍵擊會轉義到 shell。這會發送 ESC 字元嗎?

如果這是題外話,我深表歉意。我找不到其他地方可以放它。

其他控製字元的擊鍵如下:

^[ - Escape
^\ - File Separator
^] - Group Separator
^^ - Record Separator
^_ - Unit Separator

telnet使用組分隔符作為其互動界面的轉義。由於轉義字元經常在終端應用程序中使用,它通常被發送到建立 telnet 連接的遠端。

ascii(7)Linux 上跨行讀取,為了^D使用您的通信,我們發現:

  004   4     04    EOT (end of transmission)   104   68    44    D

然後^]使用相同的對應關係:

  035   29    1D    GS  (group separator)       135   93    5D    ]

這可以通過將終端置於原始模式並列印出混合密鑰的十六進制程式碼來確認,然後在以下位置查找十六進制程式碼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 }'

引用自:https://unix.stackexchange.com/questions/315990