从9.20 开始,可以使用+ +URxvt
将文本复制到剪贴板(也可以使用+ +粘贴)。CtrlAltCCtrlAltV
但是,我已经将这些绑定用于另一件事了。
URxvt
那么,在>=9.20中,我如何将其重新绑定到Ctrl+ Shift+ C(以及用于粘贴的Ctrl+ Shift+ V)?
答案1
rxvt-unicode 附带的 eval 扩展具有用于此目的的 Paste_Clipboard 和 Selection_to_Clipboard 操作,可以绑定到任何键盘符号(请参阅这里)。
在您的.Xresources
添加中:
URxvt.keysym.Shift-Control-V: eval:paste_clipboard
URxvt.keysym.Shift-Control-C: eval:selection_to_clipboard
要禁用以前的键绑定,您还需要:
URxvt.keysym.Control-Meta-c: builtin-string:
URxvt.keysym.Control-Meta-v: builtin-string:
您可以使用以下命令重新加载文件:
xrdb -load .Xresources
您需要重新启动 rxvt 才能使更改生效。
答案2
所有现有答案都处理问题的后半部分(如何将剪贴板操作的键绑定添加到新键),但不回答前半部分(如何释放原始键绑定)。
答案是简单地将它们绑定到builtin-string:
(如果您希望将它们逐字发送;否则,绑定到所需的操作)。即,在.Xresources
:
URxvt.keysym.C-M-c: builtin-string:
或者,在命令行上:
-keysym.C-M-c builtin-string:
答案3
代码实现这两个绑定如下:
if (ctrl && meta && (keysym == XK_c || keysym == XK_v))
{
if (keysym == XK_v)
selection_request (ev.time, Sel_Clipboard);
else if (selection.len > 0)
{
free (selection.clip_text);
selection.clip_text = rxvt_wcsdup (selection.text, selection.len);
selection.clip_len = selection.len;
selection_grab (CurrentTime, true);
}
return;
}
您不能使用该keysym
资源来重新绑定其他内容,因为那仅映射到字符串(没有修饰符,例如control和alt)。
但是,您可以使用 Perl 扩展,它具有处理选择的方法。但您必须编写一个 Perl 脚本将它们连接在一起。
答案4
使用 eval 扩展 (paste_clipboard
和selection_to_clipboard
)@Enno 的回答中提到您可以将以下内容添加到您的.Xresources
文件中:
URxvt.keysym.Shift-Control-V: eval:paste_clipboard
URxvt.keysym.Shift-Control-C: eval:selection_to_clipboard