
Como faço para vincular as teclas Tabe ShiftTabna tela? Meu problema é que não sei o que passar para o bind
comando 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 bindkey
onde você pode especificar sequências de caracteres, com bind
, a única maneira é usar bind -k CAP
onde CAP é um termcap
recurso 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 ncurses
nã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 screen
que seja qual for ohospedarterminal ( *
), F63( kr
) envia \E[Z
e 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á ^[[Z
depois de Ctrl+ Aque se traduz em
^[
entrar no modo copiar/rolar[
abortar- e depois mostre
Z
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 kB
para 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.