在在这里提出我的问题之前我已经搜索了一段时间,但仍然找不到任何答案。
我注意到 Linux 上的鼠标滚动处理通常很差(也许只是 Gnome)。
我在 Windows 10 主机下的 VirtualBox VM 上运行 Fedora 28。我注意到,当鼠标不动时,使用鼠标滚轮滚动效果非常好,但每当我开始移动鼠标时,滚动根本不起作用,直到鼠标再次不动为止。
你们中有人知道如何使其在移动鼠标时也能工作吗?我是否缺少某些配置或其他内容?
我必须承认我不是一个可靠的 Linux 用户,而且我对外围设备配置了解不多。
答案1
我发现了这个线程 https://bbs.archlinux.org/viewtopic.php?id=223470
基本上,如果我xev | grep -e "ButtonPress" -e "ButtonRelease"
在滚动时运行并将鼠标移到窗口上,我可以清楚地看到事件,这意味着这是桌面环境/窗口管理器问题。
人们在这里讨论更多关于这个问题的信息https://gitlab.freedesktop.org/xorg/driver/xf86-input-libinput/issues/9
如果我只是firefox
从终端启动,我会在移动鼠标时遇到滚动事件被忽略的情况,但如果我这样做,GDK_CORE_DEVICE_EVENTS=1 firefox
那么一切都会按预期进行。
线程位于https://forums.virtualbox.org/viewtopic.php?f=3&t=79002&start=15包含来自 bugmenot 用户的更有趣的回复:
运行xinput
应该显示 X 认为正在发送事件的设备:
$ xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ VirtualBox mouse integration id=9 [slave pointer (2)]
⎜ ↳ VirtualBox USB Tablet id=10 [slave pointer (2)]
⎜ ↳ ImExPS/2 Generic Explorer Mouse id=12 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Sleep Button id=7 [slave keyboard (3)]
↳ Video Bus id=8 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=11 [slave keyboard (3)]
VirtualBox mouse integration
显然,鼠标事件在和设备之间划分VirtualBox USB Tablet
。其中一个接收移动事件,而另一个接收滚动事件。在某些应用程序中,一旦事件源变为活动状态,另一个事件源就会被忽略。
解决方案是暂时禁用VirtualBox mouse integration
(上面的列表中的 id=9)
xinput disable 9
或者完全通过添加文件来完成,例如/usr/share/X11/xorg.conf.d/50-vbox-mouse-fix.conf
:
Section "InputClass"
Identifier "Fix VBox scroll wheel"
MatchProduct "VirtualBox mouse integration"
Option "Ignore" "on"
EndSection
(该MatchProduct
指令正是 的字符串输出xinput
)。
答案2
安装轮子包解决了我的问题。
百胜安装 imwheel (fedora)