如何停止PuTTY + Informix切换背景和前景色?

如何停止PuTTY + Informix切换背景和前景色?

我使用 PuTTY(使用“xterm”)连接到运行 Informix 的 Debian 系统。在所有 Informix 应用程序(自编写的 4GL 以及 和isql)中i4gl,PuTTY 都会切换背景和前景色什么时候有人按下了 Informix 无法识别的键(例如 Del 键)或尝试将长文本写入输入字段。因此,黑色背景上的灰色文本变成了灰色背景上的黑色文本。然后我必须手动重置终端(使用resetPuTTY 自己的重置终端按钮)以恢复原始颜色。

没有其他事情发生,只是颜色变化。当颜色改变时,它确实不是无需重置终端即可改回,即使在重现切换颜色的第一步时也是如此。

我该如何禁用此行为?什么会触发此行为?从服务器发送回 PuTTY 的代码是什么,以允许客户端更改颜色?

答案1

经过大量的谷歌搜索和反复试验后,我找到了解决方案这次漫长的讨论。 概括:

Informix 尝试运行可视化铃声,但它没有使用BEL代码(位于bel=^G文件中terminfoxterm,而是使用了代码flash(位于文件flash=E[?5h$<100/>\E[?5l中)。terminfoxterm

不确定这是否是 PuTTY 错误(它知道视觉铃声,但可能不知道闪烁的屏幕)或 Informix 错误,导致闪烁“中途停止”并且不会改回来。

为了解决这个问题,我将terminfo文件反编译为termcap代码:

infocmp xterm > xterm.decompiled

此原始文件来自/lib/terminfo/x/。然后我删除了相应的条目xterm.decompiled

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

最后用以下代码重新编译该文件

tic -s xterm.decompiled

落在了/etc/terminfo/x/xterm。重新登录终端后,问题就消失了,因为现在我的终端根本不知道屏幕闪烁。

答案2

仅供参考,最好直接运行

infocmp > term.decompiled

不带任何参数,因为这样变量 $TERM 就会被评估。

在我的情况下,该值为“xterm-256color”,而“infocmp xterm”不会返回正确的设置。

相关内容