Como ligar 'tab' e 'shift + tab' na tela GNU?

4

Como o título diz, como eu ligo as teclas Tab e Shift Tab na tela? Meu problema é que eu não sei o que passar para o comando bind da tela para designar esses pressionamentos de tecla.

BTW, estou ciente da tela GNU: mova-se entre as regiões , mas a resposta não está lá.

Todos os itens a seguir falham com o erro -X: bind: character, ^x, or (octal) 2 expected :

screen -X bind "3[Z" focus up
screen -X bind "^[[Z" focus up
screen -X bind "\t" focus up
screen -X bind 3[Z focus up
screen -X bind ^[[Z focus up
screen -X bind \t focus up

A mesma coisa se eu pressionar Ctrl A : para inserir o comando.

    
por ricab 17.10.2013 / 13:53

1 resposta

2

Ao contrário de bindkey , em que você pode especificar sequências de caracteres, com bind , a única maneira é usar bind -k CAP , em que CAP é um recurso de chave termcap .

Por exemplo,

bind -k ku focus up

trabalha para vincular a seqüência de caracteres enviada ao Up para focus up . Para o backtab, isso deve ser:

bind -k kB focus up

Infelizmente, por algum motivo, não funciona. Não tenho certeza porque. Minha primeira interpretação estava errada. Parece que tem algo a ver com ncurses não manipular o equivalente a termcap kcbt corretamente:

$ infocmp -1 | grep Z
    cbt=\E[Z,
    kcbt=\E[Z,
$ infocmp -1C | grep Z
    :bt=\E[Z:\

(kcbt não está traduzido para kB).

Se eu adicionar ao meu ~/.screenrc :

 termcapinfo * kr=\E[Z
 bind -k kr focus up

Isto é, se eu disser screen que qualquer que seja o host termincal ( * ), F63 ( kr ) envia \E[Z e liga F63 para focus up , então isso funciona. Entretanto, note que pressionar Shift + Tab agora envia na tela \EOC , que é a sequência de caracteres que o emulador de terminal que tela implementa (como oposta ao terminal host) envia sobre F63 .

    
por 25.10.2013 / 17:03