用全局组合快捷键,通过 DDC/CI 切换显示器的 HDMI、DisplayPort、USB-C 等输入源。
macOS 菜单栏 · Windows 系统托盘 · 可选登录自启动 · MIT 开源
A native macOS menu-bar and Windows tray app for switching monitor inputs over DDC/CI, with configurable global shortcuts and optional launch at login.
English · 下载最新版 · Windows 使用说明 · MIT 许可证
- 全局组合快捷键:为每个输入源分别录制快捷键,也可从菜单栏或托盘菜单触发。
- 多个显示器与切换动作:按稳定设备标识保存目标;设备断开时拒绝切换,不自动改选其他显示器。
- 输入源预设与自定义代码:支持常见 HDMI、DisplayPort、USB-C 预设和 0–65535 十进制代码;macOS 另提供 LG 兼容控制方式。
- 后台驻留与登录自启动:关闭设置窗口后继续响应快捷键;两平台均可选择“登录后自动启动”,默认关闭。
- 本地保存设置:更新应用保留已有输入源与快捷键;提供损坏设置的备份重置和不控制硬件的演示模式。
当前版本:v1.2.0,macOS 与 Windows 均已加入登录后自动启动选项。
| 平台 | 系统要求 | 下载 | 使用说明 |
|---|---|---|---|
| macOS | macOS 13+,Apple Silicon(M1 及以后) | macOS arm64 ZIP | macOS 开始使用 |
| Windows | Windows 10/11,x64 | Windows x64 ZIP | Windows 完整说明 |
两端都需要支持 DDC/CI 的外接显示器,并在显示器自身菜单中开启 DDC/CI;线材、扩展坞和驱动需要能够传递控制信号。预设代码不保证适用于每个型号。Windows 版解压即可运行,无需额外安装 .NET、Python 或 Visual C++ 运行时,也无需管理员权限。两平台各自保存配置。
先把应用放在准备长期保存的位置,再在设置窗口勾选 “登录后自动启动”。勾选或取消立即生效,无需保存切换动作;默认关闭,仅影响当前用户。登录后加载已保存的快捷键并驻留菜单栏或托盘,不会自动发送输入源切换命令。
| 平台 | 设置与注意事项 |
|---|---|
| macOS | 建议放在“应用程序”中。若提示需要批准,点击“系统登录项…”并在系统设置中允许。 |
| Windows | 移动程序后,关闭再开启该选项以更新路径。复选框显示启动项是否已注册;若曾在任务管理器禁用,需在“设置 → 应用 → 启动”中重新允许。 |
演示模式禁用自启动选项。卸载前请先取消该选项。实际重启登录的验证范围见验证记录。
- 解压 Windows 包,把文件夹放到固定位置,双击
DDCSwitcher.exe。 - 在显示器菜单中启用 DDC/CI,点击“刷新显示器”;建议直连并使用扩展显示模式。
- 添加动作,选择显示器和输入源,录制 Ctrl+Alt+1 等组合键,再点击“保存并启用”。
- 为其他输入源添加不同快捷键。关闭窗口后程序驻留托盘;双击托盘图标可打开设置,右击可切换输入源或退出。
完整的输入代码、连接限制、配置位置及构建步骤见 Windows 使用说明。
- 解压应用包,把
DDCSwitcher.app放在“应用程序”或你希望长期保存的位置,然后双击打开。 - 在显示器自己的菜单中打开 DDC/CI。连接显示器后,在应用设置中点击“刷新显示器”。
- 点击“+ 添加”,选择目标显示器及输入源,例如“工作电脑 · HDMI 1”。
- 点击快捷键按钮,按下组合键,例如 ⌃⌥⌘1。快捷键需包含 Command(⌘)或 Control(⌃),按 Esc 可取消录制。
- 点击“保存并启用”。也可以点击“保存并切换此动作”,立即发送一次切换命令。
- 为另一个输入源再建一个动作,例如 USB-C → ⌃⌥⌘2。
关闭设置窗口后,应用继续在菜单栏运行。点击显示器图标可切换输入源、打开设置或退出。退出后快捷键释放。第一次运行没有预设快捷键,也不会自动切换显示器。
需要随登录启动时,按上方登录后自动启动说明开启即可。macOS 版无需安装 Homebrew 或 Python,也不需要辅助功能或屏幕录制权限。
本地构建采用临时签名,未使用 Apple Developer ID 公证。若 macOS 拦截你确认来源的应用,可在尝试打开后进入“系统设置 → 隐私与安全性”中使用系统提供的打开选项。本项目不要求关闭 Gatekeeper。
设置中的下拉菜单提供这些常见值;它们不保证适用于每个型号。具体型号可使用自定义十进制代码(0–65535)。
| 输入源 | 标准 DDC/CI | LG 兼容方式(仅 macOS) |
|---|---|---|
| DisplayPort 1 | 15 | 208 |
| DisplayPort 2 | 16 | 209 |
| HDMI 1 | 17 | 144 |
| HDMI 2 | 18 | 145 |
| USB-C / DP 3 | 27 | 210 |
先选择控制方式,再选对应输入源预设。改变控制方式不会擅自改写输入代码;请重新选择预设或填写自定义代码。USB-C 可能在显示器固件中被当作 DisplayPort,需以实机结果为准。
- 切到另一台电脑后,原 Mac 可能无法再切回。 有的显示器会断开非当前输入端口的视频链路或 DDC 通路;这时只能通过显示器按键、遥控器或另一台电脑发命令切回。该工具不能跨越已断开的连接。
- “切换命令已发送”表示控制组件成功完成写入。DDC 写命令通常没有可靠的输入切换确认;是否生效请观察显示器。
- 列出显示器只说明系统能枚举到它,不代表线材、扩展坞或显示器一定允许 DDC 控制。无效时可尝试直连 USB-C / DisplayPort、其他线材,以及显示器的其他输入代码。
- 采用每个输入源一个快捷键,不依赖显示器回报当前输入。按键按照物理键位保存;某些功能键需要同时按 Fn。
- 快捷键冲突会在保存时提示;保存失败会保留原有设置和注册。某些前台应用或系统保留组合可能拦截按键,请换组合键测试。
- 同一时间只发一个切换动作,并抑制短时间连续触发。显示器断开后拒绝执行,不会自动改为操作其他显示器。
- 设置仅保存在
~/Library/Application Support/DDCSwitcher/settings.json。损坏文件不会被静默覆盖,可用设置窗口中的备份重置按钮恢复。更新应用后设置仍会保留。 - 卸载前先取消“登录后自动启动”或在系统设置移除本应用的登录项,再从菜单栏退出并移走应用。若不再需要配置,可手动移走上述设置文件夹。
需要 Xcode 或 Apple Command Line Tools(Swift、clang、make、codesign、iconutil)。无外部 Swift 包依赖,m1ddc 源码与许可证已包含。
bash scripts/test.sh
bash scripts/build.sh
open dist/DDCSwitcher.app产物:dist/DDCSwitcher.app。脚本只在项目内创建构建缓存与产物。构建目标为 arm64,最低部署版本为 macOS 13。
完整集成自检(需要已登录的 macOS 图形会话):
bash scripts/test.sh --integration自检注册临时全局热键,并通过 Carbon 事件到模拟 DDC 后端验证完整流程,不发送真实 DDC 写入。
安全的界面演示模式(模拟显示器,配置与命令日志写入指定文件夹):
open dist/DDCSwitcher.app --args --demo "$PWD/.build/demo"演示模式窗口明确标注“不控制硬件”。退出演示应用后,正常双击应用即可控制真实显示器。
见 docs/VERIFICATION.md。真实显示器输入切换仍需在目标显示器上完成验收。
主程序使用 MIT 许可证,见 LICENSE;第三方声明见 THIRD_PARTY.md。m1ddc 的官方源码与接口说明:https://github.com/waydabber/m1ddc