terminal - Terminfo smkx 和应用程序光标键与应用程序键盘

标签 terminal tty xterm terminfo termcap

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? 中.

键盘上的特殊键可能包括这些(取决于终端类型):
  • 数字小键盘(位于 PC 键盘的最右侧)
  • 编辑小键盘(主键盘和数字键盘之间的 6 个键)
  • 光标键
  • 功能键(通常位于 PC 键盘的顶部)

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

    关于terminal - Terminfo smkx 和应用程序光标键与应用程序键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21175561/

    相关文章:

    c++ - 如何丢弃使用 boost::asio 发送的数据?

    c++ - xterm:无法 execvp:没有文件或目录

    android - 如何在Android Studio终端中运行gradle命令?

    bash - 如果两个命令行程序共享相同的名称会怎样?

    shell - 伪TTY行限制为256个字符吗?

    dockerize 提示输入密码的 CLI

    linux - 如何使 xterm 命令行像 vim 一样工作

    Python 终端仿真

    用于删除特定文件的 Bash 脚本

    batch-file - 使用批处理文件在 VSCode 中打开项目