¿Cómo puedo pasar las teclas de función a htop en un tty?

9

Estoy tratando de usar htopen tty1. Sin embargo, algunas de las teclas de función no parecen funcionar normalmente. F1y F2no hace nada, y F3parece desencadenar la configuración (que normalmente debería activarse F2). Además, F4y F5no funcionan. Además, cuando intento presionar Escpara salir de estas pantallas, tengo que presionarlo dos veces.

En un terminal normal ( terminator), las teclas de función funcionan bien. Sin embargo, tengo que presionar Escdos veces aquí también, así que tal vez sea una pista falsa.

¿Cómo puedo usar estas teclas de función en tty1?

EDITAR

En tty1, si presiono Ctrl+ ventonces F1a F5, etc. conseguir el la siguiente salida:

^[[[A
^[[[B
^[[[C
^[[[D
^[[[E

En terminator, me sale

^[OP
^[OQ
^[OR
^[OS
^[[15~

Las teclas de función por encima de esto son equivalentes (por ejemplo, ^[[17~para F6).

EDITAR 2

En respuesta al comentario de Stéphane Chazelas .

  • $TERMes lo mismo en tty1 que en mi terminal de trabajo "normal". Es xterm-256color.
  • No estoy usando la pantalla o tmux.
  • Estoy usando htop1.0.3, aunque mi primera edición parece señalar que es un problema corriente arriba htop.

"¿ infocmp -L1 | grep key_fCoincide con lo que esas llaves te envían?

No estoy seguro de lo que quieres decir con "hacer coincidir lo que esas teclas te envían", pero ejecuté este comando tanto en mi terminal normal como en tty1, y la salida fue idéntica, como se muestra a continuación.

key_f1=\EOP,
key_f10=\E[21~,
key_f11=\E[23~,
key_f12=\E[24~,
key_f13=\E[1;2P,
key_f14=\E[1;2Q,
key_f15=\E[1;2R,
key_f16=\E[1;2S,
key_f17=\E[15;2~,
key_f18=\E[17;2~,
key_f19=\E[18;2~,
key_f2=\EOQ,
key_f20=\E[19;2~,
key_f21=\E[20;2~,
key_f22=\E[21;2~,
key_f23=\E[23;2~,
key_f24=\E[24;2~,
key_f25=\E[1;5P,
key_f26=\E[1;5Q,
key_f27=\E[1;5R,
key_f28=\E[1;5S,
key_f29=\E[15;5~,
key_f3=\EOR,
key_f30=\E[17;5~,
key_f31=\E[18;5~,
key_f32=\E[19;5~,
key_f33=\E[20;5~,
key_f34=\E[21;5~,
key_f35=\E[23;5~,
key_f36=\E[24;5~,
key_f37=\E[1;6P,
key_f38=\E[1;6Q,
key_f39=\E[1;6R,
key_f4=\EOS,
key_f40=\E[1;6S,
key_f41=\E[15;6~,
key_f42=\E[17;6~,
key_f43=\E[18;6~,
key_f44=\E[19;6~,
key_f45=\E[20;6~,
key_f46=\E[21;6~,
key_f47=\E[23;6~,
key_f48=\E[24;6~,
key_f49=\E[1;3P,
key_f5=\E[15~,
key_f50=\E[1;3Q,
key_f51=\E[1;3R,
key_f52=\E[1;3S,
key_f53=\E[15;3~,
key_f54=\E[17;3~,
key_f55=\E[18;3~,
key_f56=\E[19;3~,
key_f57=\E[20;3~,
key_f58=\E[21;3~,
key_f59=\E[23;3~,
key_f6=\E[17~,
key_f60=\E[24;3~,
key_f61=\E[1;4P,
key_f62=\E[1;4Q,
key_f63=\E[1;4R,
key_f7=\E[18~,
key_f8=\E[19~,
key_f9=\E[20~,
Gavilán
fuente
1
En tty1, en el indicador de comandos, pulse Ctrl+Ventonces F1, y ver lo que se inserta. Repita para F2, F3, F4y F5, a continuación, hacer lo mismo en terminador. Cuéntanos qué ves.
Gilles 'SO- deja de ser malvado'
@Gilles La pregunta ha sido editada.
Sparhawk
¿Cuál es el valor de $TERMallí? ¿Estás usando screen o tmux? ¿Qué versión de htop? ¿ infocmp -L1 | grep key_fCoincide con lo que te envían esas llaves?
Stéphane Chazelas
@ StéphaneChazelas He editado la pregunta.
Sparhawk
2
Debe ser TERM = linux, la consola virtual de linux casi no tiene nada que ver con xterm. getty debería establecer $ TERM por usted, no debería sobrescribirlo.
Stéphane Chazelas

Respuestas:

4

Configurando:

export TERM=xterm-256color

usted está diciendo htop(y cualquier otra aplicación de terminal visual que use la base de datos termcap o terminfo) que su terminal es una xterm de 256 colores y no una consola virtual de Linux.

htopconsultará la base de datos terminfo para saber a qué secuencia de caracteres se envía F1, F2... pero los obtendrá xterm.

xtermenvía secuencias diferentes que la consola virtual de Linux para esas claves que puede verificar consultando la base de datos terminfo a mano con, infocmppor ejemplo:

$ infocmp -L1 xterm-256color | grep 'key_f[1-5]='
        key_f1=\EOP,
        key_f2=\EOQ,
        key_f3=\EOR,
        key_f4=\EOS,
        key_f5=\E[15~,
$ infocmp -L1 linux | grep 'key_f[1-5]='
        key_f1=\E[[A,
        key_f2=\E[[B,
        key_f3=\E[[C,
        key_f4=\E[[D,
        key_f5=\E[[E,

Por htoplo tanto , no reconocerá \E[[Acomo un F1, esperará \EOPpor eso.

Aquí, no desea asignar valores a $TERMin ~/.bashrc. $TERMdeben ser configurados por los propios emuladores de terminal ( xterm, terminator) y por gettylas consolas virtuales de Linux (deben estar linuxallí).

Si no está satisfecho con el valor que elige un emulador de terminal en particular $TERM, esa es la configuración de esos emuladores de terminal que debe actualizar.

Stéphane Chazelas
fuente
En mac, simplemente abra las preferencias de Terminal y cambie de "ansi" a xterm-256color.
Xeoncross
Gracias por la explicación detallada. En mi caso, KiTTY (bifurcación de PuTTY) estaba configurado $TERMpara xterm-256color, pero estaba configurado para usar ESC[n~teclas de función. Cambié las teclas de función para usar XTerm R6en la configuración y todo funciona ahora.
Alan