Я нашел решение 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 (from
'"\e[28~"'
to '""'
(пустой ключ?) привела к зависанию взаимодействия удаленного сеанса на несколько секунд
Чтобы легко проверить вышеупомянутое, выйдите из 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, когда вы перемещаете текстовую рамку в Блокноте).
Раньше я делал многочисленные настройки в Putty Настройки, ~/.tcshrc
, ~/.inputrc
, ~/.bashrc
, ~/.nanorc
, ~/.screenrc
чтобы получить то , что я считаю базовую функциональность ( Backspace
, Delete
, Home
, End
, PgUp
, PgDown
, Ctrl+Left
, Ctrl+Right
, Numpad 0-9
, Numpad ./*-+
) работает последовательно между Баш / нано / экран.
Как только я обнаружил эту caffeine.exe -key:07
«ошибку», я не захотел повторять это снова :)
Протестировано на:
Windows 8.1 64-bit 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
Ссылки: