Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Terminal Terminfo smkx和应用光标键与应用键盘_Terminal_Tty_Xterm_Terminfo_Termcap - Fatal编程技术网

Terminal Terminfo smkx和应用光标键与应用键盘

Terminal Terminfo smkx和应用光标键与应用键盘,terminal,tty,xterm,terminfo,termcap,Terminal,Tty,Xterm,Terminfo,Termcap,指定以下键序列: 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) 并且具有以下条目: Variable: keypad_xmit Capname: smkx Termcap: ks Description: Put t

指定以下键序列:

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)
并且具有以下条目:

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

但是xterm的terminfo实际上说的是
smkx=\E[?1h\E=
,这对我来说似乎有点混淆(smkx应该影响键盘,而不是光标键,对吧?)。我在这里遗漏了什么?

看起来你遗漏了
smkx
末尾的
\E=

ESC =     Application Keypad (DECKPAM).
ESC >     Normal Keypad (DECKPNM).
也在XTerm控制序列页面上列出,您希望它们会影响键盘

我在这里发现了一个相关的问题:。

CSI ? 1 h  → Normal Cursor Mode (DECOM)
也许应该读一下

CSI ? 1 l  → Normal Cursor Keys (DECCKM)
smkx
rmkx
中有两个转义序列,因为这些功能用于诅咒,即用于函数

ncurses的手册页面(与其他页面一样)没有明确说明这一点,但该功能适用于键盘上所有能够在正常模式和应用模式之间切换的特殊键。这是
smkx
rmkx
的一个众所周知的功能,例如在xterm FAQ中

键盘上的特殊键可能包括(取决于终端类型):

  • 数字键盘(在电脑键盘的最右边)
  • 编辑键盘(主键盘和数字键盘之间有6个键)
  • 光标键
  • 功能键(通常位于PC键盘顶部)

(没有功能键或编辑键盘)对其他两类有单独的转义序列。在VT220(由xterm模拟)中,编辑键盘的正常/应用模式是VT100 DECCKM的扩展(记录在中).DEC没有为功能键定义相应的功能;但是,如果有某个终端支持此功能,它可能会在
smkx
rmkx

中使用,不过我不知道为什么DECCKM会出现在它前面。