Skip to content

About

通过 DDC/CI 和全局快捷键切换显示器输入源。原生 macOS 菜单栏 / Windows 托盘应用,支持 HDMI、DisplayPort、USB-C、自定义输入代码与登录后自动启动。MIT 开源。

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

DDC Switcher · 显示器输入源快捷切换

用全局组合快捷键,通过 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 完整说明

SHA-256 校验文件 · 全部版本

两端都需要支持 DDC/CI 的外接显示器,并在显示器自身菜单中开启 DDC/CI;线材、扩展坞和驱动需要能够传递控制信号。预设代码不保证适用于每个型号。Windows 版解压即可运行,无需额外安装 .NET、Python 或 Visual C++ 运行时,也无需管理员权限。两平台各自保存配置。

登录后自动启动

先把应用放在准备长期保存的位置,再在设置窗口勾选 “登录后自动启动”。勾选或取消立即生效,无需保存切换动作;默认关闭,仅影响当前用户。登录后加载已保存的快捷键并驻留菜单栏或托盘,不会自动发送输入源切换命令。

平台 设置与注意事项
macOS 建议放在“应用程序”中。若提示需要批准,点击“系统登录项…”并在系统设置中允许。
Windows 移动程序后,关闭再开启该选项以更新路径。复选框显示启动项是否已注册;若曾在任务管理器禁用,需在“设置 → 应用 → 启动”中重新允许。

演示模式禁用自启动选项。卸载前请先取消该选项。实际重启登录的验证范围见验证记录。

Windows 开始使用

  1. 解压 Windows 包,把文件夹放到固定位置,双击 DDCSwitcher.exe。
  2. 在显示器菜单中启用 DDC/CI,点击“刷新显示器”;建议直连并使用扩展显示模式。
  3. 添加动作,选择显示器和输入源,录制 Ctrl+Alt+1 等组合键,再点击“保存并启用”。
  4. 为其他输入源添加不同快捷键。关闭窗口后程序驻留托盘;双击托盘图标可打开设置,右击可切换输入源或退出。

完整的输入代码、连接限制、配置位置及构建步骤见 Windows 使用说明。

macOS 开始使用

  1. 解压应用包,把 DDCSwitcher.app 放在“应用程序”或你希望长期保存的位置,然后双击打开。
  2. 在显示器自己的菜单中打开 DDC/CI。连接显示器后,在应用设置中点击“刷新显示器”。
  3. 点击“+ 添加”,选择目标显示器及输入源,例如“工作电脑 · HDMI 1”。
  4. 点击快捷键按钮,按下组合键,例如 ⌃⌥⌘1。快捷键需包含 Command(⌘)或 Control(⌃),按 Esc 可取消录制。
  5. 点击“保存并启用”。也可以点击“保存并切换此动作”,立即发送一次切换命令。
  6. 为另一个输入源再建一个动作,例如 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。损坏文件不会被静默覆盖,可用设置窗口中的备份重置按钮恢复。更新应用后设置仍会保留。
  • 卸载前先取消“登录后自动启动”或在系统设置移除本应用的登录项,再从菜单栏退出并移走应用。若不再需要配置,可手动移走上述设置文件夹。

macOS 源码构建

需要 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

About

通过 DDC/CI 和全局快捷键切换显示器输入源。原生 macOS 菜单栏 / Windows 托盘应用,支持 HDMI、DisplayPort、USB-C、自定义输入代码与登录后自动启动。MIT 开源。

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages