o mouse algumas vezes clica duas vezes quando clico uma vez

39

Eu tenho um problema que está se tornando um pesadelo, na medida em que penso que pode ser mais fácil simplesmente descartar completamente o Ubuntu e tentar outra coisa. Eu tenho um PC HP executando o Ubuntu 12.04. Quando clico com o botão esquerdo do mouse, algumas vezes ele clica duas vezes (talvez 50% do tempo).

Até agora, isso levou a: envio aleatório de emails inacabados, destaque e exclusão aleatórios de coisas que eu não queria excluir enquanto escrevia emails ( muito frustrante), exclusão aleatória de duas guias do navegador em vez de uma (várias vezes) e (em certo sentido) a mais irritante): uma experiência muito frustrante para o usuário final ao tentar mover as janelas da área de trabalho ou recortar e colar de uma janela do terminal. Graças a Deus por Alt- F7- mas eu não quero aprender atalhos de teclado para todos os programas que uso e para o sistema operacional (e não poder copiar e colar é uma grande perda para mim).

Não sou a única pessoa com esse problema, mas pesquisar no Google indica que pode haver várias razões para isso; nenhuma das correções que li online funcionou para mim. Deixe-me passar por tudo, incluindo correções que funcionaram para outras pessoas, mas não para mim. Oh - eu tenho um mouse óptico hp.

  • Não é um mouse quebrado. Eu tentei dois mouses no meu sistema - ambos apresentam o problema. Ambos os ratos funcionam bem no meu laptop em casa, também executando o Ubuntu 12.04.

  • Meu /etc/X11/xorg.confpossui apenas algumas linhas e não possui a seção "InputDevice".

  • Eu não tenho hald, ou o pacote hal instalado.

  • Tudo começou há cerca de uma semana e não parece estar ficando melhor ou pior.

  • Em desespero, acabei de atualizar para a 12.10, mas isso não resolveu o problema e agora estou executando uma distro que não é uma LTS (e, portanto, não é o ideal para mim: - \)

Mas está tornando meu sistema muito difícil de usar.

Atualização possivelmente importante : tentei fazer algumas investigações com o xev. Parece-me que parece uma conexão ruim nesses ratos - isso é comum? Posso manter pressionado o botão do mouse e obter (clique do mouse) (pausa) (liberação do mouse) (pausa muito curta) (clique do mouse) (pausa) (liberação do mouse) (pausa muito curta) (clique do mouse) etc. Eu me pergunto se, por exemplo, outros sistemas operacionais dizem "você não pode liberar e, em seguida, clica novamente em 0,05 segundos, então isso deve ter sido uma falha e eu assumirei que o botão nunca foi liberado". Posso dizer ao Ubuntu para ignorar os eventos de liberação e clique novamente quase instantaneamente?

Isso parece um problema de mouse ruim. Talvez eu devesse cavar um mouse mais novo? Eu só tentei muito antigos: - \

Kevin Buzzard
fonte
você relatou isso como um bug na barra de ativação?
Alvar
Você consegue se lembrar do que aconteceu há uma semana, quando tudo começou?
Hytromo 19/07/2013
O que aconteceu há uma semana é exatamente o que acontece toda semana - basta clicar em "instalar atualizações" e ocasionalmente em "reiniciar o computador para concluir a instalação". Este sistema está pronto para uso - acho que os únicos pacotes que instalei, exceto os que estão lá por padrão, foram os poucos que eu precisava para executar o sparkleshare.
21413 Kevin Buzzard
@ Alvar: parece haver confusão na barra de lançamento sobre esse bug. Minha impressão geral é que algumas pessoas pegam esse problema e o problema é que o mouse está quebrado, algumas pessoas pegam esse problema e o problema é algum driver da logitech, e algumas pessoas pegam esse problema e o problema está em outro lugar. Vou tentar para denunciá-lo e reduzir o barulho ...
Kevin Buzzard
Eu bati o problema relacionado que eu pensei que estava quebrado rato em combinação com gestos Firefox, mas acabou por ser botões laterais do rato fazendo "firefox volta"
Matija Nalis

Respostas:

47

OK, após extensos testes usando o xev na máquina afetada e alternando entre vários mouses em vários sistemas, acredito que resolvi esse problema. Claro YMMV.

Minha solução: é um mouse quebrado.

Mais precisamente, o conector ativado ao clicar é um pouco velho ou sujo ou algo assim e, às vezes, ao pressionar o botão, a conexão é feita e, em seguida, momentaneamente interrompida, e novamente feita, causando o clique duplo.


Objeção: Mas o mouse funciona bem quando eu o conecto na minha máquina Windows!

Contador: não seria trivial colocar em um driver ou sistema operacional a seguinte linha de pseudocódigo: "se o usuário desmarca o mouse e clica novamente em 0,05 segundos, provavelmente é um conector sujo, então vamos apenas ignore isso ". Portanto, não é possível que, se você alternar o mouse para outro computador executando outro sistema operacional e / ou usando outro driver em hardware diferente (mesmo com o mesmo sistema operacional, você pode estar usando hardware diferente, certo?), Poderá obter resultados diferentes ?

Objeção: Mas tentei outro mouse antigo e ele exibiu o mesmo problema!

Contador: incrível como dois ratos velhos da mesma empresa podem quebrar da mesma maneira, não é? E você nunca notou porque o segundo mouse antigo que você tentou não exibia problemas quando conectado a um hardware diferente (consulte o contador anterior).


Se você realmente não acredita que seu mouse está quebrado, teste-o:

$ xev

e encontre o quadrado com o fundo preto, clique nele e observe a saída. Definitivamente, você sempre recebe um "clique" limpo e nada mais? Frequentemente, eu recebia um clique limpo, mas ocasionalmente um "salto" (clique, clique e clique). Melhor ainda, talvez:

$ xev | grep ButtonRelease

Agora coloque o mouse no quadrado com o contorno preto (ou em qualquer lugar dessa janela) e clique e desmarque 20 vezes. Você deve obter uma linha "ButtonRelease" toda vez que soltar o botão, e nunca o contrário. Ocasionalmente, recebia um quando clicava.

O pesadelo acabou.

Kevin Buzzard
fonte
Eu tenho dois ratos idênticos com os quais notei cliques inesperados recentemente, e não tenho tanta certeza de que os dois simplesmente se desgastaram na mesma semana. Seu xevteste não me deu nada de incomum, mas tenho que me perguntar se há mais nisso.
Tom Brossman
Certo - eu suspeitava muito de ter dois ratos e nenhum deles trabalhando em uma máquina e ambos trabalhando em outra. Tenho certeza de que existem pessoas por aí que acreditam que realmente existe um problema além de "mouses quebrados e o sistema operacional não compensando isso, assim como outros sistemas operacionais". Por outro lado, eu definitivamente pulei de barco esta manhã - meu sistema está funcionando novamente e eu estava convencido na semana passada que o mouse não poderia ser o problema, mas para mim realmente era.
precisa
2
Comigo, passei uns bons 5-10 minutos brincando com o xev e assistindo a saída. Clicando e desclicando constantemente etc etc - e, ocasionalmente, obtendo cliques inesperados quando não estava clicando. Permitam-me dizer também que olhar para a saída do xev em uma janela de terminal 80x24 pode ser muito enganador, porque "clicar com o botão direito do mouse" pode resultar em uma página inteira cheia de informações sendo emitida pelo xev e se o clique com o botão clicar com o mouse ocorrer com rapidez suficiente (que foi o caso no meu caso), talvez você nem consiga perceber a saída xev porque é quase idêntica à página anterior.
22613 Kevin Buzzard
7
Melhor ainda xev | awk '/ButtonRelease/ {print $1,i++}'.
arekolek
Para mim, isso se manifestou como "botão 3" (o botão direito do mouse) enviando um sinal ocasionalmente quando eu rolava a roda do mouse. Bizarro.
carbocation
9

Manutenção de zen e mouse. Parece que muitos estão tendo problemas com o clique duplo do mouse quando um clique é aplicado. O botão do mouse é um microinterruptor. O fato da vida é que os contatos do switch saltam. Na verdade, eles não saltam, mas esfregam. Vamos chamá-lo de rejeição de qualquer maneira. Por alguma razão, os programadores deixaram cair a bola nessa. Um loop de espera com duração suficiente deve ser aplicado para que os contatos se estabilizem antes da leitura. A propósito de nada, e em uma amostra de uma, minha solução foi colocar um capacitor nos contatos do switch. Eu usei uma tampa de 0,1uF por nenhuma outra razão, a não ser que eu tivesse uma em um tamanho pequeno que caberia perfeitamente dentro do mouse. Não fiz análises sofisticadas do tempo de permanência, constantes de tempo ou níveis de decisão para encontrar um valor ideal. Vários modelos terão parâmetros diferentes de qualquer maneira.

Estou usando essa modificação há algum tempo e o problema ainda não ressurgiu.

Para aplicar o mod. Encontre um capacitor de pequenas dimensões físicas que caiba dentro do estojo do mouse. Eu usei um 0.1uF porque eu tinha um e é um número bom, mas outros valores provavelmente funcionarão, mas não serão muito grandes ou muito pequenos. O que é grande ou pequeno demais é uma questão de experimento. Um tamanho muito grande pode afetar os cliques duplos pretendidos, e um tamanho muito pequeno não atingirá o efeito desejado. Soldei uma perna da tampa em um local conveniente, onde ela não atrapalhava a estrutura interna do mouse, no lado de cobre da placa, para o plano de 0 volts (plano de terra, se desejar). outra perna da tampa para o interruptor ativo com um pouco de fio fino. Eu usei um componente reciclado com pernas curtas. Um novo provavelmente teria pernas longas o suficiente para chegar onde é necessário. Você precisará de um ferro de solda com ponta fina adequado para o trabalho.

Se você não conhece capacitores. Um capacitor de 0,1 uF pode ser designado como 0,1 uF ou 104 ou 100 nF ou ter faixas marrons de cor amarela preta. Um tipo de montagem em superfície também seria uma boa escolha. Conecte-o com alguns fios de arame fino. Pode colá-lo ao lado da conexão da placa.

Eu tenho um plano B que posso tentar na próxima vez ou se o plano atual eventualmente falhar. A remoção do microinterruptor para um comutador de membrana tátil com montagem PCST spst deve resolver o problema. Esse é o tipo de chave usada nos teclados e teclados e não apresenta esse problema. O pé não imprime nada como o microinterruptor. Está disponível um interruptor com 7 mm de altura que entra na mesma altura do micro interruptor existente. Um comutador menor precisaria ser espaçado até a altura correta. Dobre as pernas em ângulo reto com o corpo do interruptor e cole-o na placa para que o atuador fique alinhado com a posição ocupada pelo atuador do microinterruptor. O botão do mouse deve atingir o local correto. Conecte os contatos da chave com algum fio fino e tudo deve ser bom em teoria.

user277786
fonte
5
Embora sua resposta esteja 100% correta, este é um site de perguntas e respostas sobre software, não sobre perguntas e respostas sobre hardware. Então, por favor: 1 / adicione um aviso respeitável de que você está dando uma solução de HW para um problema de SW, 2 / diminua sua resposta 3 / Adicione alguns links às fotos sobre como fazer isso 4 / É µF, não uF.
FabB
@Fabby Suas sugestões (1) e (3) são excelentes, mas não tanto com (2) e (3), são mesquinhas / desnecessárias. Também sai um pouco sarcástico / conciso. Você deve tentar ser amigável com os novos usuários! :)
@ Joe 1 / Veja os votos positivos para comentar. 2 / Sim, é um estilo de telegrama sem detalhes, de modo que poderia ter sido melhor. Em minha defesa: eu sou um Vorlon , não um humano e ainda estou trabalhando na minha empatia ... ;-)
Fabby 11/06
9

Eu construí um patch xserver-xorg-input-evdevpara o Ubuntu 14.10. Eu usei as instruções em http://blog.guntram.de/?p=16 (o patch pode ser encontrado aqui e aqui ) e um manual de empacotamento Debian.

Aqui estão minhas anotações sobre a construção de um pacote.

#!/bin/bash
# http://blog.guntram.de/?p=16
#

apt-get build-dep xserver-xorg-input-evdev

dquilt="quilt --quiltrc=${HOME}/.quiltrc-dpkg"

wget --output-document=evdev-debounce.patch http://blog.guntram.de/?ddownload=20
apt-get source xserver-xorg-input-evdev

cd xserver-xorg-input-evdev-*

$dquilt new debounce.patch
$dquilt add include/evdev-properties.h src/Makefile.am src/debounce.c src/evdev.c src/evdev.h src/debounce.c
patch -p1 <../evdev-debounce.patch

$dquilt refresh
$dquilt header -e

debuild -us -uc -b
cd ..

sudo dpkg -i xserver-xorg-input-evdev_*.deb
  • Boas notícias: funcionou.
  • Más notícias: nem sempre ajuda. Meu contato com o botão do mouse era tão ruim que precisava de um atraso de 200ms, o que me impede de clicar duas vezes. Outro rato saltitante começou a funcionar bem.

edit : Obrigado @MatijaNalis, o patch para obter as etapas pode ser:

wget https://aur.archlinux.org/packages/xf/xf86-input-evdev-debounce/xf86-input-evdev-debounce.tar.gz
tar xzf xf86-input-evdev-debounce.tar.gz
# ...
patch -p1 < ../xf86-input-evdev-debounce/debounce.patch
Victor Sergienko
fonte
1
o script precisa ser alterado - "dquilt new" misses "$", "patch" deve ser depois de "$ dquilt add" e antes de "$ dquilt refresh" e o patch no blog.guntram.de é antigo, deve-se usar outro da aur .archlinux.org. O "apt-get build-dep xserver-xorg-input-evdev" também deve ser adicionado. Também deve usar variáveis ​​de ambiente quilt em vez de arquivos de configuração (não especificados) - wiki.debian.org/UsingQuilt . Caso contrário, parece uma ótima solução alternativa para o mouse quebrado ...
Matija Nalis 31/05
3
Um recurso de depuração foi adicionado ao libinput 1.9 ( unix.stackexchange.com/a/451864/116842 ).
Jérôme
5

O problema, explicado por Jack Ganssle, aqui: http://www.eng.utah.edu/~cs5780/debouncing.pdf
- filtragem de rejeição por contato. O software precisa estar presente em qualquer aplicativo, de simples computadores de placa única a sistemas operacionais, de alguma forma.

https://www.google.se/?gfe_rd=cr&safe=off#q=%2Bcontact+%2Bbounce+%2Bsoftware&safe=off

À medida que os contatos / botões envelhecem, o efeito fica pior. O WD40 pode não ser o melhor spray para uso em eletrônicos, existem outros mais adequados. Spray de contato do Google.

Hannu
fonte
4

Ocorreu um problema com um botão adicional clicando duas vezes. Como eu já o havia mapeado xbindkeys(consulte Como posso atribuir ações a todos os botões do mouse? Para obter mais informações), minha solução foi alterando a entrada da ~/.xbindkeysrcseguinte maneira:

"if [ ! -e /dev/shm/button ]; then touch /dev/shm/button; /usr/bin/xte 'keydown Control_L' 'key Page_Down' 'keyup Control_L'; sleep 0.2; rm  /dev/shm/button; fi"
b:7

Isso cria um "arquivo de bloqueio" para cada botão pressionado /dev/shm/(que espero esteja na RAM) e o remove após 0,2 segundos. E o xtecomando deve ser feito com o clique do mouse e não deve ser feito duas vezes em 0,2 segundos.

(Apenas pensei em compartilhar minha solução, caso alguém queira copiá-la ou corrigi-la.)

pirad
fonte
Essa é uma excelente solução para casos em que o mouse envia um fluxo de eventos contínuo ButtonPress / ButtonRelease, mas você deseja convertê-lo em um único evento. Isso acontece com, por exemplo, o mouse bluetooth da Microsoft e os botões da roda de inclinação.
213188 Leo Alekseyev #
2

Existe um erro de software e, em junho de 2014, não há solução para isso. Isso não acontece em todos os modelos de mouse. Meus mouses da Logitech estão bem, mas a maioria dos outros falha, não importa o que você faça. Isto é para RHEL, CentOS e Ubuntu. Todos os mouses funcionam em caixas de janelas puras, mas o mesmo problema existe nas KVMs

Nenhuma solução ainda, os desenvolvedores sabem disso.

Felicidades. Don.

Don
fonte
1
Você poderia adicionar um link ao bug e fornecer um pouco de conhecimento sobre isso?
Oli
1
Como você pode ver nas outras respostas (e no relatório de erros), esse não é realmente um bug, mas um recurso ausente. O Windows rejeita a filtragem de mouses por padrão, enquanto o Linux não.
Hjulle
1

O spray WD40 é mágico para muitos problemas, inclusive volantes com fones de ouvido com ruídos rac rac rac, também para reparar esse problema de cliques do mouse…

Teste, é muito rápido, não precisa abrir o mouse ou abrir os fones de ouvido, borrifar e ir bem outra vez…

user259941
fonte
1

No meu caso, era hardware ou, mais precisamente, algum problema mecânico no microinterruptor do botão do mouse.

Eu tive esse problema com dois ratos: o antigo Logitech m-uv69 e outro mouse que comprei há um ano e consegui consertar os dois sem muito esforço. Isto é o que eu fiz:

  • tirou a tampa superior do mouse
  • micro interruptor diretamente pressionado rapidamente botão pequeno muitas vezes

Depois disso, quase todos os cliques duplos não intencionais foram embora. Não sei exatamente o que os causou dentro do microinterruptor. Provavelmente ficou sujo ou algo assim e empurrá-lo rapidamente faz a sujeira desaparecer.

ks1322
fonte