-2

有没有办法将终端/控制台功能与 terminfo 数据库中的条目相匹配?

例如,查找与 Windows 控制台或其他类型的非传统终端最接近的匹配项。

没有在线服务,所以我希望问题不是微不足道的,知道原因很有趣。

更新:Terminfo 数据库为已知的终端类型或名称提供了一组功能。我正在尝试执行相反的任务 - 将未知终端的功能与现有的 terminfo 条目匹配。

UPDATE2:它应该如何工作......

  1. 我从一长串列表中选择我的终端功能
  2. Matcher 找到的配置文件是
    • 2.1。完全实现所有这些功能,没有其他功能
    • 2.2. 完全实现几乎所有功能,没有其他功能
    • 2.3. 与其他一些功能完全实现功能
    • 2.4. 实现几乎所有功能并添加一些其他功能
4

3 回答 3

1

根据您修改后的 OP,再次使用ncurses库,您可以使用 C 查询终端tget。在调用 之前,我不知道在不知道它们可能是什么的情况下迭代功能的方法tget,但是我知道它将返回0返回整数值但找不到的功能,例如。cMax = tget("max_colors");.

根据 terminfo,在编译终端信息配置时,可以提供(1st)覆盖,(2nd)包含的终端,可选(3rd)排除具有某些功能的包含的终端。然而,这仍然需要对目标服务器 terminfo 数据库目录的写入权限,因此可以上传生成的 terminfo 文件。

terminfo 数据库为服务器提供了一种提供终端的方式,也程序(包括远程程序)提供了解释提供的终端的方式。

于 2017-09-22T21:47:31.600 回答
1

谢谢你的问题。试试这个,ncurses安装包:

infocmp | grep _Cap_name_

或者

infocmp _terminfo_name_ | grep _Cap_name_

infocmp [-d|-c|-n] _wanted_ _have_

infocmp比较两个 terminfo终端的内容,或将 terminfo 条目(二进制)显示为 termcap(人类可读文本)

在我的系统上,terminfo(s) 在这里:

/usr/share/terminfo
/lib/terminfo

_Cap_name_ 在这里参考 opengroup.org

因为您在 Windows 上(可能没有 Cygwin),您可能必须手动检查TERM您期望的 s 的功能,并基于该预知识构建解决方法,但它的 Windows,所以不可能有那么多。

TERMINFO=/user/share/terminfo toe

这将为您提供终端列表。如果您可以控制服务器,请自己添加一个 terminfo 文件,将其写为文本termcap格式,然后转换或转换为terminfo信息格式,然后编译。这样你就可以从dummy+linewrap. 或者试试ansi+idl

注意:我同意关于使用 VT100/VT102 库的其他评论。

于 2017-09-15T15:44:31.623 回答
0

到目前为止,答案是http://man7.org/linux/man-pages/man5/terminfo.5.html所以当我有更多时间时,我会发布更好的结果。

于 2017-06-19T06:11:52.277 回答