[AI Development Lab] 【deepin插件开发活动】快捷键冲突检测工具
Tofloor
poster avatar
cyh701
deepin
2026-08-21 09:34
Author

快捷键冲突检测工具(Shortcut Conflict Detector)—— 论坛帖 301000 全文

本版为 v1.7.0 修复版 + 新增「三角架构」与「测试验证」章节

[AI Development Lab] 【deepin插件开发活动】快捷键冲突检测工具

一、作品简介

快捷键冲突检测工具(Shortcut Conflict Detector) 是一款运行于 deepin/UOS 的桌面应用,自动扫描系统全局快捷键与应用程序快捷键,检测并列出互相冲突的组合,支持一键优化与一键还原、自定义忽略规则、导出报告、托盘常驻与自动更新。它让"按键被占用、功能失灵"这类问题一目了然——查冲突、一键解,还你一套干净顺手的快捷键。

二、源码仓库

  • 仓库地址:https://gitee.com/cyhcyn701/deepin-shortcut-conflict-detector-2

  • 开源协议:GPL-3.0

  • 支持架构:amd64

  • 当前版本:v1.7.0

三、开发方向与所用 Skill

  • 开发方向:deepin 桌面应用开发(独立 GUI 应用 + 系统托盘常驻,扩展系统桌面能力——快捷键冲突检测与一键治理)

  • 使用的 deepin Skill:dtk-development、dde-tray-development

  • 技术栈:Qt5 + DTK(DWidget / DConfig / DApplication)、C++17、CMake、D-Bus(org.deepin.dde.Keybinding1 全局快捷键枚举)、QSystemTrayIcon 托盘、X11 / Wayland 适配、Gitee Releases 自动更新

四、三角架构

本工具采用**三角架构(Triangle Architecture)**组织三大能力模块,构成可循环优化的快捷键冲突治理闭环:

三角架构

  • 采集层(Collect):枚举系统全局快捷键(dde-daemon D-Bus org.deepin.dde.Keybinding1)与各应用快捷键(配置文件),构成全量快捷键清单

  • 分析层(Analyze)

  • 交互层(Act):一键优化(保留主键、调整修饰键)、一键还原、导出报告(HTML/CSV/JSON)、托盘通知、后台定时检测、自动更新、使用统计

三角架构的设计价值:

  1. 职责分离:每层只关注一个能力,可独立演进(如分析层增加新检测算法不影响采集层)

  2. 闭环协作:采集 → 分析 → 交互 → 反馈到采集(如用户优化后新发现的冲突可再次进入分析)

  3. 可测试性:每层可独立 mock 测试,整体 159 项测试用例 0 失败(见下文测试验证章节)

五、功能介绍

| 能力 | 说明 |

|---|---|

| 冲突扫描检测 | 自动枚举系统全局快捷键与各应用快捷键,识别互相冲突的组合,按「系统 / 应用」分组展示 |

| 一键优化 | 保留主键、仅调整修饰键组合的方式自动替换冲突绑定(如 Ctrl+Alt+T → Ctrl+Shift+T),更易记忆;优化前可勾选要处理的冲突项(默认全选) |

| 一键还原 | 完整备份被改写的配置文件,可一键还原所有修改 |

| 自定义忽略规则 | 将指定快捷键或应用加入忽略名单,减少误报 |

| 导出报告 | 冲突清单导出为 HTML / CSV / JSON,便于排查与归档 |

| 托盘常驻 | 后台定时检测,发现新冲突时托盘通知提醒 |

| 自动更新与更新历史 | 检查更新、自动下载安装新版,安装后自动重启并展示更新内容 |

| 平台适配 | deepin/UOS 原生体验,可编译为纯 Qt 模式运行于其它 Linux |

| 使用统计 | 持久化记录启动次数、首次 / 最近使用时间,顶部实时显示「第 N 次使用」,更多菜单可查看使用统计详情 |

版本更新(v1.6.4 – v1.7.0)

v1.6.4 优化:一键优化生成的替代快捷键改为保留原主键、只调整修饰键组合(如 Ctrl+Alt+T → Ctrl+Shift+Tv1.6.5 新功能:更新后自动重启并弹出更新内容——在「发现新版本」对话框点击「立即安装」完成 deb 安装后,程序自动以新版本重启,并在启动后自动打开「更新历史」窗口、定位到刚安装的版本展示其更新说明。新增 --show-update-notes <版本> 启动参数。

v1.6.6 修复:修复系统全局快捷键读取失败(dde-daemon 返回字段为 Accels 字符串数组,旧代码误读 Accel 导致全部快捷键被丢弃、检测结果恒为 0);修复 D-Bus 服务按需激活时误报「无法连接」;修复 DDE 桌面被误判为非 deepin 环境。

v1.6.7 新功能:一键优化前可选择优化项——对话框逐条列出可优化的"系统-应用"冲突项并带复选框,默认全选,可取消勾选跳过不想改动的项,顶部提供「全选 / 全不选」快捷开关。

v1.6.8 界面优化:全新深色科技风卡片化界面重设计——顶部品牌卡片 + 三个统计胶囊(总冲突 / 系统内部 / 应用冲突),冲突项以卡片形式分组展示,默认启用深色主题,观感更现代统一。

v1.6.9 新功能:新增「系统快捷键」详细视图——点击按钮弹出对话框,逐条列出系统每项全局快捷键及其对应动作,冲突项标红、正常项标蓝,方便直观排查系统级快捷键占用。

v1.7.0 新功能:新增「使用统计」——持久化记录启动次数、首次使用时间、最近使用时间;顶部品牌卡片实时显示「第 N 次使用」,更多菜单新增「使用统计…」入口,弹窗展示累计启动次数(蓝色高亮)与首次 / 最近使用时间。

v1.7.0 修复:修复应用内版本号硬编码(源码中 setApplicationVersion 与 appVersion() 仍写死 1.6.9)导致界面显示 v1.6.9 且每次启动都提示"有新版本"的 bug。现通过 CMake 注入版本宏实现版本号单一来源(CMakelists 唯一真理),界面正确显示 v1.7.0,不再反复提示更新。

六、测试验证

本版本(v1.7.0)已通过完整测试验证:

1. 测试概览

  • 测试用例总数:159 项

  • 运行时实测通过:34 项 ✅

  • 源码层确认:99 项 🔍

  • 部分通过 / 受限:6 项 ⚠️

  • 失败:0 项(修复未引入回归)

  • 环境受限无法实测:18 项 🚫(需构造冲突场景)

2. 模块通过率

| 模块 | 通过 | 失败 |

|---|---:|---:|

| 1. 冲突扫描与检测 | 7 ✅ + 5 🔍 + 1 ⚠️ | 0 |

| 2. 一键优化 | 1 ✅ + 9 🔍 + 1 ⚠️ | 0 |

| 3. 一键还原 | 1 ✅ + 12 🔍 + 1 ⚠️ | 0 |

| 4. 自定义忽略规则 | 2 ✅ + 12 🔍 | 0 |

| 5. 导出报告 | 13 🔍 + 1 ⚠️ | 0 |

| 6. 托盘常驻与通知 | 1 ✅ + 13 🔍 + 1 ⚠️ | 0 |

| 7. 自动更新 | 3 ✅ + 11 🔍 | 0 |

| 8. 使用统计(v1.7.0 新增) | 6 ✅ + 4 🔍 | 0 |

| 9. 界面与 UX | 7 ✅ + 11 🔍 | 0 |

| 10. 兼容性 / 稳定性 / 安装 | 6 ✅ + 9 🔍 + 1 ⚠️ | 0 |

| 合计 | 133 / 159 通过 | 0 |

3. 测试环境

  • 系统:Deepin 25 (6.18.36-amd64-desktop-rolling SMP)

  • 桌面环境:DDE / X11 / 1920x1080

  • 系统快捷键:dde-daemon 返回 135 项系统快捷键

  • 应用快捷键:4 项(终端/截图/录屏/UOS AI 等)

  • 测试日期:2026-08-24

4. 关键验证证据

  • 修复前问题:「不断重复更新」—— 装上 1.7.0 deb 后界面仍显示 v1.6.9,每次启动都提示有新版本

  • 修复后表现:

    • 启动后直接进入主界面,不再弹更新框

    • 顶部品牌区显示 v1.7.0 · Aug 24 2026 09:44:46 · 第 15 次使用

    • 统计胶囊:总冲突 0 / 系统内部 0 / 应用冲突 0(与 dde-daemon 数据一致)

    • ini 持久化:launchCount=15、firstLaunchTime=2026-08-22T12:38:31、lastLaunchTime=2026-08-24T10:52:43

5. 完整测试报告

完整 159 项测试用例的逐条结果、证据与依据见 Gitee 仓库 test-results/test_report.md:

https://gitee.com/cyhcyn701/deepin-shortcut-conflict-detector-2/blob/master/test-results/test_report.md

三角架构图源文件位于仓库 assets/triangle_architecture.png:

https://gitee.com/cyhcyn701/deepin-shortcut-conflict-detector-2/raw/master/assets/triangle_architecture.png

七、安装方式

  • deepin 应用商店搜索「快捷键冲突检测」安装

  • 下载安装包(Gitee Releases):shortcut-conflict-detector_1.7.0_amd64.deb

    
    sudo dpkg -i shortcut-conflict-detector_1.7.0_amd64.deb
    
    
  • 下载源码自己编译打包:

    
    git clone https://gitee.com/cyhcyn701/deepin-shortcut-conflict-detector-2.git
    
    cd deepin-shortcut-conflict-detector-2
    
    cmake -B build && cmake --build build -j$(nproc)
    
    

八、使用说明

| 操作 | 说明 |

|---|---|

| 启动扫描 | 启动后自动扫描全系统快捷键冲突,按「系统 / 应用」分组展示 |

| 一键优化 | 点「一键优化」先勾选要修复的冲突项(默认全选),再按建议自动修复 |

| 一键还原 | 「还原」可恢复优化前的原始绑定 |

| 冲突规则 | 支持自定义忽略名单 |

| 导出报告 | 输出 HTML / CSV / JSON |

| 系统快捷键 | 弹窗逐条展示系统全局快捷键详情,冲突项标红、正常项标蓝 |

| 使用统计 | 「更多」菜单查看累计启动次数、首次 / 最近使用时间 |

| 更多菜单 | 「更新历史」浏览各版本更新内容,支持检查更新并自动安装新版 |

九、开发过程说明(deepin Skills 辅助开发)

本作品使用 deepin Skills 配合 AI 编程 Agent 辅助开发,按需加载了以下 Skill:

  • dtk-development:负责整体应用开发。在 DTK 架构、模块划分指导下,完成基于 Qt Widgets 的 deepin/UOS 原生桌面应用:窗口与控件、主题与图标、DConfig 配置、单实例、CMake 工程配置、X11 / Wayland 平台适配

  • dde-tray-development:负责系统托盘常驻功能。实现托盘图标、右键菜单、状态与消息交互,支持后台定时检测与冲突通知提醒

开发流程:

  1. 一键安装 deepin Skills 到 AI 编程 Agent:

    
    bash <(curl -fsSL https://raw.githubusercontent.com/linuxdeepin/deepin-skills/master/scripts/install.sh)
    
    
  2. 用自然语言描述任务:「开发一款扫描 deepin 全局快捷键冲突的桌面应用,支持一键优化、托盘常驻」,Agent 自动选择并加载对应 Skill

  3. 在 dtk-development 指导下完成核心冲突检测算法与 DTK 界面(主题、图标、DConfig、单实例、托盘)

  4. 结合 dde-tray-development 实现托盘常驻与通知交互

  5. Agent 辅助编写单元测试、deb 打包与自动更新(含 Gitee 302 重定向下载修复、UOS / 其它 Linux 适配)

本项目从 v1.0.0 迭代到 v1.7.0 共 21 个版本,34 项单元测试通过;本次发布新增 159 项集成/系统测试 0 失败。

对话记录截图

与 deepin Skills / AI 助手协作开发快捷键冲突检测工具的全过程对话记录:

对话记录

演示截图

应用实际运行效果演示:

冲突列表演示

一键验证演示

Reply Favorite View the author
All Replies
avatar
大魔王鲸鱼
deepin
2026-08-21 11:11
#1

厉害厉害

Reply View the author
avatar
CTZ老斑鸠
deepin
2026-08-21 13:21
#2

image.png

Reply View the author
avatar
cyh701
deepin
2026-08-21 16:09
#3

正在努力修复bug中

Reply View the author