Wysyłanie klawiszy funkcyjnych (F1-F12) przez SSH

14

Mam maszynę Fedory, do której mogę SSH. Jeden z programów, z których chciałbym korzystać, czasami korzysta z klawiszy funkcyjnych. Problem polega na tym, że mam SSH'ing z Android tabletki (ASUS Transformer nieskończoność) z fizycznej klawiatury, ale nie F1- F12klawisze. Tak więc, dopóki aplikacja terminalowa, której używam (VX ConnectBot) nie zdecyduje się na dodanie ich jako funkcji, szukam sposobu na wysłanie ich za pomocą reszty klawiatury.

Mogę korzystać ze wszystkich druku znaków ASCII, Esc, Ctrl, Shift, Enter, i Tab.

Sizik
źródło
Myślę, że lepiej byłoby zapytać na Android.SE.
derobert

Odpowiedzi:

26

Terminale rozumieją tylko znaki, a nie klucze. Więc wszystkie klawisze funkcyjne są kodowane jako sekwencje znaków, przy użyciu znaków kontrolnych. Oprócz kilku typowych, które mają powiązany znak kontrolny ( Tabjest Ctrl+I, Enterjest Ctrl+M, Escjest Ctrl+[), klawisze funkcyjne wysyłają sekwencje specjalne, zaczynając od Ctrl+[ [lub Ctrl+[ O. Możesz użyć tego tputpolecenia, aby zobaczyć, czego oczekują aplikacje sekwencji specjalnych dla każdego klawisza funkcyjnego na terminalu. Sekwencje te są przechowywane w terminfobazie danych. Na przykład poniższy fragment powłoki pokazuje sekwencje specjalne odpowiadające poszczególnym klawiszom funkcyjnym.

$ 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~

Innym sposobem, aby zobaczyć sekwencję zmiany znaczenia dla klawisza funkcyjnego, jest naciśnięcie Ctrl+ Vw aplikacji terminalowej, która nie ponownie wiąże klawisza Ctrl+ V(takiej jak powłoka). Ctrl+ Vwstawia dosłownie następny znak (który będzie znakiem ucieczki), a ty będziesz mógł zobaczyć resztę sekwencji, która składa się ze zwykłych znaków.

Ponieważ sekwencje mogą być kłopotliwe w pisaniu, sprawdź zmianę powiązań klawiszy w aplikacji lub używając innego emulatora terminala. Pamiętaj też, że możesz mieć limit czasu: niektóre aplikacje rozpoznają sekwencje specjalne tylko wtedy, gdy przychodzą wystarczająco szybko, aby mogły nadać znaczenie Escsamemu kluczowi.

Gilles „SO- przestań być zły”
źródło
Jak dodać przesunięte klawisze funkcyjne do listy, którą udostępnia polecenie?
drevicko
1
@drevicko W Xtermie Shift + F1 jest kf13, Shift + F2 jest kf14, itd. Następnie Ctrl + F1 jest kf25, Ctrl + Shift + F1 jest kf37, Alt + F1 jest kf49. Nie wiem, czy to działa na innych terminalach, ani co dostajesz, jeśli masz rzeczywisty klawisz F13.
Gilles „SO- przestań być zły”,
3

Emulator terminala Androida Jacka Palevicha używa kombinacji klawiszy z klawiszami głośności do wysyłania różnych klawiszy, w tym klawiszy funkcyjnych. Istnieje również klawiatura hakera, która ma każdy dostępny klawisz, który miałaby prawdziwa klawiatura.

Drake Clarris
źródło
Dzięki, klawiatura hakera powinna pokryć to, czego teraz potrzebuję.
Sizik