Como vincular ‘tab’ e ‘shift+tab’ na tela GNU?

Como vincular ‘tab’ e ‘shift+tab’ na tela GNU?

Como faço para vincular as teclas Tabe ShiftTabna tela? Meu problema é que não sei o que passar para o bindcomando screen para designar essas teclas.

A propósito, estou ciente deTela GNU: mover entre regiõesmas a resposta não está lá.

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

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

A mesma coisa se eu clicar CtrlA:para inserir o comando.

Responder1

Ao contrário de bindkeyonde você pode especificar sequências de caracteres, com bind, a única maneira é usar bind -k CAPonde CAP é um termcaprecurso chave.

Por exemplo,

bind -k ku focus up

funciona para vincular a sequência de caracteres enviada Uppara focus up. Para backtab, isso deve ser:

bind -k kB focus up

Infelizmente, por algum motivo, não parece funcionar. Não sei por quê. Minha primeira interpretação estava errada. Parece que tem algo a ver com ncursesnão lidar corretamente com o equivalente termcap kcbt:

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

(kcbt não é traduzido para kB).

Se eu adicionar ao meu ~/.screenrc:

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

Isto é, se eu disser screenque seja qual for ohospedarterminal ( *), F63( kr) envia \E[Ze vincula -se F63a focus up, então funciona. No entanto, observe que pressionar Shift+Tabagora enviadentro da tela \EOC, que é a sequência de caracteres que o emulador de terminal quetelaimplementa (em oposição ao terminal host) envia em F63.

Responder2

bindkey -k kB stuff ^[OZ
bind -k kB focus up

No meu caso o problema é que a string inserida quando pressiono Ctrl+ A- Shift+ Tabestá ^[[Zdepois de Ctrl+ Aque se traduz em

  • ^[entrar no modo copiar/rolar
  • [abortar
  • e depois mostreZ

ou seja, a sequência de caracteres de escape do estilo VT100 padrão está em conflito com a sequência de caracteres do modo copiar/rolar. Então, adicionei uma ligação de tecla para o nome do termcap backtab kBpara alterar a string inserida no buffer de entrada quando Shift+ Tabé pressionado para ^[OB.

Consulte a seção "INPUT TRANSLATION" na página de manual da tela.

informação relacionada