当我点击一次鼠标时,有时会双击鼠标

我有一个问题正在变成一场噩梦,我认为可能更容易完全废弃Ubuntu并尝试别的东西。 我有一台运行Ubuntu 12.04的HP PC。 当我用鼠标左键单击时,它有时会双击(可能是50%的时间)。

到目前为止,这导致:随机发送未完成的电子邮件,随机突出显示和删除我不想删除的内容,同时编写电子邮件( 非常令人沮丧),随机删除两个浏览器标签而不是一个(多次),并且(在某种意义上)尝试在桌面上移动窗口或从终端窗口剪切和粘贴时,最令人沮丧的最终用户体验。 非常感谢AltF7 – 但我不想为我使用的每个程序以及操作系统学习键盘快捷键(而且不能复制粘贴对我来说是一个很大的损失)。

我不是唯一有此问题的人,但谷歌搜索表明可能有多种原因; 我在网上看过的修补程序都没有为我工作过。 让我详细介绍一切,包括对其他人有用的修复,但不适用于我。 哦 – 我有一个hp光学鼠标。

  • 它不是一个破碎的鼠标。 我在我的系统上试过两只老鼠 – 都表现出问题。 这两款鼠标在我的家用笔记本电脑上运行Ubuntu 12.04时效果很好。

  • 我的/etc/X11/xorg.conf只有几行,没有“InputDevice”部分。

  • 我没有hald,或安装了hal包。

  • 它开始于大约一周前,似乎没有变得更好或更糟。

  • 在绝望中我刚刚升级到12.10但这并没有解决问题,现在我正在运行一个不是LTS的发行版(因此对我来说并不理想: – \)

但它使我的系统很难使用。

可能重要的更新 :我尝试用xev做一些调查。 在我看来,这些老鼠看起来很糟糕 – 这是常见的吗? 我可以按住鼠标按钮,然后按(鼠标单击)(暂停)(鼠标释放)(非常短的暂停)(鼠标单击)(暂停)(鼠标释放)(非常短的暂停)(鼠标点击)等我想知道,例如,其他操作系统是否说“你不能释放,然后在0.05秒内再次点击,所以这一定是一个小故障,我会假设按钮从未被释放”。 我可以告诉Ubuntu忽略release-and-then-reclick-almost-immediately事件吗?

这看起来像是一个糟糕的鼠标问题。 也许我应该挖一个更新的鼠标? 我只尝试过很老的: –

好吧,在受影响的机器上使用xev进行大量测试,并在各种系统上的各种鼠标之间切换,我相信我已经解决了这个问题。 当然是YMMV。

我的解决方案: 它是一只破碎的老鼠。

更确切地说,点击时激活的连接器有点旧或脏或有些东西,有时,当按住按钮时,连接完成,然后暂时断开,然后再次制作,导致双击。


异议:但是当我将它插入我的Windows机器时鼠标工作正常!

计数器:将以下伪代码行放入驱动程序或操作系统中不是一件容易的事:“如果用户松开鼠标然后在0.05秒内再次点击它,那么这可能是一个脏连接器,所以让我们只是忽略那个“。 因此,如果你将鼠标切换到运行另一个操作系统的另一台计算机和/或在不同的硬件上使用另一个驱动程序(即使使用相同的操作系统,你很可能使用不同的硬件,对吧?),你可能得到不同的结果?

异议:但我尝试了另一只老鼠,它也出现了同样的问题!

反击:令人惊讶的是,来自同一家公司的两只老鼠都能以同样的方式打破,呃? 你从来没有注意到,因为你尝试的第二只老鼠在插入不同的硬件时没有出现任何问题(见前一个计数器)。


如果你真的不相信你的鼠标坏了,那就测试一下:

 $ xev 

然后找到黑色背景的方块,单击它,然后观察输出。 你是否总是得到一个干净的“点击”而没有别的? 我经常会得到一个干净的点击,但偶尔会“弹跳”(点击取消点击)。 甚至可能更好:

 $ xev | grep ButtonRelease 

现在将鼠标插入带有黑色轮廓的正方形(或该窗口中的任何位置),然后单击并取消单击20次。 每次释放按钮时都应该有一个“ButtonRelease”行,否则不会。 我点击时偶尔会得到一个。

梦魇结束了。

禅和鼠标维护。 似乎很多人在应用一次点击时双击鼠标有问题。 鼠标按钮是微动开关。 生活中的事实是开关触点反弹。 他们实际上并没有弹跳而是揉搓。 无论如何我们都会称之为反弹。 出于某种原因,程序员已经放弃了这个。 应该在读取之前应用足够持续时间的等待循环以使触点稳定。 什么都没有,我的解决方案的一个样本是在开关触点上放置一个电容器。 我使用0.1uF的帽子没有特别的原因,除了我有一个很小的尺寸适合鼠标内部。 我没有对停留时间,时间常数或决策水平进行任何花哨的分析,以找到最佳值。 不管怎样,各种型号都有不同的参数。

我已经使用这个修改已经有一段时间了,到目前为止这个问题还没有重新出现。

要应用mod。 找一个小尺寸的电容器,适合鼠标shell。 我使用0.1uF,因为我有一个,这是一个很好的数字,但其他值可能会工作,但不要太大或太小。 太大或太小都是实验的问题。 太大可能会影响预期的双击,太小不会达到预期的效果。 我把帽子的一条腿焊接在一个方便的位置,在那里没有弄脏鼠标的内部结构,在电路板的铜面上,到0伏的平面(地球平面,如果你愿意的话)我勾住了盖子的另一条腿到开关有一点细线。 我使用了一条腿很短的再生组件。 一个新的可能会有足够长的腿到达需要的地方。 您需要一个合适的精细烙铁来完成这项工作。

如果你不知道电容器。 0.1uF电容器可以指定为0.1uF或104或100nF,或者具有棕黑色黄色带。 表面贴装类型也是一个不错的选择。 用一些细线连接它。 可以将它粘在电路板连接面上。

我有一个计划B,我可能会在下次尝试,或者当前计划最终失败。 放弃用于spst PCB安装触觉薄膜开关的微动开关应该可以解决这个问题。 这是键盘和键盘中使用的开关类型,并没有出现这个问题。 脚印不像微动开关。 提供7mm高的开关,其高度与现有的微动开关相同。 较小的开关需要间隔到正确的高度。 将支腿弯曲成与开关主体成直角并将其粘合到板上,使致动器与微动开关致动器占据的位置对齐。 鼠标按钮必须击中正确的位置。 用一些细线连接开关触点,理论上一切都应该是好的。

我为Ubuntu 14.10构建了一个修补过的xserver-xorg-input-evdev 。 我使用了http://blog.guntram.de/?p=16 (补丁可以在这里和这里找到)和Debian包装手册中的说明。

以下是关于构建包的说明。

 #!/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 
  • 好消息:它奏效了。
  • 坏消息:它并不总是有帮助。 我的鼠标按钮接触非常糟糕,需要200ms的延迟,这使我无法双击。 另一只老鼠工作。

感谢@MatijaNalis,补丁获取步骤可能是:

 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 

这里解释的问题是: http : //www.eng.utah.edu/~cs5780/debouncing.pdf
– 联系退回过滤。 软件需要在任何应用程序中存在,从简单的单板计算机到操作系统,以某种forms存在。

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

随着联系人/按钮变老,效果将变得更糟。 WD40可能不是用于电子产品的最佳喷雾剂,还有其他更适合的电子产品。 谷歌’联系喷雾’。

有一个软件错误,截至2014年6月,它没有修复。 它不会发生在所有鼠标模型上。 我的罗技老鼠很好,但大多数其他老鼠都失败了。 这适用于RHEL,CentOS和Ubuntu。 所有鼠标都在纯窗盒上工作,但KVM中存在同样的问题

还没有解决方案,开发人员确实知道它。

干杯。 唐。

我有一个问题,一个额外的按钮点击两次。 因为我已经用xbindkeys映射了它(请参阅如何为所有鼠标按钮分配操作?有关更多信息),我的解决方案是更改~/.xbindkeysrc的条目,如下所示:

 "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 

这为/dev/shm/每个按钮创建了一个“lockfile”(我希望它位于RAM上)并在0.2秒后将其删除。 xte命令应在鼠标点击时完成,不得在0.2秒内完成两次。

(只是想我会分享我的解决方案,以防任何人想要复制或修复它。)

喷雾WD40是很多问题的神奇之处,带有rac rac rac噪音的耳机包容音量轮,也用于修复鼠标点击的这个问题…

测试,是一个非常快,不需要打开鼠标或打开耳机,另一次喷雾和顺利…

在我的情况下,它是硬件,或者更确切地说,是鼠标按钮微动开关的一些机械问题。

我有两只老鼠出现这个问题:旧的Logitech m-uv69和一年前我买的另一只老鼠,我设法修复了两只老鼠。 这就是我所做的:

  • 脱掉鼠标顶盖
  • 直接快速按下微动开关小按钮多次

在那之后,几乎所有无意的双击都消失了。 我不知道究竟是什么导致它们在微动开关内部。 可能它变脏了或者什么东西快速推动它会使污垢消失。