解决 VMware 中 CentOS 7 鼠标滚轮滚动不流畅问题

📅 2026/8/2 20:05:34 👁️ 阅读次数 📝 编程学习
解决 VMware 中 CentOS 7 鼠标滚轮滚动不流畅问题

环境

  • Windows 10 专业版 22H2
  • VMware Workstation
  • CentOS 7 x86_64
  • VMware 虚拟机
  • X11 图形会话
  • 桌面环境:GNOME 或其他基于 Xorg 的桌面

现象

在 VMware 中运行 CentOS 7 时,鼠标滚轮存在以下问题:

  • 滚动不连续,容易卡顿
  • 滚动时偶尔没有反应
  • 快速滚动时会丢失部分滚轮事件
  • 浏览器、终端和文件管理器中的滚动体验不稳定

检查当前图形会话:

echo $XDG_SESSION_TYPE

输出:

x11

说明当前系统使用的是 X11。imwheel 主要针对 X11 图形系统,因此可以使用该工具处理滚轮事件。

解决思路

Linux 图形系统通常会把鼠标滚轮转换为两个虚拟鼠标按键:

Button4:滚轮向上
Button5:滚轮向下

在 VMware 环境中,虚拟鼠标传递滚轮事件时,部分事件可能无法被 CentOS 或应用程序稳定识别。

imwheel 可以作为一个输入事件处理中间层,对滚轮事件进行拦截和重新发送:

物理鼠标↓
Windows 宿主机↓
VMware 虚拟鼠标↓
CentOS X11↓
imwheel↓
浏览器、终端、文件管理器

通过配置 imwheel,可以让滚轮事件重新按照 Button4Button5 发送给应用程序。

需要注意,imwheel 主要是重新处理和转发滚轮事件,并不是真正的触控板像素级平滑滚动。它更适合解决 VMware 中滚轮事件卡顿、丢失和响应不稳定的问题。

安装 imwheel

尝试使用 YUM 安装

先安装 EPEL 仓库:

sudo yum install -y epel-release

然后尝试安装:

sudo yum install -y imwheel

如果输出以下错误:

No package imwheel available.
Error: Nothing to do

说明当前 CentOS 7 的 EPEL 仓库中没有可用的 imwheel 软件包。

可以检查仓库中是否存在该软件包:

yum list available imwheel

如果输出:

Error: No matching Packages to list

则需要使用源码编译安装。

CentOS 7 已经停止维护,EPEL 7 中不一定还保留 imwheel,即使 EPEL 仓库本身能够正常使用,也不代表其中一定包含该软件包。

源码编译安装

1. 安装编译工具和依赖

sudo yum groupinstall -y "Development Tools"

安装 X11 开发依赖:

sudo yum install -y libX11-devel libXmu-devel libXtst-devel

如果编译过程中提示缺少其他开发库,再根据错误信息安装对应的 *-devel 软件包。

2. 下载源码

进入临时目录:

cd /tmp

下载 imwheel 源码:

curl -fL -o imwheel-1.0.0pre12.tar.gz \
https://downloads.sourceforge.net/project/imwheel/imwheel-source/1.0.0pre12/imwheel-1.0.0pre12.tar.gz

解压:

tar -xzf imwheel-1.0.0pre12.tar.gz

进入源码目录:

cd imwheel-1.0.0pre12

3. 编译和安装

执行配置:

./configure --prefix=/usr

编译:

make

安装:

sudo make install

检查是否安装成功:

which imwheel

正常情况下会输出:

/usr/bin/imwheel

也可以查看版本:

imwheel --version

配置滚轮事件

创建或编辑当前用户的 imwheel 配置文件:

vim ~/.imwheelrc

进入 Vim 后,按下:

i

进入插入模式,然后粘贴以下内容:

".*"
None, Up, Button4, 1
None, Down, Button5, 1
Control_L, Up, Control_L|Button4
Control_L, Down, Control_L|Button5
Shift_L, Up, Shift_L|Button4
Shift_L, Down, Shift_L|Button5

配置内容说明:

".*"

表示对所有应用程序生效。

None, Up, Button4, 1

表示没有按住其他修饰键时,滚轮向上发送一次 Button4 事件。

None, Down, Button5, 1

表示没有按住其他修饰键时,滚轮向下发送一次 Button5 事件。

下面四行用于保留 CtrlShift 与滚轮组合时的行为:

Control_L, Up, Control_L|Button4
Control_L, Down, Control_L|Button5
Shift_L, Up, Shift_L|Button4
Shift_L, Down, Shift_L|Button5

这样可以避免影响浏览器缩放等功能。

保存并退出 Vim:

  1. Esc
  2. 输入:
:wq
  1. 按回车

检查配置文件内容:

cat ~/.imwheelrc

如果能够显示刚才写入的内容,说明配置已经保存成功。

启动 imwheel

先停止已经运行的旧进程:

pkill imwheel

然后直接启动:

imwheel

正常情况下会看到:

INFO: imwheel started (pid=14418)

检查进程:

pgrep -a imwheel

如果输出类似:

14418 imwheel

说明 imwheel 已经正常运行。

在当前 CentOS 7 环境中,直接执行:

imwheel

即可正常启动。

部分旧版本尝试使用:

imwheel -b "4 5"

时可能出现:

imwheel: ERROR: buttons: #1: is not a number!

这通常是当前编译版本对 -b 参数解析异常。此时不需要继续使用该参数,直接运行:

imwheel

即可。

测试滚轮效果

启动 imwheel 后,打开以下任意程序进行测试:

  • 浏览器
  • 文件管理器
  • 终端
  • 文本编辑器

上下滚动鼠标,检查滚动是否恢复正常。

如果需要重新加载配置:

pkill imwheel
imwheel

设置开机自动启动

如果每次登录 CentOS 后都需要手动执行 imwheel,可以将它加入桌面自动启动程序。

创建自动启动目录:

mkdir -p ~/.config/autostart

创建配置文件:

vim ~/.config/autostart/imwheel.desktop

i 进入插入模式,写入:

[Desktop Entry]
Type=Application
Name=imwheel
Exec=imwheel
StartupNotify=false
Terminal=false

保存退出:

:wq

查看文件内容:

cat ~/.config/autostart/imwheel.desktop

下次登录 CentOS 图形桌面时,系统会自动启动 imwheel

也可以手动测试自动启动配置:

pkill imwheel
imwheel

常见问题

1. No package imwheel available

No package imwheel available.
Error: Nothing to do

说明当前 YUM 仓库中没有 imwheel。可以确认 EPEL 是否启用:

yum repolist enabled

如果能够看到:

epel/x86_64

但仍然找不到 imwheel,说明不是仓库未启用,而是软件包不在当前仓库索引中。此时使用源码编译安装。

2. 下载 RPM 返回 404

如果手动下载 RPM 时出现:

curl: (22) The requested URL returned error: 404

说明指定目录中不存在这个 RPM 文件。不要继续使用这个不存在的地址,可以改用源码包编译安装。

3. imwheel 启动后没有效果

先确认当前会话是否为 X11:

echo $XDG_SESSION_TYPE

如果输出:

x11

继续检查进程:

pgrep -a imwheel

检查配置文件:

cat ~/.imwheelrc

确保配置内容至少包含:

".*"
None, Up, Button4, 1
None, Down, Button5, 1

然后重启:

pkill imwheel
imwheel

如果当前使用的是 Wayland,imwheel 可能无法全局拦截和转发输入事件。本文方案主要适用于 X11/Xorg 环境。

原因总结

VMware 提供的是虚拟鼠标设备,鼠标滚轮事件需要经过宿主机、VMware 虚拟硬件、CentOS 图形系统和具体应用程序多个环节。

当滚轮事件在传递过程中出现兼容性问题时,就可能表现为滚动卡顿、丢失或响应不一致。

imwheel 通过拦截并重新发送滚轮事件,改善了 VMware 虚拟鼠标与 CentOS X11 桌面之间的兼容性:

VMware 虚拟鼠标↓
CentOS X11↓
imwheel 重新处理滚轮事件↓
应用程序稳定接收 Button4/Button5

最终使用的核心配置是:

".*"
None, Up, Button4, 1
None, Down, Button5, 1

核心启动命令是:

imwheel

由于 CentOS 7 已停止维护,YUM 仓库中可能无法直接安装 imwheel。在这种情况下,通过源码编译安装,再配合 ~/.imwheelrc 配置和桌面自动启动,可以解决 VMware 中 CentOS 7 鼠标滚轮滚动不流畅的问题。