Ubuntu Wayland环境下如何禁用蓝牙鼠标侧键(BTN_SIDE/BTN_EXTRA)
在Ubuntu Wayland环境下禁用蓝牙鼠标侧键(BTN_SIDE/BTN_EXTRA)
问题背景
我有一款垂直蓝牙鼠标,侧键(BTN_SIDE/BTN_EXTRA)极易误触,在Ubuntu Wayland环境下尝试禁用却遇到困难。该鼠标被识别为鼠标和键盘设备,但侧键事件来自鼠标。已尝试以下方法但未解决:
- 添加hwdb规则:
evdev:input:b0005v25a7pfaa0* EVDEV_KEY_0113=reserved EVDEV_KEY_0114=reserved - 使用InputRemapper:仅初次生效,重启后失效,推测当时实际运行的是Xorg而非Wayland(Wayland下evtest本不应生效,但当时可用)
- 尝试ratbagd和piper:鼠标不支持自定义配置
- 编写含
mouse_event_filter的内核模块:Wayland似乎独占设备,未生效
可行解决方案
方案1:使用libinput配置规则(Wayland原生支持)
Wayland依赖libinput处理输入设备,可通过自定义libinput配置文件屏蔽特定按键:
- 创建配置文件:
sudo nano /etc/libinput/local-overrides.quirks - 添加以下内容(替换对应的设备ID,可通过
libinput list-devices获取):[Vertical Bluetooth Mouse Override] MatchUdevType=mouse MatchVendor=0x25a7 MatchProduct=0xaa0 MatchBus=bluetooth AttributeEventCodeDisable=BTN_SIDE,BTN_EXTRA - 保存后注销再登录Wayland会话,或直接重启系统。
方案2:修正hwdb规则并重新加载
之前的hwdb规则可能未正确生效,尝试调整后重新加载:
- 创建/修改hwdb文件:
/etc/udev/hwdb.d/90-mouse-sidekeys.hwdb - 写入规则(注意替换为你的设备ID):
(部分设备需用evdev:input:b0005v25a7pfaa0* KEYBOARD_KEY_0113=reserved KEYBOARD_KEY_0114=reservedKEYBOARD_KEY前缀替代EVDEV_KEY) - 更新hwdb并触发udev规则:
sudo systemd-hwdb update sudo udevadm trigger - 重新连接蓝牙鼠标或重启系统。
方案3:使用evremap(Wayland兼容的输入重映射工具)
evremap是Wayland环境下可用的输入重映射工具,可用于屏蔽按键:
- 安装evremap:
sudo apt install evremap - 创建配置文件
~/.config/evremap/config.toml:[[devices]] name = "你的蓝牙鼠标名称" # 通过`libinput list-devices`获取准确名称 [[devices.remap]] input = ["BTN_SIDE", "BTN_EXTRA"] output = [""] # 空值表示屏蔽该按键事件 - 启用并启动服务:
systemctl --user enable evremap systemctl --user start evremap
关键注意事项
- Wayland compositor会独占输入设备,因此evtest工具在Wayland下无法直接访问设备,之前evtest可用时确实处于Xorg环境。
- 确保设备ID准确:可通过
libinput list-devices或udevadm info -q all -n /dev/input/eventX(替换eventX为鼠标对应的设备节点)获取Vendor/Product ID。
内容的提问来源于stack exchange,提问作者Thomas




