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将它们分开。