通过SSH发送功能键(F1-F12)


13

我有一台可以通过SSH连接到的Fedora机器。我偶尔要使用的程序之一使用功能键。问题是,我是从Android平板电脑(ASUS变压器无限远)带物理键盘的SSH'ing,但没有F1- F12键。因此,在我正在使用的终端应用程序(VX ConnectBot)决定将它们添加为功能之前,我正在寻找一种使用键盘的其余部分发送它们的方法。

我可以使用所有可打印的ASCII字符,EscCtrlShiftEnter,和Tab


我认为您最好在Android.SE上询问。
derobert

Answers:


25

终端只能理解字符,不能理解按键。因此,所有功能键都使用控制字符编码为字符序列。除了一些具有相关控制字符的常见功能(Tabis Ctrl+IEnteris Ctrl+MEscis Ctrl+[)之外,功能键还以Ctrl+[ [或开头发送转义序列Ctrl+[ O。您可以使用该tput命令查看终端上每个功能键的转义序列应用程序期望什么。这些序列存储在terminfo数据库中。例如,下面的外壳程序片段显示了与每个功能键相对应的转义序列。

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

看为一个功能键的转义序列的另一方法是按Ctrl+ V在不重新绑定一个终端应用Ctrl+ V键(如壳)。Ctrl+ V会按字面意义插入下一个字符(将是转义字符),您将能够看到序列的其余部分,其中包含普通字符。

由于序列的键入可能很尴尬,因此请务必研究更改应用程序中的键绑定或使用其他终端仿真器。另外,请注意,您可能有时间限制:某些应用程序仅在转义序列足够快时才能识别它们,以便它们可以Esc单独给键赋予含义。


如何将移位的功能键添加到命令提供的列表中?
drevicko '19

1
@drevicko在xterm上,Shift + F1为kf13,Shift + F2为kf14等,然后Ctrl + F1为kf25,Ctrl + Shift + F1为kf37,Alt + F1为kf49。我不知道这是否可以在其他终端上使用,也不知道如果您有实际的F13键,您会得到什么。
吉尔斯(Gillles)“所以-别再邪恶了”,

3

杰克·帕列维奇(Jack Palevich)的Android终端模拟器将按键与音量键结合使用,以发送各种按键,包括功能键。还有Hacker's Keyboard(黑客键盘),它具有真正键盘所具有的所有可用键。


谢谢,黑客键盘应该可以满足我目前的需求。
Sizik 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.