Uważam , że rozwiązanie shreyansp jest najbardziej (ale nie do końca) satysfakcjonujące :)
Oto moja próba ulepszenia tego (oczywiście YMMV). Mam nadzieję, że może to być przydatne dla osób szukających rozwiązania :)
Moje rozwiązanie zachowuje się następująco:
- kofeina wysyła do Windows odpowiedni kod klucza wirtualnego, który:
- zapobiega przejściu systemu Windows w tryb uśpienia lub bezczynności
- w przeciwnym razie nie generuje żadnych skutków ubocznych w systemie Windows ani osobno, ani w kombinacji (bez Ctrl, Shift, Alt, Alt-Gr, Win, F1-F5, F10 itp.)
- albo nie jest wysyłany do Putty, albo jest ignorowany przez Putty
TL; DR: Moje rozwiązanie jest stosowane między krokami 2 i 3 (patrz poniżej) w przypadku -key:0Eparametru kofeiny:
Wyjdź z kofeiny i uruchom ją ponownie za pomocą:
caffeine.exe 5 -key:0E(dla łatwego testowania)
caffeine.exe 50 -key:0E(dla obowiązkowego wygaszacza ekranu ustawionego na 1 minutę)
- Uruchom
readprogram na zdalnym hoście i zobacz, jak nie są odbierane żadne naciśnięcia klawiszy co 5 lub 50 sekund.
- Wyjdź
readzCtrl+C
Shreyansp zaproponował rozwiązanie, w którym poprawka zostanie zastosowana między krokami 5 i 10 (patrz poniżej).
Efektem ubocznym tego (w mojej konfiguracji) było to, że z każdym naciśnięciem klawisza ten kit przekazywany z kofeiny do zdalnego hosta:
- uruchomił „Reset paska przewijania po naciśnięciu klawisza” (ustawienie na stronie Putty / Window),
którego normalnie bym chciał, ale tylko wtedy, gdy (człowiek) naciska klawisz, ale nie regularnie przez kofeinę :)
- przetłumaczona wersja readline / bash (z
'"\e[28~"'na '""'(pusty klucz?) spowodowała zawieszenie interakcji sesji zdalnej na kilka sekund
Aby łatwo przetestować powyższe, wyjdź z kofeiny i uruchom ją ponownie z 5-sekundowym interwałem i kodem wirtualnego klucza 07:
caffeine.exe 5 -key:07
- Uruchom
readprogram na zdalnym hoście i obserwuj, jak naciśnięcia klawiszy są odbierane co 5 lub 50 sekund.
- Wyjdź
readzCtrl+C
„Potok” klawisza, tak jak go rozumiem:
- Kofeina wysyła kod wirtualnego klucza do systemu Windows
- Windows wysyła ten kod klucza wirtualnego do Putty
- Putty wykonuje niektóre „tłumaczenia” / „mapowania” na podstawie niektórych ustawień sesji w:
- Putty wysyła kod klucza „przetłumaczony” / „zamapowany” do zdalnego hosta
- Na zdalnym komputerze, program „Terminal” (np:
$TERM=xterm, vt100, vt102, vt220, itd.) Tłumaczy z „protokołem linii” w kluczowych kodów.
- biblioteka readline wykonuje niektóre tłumaczenia / mapowania na podstawie
~/.inputrc
- readline wysyła kod klucza do bash
- bash wykonuje niektóre tłumaczenia / mapowania na
~/.bashrcpodstawie (na podstawie wbudowanej komendy bind)
- bash lub readline (nie jestem pewien, który z nich) wysyła przetłumaczony kod klucza do nano (mojego edytora tekstu)
- Ten potok może się jeszcze wydłużyć, dodając
screenprogram (który obejmuje $TERM=screenkrok 5 i ponownie zapętla się w kroku 6 do 10.)
Uwaga: Po przejściu do kroku 4. bardzo trudno jest precyzyjnie kontrolować różne warstwy „tłumaczeń” / „odwzorowań”. Polecam unikanie tego, jeśli możesz.
Tło: Używałem przez lata, zanim
miałem caffeine.exe -key:07do czynienia z pfsense 2.3.3-RELEASE-p1 (oparty na FreeBSD 10.3-RELEASE).
Następnie caffeine.exe -key:07został odebrany po drugiej stronie jako ^[[28~... co wydaje się być mapowane na Ctrl+^(Set Mark) w Nano.
To było dość irytujące (wyobraź sobie, że ktoś naciska i przytrzymuje klawisz Shift podczas przesuwania kursora tekstu w Notatniku).
Wcześniej zrobiłem wiele dostosowań w Putty Ustawienia, ~/.tcshrc, ~/.inputrc, ~/.bashrc, ~/.nanorc, ~/.screenrcaby to, co uważam za podstawową funkcjonalność ( Backspace, Delete, Home, End, PgUp, PgDown, Ctrl+Left, Ctrl+Right, Numpad 0-9, Numpad ./*-+) pracuje konsekwentnie pomiędzy bash / nano / ekran.
Gdy odkryłem ten caffeine.exe -key:07„błąd”, nie chciałem go od nowa powtarzać :)
Testowany na:
Windows 8.1 64-bit Enterprise (6.3.9600) / Putty 0.66 / pfsense 2.3.3-RELEASE-p1 (oparty na FreeBSD 10.3-RELEASE) / bash 4.4.12-release / nano 2.7.3 / screen 4.04. 00
Referencje: