No tmux, arrow e ctrl + arrow ambos resultam no mesmo código

3

O Ubuntu 12.10, TERM está configurado para screen-256color em massa e tmux.conf, confirmado quando eu export entra e sai de uma sessão tmux.

Se eu executar cat > /dev/null e, em seguida, pressionar <down> then <c-down> , obtenho ^[[B^[OB fora de uma sessão tmux, mas ^[[B^[[B dentro de uma sessão.

Eu tentei setw -g xterm-keys on no meu arquivo .tmux.conf sem sucesso.

    
por jjt 04.02.2013 / 23:39

1 resposta

3

screen-256color é um valor TERM válido para uso dentro do tmux , mas xterm-256color provavelmente seria mais apropriado para fora do tmux (onde você está "apenas dentro ” PuTTY ). Anexar a uma sessão tmux com um valor TERM incorreto é semelhante a mentir para tmux sobre as seqüências de controle usadas pelo emulador de terminal (isto é, PuTTY provavelmente não suporta exatamente as seqüências de controle descritas pela entrada do banco de dados screen-256color terminfo).

Eu não uso o PuTTY , mas pesquisar um pouco me deixou com a impressão de que o PuTTY não suporta sequências de envio que realmente significam (eg) + Seta para baixo . As diferentes seqüências que você observa são, na verdade, duas sequências diferentes para a seta para baixo simples . ^[[B é a sequência normal e ^[OB é para quando um programa solicitou o modo “cursor do aplicativo”.

Assim, quando o PuTTY envia ^[OB , qualquer programa que esteja esperando sequências no estilo xterm interpretará essa sequência como “ Seta para baixo , enquanto no modo de teclas do cursor de aplicação ”(Ou apenas Seta para Baixo ), mas nunca como Controle + Seta para Baixo . Especificamente, quando tmux vê uma dessas seqüências, ela a interpreta como uma simples Seta para baixo . A sequência que o tmux gera para seu painel depende se esse painel em particular foi configurado para o modo de chave do cursor do aplicativo ou não.

No seu caso, você não pediu que o tmux mude seu painel para o modo de teclas do cursor do aplicativo, de modo que ele traduziu a sequência para a sequência "normal" nos dois casos. Você deve ser capaz de observar a diferença executando comandos como estes (dentro ou fora de um tmux ) (os comandos tput geram as seqüências de controle que ativam e desativam o terminal requerido modos):

# Activate "Application Cursor Keys" (and "Application Keypad")
tput smkx ; cat
# Press Down Arrow to see '^[OB', then Control-C to kill the cat

# Activate "Normal Cursor Keys" (and "Normal Keypad")
tput rmkx ; cat 
# Press Down Arrow to see '^[[B', then Control-C to kill the cat

Se você puder de alguma forma convencer PuTTY a enviar sequências de teclas de seta modificadas no estilo xterm (ex. ^[[1;5B para Controle + Seta para baixo ) , então tmux irá gerar as mesmas seqüências para seus painéis quando xterm-keys estiver habilitado.

    
por 05.02.2013 / 05:58