XTerm Control Sequences指定以下键序列:
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 应该影响键盘,而不是光标键,对吧?)。我在这里缺少什么?
最佳答案
线
CSI ? 1 h → Normal Cursor Mode (DECOM)
可能应该阅读
CSI ? 1 l → Normal Cursor Keys (DECCKM)
每个
smkx
中都有两个转义序列和 rmkx
因为这些功能用于curses,即用于 keypad
功能。ncurses(像其他人一样)的手册页没有明确说明,但该功能适用于键盘上的所有特殊键,这些键可以在正常模式和应用程序模式之间切换。这是
smkx
的一个众所周知的特性。和 rmkx
,例如在 xterm 常见问题解答 Why can't I use the cursor keys in (whatever) shell? 中.键盘上的特殊键可能包括这些(取决于终端类型):
VT100 (没有功能键或编辑键盘)对其他两个类别有单独的转义序列。在 VT220(由 xterm 模拟)中,编辑键盘的正常/应用模式是 VT100 DECCKM 的扩展,(记录在 XTerm Control Sequences 中)。 DEC 没有为功能键定义相应的特性;但是,如果有一些终端支持此功能,它可能会在
smkx
中使用。和 rmkx
.
关于terminal - Terminfo smkx 和应用程序光标键与应用程序键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21175561/