为什么 terminfo 条目不遵循约定?

为什么 terminfo 条目不遵循约定?

术语信息数据库包含描述“应用程序模式”的条目。按照惯例,对应于键盘上按下的按钮的条目以\EO(这样做是为了使不执行初始化的应用程序知道默认情况下初始化终端的模式 - “正常”或“应用程序”)并命名为k字首。但例如,在 Debian 10 ( /lib/terminfo/x/xterm-256color) 上,情况并非如此:

$ infocmp -1|grep 'kf[0-9]='
kf1=\EOP,
kf2=\EOQ,
kf3=\EOR,
kf4=\EOS,
kf5=\E[15~,
kf6=\E[17~,
kf7=\E[18~,
kf8=\E[19~,
kf9=\E[20~,

这是 terminfo 数据库中的错误吗?

答案1

这是一个广泛的话题...

大多数(不是全部)终端都是可配置的,您熟悉的终端可以响应控制序列,从而提供应用模式为光标,编辑数字键盘按键。你可能会注意到我没有列出功能键

terminfo 数据库描述了终端的特定配置。

xterm您的示例显示了用于提供 VT100 样式数字键盘的配置。典型的 PC 键盘没有足够的按键来匹配 VT100 键盘(因为虽然它在“正确”的位置有 4 个按键,但经过NumLock特殊处理),并且(因为 VT100 从来没有功能键),将顶行分配给前 4 个 PC 功能键很方便。

对于xterm,无论如何都是可配置的,但如上所述,terminfo 条目描述了特别的配置。

您会发现终端仿真器复制的配置实际上并不提供 VT100 兼容的数字键盘,只是为了模仿xterm

xterm 常见问题解答中对此进行了总结(对于其他终端,通常根本没有记录):

相关内容