Envío de teclas de función (F1-F12) sobre SSH


13

Tengo una máquina Fedora que puedo usar SSH. Uno de los programas que me gustaría usar ocasionalmente usa las teclas de función. El problema es que estoy SSH'ing desde una tableta Android (ASUS transformador Infinito) con un teclado físico, pero no F1- F12llaves. Entonces, hasta que la aplicación de terminal que estoy usando (VX ConnectBot) decida agregarlos como una función, estoy buscando una forma de enviarlos usando el resto del teclado.

Puedo utilizar todos los caracteres ASCII imprimibles, Esc, Ctrl, Shift, Enter, y Tab.


Creo que sería mejor preguntar en Android.SE.
derobert el

Respuestas:


25

Las terminales solo entienden caracteres, no claves. Entonces, todas las teclas de función se codifican como secuencias de caracteres, utilizando caracteres de control. Además de unos pocos comunes que tienen un carácter de control asociado ( Tabes Ctrl+I, Enteres Ctrl+M, Esces Ctrl+[), las teclas de función envían secuencias de escape, comenzando con Ctrl+[ [o Ctrl+[ O. Puede usar el tputcomando para ver qué aplicaciones de secuencia de escape esperan para cada tecla de función en su terminal. Estas secuencias se almacenan en la terminfobase de datos. Por ejemplo, el fragmento de shell a continuación muestra las secuencias de escape correspondientes a cada tecla de función.

$ 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~

Otra forma de ver la secuencia de escape para una tecla de función es presionar Ctrl+ Ven una aplicación de terminal que no vuelve a vincular la tecla Ctrl+ V(como el shell). Ctrl+ Vinserta el siguiente carácter (que será el carácter de escape) literalmente, y podrá ver el resto de la secuencia, que consta de caracteres ordinarios.

Debido a que las secuencias pueden ser difíciles de escribir, investigue si cambia las asociaciones de teclas en su aplicación o usa otro emulador de terminal. Además, tenga en cuenta que puede tener un límite de tiempo: algunas aplicaciones solo reconocen las secuencias de escape si entran lo suficientemente rápido, de modo que puedan dar un significado solo a la Escclave.


¿Cómo agrego teclas de función desplazadas a la lista que proporciona su comando?
drevicko

1
@drevicko En xterm, Shift + F1 es kf13, Shift + F2 es kf14, etc. Luego Ctrl + F1 es kf25, Ctrl + Shift + F1 es kf37, Alt + F1 es kf49. No sé si esto funciona en otros terminales ni qué obtienes si tienes una clave F13 real.
Gilles 'SO- deja de ser malvado'

3

Android Terminal Emulator de Jack Palevich utiliza combinaciones de teclas con las teclas de volumen para enviar una variedad de teclas, incluidas las teclas de función. También está el Hacker's Keyboard que tiene todas las teclas disponibles que tendría un teclado real.


Gracias, el Hacker Keyboard debería cubrir lo que necesito por ahora.
Sizik
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.