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);

관련 정보