Wie bindet man „Tab“ und „Umschalt+Tab“ im GNU-Bildschirm?

Wie bindet man „Tab“ und „Umschalt+Tab“ im GNU-Bildschirm?

Wie binde ich die Tasten Tabund ShiftTabauf dem Bildschirm? Mein Problem ist, dass ich nicht weiß, was ich an den Bildschirmbefehl übergeben soll, bindum diese Tastenanschläge zu kennzeichnen.

Übrigens, ich bin mir bewusstGNU-Bildschirm: Zwischen Regionen wechselnaber die Antwort ist nicht da.

Alle der folgenden Schritte schlagen mit dem Fehler fehl -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

Dasselbe passiert, wenn ich drücke, CtrlA:um den Befehl einzugeben.

Antwort1

Im Gegensatz zu bindkey, wo Sie Zeichenfolgen angeben können, bindist dies bei nur durch die Verwendung möglich, bind -k CAPwobei CAP eine termcapSchlüsselfunktion ist.

Zum Beispiel,

bind -k ku focus up

arbeitet daran, die Zeichenfolge zu binden, die Upan gesendet wird focus up. Für Backtab sollte das sein:

bind -k kB focus up

Leider scheint es aus irgendeinem Grund nicht zu funktionieren. Ich bin mir nicht sicher, warum. Meine erste Interpretation war falsch. Es klingt, als hätte es etwas damit zu tun, dass ncursesdas Termcap-Äquivalent von nicht kcbtrichtig gehandhabt wird:

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

(kcbt wird nicht in kB übersetzt).

Wenn ich zu meinem ergänze ~/.screenrc:

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

Das heißt, wenn ich sage, screenwas auch immer dieGastgeberterminal ( *), F63( kr) sendet \E[Z, und bindet F63an focus up, dann funktioniert es. Beachten Sie jedoch, dass das Drücken Shift+Tabvon jetzt sendetinnerhalb des Bildschirms \EOC, das ist die Zeichenfolge, die der Terminalemulator verwendet,Bildschirmimplementiert (im Gegensatz zum Host-Terminal) sendet an F63.

Antwort2

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

In meinem Fall besteht das Problem darin, dass die Zeichenfolge, die eingefügt wird, wenn ich Ctrl+ A- Shift+ drücke, nach + Tabsteht , was übersetzt wird in^[[ZCtrlA

  • ^[in den Kopier-/Zurück-Modus wechseln
  • [abbrechen
  • und dann zeigenZ

d. h. die Escape-Zeichenfolge im Standardstil von VT100 steht im Konflikt mit der Zeichenfolge im Kopier-/Scrollback-Modus. Daher habe ich eine Tastenkombination für den Backtab-Termcap-Namen hinzugefügt, kBum die Zeichenfolge, die in den Eingabepuffer eingefügt wird, wenn Shift+ Tabgedrückt wird, in zu ändern ^[OB.

Weitere Informationen finden Sie im Abschnitt „INPUT TRANSLATION“ auf der Manpage von screen.

verwandte Informationen