terminfo(5) 中的 cursor_up (cuu1) 和 key_up (kcuu1) 有什么区别?



In terminfo(5):

变量字符串 capname TCap 代码 说明
cursor_up cuu1 向上一行
key_up kcuu1 ku 向上箭头键

在 terminfo 描述中,以k开头的名称表示键,而其他名称用于非功能。 对于大多数键,键与现有转义序列之间没有明显的关系,但光标键是例外。

它们是否相同取决于终端描述。 对于TERM=linux,它们恰好是相同的,但是可以为Linux控制台编写终端描述,而它们不是

区别在于终端是初始化应用程序模式还是处于(默认/上电)正常模式。 在应用程序模式下,光标键会将转义O作为前缀发送,而不是转义[

ncurses 终端数据库中超过一半 (54%) 的终端描述使用应用程序模式,这意味着cuu1通常与kcuu1不同。

还有另一个需要注意的怪癖:对于其他光标移动,例如cud1,终端描述可能会说n,而光标向下的键不会发送该字符(例如,请参阅iTerm)。

延伸阅读:

  • 我的光标键不起作用

cursor_up是主机发送到终端以将光标向上移动一行的控制序列。

key_up是按下向上箭头键时终端发送到主机的控制序列。

在基于 VT100 的终端(包括所有健全的现代终端仿真器)中,这些序列是相同的。但是,一些较旧的终端硬件可能在这两个角色中使用了不同的序列,因此terminfo将它们分开。

相关内容

  • 没有找到相关文章

最新更新