如何让 tty 识别 shift-F2 (和其他组合键)?

如何让 tty 识别 shift-F2 (和其他组合键)?

首先,如果我的问题或术语没有意义,请原谅 - 我仍在思考终端、控制台、shell 等。

我可以在桌面终端中的应用程序中使用Shift+F2快捷键,但无法在 tty 终端中使用它。其他一些快捷键也不起作用,例如Ctrl+ F6。使用Ctrl+V后跟 来F1打印其字符值,我可以看到它们不同 - 在带有 的桌面终端中TERM=xterm-256colorShift+F2返回^[[1;2Q,而在带有 的 tty1 中,TERM=linux它返回^[[26~。将 tty 设置为显示为带有 的 xtermexport TERM=xterm-256color会使F按键返回字母(甚至无需先按Ctrl+ V),而按Shift+F2只会打印~

有什么方法可以让 tty 虚拟终端识别 X 终端的所有相同的快捷键和组合键?

答案1

首先,您不应该TERM=xterm-256color在 Linux 控制台中设置,否则大多数应用程序将无法正常工作。请坚持使用TERM=linux

TERM其次,让我们澄清一下,改变的值不是更改按键生成的转义序列。图形仿真器或 Linux 内核(如果您使用控制台)无法看到您是否更改了在终端仿真器“内部”运行的进程中的环境变量;事实上,该终端中可能运行着多个进程(它们的标准输入连接到那里),并且具有不同的TERM变量。但是更改TERM可能会改变应用程序对这些按键的反应。

有什么方法可以让 tty 虚拟终端识别 X 终端的所有相同的快捷键和组合键?

终端仿真器没有认出你正在谈论的这些序列。它们发射它们和基于终端的应用程序(文本编辑器、文件管理器等)认出他们。

运行infocmp(或infocmp [terminal-name]例如infocmp linux) 列出终端的功能/特性,包括功能键生成的序列。查找kf2F2+ kf14Shift通常F2Shift导致偏移量为 12。

据我记得几年前,Linux 控制台上的某些键盘映射的偏移量为 10,这种差异可能会导致各种应用程序出现各种不当行为。

您没有提到如何(例如在哪个应用程序中)尝试捕捉这些按键。如果您正在配置需要具体序列的现有软件,则可能必须教它(至少)两个不同的值,一个用于xterm和朋友,一个用于linux

如果您正在开发自己的应用程序,并且不想在配置文件中硬编码或指定转义序列,您可能应该依靠libtinfo读取 terminfo 功能,或者使用更高级别的屏幕绘图和键盘处理库,如ncursesslang

相关内容