Come posso passare i tasti funzione su htop in un tty?


9

Sto provando a usare htopin tty1. Tuttavia, alcuni dei tasti funzione non sembrano funzionare normalmente. F1e F2non fa nulla e F3sembra innescare l'installazione (che normalmente dovrebbe essere attivata F2). Inoltre, F4e F5non funziona. Inoltre, quando provo a premere Escper uscire da queste schermate, devo premerlo due volte.

In un normale terminale ( terminator), i tasti funzione funzionano correttamente . Tuttavia, devo premere Escdue volte anche qui, quindi forse è un'aringa rossa.

Come posso usare questi tasti funzione in tty1?

MODIFICARE

In tty1, se premo Ctrl+, vquindi F1a F5, ecc., Ottengo il seguente output:

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

In terminator, ottengo

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

I tasti funzione sopra indicati sono equivalenti (ad es. ^[[17~Per F6).

MODIFICA 2

In risposta al commento di Stéphane Chazelas .

  • $TERMè lo stesso in tty1 del mio terminale "normale", funzionante. Lo è xterm-256color.
  • Non sto usando schermo o tmux.
  • Sto usando htop1.0.3, anche se la mia prima modifica sembra indicare che è un problema a monte di htop.

" infocmp -L1 | grep key_fCorrisponde a ciò che quelle chiavi inviano per te?

Non sono sicuro di cosa intendi per "abbina ciò che quelle chiavi inviano per te", ma ho eseguito questo comando sia nel mio terminale normale che in tty1, e l'output era identico, come di seguito.

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

1
Su tty1, al prompt della shell, premere Ctrl+Vquindi F1e vedere cosa viene inserito. Ripetere l'operazione per F2, F3, F4e F5, e poi fare lo stesso in Terminator. Dicci cosa vedi
Gilles 'SO- smetti di essere malvagio' il

@Gilles La domanda è stata modificata.
Sparhawk,

Qual è il valore di $TERMlì dentro? Stai usando screen o tmux? Quale versione di htop? Non infocmp -L1 | grep key_fcorrispondono quelle chiavi inviare per voi?
Stéphane Chazelas,

@ StéphaneChazelas Ho modificato la domanda.
Sparhawk,

2
Dovrebbe essere TERM = linux, la console virtuale linux non ha praticamente nulla a che fare con xterm. getty dovrebbe impostare $ TERM per te, non dovresti sovrascriverlo.
Stéphane Chazelas il

Risposte:


4

IMPOSTANDO:

export TERM=xterm-256color

stai dicendo htop(e ogni altra applicazione di terminale visivo che utilizza il database termcap o terminfo) che il tuo terminale è un xterm a 256 colori e non una console virtuale Linux.

htopinterrogherà il database terminfo per sapere su quale sequenza di caratteri viene inviato F1, F2... ma otterrà quelli per xterm.

xterminvia sequenze diverse rispetto alla console virtuale Linux per quelle chiavi che è possibile verificare interrogando manualmente il database terminfo con infocmpad esempio:

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

Quindi htopnon riconoscerà \E[[Acome un F1, si aspetterà \EOPquesto.

Qui, non si desidera assegnare valori a $TERMin ~/.bashrc. $TERMdovrebbe essere impostato dagli stessi emulatori di terminale ( xterm, terminator) e dalle gettyconsole virtuali di Linux (dovrebbe esserci linux).

Se non sei soddisfatto del valore scelto da un particolare emulatore di terminale $TERM, questa è la configurazione di quegli emulatori di terminale che dovresti aggiornare.


Su Mac, basta aprire le preferenze del Terminale e passare da "ansi" a xterm-256color.
Xeoncross

Grazie per la spiegazione dettagliata. Nel mio caso, KiTTY (fork di PuTTY) era impostato $TERMsu xterm-256color, ma è stato impostato per utilizzare i ESC[n~tasti funzione. Ho cambiato i tasti funzione da utilizzare XTerm R6nelle impostazioni e ora funziona tutto.
Alan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.