Como impedir que o PuTTY + Informix mude de segundo plano e cor de primeiro plano?

0

Eu me conecto com o PuTTY (com o "xterm") para um sistema Debian rodando o Informix. Em todos os aplicativos Informix (4GL auto-escrito, bem como isql e i4gl ) PuTTY alterna as cores de fundo e de primeiro plano quando alguém acessa uma chave que o Informix não entende (como a tecla Del) ou tenta gravar em texto longo em campos de entrada. Então, texto cinza sobre fundo preto torna-se texto preto sobre fundo cinza. Em seguida, tenho que redefinir manualmente o terminal (com reset ou o próprio botão de terminal de redefinição do PuTTY) para restaurar as cores originais.

Nada mais acontece, apenas a mudança de cor. Quando a cor mudou, ela não muda de volta sem a reinicialização do terminal, mesmo ao reproduzir os primeiros passos que mudaram de cor.

Como posso desativar esse comportamento e o que dispara isso? Qual código é enviado de volta ao PuTTY do servidor para permitir a mudança de cor do cliente?

    
por Foo Bar 14.04.2015 / 17:40

2 respostas

0

Depois de muito googling e tentativa-e-erro, encontrei a solução em esta longa discussão . Resumo:

O Informix tenta exibir uma campainha visual, mas, em vez de usar o código BEL (que é bel=^G no arquivo terminfo para xterm ), ele usa flash (que é flash=E[?5h$<100/>\E[?5l no terminfo arquivo para xterm ).

Não tenho certeza se esse é um bug do PuTTY (ele sabe sobre sinos visuais, mas talvez não sobre telas piscantes) ou um bug no Informix que faz o flash "parar no meio do caminho" e não voltar atrás.

Para corrigir o problema, descompilei o arquivo terminfo em termcap code:

infocmp xterm > xterm.decompiled

Este arquivo original veio de /lib/terminfo/x/ . Então eu removi a entrada correspondente em xterm.decompiled :

flash=E[?5h$<100/>\E[?5l # remove this entry

E finalmente recompilou o arquivo com

tic -s xterm.decompiled

que caiu em /etc/terminfo/x/xterm . Depois de entrar no terminal, o problema desapareceu, porque agora meu terminal não sabe sobre a tela piscar.

    
por 15.04.2015 / 10:17
0

apenas para o registro, pode ser melhor apenas executar

infocmp > term.decompiled

sem nenhum argumento porque assim a variável $ TERM é avaliada.

No meu caso, o valor era "xterm-256color" e "infocmp xterm" não retornaria a configuração correta.

    
por 04.09.2017 / 07:46