Отправка функциональных клавиш (F1-F12) через SSH

13

У меня есть машина Fedora, к которой я могу подключиться по SSH. Одна из программ, которую я хотел бы использовать, иногда использует функциональные клавиши. Проблема заключается в том, что я не буду ssh'ing от Android планшета (ASUS Transformer Инфинити) с физической клавиатурой, но нет F1- F12клавиши. Поэтому, пока приложение терминала, которое я использую (VX ConnectBot), не решит добавить их в качестве функции, я ищу способ отправки их с помощью остальной клавиатуры.

Я могу использовать все печатаемые символы ASCII, Esc, Ctrl, Shift, Enter, и Tab.

Sizik
источник
Я думаю, вам лучше спросить на Android.SE.
Дероберт

Ответы:

25

Терминалы понимают только символы, а не ключи. Таким образом, все функциональные клавиши кодируются как последовательности символов с использованием управляющих символов. Помимо нескольких общих, которые имеют связанный управляющий символ ( Tabесть Ctrl+I, Enterесть Ctrl+M, Escесть Ctrl+[), функциональные клавиши отправляют escape-последовательности, начиная с Ctrl+[ [или Ctrl+[ O. Вы можете использовать tputкоманду, чтобы увидеть, что ожидают приложения escape-последовательности для каждой функциональной клавиши на вашем терминале. Эти последовательности хранятся в terminfoбазе данных. Например, приведенный ниже фрагмент оболочки показывает escape-последовательности, соответствующие каждой функциональной клавише.

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

Другой способ увидеть escape-последовательность для функциональной клавиши - нажать Ctrl+ Vв терминальном приложении, которое не связывает клавишу Ctrl+ V(например, оболочку). Ctrl+ Vвставляет следующий символ (который будет escape-символом) буквально, и вы сможете увидеть остальную часть последовательности, которая состоит из обычных символов.

Поскольку последовательности могут быть неудобными для ввода, изучите возможность изменения привязок клавиш в вашем приложении или используйте другой эмулятор терминала. Также обратите внимание, что у вас может быть ограничение по времени: некоторые приложения распознают escape-последовательности только в том случае, если они вводятся достаточно быстро, чтобы они могли придать смысл Escтолько одному ключу.

Жиль "ТАК - перестань быть злым"
источник
Как добавить сдвинутые функциональные клавиши в список, который предоставляет ваша команда?
drevicko
1
@drevicko На xterm Shift + F1 - это kf13, Shift + F2 - kf14и т. д. Затем Ctrl + F1 - это kf25, Ctrl + Shift + F1 - это kf37, Alt + F1 - это kf49. Я не знаю, работает ли это на других терминалах, и что вы получаете, если у вас есть фактический ключ F13.
Жиль "ТАК ... перестать быть злым"
3

Эмулятор терминала Android от Jack Palevich использует комбинации клавиш с клавишами громкости для отправки различных клавиш, включая функциональные клавиши. Есть также Hacker's Keyboard, в котором есть все доступные клавиши, которые есть у настоящей клавиатуры.

Дрейк Кларрис
источник
Спасибо, хакерская клавиатура должна покрыть то, что мне сейчас нужно.
Сизик