2

В настоящее время я использую iTerm2 и часто SSH на удаленных серверах и начинаю сеанс tmux. На всех этих серверах, когда я подключаюсь к ним по SSH, я автоматически создаю конфигурацию tmux, которая позволяет создавать отчеты мыши с помощью следующего в ~/.tmux.conf: setw setw -g mode-mouse on

Однако, если мой SSH-сеанс завершается внезапно, и, таким образом, tmux не дает возможности отключить создание отчетов с помощью мыши, использование мыши в любом месте окон терминала приводит к появлению странных кодов, таких как:

$ 0;94;18M0;94;18m0;19;33M0;14;33m

Я вижу, что я не единственный, кто столкнулся с этой проблемой, см. Https://code.google.com/p/iterm2/issues/detail?can=2&q=&colspec=ID%20Type%20Status%20Priority%20Milestone%20Owner% 20Summary & GroupBy = & = & рода идентификатор = 855

Я считаю, что простым решением этой проблемы было бы создание ловушки в bash-скрипте, который используется для открытия моих сессий SSH. Ловушка может затем отключить отчеты мыши, когда сеанс SSH to tmux заканчивается.

Проблема в том, что я понятия не имею, как отключить отчеты мыши изнутри bash. Я нашел статью, описывающую коды консоли, но мне не повезло с этим.

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

1 ответ1

3

Для отправки кодов на терминал из bash вы можете использовать команду printf . (Конечно, вы также можете использовать echo , но printf как правило, лучше подходит для отправки команд терминала, так как он имеет явную поддержку отправки ESC и облегчает отделение командных символов от параметров и т.д.)

Tmux, как и большинство популярных программ, поддерживающих отслеживание мыши на терминале, использует XTerm Mouse Reporting (он же «X11 Mouse Reporting»).

Чтобы отключить создание отчетов мыши в bash, используйте этот код:

printf '\e[?1000l'

ESC [ ? … l означает «Сброс частного режима DEC (DECRST)» (тот же код, заканчивающийся h вместо l включает эту функцию).

Существует также более старый протокол «X10 Mouse Reporting», который использует 9 вместо 1000 , который можно отключить с помощью ESC [ ? 9 l , но, насколько мне известно, вы вряд ли увидите эту функцию, используемую для отслеживания мыши.

Обычно я использую документацию по управляющим последовательностям Xterm в качестве своего канонического справочника для кодов терминалов, и я рекомендую это, поскольку это и практическое руководство по тому, что поддерживает XTerm, и это также самая полная документация по часто поддерживаемым кодам, которую я нашел.

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