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의 스크립팅 기능을 사용할 수 있으며 xdotool
urxvt는 키 조합 작업을 트리거할 수 있는 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);