Colar a seleção X (não o conteúdo da área de transferência) com o teclado

75

Gostaria de poder colar a seleção X usando o teclado. Atualmente eu tenho que usar o botão do meio do mouse para fazer isso.

Eu entendo que fingir um botão do meio do mouse é bastante fácil de fazer, mas tal solução também exigiria mover o ponteiro do mouse para a localização do cursor de texto.

Existe uma maneira melhor de fazer isso?

    
por intuited 23.04.2011 / 21:55

4 respostas

86

Em algumas configurações padrão do Linux, Shift + Inserir executará um X-selection-paste . Como você observou, isso é distintamente diferente do comando X-clipboard-paste , cuja ligação geralmente varia de acordo com o aplicativo. Se isso não funcionar, há outras duas chaves para tentar:

  • Ctrl + V

  • Ctrl + Deslocamento + V

  • Ctrl + Deslocamento + Inserir

Não vai? Seu Ambiente de Área de Trabalho ou Gerenciador de Janelas provavelmente não os configurou, e é complicado porque - mesmo sob a bandeira de um DE ou WM - cada kit de ferramentas (por exemplo, GTK, Qt, Etc.) pode ter diferentes ligações padrão. Alguns programas (por exemplo, gvim ) têm seus próprios registros de cópia internos que não são necessariamente sincronizados com o ambiente gráfico em que são executados. Para completar, mesmo quando um programa usa o sistema X-clipboard, o X possui vários sistemas escolha de. Os dois mais básicos são o buffer de seleção - que sempre tem o que a última coisa selecionada foi (execpt quando isso não acontece) - e o buffer de cópia - em que as coisas geralmente precisam ser especificamente copiadas. Para fazer uma cópia explícita no último sistema, você pode tentar qualquer um deles por tamanho:

  • Ctrl + C

  • Shift + Ctrl + C

  • Ctrl + Inserir

Se nada disso está magicamente trabalhando para você, existem duas maneiras de ir.

  1. Há um aplicativo para isso! ™ Use um dos vários programas gerenciadores da área de transferência para lidar com isso para você. Os mais populares parecem ser Parcellite e Glippy , mas você pode conferir outras alternativas aqui . Veja também esta pergunta sobre os gerenciadores avançados da área de transferência

  2. Faça você mesmo.

Então digamos que você queira hackeá-lo.

Além de escrever seu próprio código e acessar o X api, as ferramentas de hacker para o trabalho são alguns pequenos utilitários de linha de comando que fornecem uma janela para a mente de X. Apenas uma janela pequena veja muito assustador.

A primeira ferramenta é xsel . Este pequeno jobber cuspirá o que estiver no buffer de seleção do X a qualquer momento.

Agora você precisa colocar isso no seu programa. Existem duas opções para isso. Uma é xdotool , que permite imitar o envio de eventos para o sistema de entrada Xorg. Você pode usar o método tipo como xdotool type foo_bar para imitar a digitação 'foo_bar' no cursor. Combinado, você tem algo assim:

$ xdotool type $(xsel)

O outro é xvkbd , que envia eventos de teclado de um subsistema inferior. Você pode canalizar as teclas digitadas no STDIN. Combinado com xsel , você recebe algo assim:

$ xsel | xvkbd -xsendevent -file -

Ótimo. Agora, para esse atalho de teclado para executar este material. Se você executar o Gnome-2, poderá adicionar um atalho personalizado em Sistema - > Preferências - > Atalhos de teclado . Se você usa um DE ou WM diferente, esse excersize é deixado para o leitor.

A última nota é que ao ligar comandos a atalhos de teclado, muitas vezes é necessário ter apenas um comando, não dois comandos conectados a um pipe, como usamos acima. Você pode fazer isso invocando seu comando canalizado como uma string de comando argumetn para um novo shell como este:

sh -c 'xsel | xvkbd -xsendevent -file -'
sh -c 'xdotool type "$(xsel)"'
    
por 23.04.2011 / 21:57
8

Aparentemente, Shift + Inserir pode não funcionar corretamente em algumas instalações do GTK 3, pelo menos no FreeBSD. O problema é descrito como:

Shift-Insert is not pasting primary selection. Instead, it is bound to paste the clipboard (for which Control-V is already used). Hence, there is no keyboard-only way to insert primary selection. One must drag the mouse to there and middle click. This makes interaction between terminals and GTK uncomfortable.

Um relatório de bugs recente e patch está disponível:

link

    
por 05.04.2014 / 08:42
8
xdotool click 2

Isso simula o clique do botão do mouse diretamente e não requer o uso de xsel / xdotool type ... .

    
por 28.05.2015 / 19:46
2

Estou usando o Ubuntu 12 e estava tendo problemas para colar texto do xterm no gedit (e qualquer outro aplicativo). Além disso, eu uso um laptop sem botão do meio do mouse, como muitas pessoas (não há realmente nenhuma prancheta misericórdia para usuários do Linux sem botões do meio, e não: clique com o botão direito + left_click não está funcionando como um substituto).

Embora eu ache que o método "xsel | xvkbd -xsendevent -file -" é bem legal. Eu encontrei a solução mais simples era executar o pré-instalado "gnome-terminal" em vez de "xterminal". O "gnome-terminal" suporta um comando de cópia de clique com o botão direito do mouse para a placa de recorte. Eu poderia então "Editar Menu- > Colar" no gedit ou usar o shift-insert. O "gnome-terminal" veio pré-instalado com o Ubuntu 12. Outras instalações do debian / gnome devem poder instalá-lo via:

sudo apt-get install gnome-terminal

No Ubuntu, adicione-o ao lançador esquerdo clicando no botão "Dash Home" no topo da barra de inicialização. Na caixa de pesquisa resultante, digite terminal. Você pode arrastar o ícone "Terminal" para a barra de inicialização.

    
por 23.04.2015 / 08:11