有没有办法将终端/控制台功能与terminfo数据库中的条目相匹配?
例如,要找到最接近的match to Windows console或其他类型的非传统终端。
没有在线服务,所以我希望这个问题非常重要,知道原因很有意思。
更新:Terminfo数据库为已知的终端类型或名称提供一组功能。我正在尝试执行相反的任务 - 将未知终端的功能与现有的terminfo条目进行匹配。
UPDATE2 :它应该如何运作......
答案 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,所以当我有更多时间时,我会发布更好的结果。