Control + Vキーを使ってurxvt端末に貼り付ける方法は?

Control + Vキーを使ってurxvt端末に貼り付ける方法は?

urxvtのキーバインディングに関する質問はたくさんありましたが、正確な質問は見たことがありません。control+v端末に貼り付けるために使いたいです。 (ShiftまたはAlt / Metaキーなどはありません。)

私の目標は、テキストエディタやChromeなどの他のアプリケーションから貼り付けることです。 (関連する貼り付け機能/クリップボードの「タイプ」に関連する場合はこれを参照してください。これは複数である可能性があることを理解しています。)i3ウィンドウマネージャを使用してUbuntu 20.04を実行しています。

これが私が試したことです。この回答しかし、成功しませんでした。

私は以下を追加しました。~/.Xresrouces

! Do I need to remove/change any default bindings first?
URxvt.keysym.Control-Meta-v: builtin-string:

! use control+v for "paste"
URxvt.keysym.Control-V: eval:paste_clipboard

! I read these are needed to disable other behavior of control key
URxvt.iso14755: false 
URxvt.iso14755_52: false

上記のファイルを保存した後、次のコマンドを入力して再ロードしました。

xrdb -merge .Xresources

...しかし、urxvtを再起動した後でも再起動してもまだ利用できませんcontrol+v

urxvtで「貼り付け」のショートカットとしてCtrl + Vを使用するには、.Xresourcesファイルにどの行を追加する必要がありますか?それともどうすればいいですか?

ベストアンサー1

urxvtのスクリプト機能を使用でき、xdotoolurxvtはキーの組み合わせ操作をトリガーできるPerlスクリプトをロードできます。私のurxvt設定では、この機能を使用して+を押したときに端末にctrl+を入力します。shiftvctrlv

私が実装した方法にはハッキングされた解決策が含まれているので、これは実際には解決策の半分にすぎません(機能していることを確認しsleep 0.25てください)。

存在する.Xresources

URxvt.keysym.Control-Shift-V: eval:paste_clipboard
URxvt.perl-ext-common: default,ctrl_v_paste
URxvt.iso14755: false
URxvt.iso14755_52: false

作る/usr/lib/x86_64-linux-gnu/urxvt/perl/ctrl_v_paste

#! /usr/bin/perl

=head1 NAME

paste - paste with ctrl v

=head1 DESCRIPTION

paste with ctrl v

=cut

sub on_init {
   my ($self) = @_;

   my $hotkey = "C-v";

   $self->bind_action ($hotkey, "%:start")
      or warn "unable to register '$hotkey' as hotkey\n";

   ()
}

sub on_action {
   my ($self, $action) = @_;
   
   $action eq "start"
      and $self->enter;

   ()
}

sub enter {
   my ($self) = @_;
   system("sleep 0.25 && xdotool getactivewindow key ctrl+shift+v &");
}

編集:最後の回答以降、次のものを置き換えて貼り付けるより良い方法を見つけましたsystem("sleep 0.25 && xdotool getactivewindow key ctrl+shift+v &");

my $clipboard = `xclip -o`;
$self->tt_paste($clipboard);

おすすめ記事