Enviar teclas de função (F1-F12) por SSH

13

Eu tenho uma máquina Fedora na qual posso fazer o SSH. Um dos programas que eu gostaria de usar ocasionalmente usa as teclas de função. O problema é que eu estou SSH'ing a partir de um tablet Android (ASUS Transformer Infinito) com um teclado físico, mas não F1- F12chaves. Assim, até que o aplicativo de terminal que estou usando (VX ConnectBot) decida adicioná-los como um recurso, estou procurando uma maneira de enviá-los usando o restante do teclado.

Eu posso utilizar todos os caracteres ASCII imprimíveis, Esc, Ctrl, Shift, Enter, e Tab.

Sizik
fonte
Acho melhor você perguntar no Android.SE.
derobert

Respostas:

25

Os terminais compreendem apenas caracteres, não chaves. Portanto, todas as teclas de função são codificadas como sequências de caracteres, usando caracteres de controle. Além de alguns comuns que possuem um caractere de controle associado ( Tabé Ctrl+I, Enteré Ctrl+M, Escé Ctrl+[), as teclas de função enviam sequências de escape, começando com Ctrl+[ [ou Ctrl+[ O. Você pode usar o tputcomando para ver o que os aplicativos de sequência de escape esperam para cada tecla de função no seu terminal. Essas seqüências são armazenadas no terminfobanco de dados. Por exemplo, o snippet de shell abaixo mostra as seqüências de escape correspondentes a cada tecla de função.

$ for x in {1..12}; do echo -n "F$x "; tput kf$x | cat -A; echo; done
F1 ^[OP
F2 ^[OQ
F3 ^[OR
F4 ^[OS
F5 ^[[15~
F6 ^[[17~
F7 ^[[18~
F8 ^[[19~
F9 ^[[20~
F10 ^[[21~
F11 ^[[23~
F12 ^[[24~

Outra maneira de ver a sequência de escape de uma tecla de função é pressionar Ctrl+ Vem um aplicativo de terminal que não religue a tecla Ctrl+ V(como o shell). Ctrl+ Vinsere o próximo caractere (que será o caractere de escape) literalmente, e você poderá ver o restante da sequência, que consiste em caracteres comuns.

Como as seqüências podem ser difíceis de digitar, investigue a alteração das combinações de teclas em seu aplicativo ou usando outro emulador de terminal. Além disso, observe que você pode ter um limite de tempo: alguns aplicativos reconhecem apenas seqüências de escape se elas forem rápidas o suficiente, para que possam dar um significado apenas à Escchave.

Gilles 'SO- parar de ser mau'
fonte
Como adiciono teclas de função deslocadas à lista fornecida por seu comando?
drevicko
1
@drevicko No xterm, Shift + F1 é kf13, Shift + F2 é kf14, etc. Então Ctrl + F1 é kf25, Ctrl + Shift + F1 é kf37, Alt + F1 é kf49. Não sei se isso funciona em outros terminais nem o que você obtém se tiver uma chave F13 real.
Gilles 'SO- stop be evil'
3

O Android Terminal Emulator de Jack Palevich usa combinações de teclas com as teclas de volume para enviar uma variedade de teclas, incluindo teclas de função. Há também o teclado do hacker, que tem todas as teclas disponíveis que um teclado real teria.

Drake Clarris
fonte
Obrigado, o Hacker Keyboard deve cobrir o que eu preciso por enquanto.
Sizik