Apple Silicon Mac / Windows 命令行切换外置显示器输入源
date
Dec 30, 2022
slug
switching-input-sources-between-windows-apple-silicon-m1-m2-max
status
Published
summary
当你需要频繁在两台电脑间切换显示器输入源的时候,因为各种问题会希望通过命令行直接切换。检索发现网上很多教程并不兼容 运行 Apple Silicon 架构的 macOS Ventura 系统,故作此文以分享。
tags
Engineering
Productivity
type
Post
auth
问题
当你需要频繁在两台电脑间切换显示器输入源的时候,遇到如下问题:
- 本地远程桌面/Parsec 串流仍然具有不小延迟,且浪费性能
- 硬件切换要按好几次,略显麻烦,特别是需要改变外设的时候
❓ 那么,可以通过命令行直接切换吗?
检索发现网上很多教程并不兼容 运行 Apple Silicon 架构的 macOS Ventura 系统,故 根据 GitHub Issues 的技术讨论,作此文以分享。
实现效果
- Windows → Mac
ControlMyMonitor.exe /SetValue Primary 60 15
- Mac → Windows
m1ddc display {device_id} set input 17
解决方案
- Windows → Mac: Control-my-monitor 用于查看各输入源端口&命令行切换
- Mac → Windows:
- 对于 Apple Silicon 系列 & MacOS Ventura
- 对于 Intel 系列 mac;ddcctlkfix • Updated Aug 30, 2023
因为新系统显示器配置文件有所变动 & M1 架构有变动
- (bonus) Linux (Ubuntu, etc.) → Windows / Mac:
- 对于所有的无特殊定制/处理器的 Linux 系统ddccontrolddccontrol • Updated Feb 19, 2023
具体步骤
- Windows 下载 Control-my-monitor
- Windows 查看输入源端口
- Windows 尝试切换:
- 进入软件所在文件夹;
- 在该文件夹打开命令行;
- 输入
ControlMyMonitor.exe /SetValue Primary 60 15
并回车;
- 编译好后尝试切换
- 查看设备 id,通过
./m1ddc display list
可以看到类似1 - LG HDR 4K (CCCCCCCCC-0000-0000-CCCC-010CCCCCCCCC)
的输出; - 根据设备 id 和输入源 id,切换
./m1ddc display {device_id} set input 17
- 根据自己的需要弄成批处理脚本/快捷键/Raycast 等方式即可,如下:
可能存在的问题
报警 “工作频率过高”?
软件切换 HDMI 模式接入 USB-C 源,因为 USB-C 支持的协议更强大,可能遇到“工作频率过高”的报警,影响使用。
针对该问题,在显示器自带设置中手动选择 USB-C 源,然后不管软件切换什么输入源,都是 OK 的~
音频会怎样切换?
根据测试,切换至 USB-C/HDMI 信号,均会自动切换至对应信号的音频通道,无须担心。
好像 HDMI in USB-C 输出不了声音,我有空看看能否解决