Como ativar as combinações de teclas de controle para a tela GNU no putty?

4

Estou acessando uma caixa de linux via ssh usando putty .

As combinações de teclas funcionam bem quando não estou executando screen . No entanto, as combinações de teclas Ctrl não funcionam em uma sessão screen . De fato, uma Ctrl - qualquer tecla é registrada da mesma forma que a mesma chave sem a combinação Ctrl .

Eu sei disso digitando Ctrl - V e então uma combinação de Ctrl - chave para descobrir o que caracteres são enviados para o meu terminal.

Por exemplo, Ctrl - (seta para a esquerda) me dá ^[[D on screen (termo screen256-color). me dá o mesmo resultado.

O mais estranho é que as combinações Alt - chave funcionam bem.

Em particular, gostaria de obter as associações de chave "palavra avançada" e "palavra de retorno" funcionando em screen .

Eu tentei modificar .inputrc para trabalhar com vários terminais. Como tal, meu .inputrc é algo assim:

$if term=xterm
    'xxx' : forward-word # xxx key gotten from Ctrl-V
    'xxx' : backward-word
$endif
$if term=screen-256color
...
...

Eu também tentei vários terminais definindo o TERM do meu bash profile, definindo TERM on .screenrc e definindo os Putty mapeamentos de terminal de teclado. Os óbvios, linux e xterm , não funcionam. No entanto, não tentei todas as permutações de configurações por razões óbvias.

Informação adicional:

Eu estou corrigido, combinações de teclas de seta são as únicas combinações que não funcionam. A distro é o RHEL 6.

.screenrc:

term xterm # tried other terms as well
shell -$SHELL # login shell to reload configs
caption string "%w"
hardstatus alwayslastline "%{b kw}%H %{r}%1' %{w}| %{g}%c %{w}| %{y}%d.%m.%Y %{w}| %{g}%l %{w}| %{-b kw}%u %-Lw%{= rW}%50> %n%f %t %{-}%+Lw%<"
vbell off
defscrollback 5000

Modo de teclado padrão da Putty ESC [n~ .

Extraído do manual: "No modo padrão, rotulado ESC [n ~, as teclas de função geram sequências como ESC [11 ~, ESC [12 ~ e assim por diante. Isso corresponde ao comportamento geral dos terminais da Digital."

Curiosamente, o que é realmente enviado por Putty (seguindo a primeira resposta em link ), é

^[0D : left-arrow
^[[D : Ctrl-{left-arrow}

Como eles são diferentes, eu acho que putty não é o problema?

FWIW, eu tentei alterar as configurações do modo de tecla do cursor do aplicativo no Putty, mas sem sucesso. Eu também tentei usar tmux , apenas para encontrar o mesmo problema.

    
por grayskin 29.06.2014 / 06:31

2 respostas

3

Em sua configuração padrão, o PuTTY envia as teclas do cursor no modo normal , por exemplo, ^[OA enquanto a tela define as teclas do cursor para o modo aplicativo , por exemplo, ^[[A .

Isso é feito pela tela enviando a seqüência de escape para ligar o teclado (em termcap ks , terminfo smkx ). Isso acontece de ativar o modo de aplicativo para o teclado numérico e as teclas do cursor, porque ambos estão presentes no recurso ks/smkx . A tela usa esse recurso, se estiver presente, ao inicializar o terminal. A tela também segue enviando a string na capacidade termcap CS se estiver definida, indicando que o design original era usar descrições de terminal em que apenas o teclado foi inicializado por ks/smkx .

Você percebe essa diferença porque suas ligações de teclas esperam as strings enviadas pelas teclas do cursor no modo normal . Se você modificou a descrição do terminal para a tela para omitir a parte que altera as teclas do cursor, você pode continuar usando essas ligações.

Por exemplo, você pode fazer isso:

infocmp screen >foo
vi foo

e mude a atribuição

smkx=\E[?1h\E=,

para

smkx=\E=,

então

tic foo

para compilar a descrição modificada. Se você fizer isso como usuário (não raiz), o tic colocará a descrição compilada no diretório ~/.terminfo . Há desvantagens nessa abordagem e é preferível usar tput para obter informações de ligação de chave. Mas é simples.

Leitura adicional:

por 05.05.2016 / 02:52
1

Encontrei isso em outra pergunta depois de postar a recompensa ...

* Ctrl and arrow keys doesn't work in putty! What do I do?

putty inverts the sense of the cursor key mode on ctrl, which is a bit hard for tmux to detect properly. To get ctrl keys right, change the terminfo settings so kUP5 (Ctrl-Up etc) are the adjusted versions, and disable smkx/rmkx so tmux doesn't change the mode. For example with this line in .tmux.conf (assuming you have TERM set to xterm):

set -g terminal-overrides "xterm*:kLFT5=\eOD:kRIT5=\eOC:kUP5=\eOA:kDN5=\eOB:smkx@:rmkx@"

Note that this will only work in tmux 1.2 and above.

link

    
por 10.01.2017 / 16:25