Я нашел решение shreyansp наиболее (но не вполне) удовлетворительным :)
Вот моя попытка улучшить это (конечно, YMMV). Надеюсь, что это может быть полезно для тех, кто ищет решение :)
Мое решение ведет себя следующим образом:
- кофеин отправляет в Windows соответствующий код виртуального ключа, который:
- предотвращает переход Windows в режим сна или ожидания
- в противном случае не генерирует никаких побочных эффектов в Windows ни в одиночку, ни в комбинации (без Ctrl, Shift, Alt, Alt-Gr, Win, F1-F5, F10 и т. д.)
- либо не отправляется в Putty, либо игнорируется
TL; DR: мое решение применяется между шагами 2 и 3 (см. Ниже) с параметром кофеина -key:0E
:
Выйдите из кофеина и запустите его с:
caffeine.exe 5 -key:0E
(для удобства тестирования)
caffeine.exe 50 -key:0E
(для обязательной заставки, установленной на 1 минуту)
- Запустите программу
read
на удаленном хосте и проследите, чтобы каждые 5 или 50 секунд не поступали нажатия клавиш.
- Выйти из
read
с помощью Ctrl+C
Шреянсп предложил решение, в котором исправление будет применено между шагами 5 и 10 (см. Ниже).
Побочным эффектом этого (на моем конфиге) было то, что при каждом нажатии клавиши эта замазка пересылалась с кофеина на удаленный хост:
- он вызвал «Сброс полосы прокрутки при нажатии клавиш» (настройка на странице «Замазка / Окно»)
что я обычно хотел бы, но только когда я (человек) нажимаю клавишу, но не регулярно кофеином :)
- readline / bash - переведенная версия (от
'"\e[28~"'
до '""'
(пустой ключ?) вызывал зависание удаленного сеанса на несколько секунд
Чтобы легко проверить вышеупомянутое, выйдите из Caffeine и перезапустите его с 5-секундным интервалом и кодом виртуальной клавиши 07:
caffeine.exe 5 -key:07
- Запустите программу
read
на удаленном хосте и наблюдайте, как нажатия клавиш принимаются каждые 5 или 50 секунд.
- Выйти из
read
с помощью Ctrl+C
Клавиша «трубопровод», насколько я понимаю:
- Кофеин отправляет код виртуального ключа в Windows
- Windows отправляет этот код виртуального ключа в Putty
- Putty выполняет некоторые «переводы» /«отображения» на основе некоторых настроек сеанса в:
- Putty отправляет «переведенный» /«сопоставленный» код ключа на удаленный хост
- На удаленном хосте программа «терминал» (например,
$TERM=xterm
, vt100
, vt102
, vt220
и т.д.) Преобразуется из «линейного протокола» в коды ключей.
- библиотека readline делает несколько переводов /отображений, основанных на
~/.inputrc
- readline отправляет код ключа в bash
- bash делает несколько переводов /отображений на основе
~/.bashrc
(на основе встроенной команды bind)
- bash или readline (не уверен, какой именно) отправляет переведенный ключевой код в nano (мой текстовый редактор)
- Этот конвейер может стать еще длиннее, если добавить
screen
программу (которая включает в себя $TERM=screen
для шага 5. и снова выполняет цикл с шага 6. до 10.)
Примечание. После перехода к шагу 4. становится очень сложно точно контролировать различные уровни «переводов» /«отображений». Я бы порекомендовал избегать этого, если вы можете.
Фон:
Я использовал caffeine.exe -key:07
течение многих лет, прежде чем иметь дело с pfsense 2.3.3-RELEASE-p1 (основан на FreeBSD 10.3-RELEASE).
Затем caffeine.exe -key:07
был получен на другой стороне как ^[[28~
..., который, по-видимому, сопоставлен с Ctrl+^
(Set Mark) в Nano.
Это было довольно неприятно (представьте, что кто-то нажимает и удерживает клавишу Shift, когда вы перемещаете текстовую рамку в Блокноте).
Ранее я выполнял многочисленные настройки в настройках замазки , ~/.tcshrc
, ~/.inputrc
, ~/.bashrc
, ~/.nanorc
, ~/.screenrc
чтобы получить то, что я считаю основными функциями (Backspace
, Delete
, Home
, End
, PgUp
, PgDown
, Ctrl+Left
, Ctrl+Right
, Numpad 0-9
, Numpad ./*-+
) работают последовательно между bash/nano/screen.
После того, как я обнаружил этот caffeine.exe -key:07
'bug', я не хотел повторять это снова :)
Проверено на:
Windows 8.1 64-битная версия Enterprise (6.3.9600) / Putty 0.66 / pfsense 2.3.3-RELEASE-p1 (на основе FreeBSD 10.3-RELEASE) / bash 4.4.12-release / nano 2.7.3 / screen 4.04.00
Рекомендации: