Unix 什么';在终端(5)中,光标向上(cuu1)和键向上(kcuu1)的区别是什么?

Unix 什么';在终端(5)中,光标向上(cuu1)和键向上(kcuu1)的区别是什么?,unix,terminal,ncurses,terminfo,tput,Unix,Terminal,Ncurses,Terminfo,Tput,在第(5)款中: 变量字符串Capname TCapCode说明 --------------------------------------------------------------- 光标向上cuu1向上一行 向上键kcuu1 ku向上箭头键 我尝试了tput,它们产生了相同的输出: [步骤102]#tput cuu1 | hd-C 00000000 1b 5b 41 |[A]| 00000003 [步骤103]#t输出kcuu1 | hd-C 00000000 1b 5b 41 |

在第(5)款中:

变量字符串Capname TCapCode说明
---------------------------------------------------------------
光标向上cuu1向上一行
向上键kcuu1 ku向上箭头键
我尝试了tput,它们产生了相同的输出:

[步骤102]#tput cuu1 | hd-C
00000000 1b 5b 41 |[A]|
00000003
[步骤103]#t输出kcuu1 | hd-C
00000000 1b 5b 41 |[A]|
00000003
[步骤104]#

光标向上
是主机发送到终端的控制序列,用于将光标向上移动一行

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


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

cursor\u up
是主机发送给终端的控制序列,用于将光标上移一行

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


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

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

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

区别在于终端是初始化到应用模式还是保持在(默认/通电)正常模式。在应用模式下,光标键将发送Escape
O
作为前缀,而不是Escape
[

ncurses中超过一半(54%)的终端描述使用应用程序模式,这意味着
cuu1
kcuu1
有很大的不同

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

进一步阅读:


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

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

区别在于终端是初始化到应用模式还是保持在(默认/通电)正常模式。在应用模式下,光标键将发送Escape
O
作为前缀,而不是Escape
[

ncurses中超过一半(54%)的终端描述使用应用程序模式,这意味着
cuu1
kcuu1
有很大的不同

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

进一步阅读:


谢谢。刚刚尝试了
TERM=xterm
,找到了
cuu1=\E[A
kcuu1=\EOA
。对于
TERM=screen
cuu1=\EM
kcuu1=\EOA
。谢谢。刚刚尝试了
TERM=xterm
,找到了
cuu1=\E>[A
kcuu1=\EOA
。对于
TERM=screen
cuu1=\EM
kcuu1=\EOA
。在
xterm
中(不是旧硬件终端),
光标向上
键向上
是不同的。在
xterm
中(不是旧硬件终端),
光标向上
键向上
不同。