Я знайшов рішення shreyansp самим (але не зовсім) задовільним :)
Ось моя спроба вдосконалити це (звичайно, YMMV). Сподіваюся, це може бути корисно тим, хто шукає рішення :)
Моє рішення поводиться так:
- кофеїн надсилає до Windows відповідний віртуальний ключ, який:
- не дозволяє Windows спати або не працювати
- інакше не генерує жодних побічних ефектів для Windows ні поодинці, ні в комбінації (немає Ctrl, Shift, Alt, Alt-Gr, Win, F1-F5, F10 тощо)
- або не надсилається в Putty, або ігнорується 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~"'
до '""'
(порожній ключ?)) спричинила зависання взаємодії віддаленого сеансу протягом декількох секунд
Щоб легко перевірити вищесказане, вийдіть з кофеїну та повторно запустіть його з інтервалом у 5 секунд та кодом Virtual-Key 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 робить деякі переклади / відображення на основі
~/.bashrc
(на основі вбудованої команди прив'язки)
- bash або readline (не впевнений, який саме) надсилає перекладений код коду нано (мій текстовий редактор)
- Цей конвеєр може отримати ще довше, додавши
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+^
(Намітити Марк) у Нано.
Це було дуже дратує (уявіть, що хтось натискає та утримує клавішу 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-розрядне підприємство (6.3.9600) / Putty 0.66 / pfsense 2.3.3-RELEASE-p1 (на основі FreeBSD 10.3-RELEASE) / bash 4.4.12-реліз / nano 2.7.3 / екран 4.04. 00
Список літератури: