引言
在 KDE Plasma Wayland 中开启“自然滚动”后,鼠标滚轮方向可能完全没有变化。
系统设置界面显示选项已经启用,配置文件中也可能存在:
NaturalScroll=true
但浏览器和文件管理器仍然按照传统方向滚动。
这种现象不一定是 KDE 没有保存配置,也不一定是 libinput 不支持自然滚动。更常见的原因是:设置写到了错误的逻辑设备节点。
一、一个鼠标不一定只有一个输入节点
Linux通过 /dev/input/event* 暴露输入设备。
一个普通USB鼠标可能只有一个指针节点,但无线鼠标、蓝牙鼠标和多功能接收器经常生成多个设备:
2.4G Mouse
2.4G Mouse Consumer Control
2.4G Wireless Mouse
Wireless Receiver Keyboard
System Control
这些名称看起来相似,但用途完全不同。
其中可能分别负责:
- 鼠标移动
- 滚轮
- 多媒体按键
- 电源键
- 浏览器前进后退键
- 键盘模拟输入
KDE会按设备名称、vendor ID、product ID保存设置。如果自然滚动配置写到了 Consumer Control 节点,而真正滚轮来自另一个 Mouse节点,实际滚动方向就不会变化。
二、为什么设置界面容易选错设备
系统设置通常会列出多个相似设备名称。用户看到“2.4G Mouse”后开启自然滚动,但当前真正产生滚轮事件的设备可能叫:
2.4G Wireless Mouse
两者甚至可能来自两个不同的USB接收器。
KWin保存的配置段类似:
[Libinput][厂商ID][产品ID][设备名称]
NaturalScroll=true
例如:
[Libinput][7847][102][2.4G Mouse]
NaturalScroll=true
如果实际鼠标对应:
vendor=12994
product=102
name=2.4G Wireless Mouse
前面的配置就不会应用到当前设备。
三、不要单独相信 libinput list-devices
常见检查方式是:
sudo libinput list-devices
输出中可能看到:
Nat.scrolling: disabled
但这并不能证明 KWin 当前没有启用自然滚动。
libinput list-devices 创建的是自己的 libinput 上下文,显示的是设备默认值或该上下文中的状态。KWin在Wayland会话中拥有独立的运行时配置。
因此应区分:
libinput默认值
≠ KWin当前运行值
KDE Wayland 下更有价值的是 KWin D-Bus 属性。
四、找到真正产生滚轮事件的节点
最可靠的方法是逐个监听候选设备:
sudo libinput debug-events --device /dev/input/event7
移动鼠标并滚动滚轮。
如果看到:
POINTER_MOTION
POINTER_SCROLL_WHEEL
说明这个节点是真正的鼠标指针节点。
再检查另一个候选设备:
sudo libinput debug-events --device /dev/input/event11
哪个节点产生实际滚轮事件,哪个才是需要修改的设备。
也可以查看设备的 udev 属性:
udevadm info \
--query=property \
--name=/dev/input/event11
重点关注:
ID_VENDOR_ID
ID_MODEL_ID
ID_INPUT_MOUSE
ID_INPUT_KEYBOARD
ID_PATH
五、读取KWin中的设备状态
列出 KWin 输入设备对象:
qdbus6 org.kde.KWin |
grep '^/org/kde/KWin/InputDevice/'
设备对象通常类似:
/org/kde/KWin/InputDevice/event11
读取自然滚动属性:
busctl --user get-property \
org.kde.KWin \
/org/kde/KWin/InputDevice/event11 \
org.kde.KWin.InputDevice \
naturalScroll
可能输出:
b false
这表示 KWin 当前确实没有为该节点启用自然滚动。
检查设备是否支持该功能:
busctl --user get-property \
org.kde.KWin \
/org/kde/KWin/InputDevice/event11 \
org.kde.KWin.InputDevice \
supportsNaturalScroll
如果返回:
b true
说明该设备具备自然滚动能力,只是当前没有开启。
六、修复运行时设置
可以通过 KDE系统设置重新选择正确设备,也可以直接修改KWin运行时属性:
busctl --user set-property \
org.kde.KWin \
/org/kde/KWin/InputDevice/event11 \
org.kde.KWin.InputDevice \
naturalScroll b true
随后验证:
busctl --user get-property \
org.kde.KWin \
/org/kde/KWin/InputDevice/event11 \
org.kde.KWin.InputDevice \
naturalScroll
预期:
b true
此时应立即在以下位置测试:
- Dolphin长列表
- 浏览器网页正文
- 文本编辑器滚动区域
不要用音量图标、滑块或特殊控件判断,因为某些控件不会遵循普通滚动视图的自然滚动逻辑。
七、检查持久保存
运行时设置生效后,还需要检查:
~/.config/kcminputrc
搜索当前设备:
grep -A10 -B1 \
'\[Libinput\].*2.4G Wireless Mouse' \
~/.config/kcminputrc
理想内容:
[Libinput][12994][102][2.4G Wireless Mouse]
NaturalScroll=true
如果只修改了运行时属性,但配置没有保存,重启后可能恢复原状。
八、event编号不是永久身份
即使本次确认 /dev/input/event11 是正确设备,也不能把 event11 当作永久不变的身份。
以下操作都可能导致编号变化:
- 重启
- 重新插拔USB接收器
- 增加或删除其他输入设备
- 从USB切换到蓝牙
- 内核设备枚举顺序变化
长期排查时,应该使用:
设备名称
+vendor ID
+product ID
+udev路径
而不是只记住 event11。
结语
KDE Wayland自然滚动不生效时,最关键的问题往往不是“设置有没有保存”,而是“设置保存到了哪个设备”。
完整排查链路应是:
确认真实滚轮节点
→ 读取KWin运行时属性
→ 开启naturalScroll
→ 检查kcminputrc持久配置
→ 重启后再次验证
Wayland下输入设备由KWin统一管理,过去依赖 xinput 的思路已经不再适用。