一套键鼠控制多台电脑:Deskflow 软件 KVM 完全指南

我桌面上常年摆着 iMac、MacBook、一台 Windows 笔记本和一台 Linux 小主机。每次想用另一台电脑,要么扭头换键盘,要么伸手按 KVM 切换器 —— 切过去还要等 USB 重新枚举那几秒,工作流被打断得支离破碎。

后来发现,其实不用硬件 KVM。键盘鼠标插在其中一台电脑上,通过网络把输入事件发给其他电脑,鼠标移到屏幕边缘自动切过去 —— 就像多显示器一样顺滑。这就是软件 KVM 的思路。

市面上最靠谱的开源方案叫 Deskflow。折腾了一圈踩了不少坑,这篇把完整方案记下来。

Deskflow 是什么

Deskflow 是目前最活跃的开源软件 KVM,GitHub 地址:

https://github.com/deskflow/deskflow
指标数据
Star26,000+
最新版本v1.26.0(2026-02-16)
语言C++
许可GPL-2.0
贡献者148

核心功能就几个,但每个都很实用:

  • 键鼠漫游:鼠标移到一台电脑的屏幕边缘,自动切到相邻电脑
  • 剪贴板共享:复制文字 / 图片,在另一台电脑粘贴
  • TLS 加密:通信默认加密
  • Wayland 支持:Linux Wayland 下可用(通过 libei + libportal)
  • 拖拽文件:部分平台支持文件拖拽传输

为什么不选其他方案

软件 KVM 这个领域项目不少,但分支关系有点乱。Deskflow 的血缘是这样的:

Synergy (2001, 原始项目)
├── Synergy 商业版 (Symless 公司维护)
│ └── v3 — 不兼容开源分支
├── Barrier (开源 fork, 已停止维护)
│ └── Input Leap (再 fork, 现已不活跃)
└── Deskflow (当前上游, Symless 官方赞助)

再和其他方案对比一下:

方案类型价格优点缺点
Deskflow软件免费开源、跨平台、Wayland剪贴板偶不稳定
Synergy软件$29商业支持、UI 更精致收费、v3 不兼容开源
Barrier软件免费曾经流行已停止维护
Logitech Flow硬件 + 软件¥300–1500罗技生态、稳定必须用罗技键鼠
硬件 KVM硬件¥200–2000物理隔离、零延迟切换麻烦、接线多
Mouse Without Borders软件免费微软官方仅 Windows

架构原理

工作模式

Deskflow 采用 Server-Client 架构。键鼠插在哪台电脑上,哪台就是 Server—— 它把输入事件通过局域网发给其他 Client。

┌─────────────────────────────────────────────────┐
│ 局域网 (LAN) │
│ │
│ ┌──────────┐ TCP :24800 ┌──────────┐ │
│ │ Server │ ◄──────────────────► │ Client 1 │ │
│ │ (iMac) │ │(MacBook) │ │
│ │ 插键鼠 │ └──────────┘ │
│ └──────────┘ │
│ │ ┌──────────┐ │
│ └─────────────────────────►│ Client 2 │ │
│ │(Windows) │ │
│ └──────────┘ │
│ │ ┌──────────┐ │
│ └─────────────────────────►│ Client 3 │ │
│ │ (Linux) │ │
2 collapsed lines
│ └──────────┘ │
└─────────────────────────────────────────────────┘
  • Server:键鼠物理连接的电脑,共享输入设备
  • Client:通过网络接收输入事件
  • 默认端口:24800
  • 协议:基于 TCP,TLS 加密

屏幕布局

Server 配置界面是一个网格,拖动 Client 图标排列位置,和实际物理摆放对齐就行:

┌──────────┐
│ Client 1 │
│(MacBook) │
└──────────┘
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Client 2 │ │ Server │ │ Client 3 │
│(Windows) │ │ (iMac) │ │ (Linux) │
└──────────┘ └──────────┘ └──────────┘

鼠标向右移到 iMac 右边缘进入 Linux,向左进入 Windows,向上进入 MacBook。

安装

macOS

Terminal window
brew tap deskflow/tap
brew trust deskflow/tap # 首次需信任 tap,否则报 "untrusted tap"
brew install deskflow

尝鲜版本(continuous build):

Terminal window
brew install deskflow-dev

手动下载的话,从 GitHub Releases 下载 .dmg。下载后解除隔离属性:

Terminal window
xattr -c /Applications/Deskflow.app

macOS 权限设置

装完必须手动授权,否则无法工作:

  1. 打开 系统设置 → 隐私与安全性 → 辅助功能
  2. 添加 Deskflow.appdeskflow 进程
  3. macOS Sequoia 还需要在 本地网络 中授权

同时放行防火墙(Server 端必须):

Terminal window
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/Deskflow.app
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /Applications/Deskflow.app

macOS 中文界面设置

Deskflow 是 Qt 应用,内置中文翻译,但 macOS 打包未声明语言支持,导致系统设置里无法切换。一次操作永久生效:

Terminal window
sudo mkdir -p /Applications/Deskflow.app/Contents/Resources/zh-Hans.lproj
sudo touch /Applications/Deskflow.app/Contents/Resources/zh-Hans.lproj/Localizable.strings
defaults write org.deskflow.deskflow AppleLanguages -array "zh-Hans"

如果 defaults write 报 domain 不存在,先用 osascript -e 'id of app "Deskflow"' 查 bundle ID,替换 org.deskflow.deskflow

Windows

  1. 下载 vc_redist.x64.exe 并安装(Visual C++ 运行库)
  2. GitHub Releases 下载 .exe 安装包
  3. 运行安装,一路下一步

Linux

Flatpak(推荐,兼容性最好):

Terminal window
flatpak install flathub org.deskflow.deskflow

发行版包管理器也行:

Terminal window
# Debian/Ubuntu
sudo apt install deskflow
# Fedora
sudo dnf install deskflow
# openSUSE
sudo zypper install deskflow

如果不用 Flatpak,需要满足依赖:libei ≥ 1.3、libportal ≥ 0.8、Qt ≥ 6.7。依赖不满足的话,老老实实用 Flatpak。

Wayland 额外步骤

Wayland 下首次连接时会弹出「输入捕获请求」对话框,必须点允许,否则 Client 收不到键鼠事件。

配置

确定 Server

选择键鼠物理连接的那台电脑做 Server。建议选屏幕最大、最常驻桌面的那台(比如 iMac),或者性能最好、一直开着的那台。

Server 端配置

  1. 启动 Deskflow,选择 Server 模式
  2. 点击 配置服务器(Configure Server)
  3. 将屏幕图标拖到网格中排列好位置
  4. 记下 Server 的 IP 地址(局域网 IP,形如 192.168.x.x
  5. 确保防火墙放行端口 24800

防火墙放行(按需执行):

Terminal window
# Linux (firewalld)
sudo firewall-cmd --add-port=24800/tcp --permanent
sudo firewall-cmd --reload
# Linux (ufw)
sudo ufw allow 24800/tcp
# macOS
# 系统设置 → 网络 → 防火墙 → 允许传入连接 (Deskflow)

Windows 首次运行时会自动弹出防火墙提示,点允许即可。

Client 端配置

  1. 启动 Deskflow,选择 Client 模式
  2. 输入 Server 的 IP 地址
  3. 点击连接

Server 端会弹出提示「新 Client 已接受」,点 OK,Client 的屏幕图标会自动出现在布局中。

验证

  • 鼠标移到屏幕边缘 → 应该平滑切到相邻电脑
  • 在一台电脑复制文字 → 在另一台粘贴 → 剪贴板共享正常
  • 键盘输入跟随鼠标位置

高阶技巧

热键切换

可以设置快捷键强制跳转到指定电脑,不用非得鼠标滑到边缘。

在 Server 配置界面设置 Hotkeys:

Ctrl+Alt+1 → 跳到 iMac (Server)
Ctrl+Alt+2 → 跳到 MacBook (Client 1)
Ctrl+Alt+3 → 跳到 Windows (Client 2)
Ctrl+Alt+4 → 跳到 Linux (Client 3)

锁定到当前屏幕

Scroll Lock 键可以锁定光标在当前屏幕,防止误滑走(需要在设置中启用)。

TLS 指纹验证

首次连接时会显示 TLS 指纹,核对后信任。后续连接自动验证,防中间人攻击。

开机自启

平台方法
macOS系统设置 → 通用 → 登录项,添加 Deskflow
WindowsDeskflow 设置中勾选「开机启动」
Linux取决于桌面环境,或写 systemd user service

FAQ

连接不上

  1. 检查两台电脑是否在同一局域网
  2. 能否 ping 通 Server IP
  3. Server 防火墙是否放行 24800 端口
  4. macOS 是否给了辅助功能和本地网络权限

macOS 安装报 “untrusted tap”

Terminal window
brew trust deskflow/tap
brew install deskflow

macOS 界面是英文,无法切换中文

Deskflow 是 Qt 应用,内置中文翻译但 macOS 语言检测依赖 .lproj 目录。修复方式见上文「macOS 中文界面设置」一节。

软件更新后中文又变回英文

Deskflow 更新会覆盖 .lproj 目录。重新执行中文设置的三条命令即可。或者锁版本:brew pin deskflow

鼠标能移过去,但键盘不工作

  • 检查 Client 端是否也给了辅助功能权限(macOS 常见)
  • Linux Wayland 下是否点了「允许输入捕获」

剪贴板共享不生效

  • 这是已知问题,偶尔不稳定
  • 尝试断开重连
  • 只支持文本和图片,不支持文件

Server 端键鼠突然失灵

  • 已知 Bug,偶尔发生
  • SSH 到 Server 杀掉 deskflow 进程:pkill deskflow,然后重新启动

跨平台快捷键冲突

  • macOS 的 Cmd 键和 Windows / Linux 的 Ctrl 键行为不同
  • 可以在 Deskflow 设置中配置按键映射

延迟 / 卡顿

  • 确保是有线网络(Wi-Fi 延迟明显)
  • 如果必须用 Wi-Fi,确保信号强度好、5GHz 频段
  • 降低加密级别(不推荐,仅调试用)

总结

坦率讲,Deskflow 不是完美的 —— 剪贴板偶尔抽风,Server 端键鼠有时会卡住需要杀进程。但瑕不掩瑜,免费开源、全平台支持、Wayland 也能用,日常办公场景完全够用。

我的配置:iMac 做 Server,MacBook + Windows + Linux 三台做 Client,一套键鼠十分钟搞定。再也不用伸手去按那个 KVM 切换器了。


参考: