两台电脑,一个显示器,零折腾(2025)
摘要
一份指南,详细介绍如何利用内置KVM功能的显示器以及DDC命令(在macOS上通过m1ddc实现),仅使用一个键盘、鼠标和显示器在Mac笔记本和Linux台式机之间切换,免去了手动插拔线缆的麻烦。
暂无内容
查看缓存全文
缓存时间: 2026/05/18 18:57
# 两台电脑,一个显示器,零折腾 来源:https://alexplescan.com/posts/2025/08/16/kvm/ 我有一台 Mac 笔记本电脑和一台 Linux 台式机,共用同一套键盘、鼠标和显示器。如果你也在家办公,想必能感同身受……工作用笔记本,爱好用台式机,但只有一个显示器和一套外设。在两台机器之间切换一直是个麻烦事:要么得伸手去显示器后面插拔线缆,要么用不靠谱的 USB-C 切换器,要么忍受各种恼人的转接头。最近升级显示器时,我想彻底解决这个问题——我要能在两台机器之间极速切换,完全不用动手动脚。实际上,哪怕把手从键盘上抬起来都算失败。好了,我做到了。请看: Your browser does not support the video tag. 实现这个目标主要靠两样东西: 1. 一台自带 KVM(键盘、视频、鼠标 (https://en.wikipedia.org/wiki/KVM_switch))功能的显示器,这样我可以把 USB 输入设备接在显示器上,它们会自动跟随当前激活的视频源; 2. 使用 DDC(显示数据通道 (https://en.wikipedia.org/wiki/Display_Data_Channel))指令通过 HDMI/DP 线缆控制显示器。 我们逐一说明…… ## 显示器 我不卖关子。它就是 MSI MPG 321URX (https://amzn.to/4fLX7yj)(联盟链接)。这款显示器的最大亮点是那块极其惊艳的 QLED 面板,支持 4K 240Hz。编程和游戏两相宜。(现在这款显示器的更新版本 (https://amzn.to/4lvLNaF) 已经上市——我描述的方法应该同样适用)。其他厂商如三星和 Alienware 也推出了搭载相同惊艳面板的显示器,但 MSI 更便宜。我还欣赏它把电竞风格的装饰放在了显示器背面,只有我的墙需要看它。抱歉了,墙。 我在显示器上使用两个输入: - **USB-C**:MacBook(macOS) - **DisplayPort**:台式机(Linux) 连接外设方面,显示器还提供了几个 USB 口和一个 3.5mm 音频插孔。我用一个 USB 集线器接到其中一个 USB 口上,以增加可用接口数量: 显示显示器端口及所连设备的示意图 实际上,我显示器背面的走线比图中那些直线要乱得多,不过只有我的墙能看到。再次抱歉,墙。 这套方案之所以如此好用,关键在于显示器内置的 KVM 功能,它能让 USB 端口的数据跟随当前激活的视频源。因此,当我通过 USB-C 使用笔记本电脑时,显示器内置的 USB 集线器会走 USB-C 通道;而当我通过 DisplayPort 使用台式机时,USB 集线器则通过 USB-A 连接至台式机。要在两个输入之间切换,我本可以伸手去操作显示器的控制按钮,但正如我所说……把手从键盘上移开就是失败,我们不能容忍! ## 显示数据通道(DDC) 这时 DDC 登场了——它可以通过显示线缆(HDMI、USB-C、DisplayPort)向现代显示器发送指令。我们可以用它来告诉显示器做各种事情,比如调整音量、亮度和对比度,最关键的是,切换指定输入源。完全不用触碰显示器! 命令行程序可以让你通过 DDC 向显示器发送指令,根据操作系统的不同,你可以用不同的工具将这些指令绑定到键盘快捷键上。 ### macOS 在搭载 Apple Silicon 芯片的 Mac 上,我们可以使用 m1ddc (https://github.com/waydabber/m1ddc) 发送显示器 DDC 信号。如果你用的是 Intel 芯片,也有其他替代方案。下面是一些示例命令: `` brew install m1ddc # 安装工具 m1ddc display list # 列出已连接的显示器 m1ddc display chg volume 100 # 调节音量 m1ddc display set input # 切换输入源 `` m1ddc 的 README (https://github.com/waydabber/m1ddc) 中包含输入码列表。在我的情况下,DisplayPort 的输入码是 `15`,我的显示器 ID 是 `381C72C8-0CDA-4B71-A1CD-F8AFE90AB0ED`,所以以下命令会切换到 DisplayPort: `` m1ddc display 381C72C8-0CDA-4B71-A1CD-F8AFE90AB0ED set input 15 `` 准备好 m1ddc 命令后,我使用 Hammerspoon (https://www.hammerspoon.org/) 将其绑定到 `CTRL + SHIFT + =` 快捷键: `` -- 在 ~/.hammerspoon/init.lua 中添加 -- 向我的 MSI MPG 321URX 发送 DDC 指令,切换到 DisplayPort 输入。 hs.hotkey.bind({"ctrl", "shift"}, "=", function() local display_id = "" -- 通过运行 'm1ddc display list' 获取 local displayport_code = "15" -- 输入码见 m1ddc 的 readme local command = "/opt/homebrew/bin/m1ddc display " .. display_id .. " set input " .. displayport_code hs.execute(command) end) `` 然后,在 Linux 端,我将相同的键盘快捷键绑定到切换回 USB-C 的操作: ### Linux(KDE 桌面环境) 在 Linux 上,我成功使用 ddcutil (https://www.ddcutil.com/) 来控制显示器。 `` sudo pacman -Suy ddcutil # 用你的包管理器安装 ddcutil detect # 列出连接到机器的显示器 `` ddcutil 不像 m1ddc 那样用户友好。你需要找出想要修改的设置代码(例如输入、音量、亮度),然后设置相应的值。好在 ddcutil 可以轻松发现这些设置。以我为例: `` ... Feature: 60 (Input Source) Values: 11: HDMI-1 12: HDMI-2 0f: DisplayPort-1 10: DisplayPort-2 ... `` “输入”设置对应 Feature 60,因此修改这个值即可切换输入源。至于值,列出了好几个选项,但没有 USB-C!这台显示器只有两个 HDMI 口、一个 DisplayPort 口和一个 USB-C 口,所以通过排除法,我们可以假定第二个“DisplayPort”实际上就是 USB-C 口。它可能因为 USB-C 运行在 DisplayPort 备用模式下而被识别为 DisplayPort。搞清楚这一点后,在 Linux 端将输入切换到 USB-C 的命令是: 与 m1ddc 不同,我没有特意指定在哪个显示器上运行这个命令,因为我的台式机只连接了一台显示器(而笔记本还有自带屏幕)。如果你使用多台显示器,需要相应调整命令。 由于我使用 KDE 桌面,将 `CTRL + SHIFT + =` 快捷键绑定到该命令的最简单方法是通过内置的快捷键管理器: 简单!按下按键:运行 ddcutil! ### Windows 你也可以在 Windows 上进行配置。我自己没试过,但 MSI 为控制显示器随附的 Windows 程序似乎允许你将操作分配给键盘快捷键……所以你可能不需要额外调用独立的 CLI 程序就能实现切换输入。 ## 结语 就是这样。一个无需外部 KVM 设备来传递输入的 KVM 解决方案,而且切换操作仅通过键盘即可触发。感谢阅读!DDC 再会。
相似文章
Mouseless——键盘驱动的macOS/Linux/Windows控制
Mouseless 是一款跨平台工具,支持键盘驱动控制 macOS、Linux 和 Windows,让用户无需鼠标即可操作电脑。
赞美 grobi:自动配置 X11 显示器
本文赞扬了 grobi,一款用于 X11 上自动配置显示器的工具,描述了它如何简化双 DP 8K 显示器设置的管理,并与 autorandr 等替代方案进行了比较。
@stevibe: 我进一步探索了本地模型的另一种可能性:将 Qwen3.6 35B A3B 与 NVIDIA LocateAnything-3B 结合,作为一个本地计算机使用代理…
演示了一个本地计算机使用代理,结合了 Qwen3.6 35B A3B 和 NVIDIA LocateAnything-3B 模型,通过截图执行切换 Mac 显示模式等任务,无需无障碍 API,完全在本地硬件上运行。
@FeitengLi: 我这么用的 1. mac mini 不带在身边,就放家里客厅,开 tailscale,在外面用 mac 自带屏幕共享 使用 tailscale ip 直接连进去(也会用 cloudflare 开一个 zero trust 做双备份 防止 …
介绍一种通过 Tailscale 和屏幕共享远程连接家中 Mac Mini 的开发环境配置方法,使用 tmux 保持会话和一致的环境。
能够控制多台机器的 Computer-use MCP(可与 Claude、Cursor、Codex 或自定义框架集成)
opendesk 是一款免费开源工具,它通过 Computer-use MCP 协议,让 AI 智能体能够通过本地 WiFi 网络控制多台计算机,并可集成 Claude、Cursor、Codex 以及自定义工作流。