el mouse a veces hace doble clic cuando hago clic una vez

39

Tengo un problema que se está convirtiendo en una pesadilla, en la medida en que estoy pensando que podría ser más fácil simplemente descartar Ubuntu por completo e intentar otra cosa. Tengo una PC HP con Ubuntu 12.04. Cuando hago clic izquierdo con el mouse, a veces hace doble clic (tal vez el 50% del tiempo).

Hasta ahora, esto ha llevado a: enviar aleatoriamente correos electrónicos sin terminar, resaltar y eliminar aleatoriamente cosas que no quería eliminar mientras escribía correos electrónicos ( muy frustrante), eliminar aleatoriamente dos pestañas del navegador en lugar de una (varias veces) y (en cierto sentido lo más molesto) una experiencia de usuario final muy muy frustrante al intentar mover ventanas en el escritorio o cortar y pegar desde una ventana de terminal. Gracias a Dios por Alt- F7- pero no quiero tener que aprender atajos de teclado para cada programa que uso, así como para el sistema operativo (y no poder copiar y pegar es una gran pérdida para mí).

No soy la única persona con este problema, pero googlear indica que puede haber múltiples razones para ello; Ninguna de las soluciones que he leído en línea me ha funcionado. Permítanme analizar todo, incluidas las soluciones que han funcionado para otras personas pero no para mí. Oh, tengo un mouse óptico HP.

  • No es un mouse roto. He probado dos ratones en mi sistema, ambos presentan el problema. Ambos ratones funcionan bien en la computadora portátil de mi casa que también ejecuta Ubuntu 12.04.

  • Mi /etc/X11/xorg.confsolo tiene unas pocas líneas y no tiene una sección "InputDevice".

  • No tengo hald, o el paquete hal instalado.

  • Comenzó hace aproximadamente una semana, y no parece estar mejorando ni empeorando.

  • Desesperado, acabo de actualizar a 12.10 pero esto no ha solucionado el problema y ahora estoy ejecutando una distribución que no es un LTS (y por lo tanto no es ideal para mí: - \)

Pero está haciendo que mi sistema sea muy difícil de usar.

Actualización posiblemente importante : intenté hacer algunas investigaciones con xev. Me parece que parece una mala conexión en estos ratones, ¿es esto común? Puedo mantener presionado el botón del mouse y luego obtener (clic del mouse) (pausa) (liberación del mouse) (pausa muy corta) (clic del mouse) (pausa) (liberación del mouse) (pausa muy corta) (clic del mouse), etc. Me pregunto si, por ejemplo, otros sistemas operativos dicen "no se puede liberar y luego se vuelve a hacer clic en 0.05 segundos, por lo que debe haber sido un problema técnico y asumiré que el botón nunca se soltó". ¿Puedo decirle a Ubuntu que ignore los eventos release-and-then-reclick-casi-instantáneamente?

Esto parece un problema de mouse malo. ¿Tal vez debería desenterrar un mouse más nuevo? Solo he probado los muy viejos: - \

Kevin Buzzard
fuente
¿Lo ha informado como un error en la plataforma de lanzamiento?
Alvar
¿Puedes recordar lo que sucedió hace una semana, cuando todo comenzó?
hytromo
Lo que sucedió hace una semana es exactamente lo que sucede cada semana: solo hago clic en "instalar actualizaciones" y ocasionalmente en "reiniciar la computadora para finalizar la instalación". Este sistema está listo para usar: creo que los únicos paquetes que instalé, aparte de los que están allí por defecto, fueron los pocos que necesitaba para ejecutar Sparkleshare.
Kevin Buzzard
@Alvar: parece haber confusión en el launchpad sobre este error. Mi impresión general es que algunas personas tienen este problema y el problema es que su mouse está roto, algunas personas tienen este problema y el problema es algún controlador logitech, y algunas personas tienen este problema y el problema está en otro lugar. Intentaré informarlo y reducir el ruido ...
Kevin Buzzard
Llegué al problema relacionado, que pensé que era el mouse roto en combinación con los gestos de Firefox, pero resultó ser botones laterales del mouse haciendo "firefox back"
Matija Nalis

Respuestas:

47

OK, después de realizar pruebas exhaustivas con xev en la máquina afectada y cambiar entre varios ratones en varios sistemas, creo que he resuelto este problema. Por supuesto YMMV.

Mi solución: es un mouse roto.

Más precisamente, el conector activado cuando se hace clic es un poco viejo o sucio o algo así, y a veces, al mantener presionado el botón, se realiza la conexión y luego se rompe momentáneamente, y luego se vuelve a hacer, causando el doble clic.


Objeción: ¡Pero el mouse funciona bien cuando lo conecto a mi máquina Windows!

Contador: ¿No sería trivial poner en un controlador, o un sistema operativo, la siguiente línea de pseudocódigo: "si el usuario abre el mouse y luego lo vuelve a hacer clic dentro de 0.05 segundos, entonces probablemente sea un conector sucio, así que vamos simplemente ignora eso ". Por lo tanto, ¿no es posible que si cambia el mouse a otra computadora que ejecuta otro sistema operativo y / o usa otro controlador en un hardware diferente (incluso con el mismo sistema operativo, podría estar usando un hardware diferente, ¿verdad?), Podría obtener resultados diferentes ?

Objeción: ¡Pero probé con otro mouse viejo y mostró el mismo problema!

Contador: increíble cómo dos ratones viejos de la misma compañía pueden romperse de la misma manera, ¿eh? Y nunca te diste cuenta porque el segundo mouse que probaste no presentaba problemas cuando estaba conectado a otro hardware (ver contador anterior).


Si realmente no crees que tu mouse está roto, pruébalo:

$ xev

y luego encuentra el cuadrado con el fondo negro, haz clic en él y mira la salida. ¿Definitivamente, siempre, obtienes un "clic" limpio y nada más? A menudo recibía un clic limpio, pero ocasionalmente un "rebote" (haga clic en hacer clic en hacer clic). Incluso mejor quizás:

$ xev | grep ButtonRelease

Ahora pegue el mouse en el cuadrado con el contorno negro (o en cualquier lugar de esa ventana) y haga clic y desactive 20 veces. Debería obtener una línea de "Liberación de botón" cada vez que suelte el botón, y nunca de otra manera. De vez en cuando recibía uno cuando hacía clic.

Pesadilla terminada.

Kevin Buzzard
fuente
Tengo dos ratones idénticos con los que he notado un clic inesperado recientemente, y no estoy tan seguro de que ambos se hayan "desgastado" la misma semana. Su xevprueba no me dio nada inusual, pero tengo que preguntarme si hay algo más.
Tom Brossman
Correcto: sospechaba mucho de tener dos ratones y ninguno de ellos trabajando en una máquina y ambos trabajando en otra. Estoy bastante seguro de que hay personas que creen que realmente hay un problema además de "los ratones están rotos y el sistema operativo no lo compensa tan bien como otros sistemas operativos". Por otro lado, definitivamente salté el barco esta mañana: mi sistema está funcionando nuevamente y la semana pasada estaba convencido de que el mouse no podía ser el problema, pero para mí realmente lo fue.
Kevin Buzzard
2
Conmigo pasé unos buenos 5-10 minutos jugando con xev y viendo la salida. Hacer clic y desbloquear constantemente, etc., etc., y luego, ocasionalmente, obtener desbloqueos inesperados cuando no estaba desabrochando. Permítanme decir también que mirar la salida de xev en una ventana de terminal de 80x24 puede ser muy engañoso, porque "unclick-click" puede hacer que xev produzca una página completa llena de información, y si el unclick-click ocurre lo suficientemente rápido (que fue el caso en mi caso), entonces es posible que ni siquiera puedas notar la salida de xev porque es casi idéntica a la página anterior.
Kevin Buzzard
77
Mejor aun xev | awk '/ButtonRelease/ {print $1,i++}'.
arekolek
Para mí, esto se manifestó como el "botón 3" (el botón derecho del mouse) enviando una señal ocasionalmente cuando me desplazaba hacia arriba en la rueda del mouse. Extraño.
carbocation
9

Mantenimiento zen y mouse. Parece que muchos están teniendo un problema con el doble clic del mouse cuando se aplica un clic. El botón del mouse es un microinterruptor. El hecho de la vida es que los contactos del interruptor rebotan. En realidad, no rebotan sino que se frotan. Lo llamaremos rebote de todos modos. Por alguna razón, los programadores han dejado caer la pelota en este caso. Se debe aplicar un ciclo de espera de duración suficiente para que los contactos se establezcan antes de leer. A propósito de nada y en una muestra de uno, mi solución ha sido colocar un condensador a través de los contactos del interruptor. Utilicé una tapa de 0.1uF sin ninguna razón en particular, aparte de que tenía una en un tamaño pequeño que cabría muy bien dentro del mouse. No he hecho ningún análisis sofisticado del tiempo de permanencia, constantes de tiempo o niveles de decisión para encontrar un valor óptimo. Varios modelos tendrán diferentes parámetros de todos modos.

He estado usando esta modificación durante algún tiempo y el problema no ha resurgido hasta ahora.

Para aplicar el mod. Encuentre un condensador de pequeñas dimensiones físicas que se ajuste al interior de la carcasa del mouse. Utilicé un 0.1uF porque tenía uno y es un buen número, pero otros valores probablemente funcionarán, pero no serán demasiado grandes o demasiado pequeños. Lo que es demasiado grande o pequeño es una cuestión de experimento. Demasiado grande puede afectar los clics dobles previstos, demasiado pequeño no logrará el efecto deseado. Solde una pata de la gorra en un lugar conveniente, donde no se salía de la estructura interna del mouse, en el lado de cobre del tablero, al plano de 0 voltios (plano de tierra si lo desea). otra pata de la tapa al interruptor activa con un poco de alambre delgado. Usé un componente reciclado con patas cortas. Es probable que una nueva tenga piernas lo suficientemente largas como para llegar a donde se necesita. Necesitará un soldador de punta fina adecuado para el trabajo.

Si no conoces condensadores. Un condensador de 0.1uF puede designarse 0.1uF o 104 o 100nF o tener bandas de color marrón negro amarillo. Un tipo de montaje en superficie también sería una buena opción. Conéctalo con algunos hilos de alambre fino. Podría pegarlo a la placa con la conexión hacia arriba.

Tengo un plan B que puedo probar la próxima vez o si el plan actual finalmente falla. Dejar el microinterruptor para un interruptor de membrana táctil de montaje en PCB spst debería resolver el problema. Ese es el tipo de interruptor utilizado en teclados y teclados y no presenta este problema. La huella no se parece en nada al microinterruptor. Se encuentra disponible un interruptor de 7 mm de altura que entrará a la misma altura que el microinterruptor existente. Un interruptor más pequeño necesitaría estar espaciado a la altura correcta. Doblar las patas en ángulo recto con el cuerpo del interruptor y pegarlo a la placa para que el actuador se alinee con la posición ocupada por el actuador del microinterruptor. El botón del mouse debe tocar el lugar correcto. Conecte los contactos del interruptor con un cable fino y todo debería ser bueno en teoría.

usuario277786
fuente
55
Aunque su respuesta es 100% correcta, este es un sitio de Preguntas y Respuestas de Software, no un hardware de Preguntas y Respuestas. Entonces, por favor: 1 / agregue una advertencia respetable de que está dando una solución HW para un problema de SW, 2 / acorte su respuesta 3 / Agregue algunos enlaces a las imágenes sobre cómo hacer esto 4 / Es µF, no uF.
Fabby
@Fabby Sus sugerencias (1) y (3) son excelentes, pero no tanto con (2), y (3) es insignificante / innecesario. También sale como un poco sarcástico / conciso. ¡Debes tratar de ser amigable con los nuevos usuarios! :)
@ Joe 1 / Mira los votos a favor para obtener comentarios. 2 / Sí, es un estilo de telegrama sin sutilezas, por lo que podría haber sido mejor. En mi defensa: soy un Vorlon , no un humano y todavía estoy trabajando en mi empatía ... ;-)
Fabby
9

He creado un parche xserver-xorg-input-evdevpara Ubuntu 14.10. Utilicé las instrucciones de http://blog.guntram.de/?p=16 (el parche se puede encontrar aquí y aquí ) y un manual de empaquetado de Debian.

Aquí están mis notas sobre la construcción de un paquete.

#!/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
  • Buenas noticias: funcionó.
  • Malas noticias: no siempre ayuda. El contacto de mi botón del mouse era tan malo que necesitaba un retraso de 200 ms, lo que me impide hacer doble clic. Otro ratón que rebota comenzó a funcionar bien.

editar : Gracias @MatijaNalis, los pasos para obtener el parche podrían 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
fuente
1
la secuencia de comandos debe cambiarse: "dquilt new" falla "$", "patch" debe aparecer después de "$ dquilt add" y antes de "$ dquilt refresh", y el parche en blog.guntram.de es antiguo, uno debe usar otro de aur .archlinux.org. También se debe agregar "apt-get build-dep xserver-xorg-input-evdev". También debe usar variables de entorno de colcha en lugar de archivos de configuración (no especificados) - wiki.debian.org/UsingQuilt . De lo contrario, se ve como una gran solución para ratón roto ...
Matija Nalis
3
Se agregó una función antirrebote a libinput 1.9 ( unix.stackexchange.com/a/451864/116842 ).
Jérôme
5

El problema, explicado por Jack Ganssle, aquí: http://www.eng.utah.edu/~cs5780/debouncing.pdf
- filtrado de rebote de contacto. El software debe estar presente en cualquier aplicación, desde computadoras simples de una sola placa hasta sistemas operativos, de alguna forma.

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

A medida que los contactos / botones envejecen, el efecto empeorará. WD40 podría no ser el mejor aerosol para usar en electrónica, hay otros más adecuados. Google 'spray de contacto'.

Hannu
fuente
4

Tuve un problema con un botón adicional haciendo clic dos veces. Como ya lo tenía asignado xbindkeys(consulte ¿Cómo puedo asignar acciones a todos los botones de mi mouse? Para obtener más información al respecto) mi solución estaba cambiando la entrada de la ~/.xbindkeysrcsiguiente manera:

"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

Esto crea un "archivo de bloqueo" para cada pulsación de botón /dev/shm/(que espero que se encuentre en la RAM) y lo elimina después de 0.2 segundos. Y el xtecomando se realizará al hacer clic con el mouse y no se realizará dos veces en 0.2 segundos.

(Solo pensé en compartir mi solución, en caso de que alguien quiera copiarla o arreglarla).

pirata
fuente
Esta es una excelente solución para casos en los que el mouse envía un flujo continuo de eventos ButtonPress / ButtonRelease, pero desea convertirlo en un solo evento. Esto sucede con, por ejemplo, el mouse Bluetooth de Microsoft y los botones de rueda de inclinación.
Leo Alekseyev
2

Hay un error de software y, a partir de junio de 2014, no hay solución para ello. No ocurre en todos los modelos de ratones. Mis ratones Logitech están bien, pero la mayoría de los demás fallan sin importar lo que hagas. Esto es para RHEL, CentOS y Ubuntu. Todos los ratones funcionan en cajas de ventanas puras, pero el mismo problema existe en KVM

Aún no hay solución, los desarrolladores lo saben.

Aclamaciones. Don.

Don
fuente
1
¿Podría agregar un enlace al error y dar un poco de información al respecto?
Oli
1
Como puede ver en las otras respuestas (y el informe de error), esto no es realmente un error, sino una característica que falta. Windows no elimina el filtrado en ratones de forma predeterminada, mientras que Linux no.
Hjulle
1

Spray WD40 es mágico para muchos problemas, incluye la rueda de volumen en auriculares con ruidos rac rac rac, también para reparar este problema de clics del mouse ...

Prueba, es muy rápido, no es necesario abrir el mouse o abrir los auriculares, rociar e ir bien en otro momento ...

usuario259941
fuente
1

En mi caso fue hardware o, más precisamente, algún problema mecánico con el micro interruptor del botón del mouse.

Tuve este problema con 2 ratones: el viejo Logitech m-uv69 y otro ratón que compré hace aproximadamente un año y logré repararlos sin mucho esfuerzo. Esto es lo que he hecho:

  • se quitó la cubierta superior del mouse
  • presionó rápidamente el micro interruptor pequeño botón muchas veces

Después de eso, casi todos los dobles clics involuntarios desaparecieron. No sé qué los causó exactamente dentro del microinterruptor. Probablemente se ensució o algo y empujarlo rápidamente hace que la suciedad desaparezca.

ks1322
fuente