滚动时鼠标滚轮跳动不稳定。

我有一个小问题,真的很烦人,想知道是否有可能修复它。
我正在使用最新版本的Ubuntu 10.10,当我在页面上上下滚动时,特别是在Google Chrome中(也包括文件夹等),页面会随着我的滚动而上下闪烁。
鼠标本身没有问题,在其他操作系统中运行良好,但在Ubuntu 10.10中,它既不流畅又跳跃。
要准确描述它,就像页面有20个滚动跳跃一样,通常你滚动鼠标滚轮一次,它会精确地向下移动一页,但如果我滚动大约5次,它会来回跳动。
希望你能理解并帮助我解决这个让人头疼的问题...

1这仍然是一个问题。我在Ubuntu 12.04 LTS 64位版本上也遇到了同样的困扰。就像你所描述的那样,完全一样。我猜这应该提交给错误跟踪器,而不是Ask Ubuntu。 - bakytn
在14.04.2版本中仍存在问题,有人找到了适当的解决方法吗?由于这个问题已经存在3年了,我将提出一个新的问题。 - Mark Kirby
4我也遇到了这个问题,我正在使用20.04.02LTS版本。如果我更新,前几天可能没有问题,但之后又会重新开始出现。 - Sudhakar Krishnan
1我也是。版本="20.10 (Groovy Gorilla)"。 - Snowcrash
2我也是。版本22.04。鼠标滚轮在我切换应用程序时工作正常。第一次向下滚动滚轮可以将页面滚动到底部,第一次向上滚动滚轮可以将页面滚动到顶部。 - Sergio Belevskij
9个回答

以上的解决方案对我来说都没有起作用,然而...
对我来说,这个问题的解决方法(我遇到了几个月的问题!)有点超现实,就像大多数人一样,我不相信直到我真的尝试了:
原来一些微软鼠标存在滚轮故障。
试试拔掉USB线或者插头,然后重新插上。
就是这样!
现在我的鼠标正常移动(每次一行,而不是半个屏幕!)
即使我使用一个4口屏幕/键盘/鼠标KVM切换器,这个方法也有效!太棒了!

1同样的情况在这里,尤其是如果你有一个无线鼠标,而接收器却连接不上,导致你的鼠标超出了范围... - sarvesh.lad
3这太神奇了...它竟然为我解决了问题,而重启却没有。谢谢! - Tamás Szelei
我也是。我的鼠标连接在键盘的USB上,拔插后滚轮完全正常工作。 - cantoni
它对我的上一个鼠标有效,但对我的新鼠标无效... - Ricky Robinson
只是为了提供一些额外的搜索关键词:这个解决方案修复了在18.04(POP_OS)中使用Microsoft Sculpt鼠标时的问题。谢谢@michaelDurrant。 - PatKilg
这对我的普通USB无线鼠标没有起作用。 - Snowcrash
我真的很惊讶。同时,Logitech MX Master 2S 在 openSUSE Tumbleweed/KDE Plasma 5 上也能正常工作。 - Gerold Broser

是的,拔下USB连接然后重新插上。这对我起作用了。在寻找答案的过程中搜索了那么多次,忍受了那么长时间!

我有一个双系统,Ubuntu 11.10和Windows 7,并且刚刚添加了一个微软无线3500鼠标。当我用Windows启动时,它会安装一些驱动程序。当我回到Ubuntu时,滚轮滚动变得不稳定。我拔掉了USB接收器,重新插入后一切恢复正常。我想可能是鼠标本身从Windows驱动程序中设置了一些参数。但是重新连接鼠标的解决方法对我来说有效。

GTK根据窗口的大小动态计算鼠标滚轮滚动速率(滚动的行数)。不幸的是,它目前还不允许任何自定义,并且已收到了很多关于此问题的错误报告。
顺便说一句,如果你有兴趣测试我所说的,请将窗口调整得非常小,只显示一行。尝试滚动鼠标滚轮,你会发现每次滚动都只滚动一行。

真有意思。一个小窗口以较小的跳动滚动,这使得它更加令人惊讶,不需要改变曝光度。 - Tim Richardson

对我来说,解决方法是清洁鼠标内部。

正确的做法是仔细拆开它,并清除在鼠标滚轮附近积聚的头发和灰尘。我只是往滚轮周围的缝隙里用力吹了一下。它立即恢复正常。


我的鼠标是A4Tech(G3-760N)。我尝试了上述所有方法——调整软件设置、拔掉USB接收器,但都没有解决问题。最后,我打开并清洁了鼠标滚轮(吹了一下),现在它正常工作了!说实话,它并不很脏,但我猜可能是眼睛难以察觉的灰尘或者滚轮有些位移导致的。简直像魔术一样! - Jordan Enev

我曾经遇到过一个类似的问题,我的鼠标还很新(半年左右)。在向上滚动时,鼠标也会混入一些向下的事件。反之亦然。 起初我以为问题出在驱动程序上。但这些错误在Windows系统中也是可见的。
最后我拆开了鼠标,发现它非常干净。但当我用力吹气进入编码组件的轮子上方的微小缝隙时,它开始正确地生成事件。
因此,我建议大家尝试在其他操作系统上使用鼠标,如果仍然无法解决问题,那么即使周围看起来很干净,也可以尝试“清洁”编码器。

严肃地说,因为这个问题,我至少扔掉了3个鼠标,现在我通过这种方法解决了我的当前鼠标的问题。 谢谢! - Griffin

我遇到了差不多相同的问题。当我非常非常慢地滚动滚轮时,它可以正常工作,在gedit中每次滚动五行。但是当我滚动得更快时,它会随机地前进、后退、前进、后退,导致你在滚动一圈后通常还是停留在差不多相同的位置。在Windows系统中,没有驱动程序也能完美运行。这是一款Thrust移动蓝牙鼠标。

我有一个猜测,可能是什么问题。

首先,这是一个具有离散位置的滚轮。这意味着当快速滚动时,滚轮会以更快的速度快速滚动,因为离散位置起到了制动的作用。

我认为鼠标内部的硬件无法很好地区分前进和后退以及快速滚动。我了解电子鼠标的内部工作原理,这种解释是合理的。

当两个光线穿过光电接收器的辐条时,后者只能知道更多或更少的光,并根据此来决定滚轮的方向,即使滚轮以相同的速度转动,编写这样的软件也可能很困难。之所以在Windows的通用驱动程序中没有问题,是因为微软自己制造的鼠标也存在同样的问题。

解决方案

写一个驱动程序的模式,在检测到鼠标滚轮快速在前后之间切换时,它将转变为该模式。在这种模式下,驱动程序将区分与上次相反的方向,比如说,在一个包含最近五个元素的环形缓冲区中。

我遇到了完全相同的问题。 有时候我往下滚动屏幕,它会突然跳回上面。
操作系统:版本="20.10 (Groovy Gorilla)" 鼠标:一款普通的USB无线鼠标
我尝试了另一款来自不同制造商的普通USB无线鼠标,问题变得更糟了。
我的向上滚轮是按钮5,所以:
xev | grep -B 2 "button 5"

每次我向上滚动一格,它都可靠地输出两个事件。
例如:
--
ButtonPress event, serial 37, synthetic NO, window 0x7000001,
    root 0x7a5, subw 0x0, time 126819928, (119,90), root:(264,229),
    state 0x0, button 5, same_screen YES
--
ButtonRelease event, serial 37, synthetic NO, window 0x7000001,
    root 0x7a5, subw 0x0, time 126819928, (119,90), root:(264,229),
    state 0x1000, button 5, same_screen YES

奇怪的是,一个鼠标比另一个更糟糕。需要注意的是,坏的鼠标非常糟糕,有时候你不停地向上滚动,它却在中间跳来跳去。
所以,我尝试了另一个鼠标(与第一个完全相同),结果完美无缺。
然后,我尝试测量鼠标中的电池电压,以检查是否可能是信号的问题。
好的鼠标:1.24V 40% 中等的鼠标:1.32V 60% 坏的鼠标:1.40V 70%
所以电池与问题无关。 为了排除我的电池测试仪可能存在问题的可能性,我甚至将好的鼠标中的电池与坏的鼠标中的电池互换,但问题并未解决。
有趣的是,在坏的鼠标上,我发现偶尔会出现“按钮4”的事件,即使我在向上滚动。例如,我看到很多这样的事件:
xev | grep -B 2 "button 4"

我打开了鼠标(这并不像看起来那么容易),并对滚轮吹了一下。
重新组装后,效果明显好转,这可能是因为滚轮上的灰尘。也就是说,当向上滚动时,只会偶尔触发"按钮4"事件,这可能是由于我无法轻松进入鼠标而错过了一些残留的灰尘。
总结一下,通过测试我拥有的3只鼠标,问题实际上出在鼠标和滚轮上的灰尘,而不是Ubuntu系统。也就是说,原本甚至无法正常滚动的坏鼠标现在运行良好。

尽管我在滚轮上用力吹气对我有用,但自从我使用Linux以来,我找到了一个替代方法,这可能对仍然遇到此问题的任何人都有用:中键滚动,就像流行浏览器上的自动滚动功能。

我找到了一个Python脚本,它尝试为当前连接的每个鼠标应用中键滚动功能,使用xinputlibinput命令库,你可以在这里的GitHub链接找到它。

基本上,命令是:
xinput set-prop [MOUSE_ID] "libinput Scroll Method Enabled" 0, 0, 1
其中MOUSE_ID是你的鼠标在xinput list输出中看到的ID。