Я подключаюсь с помощью PuTTY (с помощью "xterm") к системе Debian с Informix. Во всех приложениях Informix (самописный 4GL, а также isql и i4gl) PuTTY переключает цвета фона и переднего плана при нажатии клавиши, которую Informix не понимает (например, клавиша Del) или пытается записать длинный текст в поля ввода. Таким образом, серый текст на черном фоне становится черным текстом на сером фоне. Затем мне нужно вручную сбросить терминал (либо с помощью кнопки reset либо с помощью собственной кнопки терминала сброса PuTTY), чтобы восстановить исходные цвета.

Больше ничего не происходит, только изменение цвета. Когда цвет изменился, он не изменяется обратно без терминала сброса, даже при воспроизведении первых шагов , которые переключаются цветами.

Как я могу отключить это поведение и что вызывает это? Какой код отправляется обратно в PuTTY с сервера, чтобы разрешить изменение цвета клиента?

2 ответа2

0

После долгих поисков и поисков, я нашел решение этой очень долгой дискуссии. Резюме:

Informix пытается запустить визуальный звонок, но вместо того, чтобы использовать код BEL (который является bel=^G в файле terminfo для xterm), он использует flash (который является flash=E[?5h$<100/>\E[?5l в файле terminfo для xterm).

Не уверен, что это ошибка 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 . После повторной регистрации в терминале проблема исчезла, потому что теперь мой терминал вообще не знает о мигании экрана.

0

просто для записи, может быть, лучше просто запустить

infocmp> term.decompiled

без каких-либо аргументов, потому что, как это, переменная $ TERM оценивается.

В моем случае значение было «xterm-256color», и "infocmp xterm" не вернул бы правильную настройку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .