Fundo brilhante em termcap

0

Estou tentando obter um programa que estou executando para exibir um plano de fundo colorido brilhante, mas o programa não aplicará o aumento de brilho. Em vez disso, ele mostra um plano de fundo colorido "normal".

Deixe-me adicionar alguns detalhes:

  • Eu entro em um servidor rodando Debian, através do PuTTY, com a variável TERM definida para putty (ou manualmente usando export TERM=putty ).
  • Primeiro, experimento se os planos de fundo brilhantes aparecem corretamente, usando

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

    Você vê que \e[43m é o código para definir o plano de fundo como amarelo e \e[103m é o código para definir a cor do plano de fundo como amarelo claro. A imagem abaixo mostra que realmente funciona:

  • Entãoeucorrooprogramaqueeuqueroexibiressesfundosbrilhantes.OprogramaéotempodeexecuçãodoACUCOBOL.OmanualdizqueeletentalerovalorTERMelê/etc/a_termcapporestevalor,selecionandoosrecursosadequados(esperançosamente)doterminal,seusadosemumsistemaoperacional*nix.OclientedoWindowsnãousanenhumainformaçãodecapacidadedoterminal.

    Aentradanoarquivoa_termcaptemestaaparência:

    putty|/PuTTYColors:\: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=6:GF=7:\:GM=10435264756:

    Oproblemaéquemalconsigoleressesvalores,masoscódigosC1C8eB1B8referem-seàscoresdeprimeiroplanoesegundoplano,respectivamente,acho.

Meupalpiteéqueotempodeexecuçãonãoestácientedoscódigos\e[100m\e[107m.Comopossoconsertarisso?

Editar

Pareceque,dealgumaforma,possofazeropretoebrancobrilhar.Abaixo,umacapturadetelaquepermiteasvariantesclarasenormaisdepretoebranco.

Editar

Alterei o nome do emulador de terminal para putty e configurei a variável TERM de acordo. Eu não acho, no entanto, que isso importe.

    
por MC Emperor 14.03.2018 / 13:25

1 resposta

1

curto: você não pode

long: a página de suporte do ACUCOBOL explica quais são os campos termcap. Ele sabe sobre cores 8 , enquanto seu exemplo espera usar os controles aixterm de 16 cores . O manuseio de todas as 16 cores está além da capacidade de um aplicativo termcap (a menos que ele trate e formate suas próprias strings em vez de usar tgoto ).

Você pode fazer com que todos os fundos usem cores brilhantes, mas você não pode deixar alguns cenários brilhantes e outros não. Os locais a serem modificados seriam de B1 a B8 (cores de 0 a 7 na convenção de numeração usual):

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

substituindo 40 por 100, 41 por 101, etc.

A propósito, TERM=linux é inconsistente com o exemplo de uma seqüência de escape que você deu (desde que 16 cores do console Linux são obtidas combinando negrito com cores 0-7, ie, substituindo < strong> 40 por 40;1 , etc). Você pode copiar essa entrada e alterar o nome na primeira linha

linux|/Linux system console:\

para algo mais adequado, por exemplo,

putty|bright-backgrounds:\

Uma descrição de termcap não pode produzir valores em dois intervalos (40-47, 100-107, por exemplo), uma vez que não suporta expressões . Uma descrição do terminfo (não suportada pelo ACUCOBOL, aparentemente) pode fazer isso. Por exemplo, ncurses tem uma descrição Linux de 16 cores . Existem descrições semelhantes para outros terminais, incluindo qualquer terminal que você esteja realmente usando.

    
por 14.03.2018 / 23:03