Como posso desativar a funcionalidade "colar com o botão do meio do mouse" em todos os programas?

43

Não gosto de colar o botão do meio do mouse, porque muitas vezes acabo com código não compilável no Eclipse. Como posso desativar isso (em todos os programas)? Estou executando o Fedora.

derekhh
fonte
4
Clicar com o botão do meio para inserir a seleção é fundamentalmente parte do funcionamento do X11; consulte http://www.jwz.org/doc/x-cut-and-paste.html .
ephemient
1
@ Gilles: Em todos os programas. :)
derekhh
4
Eu não vi nenhuma maneira trivial de fazer isso sem pressionar o botão do meio do mouse por completo ou hackear X ou mexer com a área de transferência normal, então minha "solução" sugerida é apenas aprender a usar o botão do meio corretamente. É incrivelmente conveniente destacar um URL de texto em qualquer lugar e acessá-lo clicando no meio da janela do navegador (FF).
jw013
4
@ephemient "Clicar com o botão do meio para inserir a seleção é fundamentalmente parte do modo como o X11 funciona" ... quando tínhamos Sun Optical Mouses que precisavam de 1 libra de pressão no botão do meio para obter sinal. Hoje, o botão do meio está em gatilho de cabelo e além disso usado como uma roda, este "fundamental" tem que ir (como um monte de coisas "fundamental" em X btw.)
David Tonhofer
3
Sinto que a capacidade de desativar o que você quer é um aspecto ainda mais fundamental do Linux.
Wayne Bloss

Respostas:

24

Esta solução funcionará globalmente e preservará a funcionalidade do meio do mouse.

Instalar xbindkeys xsel xdotool

Coloque isso em ~/.xbindkeysrc

"echo -n | xsel -n -i; pkill xbindkeys; xdotool click 2; xbindkeys"
b:2 + Release

recarregar xbindkeys -p

Execute xbindkeysna inicialização, pkill xbindkeyspara parar.

Radivarig
fonte
7
Obrigado!!! Eu não posso acreditar que a única solução de trabalho está em 0 votos por exatamente 2 anos.
Retr0id
4
Finalmente, uma solução que funcionou para mim no Ubuntu Mate 17.10. Obrigado!
Dmitry Frank
5
@spiil Tentei esta solução e ela alcança o efeito que você deseja. Cliquei com o botão do meio em um campo de texto e nada acontece, mas clique com o botão do meio em um link e clique com o botão do meio para fechar uma aba no Chromium, Firefox e Waterfox (os três navegadores que testei).
user7214865 7/01
4
A rolagem com o botão do meio do mouse pressionado não funciona mais com esta solução: /
Marc.2377
2
Você é uma lenda. Usei o botão do meio no meu trackball para rolagem, mas a funcionalidade de colar deixou minha vida miserável. Agora está em cores brilhantes novamente, obrigado!
redsPL
16

No Fedora 24, você pode instalar gnome-tweak-toolusando o seguinte comando:

$ sudo dnf install gnome-tweak-tool

Abra gnome-tweak-toole vá para a guia "Teclado e mouse" e desative "Colar com o botão do meio".

Pawan Kumar
fonte
4
Isso também está disponível no Ubuntu 16.04: sudo apt-get install gnome-tweak-tool
Tyranin
1
Isso afeta apenas alguns programas, como o gedit, o gnome-terminal e alguns outros. Veja também o comentário em askubuntu.com/questions/4507/… .
Kvothe
11

Ter a cola do botão do meio é um padrão de interface de usuário unix, como ter o botão esquerdo selecionado ou ativado e o botão direito fazer outra coisa (como estender, alternar, abrir um menu,…). Você o encontrará vinculado à maioria dos aplicativos unix.

Se o seu problema é que o mouse é sensível demais ao colocar o dedo no volante, sugiro que você compre um mouse melhor. Existem muitos ratos decentes baratos.

Você pode reatribuir o botão 2 do mouse para um número diferente. Os aplicativos identificam os botões esquerdo, médio e direito do mouse como botões 1, 2 e 3, respectivamente. Coloque esse código em um script que é executado quando a sessão do X é iniciada (como fazer isso depende do ambiente da área de trabalho).

echo 'pointer = 1 6 3 4 5' | xmodmap -
Gilles 'SO- parar de ser mau'
fonte
1
Não funciona. pastebin.com/0DYYMDLS
balki
@balki Weird. Certamente funciona para mim. Portanto, para descobrir por que isso não funciona para você, faça uma nova pergunta. Certifique-se de mencionar em qual versão do X.org (ou outro servidor X) você tem, em qual distribuição está executando isso e em quais dispositivos de entrada estão conectados.
Gilles 'SO- stop be evil'
2
Aposto que o OP não se importa se é padrão (eu sei que não). Não importa. As ações do botão do mouse devem ser mais facilmente personalizáveis.
Marc.2377 10/03
7

Os mouses Scrollwheel suportam um evento de clique no botão do meio ao pressionar o scrollwheel. Esse é um ótimo recurso, mas você pode achar isso irritante. Felizmente, pode ser desativado.

Primeiro, você precisa conhecer o id do mouse, assim:

$ xinput list | grep 'id='

que imprime algo como

⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜ PixArt Dell MS116 USB Optical Mouse       id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
  Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
  Power Button                              id=6    [slave  keyboard (3)]
  Video Bus                                 id=7    [slave  keyboard (3)]
  Power Button                              id=8    [slave  keyboard (3)]
  Sleep Button                              id=9    [slave  keyboard (3)]
  Dell KB216 Wired Keyboard                 id=10   [slave  keyboard (3)]
  Dell KB216 Wired Keyboard                 id=11   [slave  keyboard (3)]
  Eee PC WMI hotkeys                        id=13   [slave  keyboard (3)]

Meu mouse USB Dell imprimiu aqui para o qual id = 12

para visualizar o mapeamento do botão do mouse, como:

$ xinput get-button-map 12

que imprime

1 2 3 4 5 6 7 8 9 10 11 12

aqui apenas os três primeiros números têm significado para mim. Eles representam os botões esquerdo, médio e direito do mouse.

Posso desligar o botão do meio do mouse, definindo-o como 0:

$ xinput set-button-map 12 1 0 3

Ou posso transformar o botão do meio do mouse em um botão esquerdo do mouse, definindo-o como 1:

$ xinput set-button-map 12 1 1 3

ref. link https://wiki.ubuntu.com/X/Config/Input

funciona para mim (kubuntu 18.04 LTS)

Suraj Inamdar
fonte
Funciona perfeitamente para touchpad no Slackware 14.2 (KDE).
Firelord
É melhor do que qualquer um dos itens acima que começam com "download XX". O único problema que tive foi que, para xinput set-button-map 12 1 0 3você definir todos os botões (1 a 12 para este exemplo xinput set-button-map 12 1 0 3 4 5 6 7 8 9 10 11 12)
blindguy
3

Aqui está o que você pode fazer se quiser manter o clique do meio funcional (por exemplo, para abrir links em novas guias), sem colar as coisas.

Primeiro instale o sxhkd e o xsel .

Em seguida, configure ./.config/.sxhkd/sxhkdrc da seguinte maneira

~button2
    echo -n | xsel -n -i
~control + c
    echo -n | xsel -n -i
~control + shift + c
    echo -n | xsel -n -i
~control + x
    echo -n | xsel -n -i

E é basicamente isso.

Agora inicie o sxhkd (ou configure-o para iniciar na inicialização). Agora, o mouse do meio não colará mais nada, mas funcionará normalmente.

Cestarian
fonte
Isso ainda permite que você use o mouse do meio para rolar. Boa solução! Para mim, o arquivo estava em~/.config/sxhkd/sxhkdrc
Atnas
1

É uma convenção comum que muitos programas cumprem. Não existe uma maneira global de desativá-lo, você deve fazê-lo programa por programa.

EDIT: (além de, como Gilles diz, desabilitar o botão 2. do mouse. Mas alguns programas têm outros usos para o botão 2 do mouse, por isso eu não recomendaria isso.)

wnoise
fonte
1

EDIT: Acabei de encontrar um problema com a solução que eu postei: em alguns programas ( gitkpelo menos, não tenho certeza de quão comum é), isso impedirá a seleção de texto de funcionar. Portanto, tente, mas se você tiver problemas para selecionar texto em um programa usado regularmente, a solução é parar de usá-lo.

Instale xsele execute o seguinte script de shell:

#!/bin/sh
while true; do
    xsel -fin </dev/null
done

Enquanto esse script estiver em execução (você pode configurá-lo para executar no login), o botão do meio do mouse não será colado em nenhum aplicativo. Portanto, tecnicamente, ele ainda será colado, mas sempre haverá nada para colar.

O modo como funciona é que ele é executado xsele copia ( -i) o conteúdo de /dev/null, sem bifurcar para o plano de fundo ( -n) e, na verdade, retém a string vazia no buffer, em vez de apenas limpá-la e sair ( -f). Sempre que sair, ele será chamado xselnovamente com as mesmas opções. Como xselcontinuará em execução até que outro programa "o exija" copiando outra coisa, ele não criará constantemente novos processos, mantendo um único processo em execução precisamente até que seja necessário novamente. (A menos que você tenha várias instâncias do script em execução, mas não há necessidade de fazer isso.)

Além disso, não, isso não interferirá na cópia / colar normal, porque a pasta do clique do meio usa uma área de transferência separada.

flarn2006
fonte
Obrigado! Eu uso o KDE, e esta solução é a ÚNICA que funciona para mim.
Aloso 25/10
@ Aloso De nada, lembre-se da advertência no topo. Se você não conseguir selecionar texto em um programa, esse é o culpado mais provável.
flarn2006 26/10
Sim, notei esse problema na caixa de diálogo "Salvar arquivo" do Firefox. Agora, só ativo esse script quando estou programando.
Aloso 26/10
@ Aloso Ok então; feliz que ainda é útil para você :)
flarn2006 27/10
0

Este é o meu roteiro. O seu pode precisar de ajustes

#!/bin/bash 
clear
echo
echo
echo
echo -----Now fixing your scroll button --- -hold onto pants
echo
xinput --list|grep "Virtual core XTEST pointer"
echo ---------------------------------------------------------------------------------
echo


id=$(
xinput --list|grep "Virtual core XTEST pointer" |awk '{
        for(i=1; i<=NF; i++) {
                tmp=match($i, /id=[0-9]+/)
                if(tmp) {
                        print $i
                }
        }
}' $1 |  tr -d '[:alpha:]='
)

echo fixing $id:

xinput set-button-map $id  1 10 2 4 5 6 7 8 9 3

echo
echo
xinput get-button-map $id
echo ---------------------------------------------------------------------------------
Max Robbertze
fonte