Alt+Backspace 在终端中工作,这经常导致我错误地尝试 Alt+Delete,然后添加一个~
.那里到底发生了什么?
答案1
它是无法识别的扫描码的残余物。
键盘上的按钮发送一个或多个字节来指示按下了哪个按钮。这些字节通过键盘驱动程序进行一些转换,并最终被应用程序(在本例中为终端)捕获。应用程序试图识别该字节集是哪个热键并采取相应的操作。如果无法识别,应用程序通常会忽略此类字符串,或者您可能会出现“奇怪的行为”。
了解您可以执行哪个按钮或按钮组合获得哪些字节cat /dev/tty
。当驱动程序将它们报告给应用程序时,它将为每个按钮打印一组符号。
在了解为该特定按钮组合发送哪种符号组合后,您可以转到应用程序的配置文件并添加它,或者如果应用程序需要不同的热键字符集,则可以修复它。
由于历史上具有不同键盘的物理终端种类繁多,因此对于逻辑上相同的键,可能的扫描码存在多种变化。于是数据库terminfo
就应运而生了。它知道很多实际终端(物理终端),并且知道针对哪个组合键发送哪个字符串。如果您想向您的终端教授一个新的热键,您需要编写自己的 terminfo 条目,并使用TERM
环境变量进行选择。
事实上,您只看到一个符号~
,这意味着您当前的终端和当前的术语以某种方式识别并处理键盘驱动程序发送到终端的部分字符串,并打印序列的剩余部分。