为什么 terminfo[kcuu1] = '\EOA'?



从读取terminfo(5)可以看出,kcuu1应该是按下向上箭头时终端发送的序列。我从来没有见过除了^[[A之外的任何东西(现在说到cat,混乱的终端设置等)。那么,既然我使用的终端(rxvt、gnome-terminal、TERM)都默认为TERM=xterm,为什么kcuu1不是E[A呢?

我看到cuu1 E[A,但是(再次从手册页),这是我应该发送给终端移动光标的字符串,而不是终端发送给我的字符串。

箭头等特殊键(终端称其为"键盘")根据终端是否处于"应用模式"发送不同的代码。一个想要使用各种k*键的应用程序应该首先输出smkx(最后输出rmkx以恢复旧的行为)。

您可以在vi(或类似的终端应用程序)中尝试Ctrl+VUp,查看Up确实将EOA发送到那里。

查看以下链接了解更多详细信息:

  • 终端smkx和应用程序光标键vs应用程序键盘
  • http://invisible-island.net/xterm/xterm.faq.html xterm_arrows

相关内容

  • 没有找到相关文章

最新更新