Answers:
终端只能理解字符,不能理解按键。因此,所有功能键都使用控制字符编码为字符序列。除了一些具有相关控制字符的常见功能(Tabis Ctrl+I
,Enteris Ctrl+M
,Escis 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单独给键赋予含义。
kf13
,Shift + F2为kf14
等,然后Ctrl + F1为kf25
,Ctrl + Shift + F1为kf37
,Alt + F1为kf49
。我不知道这是否可以在其他终端上使用,也不知道如果您有实际的F13键,您会得到什么。
杰克·帕列维奇(Jack Palevich)的Android终端模拟器将按键与音量键结合使用,以发送各种按键,包括功能键。还有Hacker's Keyboard(黑客键盘),它具有真正键盘所具有的所有可用键。