Reconfigurando CTRL-ALT- [C | V] em CTRL-SHIFT- [C | V] em URxvt> = 9.20

16

Desde as URxvt9.20, o texto pode ser copiado para a área de transferência com Ctrl+ Alt+ C(e também colado com Ctrl+ Alt+ V).

Mas, eu já uso essas ligações para outra coisa.

Então, como posso religar, em URxvt> = 9.20 para Ctrl+ Shift+ C(e Ctrl+ Shift+ Vpara colar)?

fauve
fonte
questão relacionada no SO stackoverflow.com/questions/43305190/…
anarcat

Respostas:

22

A extensão eval fornecida com o rxvt-unicode possui ações paste_clipboard e selection_to_clipboard para isso, que podem ser vinculadas a qualquer chave (veja aqui ).

No seu .Xresourcesadd:

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

Para desativar as combinações de teclas anteriores, você também precisará:

URxvt.keysym.Control-Meta-c: builtin-string:
URxvt.keysym.Control-Meta-v: builtin-string:

Você pode recarregar o arquivo com:

xrdb -load .Xresources

Você precisará reiniciar o rxvt para que as alterações entrem em vigor.

Enno
fonte
1
Isto não funcionou em tudo até que eu também adicionar ou editar isso para .Xresources: URxvt.perl-ext-common: default #also keycaps desativar quando por esta resposta: unix.stackexchange.com/a/444777/8827
marinara
2

O código implementa essas duas ligações assim:

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

Você não pode usar o keysymrecurso para religar outra coisa, uma vez que apenas mapeia para cadeias (sem modificadores como controle alt).

No entanto, você pode usar a extensão Perl, que possui métodos para trabalhar com seleções. Mas você teria que escrever um script Perl para amarrá-los.

Thomas Dickey
fonte
1

Para usar as extensões eval ( paste_clipboarde selection_to_clipboard) mencionadas na resposta do @ Enno, você pode adicionar o seguinte ao seu .Xresourcesarquivo:

URxvt.keysym.Shift-Control-V: eval:paste_clipboard
URxvt.keysym.Shift-Control-C: eval:selection_to_clipboard
Spencer Miller
fonte
Por si só, isso realmente não responde à pergunta. Você pode aprimorá-lo descrevendo como usar o .Xresourcesarquivo para vincular as chaves, pois a resposta do Enno não.
G-Man diz 'Reinstate Monica'
1

Todas as respostas existentes tratam da segunda metade da pergunta (como adicionar combinações de teclas para operações da área de transferência a novas chaves), mas não respondem a primeira metade (como liberar as combinações de teclas originais).

A resposta é simplesmente vinculá-los a builtin-string:(se você desejar que eles sejam enviados literalmente; caso contrário, à ação desejada). Ou seja, em .Xresources:

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

Ou, na linha de comando:

-keysym.C-M-c builtin-string:
Vladimir Panteleev
fonte