![启用 Ctrl+C 进行复制,启用 Ctrl+Shift+C 进行中断](https://linux22.com/image/103620/%E5%90%AF%E7%94%A8%20Ctrl%2BC%20%E8%BF%9B%E8%A1%8C%E5%A4%8D%E5%88%B6%EF%BC%8C%E5%90%AF%E7%94%A8%20Ctrl%2BShift%2BC%20%E8%BF%9B%E8%A1%8C%E4%B8%AD%E6%96%AD.png)
我想在 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+C或Ctrl+ Shift+相对应的预定义(单字节)字符的问题V。您需要使用该单字节字符来进行中断(intr
)设置stty
。同样,control+V 是 中的文字 next ( lnext
) 设置stty
。
您可以使用翻译资源使用该功能发送Ctrl+字符,例如,资源中的以下行:Cstring
translations
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
。
进一步阅读:
- 自定义按键绑定(xterm 手册)
答案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
'