首先用xev命令验证中键是否被X11捕获:执行xev | grep -A2 ButtonPress,在弹出窗口中按下中键,若输出button 2则信号已送达,问题在绑定层;否则需排查硬件或第三方软件劫持。

确认中键是否被系统识别
鼠标中键(滚轮按下)在统信UOS中失效,首先需验证它是否被底层X11正确捕获,而非直接归因为驱动或硬件故障。很多情况下中键信号已发出但未绑定功能,导致点击无声无响应。
按 Ctrl+Alt+T 打开终端,执行 xev | grep -A2 ButtonPress → 将鼠标光标移入弹出的灰色窗口 → 用力按下中键(滚轮),观察终端是否输出类似 button 2 的行。
若无任何 button 2 输出,说明中键物理信号未送达系统,跳转至硬件排查;若出现 button 2 但桌面无反应,则问题出在功能绑定层,继续下一步。
重映射中键为有效动作
统信UOS默认不为 button 2 分配行为,尤其在Logitech、Razer等带宏功能的鼠标上,中键常被固件设为“无操作”或“DPI切换”,需手动绑定。
方法一:映射为粘贴(最常用)
执行:xinput set-button-map $(xinput list | grep -i mouse | head -n1 | grep -o 'id=[0-9]\+' | cut -d= -f2) 1 2 3 4 5 6 7 2 9 → 这条命令确保 button 2 保持原值,不被屏蔽;随后运行:gdbus call --session --dest com.deepin.daemon.Keybinding --object-path /com/deepin/daemon/Keybinding --method com.deepin.daemon.Keybinding.AddCustomShortcut "middle-paste" "xdotool click 2" "Button2"。
方法二:映射为浏览器后退(适合办公场景)
先安装 xdotool:sudo apt install xdotool → 创建脚本:echo 'xdotool key XF86Back' > ~/.middle-back.sh && chmod +x ~/.middle-back.sh → 绑定:gdbus call --session --dest com.deepin.daemon.Keybinding --object-path /com/deepin/daemon/Keybinding --method com.deepin.daemon.Keybinding.AddCustomShortcut "middle-back" "~/.middle-back.sh" "Button2"。
【注意:Button2 是固定键名,不可写成 “b:2” 或 “2”,否则绑定失败】
修复Wayland会话下的中键兼容性
若你使用的是Wayland会话(登录界面选择“统信UOS (Wayland)”),xinput 和 xdotool 将完全失效,所有按钮映射必须通过底层协议重写。
第一步:确认当前会话类型
终端执行:loginctl show-session $(loginctl | grep current | awk '{print $1}') -p Type | grep -q "wayland" && echo "Wayland" || echo "X11"。
第二步:仅限Wayland → 编辑配置文件:mkdir -p ~/.config/dde-daemon/keybinding → 创建 ~/.config/dde-daemon/keybinding/middle-button.json,内容为:{"name":"middle-button","command":"xdotool click 2","key":"Button2","enabled":true}。
第三步:重启 dde-daemon 服务:killall dde-daemon && nohup dde-daemon & → 中键点击后等待3秒,再测试粘贴效果。
这一步操作起来很简单,直接把文件保存后执行 killall 即可生效,无需重启系统。
检查并禁用冲突的第三方鼠标软件
部分用户安装过 Logitech Options、Razer Synapse 或 KeymouseGo 等工具,其后台进程会劫持 button 2 并设为空操作,导致系统层完全收不到事件。
执行:ps aux | grep -E "(logi|razer|keymouse)" → 若发现相关进程(如 logioptionsd、razercfg-daemon),立即终止:sudo pkill -f logioptionsd; sudo pkill -f razercfg-daemon。
然后重新运行 xev 测试中键 —— 若此时出现 button 2 输出,说明正是这些软件屏蔽了原始信号。
【关键前提:必须在终止进程后再启动 xev,否则旧监听仍占用输入通道】

















