Kev*_*ard 48 mouse input-devices 12.04
我有一个问题正在变成一场噩梦,以至于我认为完全废弃 Ubuntu 并尝试其他方法可能更容易。我有一台运行 Ubuntu 12.04 的 HP PC。当我用鼠标左键单击时,它有时会双击(可能是 50% 的时间)。
到目前为止,这导致:随机发送未完成的电子邮件,随机突出显示和删除我在写电子邮件时不想删除的内容(非常令人沮丧),随机删除两个浏览器选项卡而不是一个(多次),以及(从某种意义上说)最烦人的)尝试在桌面上移动窗口或从终端窗口剪切和粘贴时,非常非常令人沮丧的最终用户体验。谢天谢地Alt- F7- 但我不想为我使用的每个程序以及操作系统学习键盘快捷键(并且无法复制粘贴对我来说是一个巨大的损失)。
我不是唯一遇到这个问题的人,但谷歌搜索表明可能有多种原因;我在网上阅读的所有修复程序都没有对我有用。让我完成所有事情,包括对其他人有效但对我无效的修复。哦——我有一个 hp 光电鼠标。
它不是一只坏掉的老鼠。我在我的系统上试过两只鼠标——都出现了问题。这两款鼠标在我同样运行 Ubuntu 12.04 的家用笔记本电脑上运行良好。
我/etc/X11/xorg.conf的只有几行,没有“InputDevice”部分。
我没有 hald,也没有安装 hal 包。
它大约在一周前开始,似乎没有变得更好或更糟。
无奈之下,我刚刚升级到 12.10,但这并没有解决问题,现在我正在运行一个不是 LTS 的发行版(因此对我来说并不理想:-\)
但它使我的系统很难使用。
可能是重要的更新:我尝试使用 xev 进行一些调查。在我看来,这些老鼠的连接似乎不好——这很常见吗?我可以按住鼠标按钮,然后得到(鼠标点击)(暂停)(鼠标释放)(非常非常短的暂停)(鼠标点击)(暂停)(鼠标释放)(非常非常短的暂停)(鼠标点击)等. 我想知道其他操作系统是否会说“你不能在 0.05 秒内释放然后再次点击,所以这一定是一个小故障,我会假设按钮从未被释放过”。我可以告诉 Ubuntu 忽略 release-and-then-reclick-almost-instantly 事件吗??
这看起来像是一个糟糕的鼠标问题。也许我应该挖出一个新的鼠标?我只试过很旧的:-\
Kev*_*ard 53
好的,在受影响的机器上使用 xev 进行广泛测试,并在各种系统上的各种鼠标之间切换后,我相信我已经解决了这个问题。当然是YMMV。
我的解决方案:这是一个坏掉的鼠标。
更准确地说,点击时激活的连接器有点旧或脏什么的,有时,当按住按钮时,连接建立,然后暂时断开,然后再次连接,导致双击。
反对意见:但是当我将鼠标插入我的 Windows 机器时鼠标工作正常!
计数器:将以下伪代码放入驱动程序或操作系统中不是很简单:“如果用户取消单击鼠标然后在 0.05 秒内再次单击它,那么这可能是一个脏连接器,所以让我们忽略那个”。因此,如果您将鼠标切换到另一台运行另一个操作系统的计算机和/或在不同硬件上使用另一个驱动程序(即使使用相同的操作系统,您也可能使用不同的硬件,对吧?),您可能会得到不同的结果吗? ?
反对意见:但我尝试了另一只旧鼠标,它也出现了同样的问题!
柜台:令人惊讶的是,来自同一家公司的两只老老鼠怎么能以同样的方式折断,嗯?而且您从未注意到,因为您尝试的第二个旧鼠标在插入不同的硬件时没有出现任何问题(请参阅前面的计数器)。
如果你真的不相信你的鼠标坏了,那就测试一下:
$ xev
Run Code Online (Sandbox Code Playgroud)
然后找到黑色背景的方块,点击它,然后观察输出。你肯定,总是,得到一个干净的“点击”而不是别的吗?我经常会得到一个干净的点击,但偶尔会“反弹”(点击取消点击)。也许更好:
$ xev | grep ButtonRelease
Run Code Online (Sandbox Code Playgroud)
现在将鼠标插入带有黑色轮廓的正方形(或该窗口中的任何位置),然后单击和取消单击 20 次。每次释放按钮时都应该得到一个“ButtonRelease”行,否则永远不会。当我点击时,我偶尔会得到一个。
噩梦结束。
小智 9
Zen 和鼠标维护。似乎很多人都在应用一键单击时出现双击鼠标的问题。鼠标按钮是一个微动开关。生活中的事实是开关触点会弹跳。它们实际上不是弹跳而是摩擦。无论如何,我们将称之为反弹。出于某种原因,程序员已经放弃了这一点。在读取之前,应应用足够长的等待循环以使触点稳定。我的解决方案是在开关触点上放置一个电容器,没有任何意义,在一个样本上。我使用了一个 0.1uF 的盖子,没有什么特别的原因,只是我有一个可以很好地放在鼠标内部的小尺寸。我没有对停留时间、时间常数或决策水平进行任何花哨的分析来找到最佳值。无论如何,各种模型将具有不同的参数。
我已经使用这个修改有一段时间了,到目前为止这个问题还没有再次出现。
应用mod。找到一个适合鼠标外壳的物理尺寸较小的电容器。我使用了 0.1uF,因为我有一个,这是一个不错的数字,但其他值可能会起作用,但不要太大或太小。太大或太小是实验的问题。太大可能会影响预期的双击,太小将达不到预期的效果。我在一个方便的位置焊接了盖子的一条腿,在那里它不会与鼠标的内部结构发生冲突,在电路板的铜面上,到 0 伏平面(如果你愿意,接地平面)我钩住了用一点细线激活开关的盖子的另一条腿。我使用了短腿的回收组件。一个新的可能有足够长的腿来到达需要的地方。您将需要一个合适的细尖烙铁来完成这项工作。
如果你不知道电容器。0.1uF 的电容器可以指定为 0.1uF 或 104 或 100nF 或具有棕黑色黄色带。表面贴装类型也是一个不错的选择。用几股细线将其钩住。可以把它粘到板连接面朝上。
我有一个计划 B,我可能会在下次尝试或者当前的计划最终失败时尝试。为 spst PCB 安装触觉薄膜开关放弃微动开关应该可以解决问题。这是键盘和小键盘中使用的开关类型,不会出现此问题。脚印与微动开关完全不同。提供一个 7mm 高的开关,它的高度与现有的微动开关相同。较小的开关需要间隔到正确的高度。将支腿弯曲成与开关体成直角并将其粘在板上,使执行器与微动开关执行器所占据的位置对齐。鼠标按钮必须击中正确的位置。用一些细线连接开关触点,理论上一切都应该是好的。
我已经xserver-xorg-input-evdev为 Ubuntu 14.10构建了一个补丁。我使用了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
Run Code Online (Sandbox Code Playgroud)
编辑:谢谢@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
Run Code Online (Sandbox Code Playgroud)
这个问题由 Jack Ganssle 解释,在这里:http ://www.eng.utah.edu/~cs5780/debouncing.pdf
- 接触反弹过滤。软件需要以某种形式存在于任何应用程序中,从简单的单板计算机到操作系统。
https://www.google.se/?gfe_rd=cr&safe=off#q=%2Bcontact+%2Bbounce+%2Bsoftware&safe=off
随着触点/按钮变老,效果会变得更糟。WD40 可能不是用于电子产品的最佳喷雾剂,还有其他更适合的喷雾剂。谷歌“接触喷雾”。
| 归档时间: |
|
| 查看次数: |
38548 次 |
| 最近记录: |