Gnome 终端的哪个部分处理 Ctrl-C?

Gnome 终端的哪个部分处理 Ctrl-C?

我最近一直在摆弄 Gnome Terminal,试图自定义按下 Ctrl-C 时发生的情况(我希望它在选择文本时复制,否则发送 SIGINT,但这不是问题的一部分),但我似乎无法弄清楚在堆栈中哪里可以识别 Ctrl-C(或者如果 Ctrl-C 被重新绑定,那么在哪里可以识别 Ctrl-Shift-C)。

那么,哪个库或程序负责实际处理该键盘组合?

答案1

对于CtrlC,终端仿真器仅发送单字节 0x03。

CtrlACtrlZ分别发送字节 0x01–0x1A(十进制 1–26);此外,Ctrlspace是 0x00,Ctrl[是 0x1B,Ctrl\是 0x1C,Ctrl]是 0x1D,Ctrl^(或者通常根本Ctrl6不用 Shift,假设是美国键盘布局)是 0x1E,并且Ctrl_(或者通常Ctrl-不用 Shift)是 0x1F。

这些字节由内核根据以下规定进行特殊解释和处理:终端线路纪律检查的输出stty -a,它可能包含intr = ^C,这意味着CtrlC(字节0x03)是中断字符。

stty有关更多详细信息,请参阅、、termios的手册页ioctl以及ioctl_tty相关的网络搜索匹配项(包括术语“linedisciplinary”)。

答案2

您所问的问题取决于两个因素;

  • 你选择的 shell
  • (Gnome) 终端中的偏好设置

发现什么是现在在 Gnome 终端中分配到CTRL+C。在打开的会话中,选择编辑>优先>快捷方式

就您的登录 shell 而言;CTRL+C( ^C) 几乎总是被分配TERMHUP(挂断)。

相关内容