启用 Ctrl+C 进行复制,启用 Ctrl+Shift+C 进行中断

启用 Ctrl+C 进行复制,启用 Ctrl+Shift+C 进行中断

我想在 xterm 中启用Ctrl+C进行复制,并启用Ctrl+ Shift+C进行 SIGINT/中断。

我已经找到了下列的

XTerm*VT100.Translations: #override \
      Shift Ctrl<Key>V: insert-selection(CLIPBOARD) \n\ 
      Shift Ctrl<Key>V: insert-selection(PRIMARY) \n\ 
      Shift<Btn1Down>: select-start() \n\ 
      Shift<Btn1Motion>: select-extend() \n\ 
      Shift<Btn1Up>: select-end(CLIPBOARD) \n\

我相信部分存在,但没有演示如何覆盖Ctrl+ C

答案1

这是“部分存在”,但遇到了没有与Ctrl+ Shift+CCtrl+ Shift+相对应的预定义(单字节)字符的问题V。您需要使用该单字节字符来进行中断(intr)设置stty。同样,control+V 是 中的文字 next ( lnext) 设置stty

您可以使用翻译资源使用该功能发送Ctrl+字符,例如,资源中的以下行:Cstringtranslations

ctrl shift <key>C : string(0x03) \n\
ctrl shift <key>V : string(0x16) \n\

然后分配未移动的键(放置波浪号~在 `shift 关键字之前)。

从后续评论中,我同意只需指定联合国移位模式应该足够了:

~Shift Ctrl <KeyPress> v: insert-selection(CLIPBOARD)\n\
~Shift Ctrl <KeyPress> c: copy-selection(CLIPBOARD)\n

一些注释(可能会记录下来,但源代码会有所帮助):

  • <KeyPress>意思是一样的<Key>
  • 修饰符 ( 和<KeyPress>) 的匹配忽略大小写。
  • 右侧的部分:区分大小写。

通常,无论有或没有移位修饰符,都不会对Ctrl+进行翻译。 Cxterm 只是获取一个XKeyEvent包含修饰符信息和字符的 an ,然后进行解码。该translations资源会更改可能发送到 xterm 的事件。

您可以在翻译中使用修饰符来限制匹配,例如,省略Shift意味着无论是否按下 Shift 键它都会匹配。添加显式~shift(shift) 修饰符对匹配没有影响shift

进一步阅读:

答案2

这似乎在 xterm 中有效

xterm -xrm 'XTerm*VT100.Translations: #override\n\
 ~Shift <KeyPress> Prior: scroll-back(1,halfpage)\n\
 ~Shift <KeyPress> Next:  scroll-forw(1,halfpage)\n\
  Shift <KeyPress> Prior: string(0x1b)string("[5~")\n\
  Shift <KeyPress> Next:  string(0x1b)string("[6~")\n\
 ~Shift Ctrl <KeyPress> v: insert-selection(CLIPBOARD)\n\
 ~Shift Ctrl <KeyPress> c: copy-selection(CLIPBOARD)\n
'

相关内容