2014-01-17 40 views
4

XTerm Control Sequences指定下列鍵序列:TERMINFO smkx和應用光標鍵VS應用程序小鍵盤

CSI ? 1 h → Application Cursor Keys (DECCKM) 
CSI ? 1 l → Normal Cursor Mode (DECOM) 
CSI ? 66 h → Application keypad (DECNKM) 
CSI ? 66 l → Numeric keypad (DECNKM) 

Terminfo Source Format有如下條目:

Variable: keypad_xmit 
Capname: smkx 
Termcap: ks 
Description: Put terminal in "keypad-transmit" mode 

但xterm上的terminfo居然說smkx=\E[?1h\E=,這似乎混合了我(smkx應該影響鍵盤,而不是光標鍵,對不對?)。我在這裏錯過了什麼?

回答

2

看起來您在smkx的末尾缺少\E=

ESC =  Application Keypad (DECKPAM). 
ESC >  Normal Keypad (DECKPNM). 

列出xterm的控制序列頁面上,以及和你所期望的那樣影響到鍵盤。

我在這裏找到一個相關的問題:keyboard transmit mode in vt100 terminal emulator

+0

但我不知道爲什麼DECCKM出現在它的前面。 –

3

CSI ? 1 h → Normal Cursor Mode (DECOM) 

可能應該讀

CSI ? 1 l → Normal Cursor Keys (DECCKM) 

有在每個smkxrmkx 2個轉義序列,因爲這些功能將在詛咒,即所使用的,用於keypad功能。

用於ncurses的(像其他人)的手冊頁沒有這麼說明確,但功能適用於所有具有正常應用模式之間切換的能力鍵盤上的特殊鍵的。這是smkxrmkx的一個衆所周知的特徵,例如在xterm FAQ Why can't I use the cursor keys in (whatever) shell?中。

鍵盤上的特殊鍵可以包括這些(取決於終端的類型):

  • 數字鍵盤(在PC鍵盤的最右邊)
  • 編輯鍵區(主間6個鍵鍵盤和數字鍵盤)
  • 光標鍵
  • 功能鍵(通常在PC鍵盤的頂部)

VT100(沒有功能鍵或編輯鍵盤)對於其他兩個類別具有單獨的轉義序列。在VT220中(由xterm模擬),編輯鍵盤的正常/應用模式是VT100 DECCKM的擴展(記錄在XTerm Control Sequences中)。 DEC沒有爲功能鍵定義相應的功能;但是如果有一些終端支持這種功能,它可能會用於smkxrmkx

相關問題