功能键 (F1-F12) 的转义序列,尤其是 F11 和 F12

功能键 (F1-F12) 的转义序列,尤其是 F11 和 F12

我想使用终端多路复用器byobu,所以我需要使用功能键(F1- F12)。但是,我通过 SSH 访问远程计算机,因此我需要通过 SSH 发送功能键。 (我运行的是 Ubuntu 10.04.4 LTS。)

这个答案这个问题解释说“终端只能理解字符,不能理解键”,因此我需要使用转义序列通过 SSH 发送功能键。但我不确定在我的特定平台上控制字符F1是什么。F12所以,我使用了中建议的命令答案:

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 ^[Ot
F6 ^[Ou
F7 ^[Ov
F8 ^[Ol
F9 ^[Ow
F10 ^[Ox
F11 
F12 

这表明——或者看起来是这样——F11并且F12没有与它们相关的转义序列。它们是否被其他程序窃取了?如果是,我该如何取回它们?

答案1

tput告诉您终端宣传的功能键是什么。终端通常不会公布它们支持的所有功能键和键和弦。要查看终端实际发送的转义序列,请使用中提到的Ctrl+方法V同样的答案:在不重新绑定+键的终端应用程序(例如 shell)中按Ctrl+ 。 +按字面意思插入下一个字符(这将是转义字符),您将能够看到序列的其余部分,其中包含普通字符。VCtrlVCtrlV

如果 Byobu 未正确检测到您终端的转义序列,请将相应的定义从 复制/usr/share/byobu/keybindings/f-keys.screen~/.byobu/.screenrc并修改转义序列以匹配您的终端。例如,如果Ctrl+V F12插入^[[24~,则添加

bindkey "^[[24~" process x

相关内容