Eu achei a solução do shreyansp a mais satisfatória (mas não muito) :)
Aqui está minha tentativa de melhorar isso (é claro YMMV). Espero que isso possa ser útil para quem procura uma solução :)
Minha solução se comporta da seguinte maneira:
- A cafeína envia ao Windows um código de chave virtual apropriado que:
- impede que o Windows entre em suspensão ou ocioso
- caso contrário, não gera efeitos colaterais no Windows nem sozinho nem em combinação (sem Ctrl, Shift, Alt, Alt-Gr, Win, F1-F5, F10 etc.)
- ou não é enviado para Putty ou é ignorado por Putty
TL; DR: Minha solução é aplicada entre as etapas 2 e 3 (veja abaixo) com o -key:0E
parâmetro cafeína:
Saia da cafeína e reinicie-a com:
caffeine.exe 5 -key:0E
(para teste fácil)
caffeine.exe 50 -key:0E
(para um protetor de tela obrigatório em 1 minuto)
- Inicie o
read
programa no host remoto e observe como nenhuma tecla é recebida a cada 5 ou 50 segundos.
- Sair
read
comCtrl+C
Shreyansp propôs uma solução em que uma correção seria aplicada entre as etapas 5 e 10 (veja abaixo).
O efeito colateral disso (na minha configuração) foi o de que, com cada pressionamento de tecla enviado da cafeína para o host remoto:
- ele acionou uma 'Redefinir barra de rolagem ao pressionar a tecla' (configuração na página Putty / Window)
que eu normalmente desejaria, mas somente quando eu (o humano) estiver pressionando a tecla, mas não regularmente pela cafeína :)
- A versão traduzida do readline / bash (de
'"\e[28~"'
para '""'
(chave em branco?) causou uma interrupção na interação da sessão remota por vários segundos
Para testar facilmente o acima, saia do Caffeine e reinicie-o com um intervalo de 5 segundos e o Código da Chave Virtual 07:
caffeine.exe 5 -key:07
- Inicie o
read
programa no host remoto e observe como as teclas são recebidas a cada 5 ou 50 segundos.
- Sair
read
comCtrl+C
O pressionamento de tecla 'pipeline', como eu o entendo:
- Cafeína envia um código de chave virtual para o Windows
- O Windows envia esse código de chave virtual para o Putty
- O Putty faz algumas 'traduções' / 'mapeamentos' com base em algumas configurações de sessão em:
- O Putty envia o código da chave 'traduzido' / 'mapeado' para o host remoto
- Em que o computador remoto, o programa 'terminal' (por exemplo:
$TERM=xterm
, vt100
, vt102
, vt220
, etc.) traduz a partir do 'protocolo de linha' em códigos de tecla.
- a biblioteca readline faz algumas traduções / mapeamentos com base em
~/.inputrc
- O readline envia o código-chave para o bash
- O bash faz algumas traduções / mapeamentos com base em
~/.bashrc
(com base no comando bind interno)
- bash ou readline (não tenho certeza qual) envia o código-chave traduzido para o nano (meu editor de texto)
- Esse pipeline pode ficar ainda mais longo adicionando o
screen
programa (que inclui um $TERM=screen
para a etapa 5. e volta novamente na etapa 6. a 10.)
Nota: Quando chega à etapa 4., torna-se muito difícil controlar com precisão as diferentes camadas de 'traduções' / 'mapeamentos'. Eu recomendaria evitar isso, se puder.
Antecedentes:
usei caffeine.exe -key:07
anos antes de ter que lidar com um pfsense 2.3.3-RELEASE-p1 (baseado no FreeBSD 10.3-RELEASE).
Então, caffeine.exe -key:07
foi recebido do outro lado como ^[[28~
... que parece ser mapeado para Ctrl+^
(Set Mark) no Nano.
Isso foi muito chato (imagine alguém pressionando e mantendo a tecla Shift pressionada enquanto você move o cursor de texto no Bloco de Notas).
Anteriormente, eu fiz inúmeras personalizações no Putty Configurações, ~/.tcshrc
, ~/.inputrc
, ~/.bashrc
, ~/.nanorc
, ~/.screenrc
para obter o que eu considero funcionalidade básica ( Backspace
, Delete
, Home
, End
, PgUp
, PgDown
, Ctrl+Left
, Ctrl+Right
, Numpad 0-9
, Numpad ./*-+
) trabalhando de forma consistente entre bash / nano / tela.
Depois que descobri esse caffeine.exe -key:07
'bug', não quis refazer isso novamente :)
Testado em:
Windows 8.1 Enterprise de 64 bits (6.3.9600) / Putty 0.66 / pfsense 2.3.3-RELEASE-p1 (baseado no FreeBSD 10.3-RELEASE) / bash 4.4.12-release / nano 2.7.3 / screen 4.04. 00
Referências: