Senden von Funktionstasten (F1-F12) über SSH

13

Ich habe eine Fedora-Maschine, auf die ich SSH kann. Eines der Programme, das ich gelegentlich verwenden möchte, verwendet die Funktionstasten. Das Problem ist , dass ich von einem Android - Tablet (ASUS Transformer Unendlich) mit einer physischen Tastatur bin SSH'ing, aber keine F1- F12Tasten. Bis die von mir verwendete Terminal-App (VX ConnectBot) entscheidet, sie als Funktion hinzuzufügen, suche ich nach einer Möglichkeit, sie über die übrige Tastatur zu senden.

Ich kann alle druckbaren ASCII - Zeichen verwenden, Esc, Ctrl, Shift, Enter, undTab .

Sizik
quelle
Ich denke, Sie sind besser dran, auf Android.SE zu fragen.
Derobert

Antworten:

25

Terminals verstehen nur Zeichen, keine Schlüssel. So werden alle Funktionstasten als Zeichenfolgen mit Steuerzeichen codiert. Mit Ausnahme einiger weniger gebräuchlicher Tasten , denen ein Steuerzeichen ( Tabist Ctrl+I, Enterist Ctrl+M, Escist Ctrl+[) zugeordnet ist, senden Funktionstasten Escape-Sequenzen, beginnend mit Ctrl+[ [oder Ctrl+[ O. Mit dem tputBefehl können Sie sehen, welche Escape-Sequenz-Anwendungen für die einzelnen Funktionstasten Ihres Terminals erwarten. Diese Sequenzen werden in der terminfoDatenbank gespeichert. Das folgende Shell-Snippet zeigt beispielsweise die Escape-Sequenzen, die den einzelnen Funktionstasten entsprechen.

$ for x in {1..12}; do echo -n "F$x "; tput kf$x | cat -A; echo; done
F1 ^[OP
F2 ^[OQ
F3 ^[OR
F4 ^[OS
F5 ^[[15~
F6 ^[[17~
F7 ^[[18~
F8 ^[[19~
F9 ^[[20~
F10 ^[[21~
F11 ^[[23~
F12 ^[[24~

Eine andere Möglichkeit, die Escape-Sequenz für eine Funktionstaste anzuzeigen, ist das Drücken von Ctrl+ Vin einer Terminalanwendung, die die Ctrl+ V-Taste nicht erneut bindet (z. B. die Shell). Ctrl+ Vfügt das nächste Zeichen (das das Escape-Zeichen sein wird) wörtlich ein und Sie können den Rest der Sequenz sehen, die aus normalen Zeichen besteht.

Da die Eingabe der Sequenzen möglicherweise umständlich ist, sollten Sie das Ändern der Tastenkombinationen in Ihrer Anwendung oder die Verwendung eines anderen Terminalemulators untersuchen. Beachten Sie außerdem, dass Sie möglicherweise ein Zeitlimit haben: Einige Anwendungen erkennen Escape-Sequenzen nur, wenn sie schnell genug eingehen, sodass sie dem EscSchlüssel allein eine Bedeutung geben können.

Gilles 'SO - hör auf böse zu sein'
quelle
Wie füge ich der Liste, die Ihr Befehl enthält, verschobene Funktionstasten hinzu?
Drevicko
1
@drevicko Auf xterm ist Umschalt + F1 kf13, Umschalt + F2 kf14usw. Dann ist Strg + F1 kf25, Strg + Umschalt + F1 kf37, Alt + F1 kf49. Ich weiß nicht, ob dies auf anderen Terminals funktioniert oder was Sie erhalten, wenn Sie eine tatsächliche F13-Taste haben.
Gilles 'SO - hör auf, böse zu sein'
3

Der Android Terminal Emulator von Jack Palevich verwendet Tastenkombinationen mit den Lautstärketasten, um eine Vielzahl von Tasten, einschließlich Funktionstasten, zu senden. Es gibt auch Hackers Tastatur, die jede Taste zur Verfügung hat, die eine echte Tastatur haben würde.

Drake Clarris
quelle
Vielen Dank, die Hacker-Tastatur sollte das abdecken, was ich jetzt brauche.
Sizik