9.20以降、++を使用URxvt
してテキストをクリップボードにコピーできます(++を使用して貼り付けることもできます)。CtrlAltCCtrlAltV
しかし、私はすでにこれらのバインディングを他の目的に使用しています。
URxvt
それでは、> = 9.20でこれを++ Ctrl(および貼り付けの場合++)にどのように再バインドしますか?ShiftCCtrlShiftV
答え1
rxvt-unicodeに含まれる評価拡張には、この目的のための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
これら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スクリプトを作成する必要があります。
答え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