【问题标题】:Terminfo smkx and Application Cursor Keys vs Application keypadTerminfo smkx 和应用程序光标键与应用程序键盘
【发布时间】:2014-02-06 04:09:29
【问题描述】:

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 应该影响键盘,而不是光标键,对吧?)。我在这里错过了什么?

【问题讨论】:

    标签: terminal tty xterm terminfo termcap


    【解决方案1】:

    线

    CSI ? 1 h  → Normal Cursor Mode (DECOM)
    

    应该读

    CSI ? 1 l  → Normal Cursor Keys (DECCKM)
    

    smkxrmkx 各有两个转义序列,因为这些功能用于 curses,即用于 keypad 函数。

    ncurses 的手册页(和其他人一样)没有明确说明,但该功能适用​​于键盘上所有能够在 normal特殊键 /em> 和 应用程序 模式。这是smkxrmkx 的一个众所周知的功能,例如在xterm 常见问题解答Why can't I use the cursor keys in (whatever) shell? 中。

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

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

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

    【讨论】:

      【解决方案2】:

      您似乎缺少smkx 末尾的\E=

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

      也列在 XTerm 控制序列页面上,您会认为它们会影响键盘。

      我在这里找到了一个相关的问题:keyboard transmit mode in vt100 terminal emulator

      【讨论】:

      • 我不知道为什么 DECCKM 会出现在它的前面。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-10
      相关资源
      最近更新 更多