You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

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配置文件屏蔽特定按键:

  1. 创建配置文件:
    sudo nano /etc/libinput/local-overrides.quirks
    
  2. 添加以下内容(替换对应的设备ID,可通过libinput list-devices获取):
    [Vertical Bluetooth Mouse Override]
    MatchUdevType=mouse
    MatchVendor=0x25a7
    MatchProduct=0xaa0
    MatchBus=bluetooth
    AttributeEventCodeDisable=BTN_SIDE,BTN_EXTRA
    
  3. 保存后注销再登录Wayland会话,或直接重启系统。

方案2:修正hwdb规则并重新加载

之前的hwdb规则可能未正确生效,尝试调整后重新加载:

  1. 创建/修改hwdb文件:/etc/udev/hwdb.d/90-mouse-sidekeys.hwdb
  2. 写入规则(注意替换为你的设备ID):
    evdev:input:b0005v25a7pfaa0*
     KEYBOARD_KEY_0113=reserved
     KEYBOARD_KEY_0114=reserved
    
    (部分设备需用KEYBOARD_KEY前缀替代EVDEV_KEY
  3. 更新hwdb并触发udev规则:
    sudo systemd-hwdb update
    sudo udevadm trigger
    
  4. 重新连接蓝牙鼠标或重启系统。

方案3:使用evremap(Wayland兼容的输入重映射工具)

evremap是Wayland环境下可用的输入重映射工具,可用于屏蔽按键:

  1. 安装evremap:
    sudo apt install evremap
    
  2. 创建配置文件~/.config/evremap/config.toml
    [[devices]]
    name = "你的蓝牙鼠标名称" # 通过`libinput list-devices`获取准确名称
    [[devices.remap]]
    input = ["BTN_SIDE", "BTN_EXTRA"]
    output = [""] # 空值表示屏蔽该按键事件
    
  3. 启用并启动服务:
    systemctl --user enable evremap
    systemctl --user start evremap
    

关键注意事项

  • Wayland compositor会独占输入设备,因此evtest工具在Wayland下无法直接访问设备,之前evtest可用时确实处于Xorg环境。
  • 确保设备ID准确:可通过libinput list-devicesudevadm info -q all -n /dev/input/eventX(替换eventX为鼠标对应的设备节点)获取Vendor/Product ID。

内容的提问来源于stack exchange,提问作者Thomas

火山引擎 最新活动