He encontrado shreyansp solución 's para ser la mayoría (pero no del todo) una satisfactoria :)
Aquí está mi intento de mejorar la que (por supuesto tu caso es distinto). Espero que esto sea de utilidad para aquellos que buscan una solución :)
Mi solución se comporta de la siguiente manera:
- La cafeína envía a Windows un código de clave virtual apropiado que:
- evita que Windows se quede inactivo o inactivo
- de lo contrario, no genera ningún efecto secundario en Windows ni solo ni en combinación (sin Ctrl, Shift, Alt, Alt-Gr, Win, F1-F5, F10, etc.)
- o no se envía a Putty o es ignorado por Putty
TL; DR: mi solución se aplica entre los pasos 2 y 3 (ver más abajo) con el -key:0E
parámetro cafeína:
Salga de la cafeína y reiníciela con:
caffeine.exe 5 -key:0E
(para una prueba fácil)
caffeine.exe 50 -key:0E
(para un protector de pantalla obligatorio configurado en 1 minuto)
- Inicie el
read
programa en el host remoto y observe cómo no se reciben pulsaciones de teclas cada 5 o 50 segundos.
- Salir
read
conCtrl+C
Shreyansp propuso una solución donde se aplicaría una solución entre los pasos 5 y 10 (ver más abajo).
El efecto secundario de eso (en mi configuración) fue que, con cada pulsación de tecla, esa masilla se reenvía de cafeína al host remoto:
- activó una 'Restablecer barra de desplazamiento al presionar una tecla' (configuración en la página Putty / Window)
que normalmente desearía, pero solo cuando yo (el humano) presiono la tecla pero no regularmente con cafeína :)
- La versión traducida de readline / bash (de
'"\e[28~"'
a '""'
(¿tecla en blanco?) causó que la interacción de sesión remota se bloqueara durante varios segundos
Para probar fácilmente lo anterior, salga de Caffeine y reinícielo con un intervalo de 5 segundos y el código de clave virtual 07:
caffeine.exe 5 -key:07
- Inicie el
read
programa en el host remoto y observe cómo se reciben las pulsaciones de teclas cada 5 o 50 segundos.
- Salir
read
conCtrl+C
La 'tubería' de pulsación de teclas, según tengo entendido:
- La cafeína envía un código de clave virtual a Windows
- Windows envía ese código de clave virtual a Putty
- Putty hace algunas 'traducciones' / 'asignaciones' basadas en algunas configuraciones de sesión en:
- Putty envía el código clave 'traducido' / 'mapeado' al host remoto
- En el host remoto, el programa de 'terminal' (por ejemplo:
$TERM=xterm
, vt100
, vt102
, vt220
, etc.) traduce desde el 'protocolo de línea' en códigos de clave.
- la biblioteca readline hace algunas traducciones / asignaciones basadas en
~/.inputrc
- readline envía el código clave a bash
- bash hace algunas traducciones / asignaciones basadas en
~/.bashrc
(basado en el comando de enlace incorporado)
- bash o readline (no estoy seguro de cuál) envía el código clave traducido a nano (mi editor de texto)
- Esta canalización puede ser aún más larga al agregar el
screen
programa (que incluye un $TERM=screen
para el paso 5. y vuelve a los bucles en los pasos 6. al 10.)
Nota: Una vez que llega al paso 4., se hace muy difícil controlar con precisión las diferentes capas de 'traducciones' / 'mapeos'. Recomendaría evitar eso si puedes.
Antecedentes:
Utilicé caffeine.exe -key:07
durante años antes de tener que lidiar con un pfsense 2.3.3-RELEASE-p1 (basado en FreeBSD 10.3-RELEASE).
Luego, caffeine.exe -key:07
fue recibido en el otro lado como ^[[28~
... que parece estar asignado a Ctrl+^
(Establecer marca) en Nano.
Esto fue bastante molesto (imagina a alguien presionando y manteniendo presionada la tecla Mayús mientras mueves el texto en el Bloc de notas).
Anteriormente, hice numerosas personalizaciones en masilla Ajustes, ~/.tcshrc
, ~/.inputrc
, ~/.bashrc
, ~/.nanorc
, ~/.screenrc
para conseguir lo que considero funcionalidad básica ( Backspace
, Delete
, Home
, End
, PgUp
, PgDown
, Ctrl+Left
, Ctrl+Right
, teclado numérico 0-9
, teclado numérico ./*-+
) que trabajan consistentemente entre bash / nano / pantalla.
Una vez que descubrí este caffeine.exe -key:07
'error', no quise volver sobre eso otra vez :)
Probado en:
Windows 8.1 64-bit Enterprise (6.3.9600) / Putty 0.66 / pfsense 2.3.3-RELEASE-p1 (basado en FreeBSD 10.3-RELEASE) / bash 4.4.12-release / nano 2.7.3 / screen 4.04. 00
Referencias