我使用 Linux Mint 和“Terminal GNOME”。
我想在终端中使用 CTRL+C 来复制文本。很简单..我在“首选项”中设置了它,但我还需要以某种方式向应用程序发送“intr”信号。
我想让终端在单击 CTRL+B 而不是 CTRL+C 时发送“intr”信号。很简单..我用以下命令更改了 tty 设置:
stty intr ^B
一切都很好。
然后我发现当我打开由使用 CTRL+C 的人启动的“屏幕”时,我无法发送“intr”信号。它忽略我的 CTRL+B,并且 CTRL+C 被终端“复制”功能阻止。我与其他用户一起在服务器上工作,我无法告诉他们更改他们的 tty 配置。
是否有任何选项可以将终端中的 CTRL+B“单击”“连接”到 CTRL+C 单击(但不复制),因此底层 tty 将看到 CTRL+C,并且当我在键盘上单击 CTRL+C 时,我的终端将复制文本?
我可以使用其他终端应用程序,编译它,等等。
我在堆栈上阅读了很多教程/问题,但没有找到答案。还下载了一些适用于 Linux Mint 的流行终端应用程序,但没有一个应用程序可以选择“重新配置”信号快捷方式。
答案1
某些终端模拟器允许您重新定义按键发送的序列(例如,Konsole 在其配置文件首选项下,我很确定 XTerm 也可以在其 X 资源文件中执行此操作); GNOME 终端及其底层 VTE 终端仿真小部件不是其中之一,它们具有硬编码密钥。
如果您不介意重新编译和替换 VTE 库(最好使用与您的发行版相同的版本,具有相同的编译选项、补丁等 - 它可能被称为vte2.91
,版本 0.48 - 0.52 左右),您可以轻松地修补在这个功能中。将其添加到src/keymap.cc
类似定义旁边:
static const struct _vte_keymap_entry _vte_keymap_GDK_b[] = {
{cursor_all, keypad_all, GDK_CONTROL_MASK, "\x03", -1},
{cursor_all, keypad_all, 0, X_NULL, 0},
};
这是_vte_keymap[]
:
{GDK_KEY_b, _vte_keymap_GDK_b},