5

Время от времени моя KDE Konsole сходит с ума, каждый раз, когда я щелкаю по ней мышью, она выводит мусорные символы :) Это не сильно раздражает, я просто закрываю, но мне любопытно, почему это происходит.

1 ответ1

11

Позвольте мне угадать: вы имеете в виду эффект, который вы получаете, когда выполняете следующую команду?

printf '\e[?1000h'

Что происходит, это следующее. В эмуляторе терминала, например konsole, выполняются два вида программ: те, которые полагаются на базовую обработку мыши, предлагаемую терминальной программой (например: выбор левой кнопки, вставка средней кнопки), и программы, которые хотят выполнить собственную интерпретацию мыши. События. Большинство программ, таких как bash, делают первый, полночный командир (mc) является примером последнего. Если программа хочет интерпретировать события мыши сама по себе, она отправляет определенную «escape-последовательность» (аналогичную приведенной выше) в konsole, так что konsole отправляет координаты мыши обратно при каждом нажатии кнопки; Когда программа останавливается, она отправляет еще одну «escape-последовательность» в konsole, чтобы konsole возвращалась в нормальный режим.

Что произошло в вашем случае, так это то, что konsole получила escape-последовательность без совместной программы. Есть несколько возможных причин:

  • Плохо запрограммированный инструмент переключил режим мыши, а затем потерпел крах, не переключаясь обратно.

  • Вы сбросили на экран некоторые двоичные данные, например, некоторую исполняемую программу, которая содержала escape-последовательность переключения мыши.

  • Вы допустили ошибку в некоторой escape-последовательности, которая должна была, например, изменить шрифт или цвет фона в вашем приглашении, и случайно получили escape-последовательность переключения мыши.

То же самое относится и к другим программам эмулятора терминала, таким как xterm или gnome-терминал. (Экранирующая последовательность переключения мыши была введена в xterm; ее скопировали и консоль, и gnome-терминал.) Кстати, обычно нет необходимости закрывать консоль, если что-то подобное происходит. Вы можете использовать команду reset чтобы вернуться в нормальный режим.

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