Como posso passar as teclas de função para htop em um tty?

7

Estou tentando usar htop em tty1. No entanto, algumas das teclas de função não parecem funcionar normalmente. F1 e F2 não fazem nada, e F3 parece ativar o setup (que normalmente deve ser disparado por F2 ). Além disso, F4 e F5 não funcionam. Além disso, quando tento pressionar Esc para sair dessas telas, tenho que pressioná-lo duas vezes.

Em um terminal normal ( terminator ), as teclas de função funcionam bem. No entanto, eu tenho que pressionar Esc duas vezes aqui também, então talvez isso seja uma pista falsa.

Como posso usar essas teclas de função em tty1?

EDITAR

No tty1, se eu pressionar Ctrl + v então F1 para F5 , etc. a seguinte saída:

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

Em terminator , obtenho

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

As teclas de função acima são equivalentes (por exemplo, ^[[17~ para F6 ).

EDIT 2

Em resposta a comentário .

  • $TERM é o mesmo em tty1 como no meu terminal de trabalho "normal". É xterm-256color .
  • Eu não estou usando tela ou tmux.
  • Estou usando htop 1.0.3, embora minha primeira edição pareça apontar para o fato de ser um problema no fluxo de htop .

"Does infocmp -L1 | grep key_f match what those keys send for you?

Não sei ao certo o que você quer dizer com "coincidir com o que essas chaves enviam para você", mas executei esse comando tanto no terminal normal quanto no tty1, e a saída era idêntica, como abaixo.

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~,
    
por Sparhawk 26.04.2015 / 16:03

1 resposta

3

Ao definir:

export TERM=xterm-256color

você está dizendo a htop (e todos os outros aplicativos de terminal visual que usam o termcap ou o banco de dados terminfo) que seu terminal é um xterm de 256 cores e não um console virtual Linux.

htop consultará o banco de dados terminfo para saber qual sequência de caracteres é enviada quando F1 , F2 ... mas irá receber aqueles para xterm . / p>

xterm envia sequências diferentes do console virtual do Linux para essas chaves, que você pode verificar consultando o banco de dados terminfo manualmente com infocmp , por exemplo:

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

Portanto, htop não reconhecerá \E[[A como F1 , esperará \EOP por isso.

Aqui, você não deseja atribuir valores a $TERM in ~/.bashrc . $TERM deve ser definido pelos emuladores de terminal ( xterm , terminator ), e por getty para os consoles virtuais Linux (deve ser linux ).

Se você não estiver satisfeito com o valor que um emulador de terminal específico escolhe para $TERM , essa é a configuração dos emuladores de terminal que você deve atualizar.

    
por 22.03.2016 / 11:18