termcap 中的明亮背景

termcap 中的明亮背景

我正在尝试让我正在运行的程序显示明亮的彩色背景,但该程序不会应用亮度增加,而是显示“正常”彩色背景。

让我添加一些细节:

  • 我通过 PuTTY 登录到运行 Debian 的服务器,并将TERM变量设置为putty(或使用 手动执行此操作export TERM=putty)。
  • 我首先尝试使用明亮的背景是否正确显示

    echo -e "\e[43mHello\e[0m \e[103mWorld\e[0m"
    

    你看到这\e[43m是设置背景为黄色的代码,也是\e[103m设置背景颜色为亮黄色的代码。下图显示它确实有效:

    正常和亮黄色背景均可工作

  • 然后我运行我想要显示如此明亮的背景的程序。该程序是 ACUCOBOL 运行时。该手册说,如果在 *nix 操作系统上使用,它会尝试读取该TERM值并按该值读取/etc/a_termcap,选择(希望)正确的终端功能。 Windows 客户端不使用任何终端功能信息。

    文件中的条目a_termcap如下所示:

    putty|/PuTTY Colors:\
        :k1=\E[[A:k2=\E[[B:k3=\E[[C:k4=\E[[D:k5=\E[[E:k6=\E[17~:k7=\E[18~:\
        :k8=\E[19~:k9=\E[20~:k0=\E[21~:K1=\E[23~:K2=\E[24~:\
        :KE=\E[4~:KI=\E[2~:ku=\E[A:kd=\E[B:kl=\E[D:kr=\E[C:\
        :kh=\E[1~:al=\E[L:dl=\E[M:KX=\E[3~:li#25:DI=\E[m:kN=\E[G:kP=\E[I:\
        :cl=\E[;H\E[J:cm=\E[%i%d;%dH:ce=\E[K:cd=\E[J:DL:nd=\E[C:\
        :RV=\E[7m:HI=\E[0;1m:LO=\E[m:BL=\E[5m:UL=\E[4m:RB=\E[5;7m:RU=\E[4;7m:\
        :C1=\E[30m:C2=\E[34m:C3=\E[32m:C4=\E[36m:C5=\E[31m:C6=\E[35m:\
        :C7=\E[33m:C8=\E[37m:AC:\
        :B1=\E[40m:B2=\E[44m:B3=\E[42m:B4=\E[46m:B5=\E[41m:B6=\E[45m:\
        :B7=\E[43m:B8=\E[47m:UL@:RU@:\
        :GO=\016:GF=\017:\
        :GM=\161\170\154\153\155\152\166\164\167\165\156:
    

    问题是我几乎无法读取这些值,但我认为代码C1……C8B1……B8分别指的是前景色和背景色。

我的猜测是运行时不知道这些代码\e[100m......。\e[107m我怎样才能解决这个问题?


编辑

看来我可以以某种方式让黑色和白色变得明亮。下面的屏幕截图允许黑白的明亮和正常变体。

黑白明亮


编辑

我已将终端模拟器名称更改为putty并相应地设置TERM变量。不过,我认为这并不重要。

答案1

简短:你不能

长: 的阿库科博尔支持页面解释了 termcap 字段是什么。它知道关于8颜色,而您的示例期望使用aixterm 16 色控件。处理所有 16 种颜色超出了 termcap 应用程序的能力(除非它作弊并格式化自己的字符串而不是使用tgoto)。

您可以使所有背景都使用明亮的颜色,但不能使某些场景明亮而另一些场景不明亮。需要修改的地方是B1B8通常编号约定中的颜色 0-7):

:B1=\E[40m:B2=\E[44m:B3=\E[42m:B4=\E[46m:B5=\E[41m:B6=\E[45m:\
:B7=\E[43m:B8=\E[47m:

将 40 替换为 100,将 41 替换为 101,等等。

顺便说一句,TERM=linux与您给出的转义序列示例不一致(因为 Linux 控制台的 16 种颜色是通过组合来实现的大胆的用颜色0-7,即替换40经过40;1, ETC)。您可以复制该条目并更改第一行中的名称

linux|/Linux system console:\

到更合适的东西,例如,

putty|bright-backgrounds:\

termcap 描述无法生成两个范围内的值(例如 40-47、100-107),因为它不支持表达式。 terminfo 描述(显然 ACUCOBOL 不支持)可以做到这一点。例如,ncurses 有一个16色Linux描述。其他终端也有类似的描述,包括您实际使用的任何终端。

相关内容