ASCII 控制代码的击键

ASCII 控制代码的击键

好的,所以我最近意识到了控制击键和 ASCII 控制代码之间的对应关系,例如 ^D 发送 EOT 字符,因为 EOT 是 ASCII 代码 4,而 D 是字母表中的第四个字母。我想知道超过 26 位十进制的字符(即 ESC、FS、GS、RS 和 US)的击键是什么。 Escape 键是否发送 ESC 字符? Telnet 中默认的 ^] 按键转义到 shell 怎么样?那会发送 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    ]

还可以通过将终端置于原始模式并打印出密钥的十六进制代码,然后在中查找十六进制代码来确认这一点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 加上字母键和其他六个键产生了 ASCII 控制代码。在 IBM 型微处理器上,键盘生成扫描代码,BIOS 或操作系统将这些代码和适当的 ASCII 代码(控制或图形)报告给应用程序。

答案4

哎呀——我之前的帖子不是一个好的答案。至少在 Linux 中,ESC 键报告的 ASCII 代码确实与 Ctrl-[ 相同,Enter 与 Ctrl-M 相同。对于退格键,Ctrl-?报告 (DEL),对于 Ctrl-Backspace,报告 Ctrl-H (BS),但它们执行相同的操作。对于删除键,会报告 ANSI 转义序列。

相关内容