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:0E
parametru 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
read
program na zdalnym hoście i zobacz, jak nie są odbierane żadne naciśnięcia klawiszy co 5 lub 50 sekund.
- Wyjdź
read
zCtrl+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
read
program na zdalnym hoście i obserwuj, jak naciśnięcia klawiszy są odbierane co 5 lub 50 sekund.
- Wyjdź
read
zCtrl+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
~/.bashrc
podstawie (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
screen
program (który obejmuje $TERM=screen
krok 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:07
do czynienia z pfsense 2.3.3-RELEASE-p1 (oparty na FreeBSD 10.3-RELEASE).
Następnie caffeine.exe -key:07
został 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
, ~/.screenrc
aby 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: