簡體   English   中英

terminfo(5)中的cursor_up(cuu1)和key_up(kcuu1)有什么區別?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM