Como obtenho as teclas F1-F12 para alternar telas na tela do gnu no cygwin ao conectar via SSH?

2

Estou conectando a um desktop executando o cygwin via SSH a partir do aplicativo terminal no Mac OS X. Já iniciei a tela no lado do cygwin e posso conectar-me a ela na sessão SSH. Além disso, tenho o seguinte no arquivo .screenrc:

bindkey -k k1 select 1  #  F1 = screen 1
bindkey -k k2 select 2  #  F2 = screen 2
bindkey -k k3 select 3  #  F3 = screen 3
bindkey -k k4 select 4  #  F4 = screen 4
bindkey -k k5 select 5  #  F5 = screen 5
bindkey -k k6 select 6  #  F6 = screen 6
bindkey -k k7 select 7  #  F7 = screen 7
bindkey -k k8 select 8  #  F8 = screen 8
bindkey -k k9 select 9  #  F9 = screen 9
bindkey -k F1 prev      # F11 = prev
bindkey -k F2 next      # F12 = next

No entanto, quando inicio várias janelas na tela e tento alternar entre elas por meio das teclas de função, tudo que consigo é um bipe.

Eu tentei várias configurações para $ TERM (por exemplo, ansi, cygwin, xterm-color, vt100) e elas não parecem realmente afetar nada.

Eu verifiquei que o aplicativo terminal está, de fato, enviando a seqüência de escape para a tecla de função que estou esperando e que meu shell bash (executando dentro da tela) está recebendo-a. Por exemplo, para F1, ele envia o seguinte (o hexdump é um script perl que eu escrevi que pega STDIN no binmode e o exibe como um dump hexadecimal / ascii):

% hexdump
[press F1 and then hit ^D to terminate input]
00000000:  1b4f50                               .OP

Se as coisas estivessem funcionando corretamente, eu não acho que o bash deva receber a seqüência de escape porque a tela deve ter capturado e transformado em um comando.

Como faço para que as teclas de função funcionem?

    
por Mikey 11.01.2011 / 06:45

2 respostas

1

Com muita experimentação, consegui fazê-lo funcionar adicionando as seguintes linhas ao meu .screenrc:

terminfo * k1=\EOP
terminfo * k2=\EOQ
terminfo * k3=\EOR
terminfo * k4=\EOS
terminfo * k5=\E[15~
terminfo * k6=\E[17~
terminfo * k7=\E[18~
terminfo * k8=\E[19~
terminfo * k9=\E[20~
terminfo * F1=\E[23~
terminfo * F2=\E[24~
    
por 11.01.2011 / 06:46
0

Provavelmente, minha resposta complementará a anterior. Você pode encontrar o banco de dados terminfo modificado que permitirá que você use as teclas Fx, bem como as combinações Alt + Fx, Ctrl + Fx, Shift + Fx, Alt + Shift + Fx aqui . As instruções para usá-lo são aqui . Naturalmente, a aplicação do terminal deve apoiá-los. Esses códigos de teclas são da variante XFree 4 do console (suportado no konsole).

    
por 08.04.2015 / 17:02