[英]What's the difference between cursor_up (cuu1) and key_up (kcuu1) in terminfo(5)?
在terminfo(5)中:
Variable String Capname TCapCode Description
---------------------------------------------------------------
cursor_up cuu1 up up one line
key_up kcuu1 ku up-arrow key
我嘗試使用tput,它們產生相同的輸出:
[STEP 102] # tput cuu1 | hd -C
00000000 1b 5b 41 |.[A|
00000003
[STEP 103] # tput kcuu1 | hd -C
00000000 1b 5b 41 |.[A|
00000003
[STEP 104] #
在terminfo描述中,以k
開頭的名稱表示key ,而其他名稱用於非密鑰功能。 對於大多數鍵,鍵和現有的轉義序列之間沒有明顯的關系,但光標鍵是例外。
它們是否相同取決於終端描述。 對於TERM=linux
,它們恰好是相同的,但是可以為Linux控制台編寫終端說明,而在終端說明中則不是 。
區別在於將終端初始化為應用程序模式還是將其保留為(默認/加電) 正常模式 。 在應用程序模式下,光標鍵將發送Escape O
作為前綴,而不是Escape [
。
ncurses 終端數據庫中終端描述的一半以上(54%)使用應用程序模式 ,這意味着cuu1
通常與kcuu1
。
還有一個需要注意的怪癖:對於其他光標移動(例如cud1
,終端說明可能會顯示\\n
,而向下光標鍵不會發送該字符(例如,請參閱iTerm
)。
進一步閱讀:
cursor_up
是主機發送到終端以將光標向上移動一行的控制序列。
key_up
是按下向上箭頭鍵時終端發送給主機的控制序列。
在基於VT100的終端(包括所有合理的現代終端仿真器)中,這些序列是相同的。 但是,某些較舊的終端硬件可能在這兩個角色中使用了不同的序列,因此terminfo將它們分開。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.