¿Cómo vincular 'tab' y 'shift+tab' en la pantalla GNU?

¿Cómo vincular 'tab' y 'shift+tab' en la pantalla GNU?

¿Cómo vinculo las teclas Taby ShiftTaben la pantalla? Mi problema es que no sé qué pasarle al bindcomando de pantalla para designar estas pulsaciones de teclas.

Por cierto, soy consciente dePantalla GNU: moverse entre regionespero la respuesta no está ahí.

Todo lo siguiente falla con el error -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

Lo mismo si presiono CtrlA:para ingresar el comando.

Respuesta1

Al contrario de bindkeydonde puede especificar secuencias de caracteres, con bind, la única forma es utilizar bind -k CAPCAP cuando es una termcapcapacidad clave.

Por ejemplo,

bind -k ku focus up

trabaja para vincular la secuencia de caracteres enviados Upa focus up. Para backtab, eso debería ser:

bind -k kB focus up

Desafortunadamente, por alguna razón, no parece funcionar. No estoy seguro de por qué. Mi primera interpretación fue errónea. Parece que tiene algo que ver con no manejar correctamente ncursesel equivalente de termcap :kcbt

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

(kcbt no se traduce a kB).

Si agrego a mi ~/.screenrc:

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

Es decir, si digo screenque sea cual sea elanfitriónterminal ( *), F63( kr) envía \E[Zy se vincula F63, focus upentonces eso funciona. Sin embargo, tenga en cuenta que al presionar Shift+Tabahora se envíadentro de la pantalla \EOC, que es la secuencia de caracteres que el emulador de terminal quepantallaLos implementos (a diferencia del terminal host) envían F63.

Respuesta2

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

En mi caso el problema es que la cadena insertada cuando presiono Ctrl+ A- Shift+ Tabestá ^[[Zdespués de Ctrl+ Alo que se traduce en

  • ^[ingresar al modo de copia/desplazamiento hacia atrás
  • [abortar
  • y luego mostrarZ

es decir, la secuencia de caracteres de escape de estilo estándar VT100 está en conflicto con la secuencia de caracteres del modo copia/desplazamiento hacia atrás. Así que agregué una combinación de teclas para el nombre del termcap de la pestaña trasera kBpara cambiar la cadena insertada en el búfer de entrada cuando se presiona Shift+ para .Tab^[OB

Consulte la sección "TRADUCCIÓN DE ENTRADA" en la página de manual de la pantalla.

información relacionada