我正在编写一个允许在终端中使用颜色的C ++类。我希望它适用于每个终端:
我使用termcap编写了一次C函数,我想在这种情况下使用它。但是,手册页说:
termcap数据库是一个过时的工具,用于描述字符单元终端和打印机的功能。仅保留旧程序的功能;新的应该使用terminfo数据库和相关的库。
所以我尝试使用terminfo,但我找不到如何做到这一点。我的系统中没有terminfo.h(我在Debian上运行)。
我的问题是:
如何使用最新的工具(即不是termcap,根据手册页)获得C / C ++中当前终端的颜色可能性?
答案 0 :(得分:2)
简短的回答是你无法从terminfo获取信息。
答案越久:
查看terminfo(5)手册,您可能会看到这些(字符串):
<div class="row">
<div class="col-md-2">
<h1>Headline</h1>
<p>
lorem ispum...
</p>
</div>
</div>
与这些(数字)相关:
initialize_color initc Ic initialize color #1
to (#2,#3,#4)
initialize_pair initp Ip Initialize color
pair #1 to
fg=(#2,#3,#4),
bg=(#5,#6,#7)
与这些颜色和方案兼容的ANSI颜色和方案(例如16色,88色和256色)假设您在对中着色前景和背景。原因就是很久以前,硬件终端只是这样工作。 max_colors colors Co maximum number of
colors on screen
max_pairs pairs pa maximum number of
color-pairs on the
screen
功能适用于不同的方案(Tektronix),这似乎很有用。
但是,terminfo是编译的,生成的二进制文件只存储带符号的16位整数。您无法使用终端说明为24位颜色存储合适的initialize_color
或 max_pairs
。 (termcap将所有内容存储为字符串,但如上所述不适用于此应用程序。)
进一步阅读: