在URxvt> = 9.20中将CTRL-ALT- [C | V]重新绑定到CTRL-SHIFT- [C | V]


Answers:


22

rxvt-unicode附带的eval扩展为此具有paste_clipboard和selection_to_clipboard操作,可以将其绑定到任何keyym(请参见此处)。

在您的.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才能使更改生效。


1
直到我还添加或编辑了此代码后.Xresources: URxvt.perl-ext-common: default #完全按照此答案禁用了键帽,这才起作用
marinara

2

该代码实现了这两个绑定,如下所示:

  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脚本才能将它们捆绑在一起。


1

要使用@Enno答案中提到的eval扩展名(paste_clipboardselection_to_clipboard可以将以下内容添加到.Xresources文件中:

URxvt.keysym.Shift-Control-V: eval:paste_clipboard
URxvt.keysym.Shift-Control-C: eval:selection_to_clipboard

就其本身而言,这并不能真正回答问题。您可以通过描述如何使用.Xresources文件绑定密钥来改进它,因为Enno的答案没有。
G-Man说'Resstate Monica''Apr

1

现有的所有答案都处理问题的后半部分(如何将剪贴板操作的键绑定添加到新键),但不回答前一半(如何释放原始键绑定)。

答案是简单地将它们绑定到builtin-string:(如果您希望将它们逐字发送;否则,绑定到所需的操作)。即,在.Xresources

URxvt.keysym.C-M-c: builtin-string:

或者,在命令行上:

-keysym.C-M-c builtin-string:
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.