匹配`terminfo`功能

时间:2017-06-17 05:50:54

标签: terminfo

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

例如,要找到最接近的match to Windows console或其他类型的非传统终端。

没有在线服务,所以我希望这个问题非常重要,知道原因很有意思。

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

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

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

3 个答案:

答案 0 :(得分: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_ here at opengroup.org

因为你在Windows上(可能没有Cygwin),你可能必须手动检查你期望的TERM的功能,并根据这些预知知识构建解决方案,但是它的Windows,所以可以& #39;是那么多。

TERMINFO=/user/share/terminfo toe

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

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

答案 1 :(得分:1)

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

根据terminfo,在编译终端信息配置时,可以提供(第一)过度乘坐,(第二)包括的终端,可选地(第三)除了具有某些能力的所包括的终端。但是,这仍然需要对目标服务器terminfo数据库目录的写访问权限,因此可以上载生成的terminfo文件。

terminfo数据库提供两种服务器提供终端的方式, AND 用于程序(包括远程程序)解释提供的终端。

答案 2 :(得分:0)

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