web-dev-qa-db-ja.com

URxvt> = 9.20でCTRL-ALT- [C | V]をCTRL-SHIFT- [C | V]に再バインド

URxvt 9.20以降、テキストはクリップボードにコピーできます Ctrl+Alt+C (また、から貼り付け Ctrl+Alt+V)。

しかし、私はすでにこれらのバインディングを別の目的で使用しています。

だから、どのように再バインドできますか、URxvt> = 9.20に Ctrl+Shift+C (そして Ctrl+Shift+V 貼り付け用)?

19
fauve

Rxvt-unicodeに同梱されているeval拡張には、このためのpaste_clipboardアクションとselection_to_clipboardアクションがあり、任意のキーシムにバインドできます( here を参照)。

あなたの.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を再起動する必要があります。

24
Enno

コードはこれらの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;
    }

thatは文字列にのみマップされるため、keysymリソースを使用して他のものを再バインドすることはできません(などの修飾子はありません) control そして alt)。

ただし、Perl拡張機能を使用することもできます。これには、選択を処理するためのメソッドがあります。しかし、それらを結び付けるためにPerlスクリプトを作成する必要があります。

2
Thomas Dickey

既存の回答はすべて、質問の後半(クリップボード操作のキーバインドを新しいキーに追加する方法)を処理しますが、前半には回答しないでください(解放する元のキーバインド)。

答えは、それらを単にbuiltin-string:にバインドすることです(逐語的に送信する場合は、そうでない場合は、目的のアクションに送信してください)。つまり、.Xresources内:

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

または、コマンドラインで:

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

評価拡張機能(paste_clipboardおよびselection_to_clipboard)を使用するには @ Ennoの回答に記載.Xresourcesファイルに追加します。

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