2014-01-17 38 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

相关问题