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

解决方案

  • Mac Windows:
    • 对于 Apple Silicon 系列 & MacOS Ventura
      • 💡
        因为新系统显示器配置文件有所变动 & M1 架构有变动
    • ddcctl
      kfixUpdated Aug 30, 2023
      对于 Intel 系列 mac;

具体步骤

  1. Windows 下载 Control-my-monitor
  1. Windows 查看输入源端口
    1. notion image
  1. Windows 尝试切换:
    1. 进入软件所在文件夹;
    2. 在该文件夹打开命令行;
    3. 输入 ControlMyMonitor.exe /SetValue Primary 60 15 并回车;
  1. Mac 安装 m1ddc,需要
    1. 提前准备好苹果的编译 clang 工具
    2. 自行编译,参照这里
  1. 编译好后尝试切换
    1. 查看设备 id,通过 ./m1ddc display list 可以看到类似 1 - LG HDR 4K (CCCCCCCCC-0000-0000-CCCC-010CCCCCCCCC) 的输出;
    2. 根据设备 id 和输入源 id,切换 ./m1ddc display {device_id} set input 17
  1. 根据自己的需要弄成批处理脚本/快捷键/Raycast 等方式即可,如下:
    1. notion image

可能存在的问题

报警 “工作频率过高”?

软件切换 HDMI 模式接入 USB-C 源,因为 USB-C 支持的协议更强大,可能遇到“工作频率过高”的报警,影响使用。
针对该问题,在显示器自带设置中手动选择 USB-C 源,然后不管软件切换什么输入源,都是 OK 的~

音频会怎样切换?

根据测试,切换至 USB-C/HDMI 信号,均会自动切换至对应信号的音频通道,无须担心。
好像 HDMI in USB-C 输出不了声音,我有空看看能否解决

Reference


© Reynard 2021 - 2024