一套键鼠控制多台电脑:Deskflow 软件 KVM 完全指南
我桌面上常年摆着 iMac、MacBook、一台 Windows 笔记本和一台 Linux 小主机。每次想用另一台电脑,要么扭头换键盘,要么伸手按 KVM 切换器 —— 切过去还要等 USB 重新枚举那几秒,工作流被打断得支离破碎。
后来发现,其实不用硬件 KVM。键盘鼠标插在其中一台电脑上,通过网络把输入事件发给其他电脑,鼠标移到屏幕边缘自动切过去 —— 就像多显示器一样顺滑。这就是软件 KVM 的思路。
市面上最靠谱的开源方案叫 Deskflow。折腾了一圈踩了不少坑,这篇把完整方案记下来。
Deskflow 是什么
Deskflow 是目前最活跃的开源软件 KVM,GitHub 地址:
https://github.com/deskflow/deskflow| 指标 | 数据 |
|---|---|
| Star | 26,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
brew tap deskflow/tapbrew trust deskflow/tap # 首次需信任 tap,否则报 "untrusted tap"brew install deskflow尝鲜版本(continuous build):
brew install deskflow-dev手动下载的话,从 GitHub Releases下载 .dmg。下载后解除隔离属性:
xattr -c /Applications/Deskflow.appmacOS 权限设置
装完必须手动授权,否则无法工作:
- 打开 系统设置 → 隐私与安全性 → 辅助功能
- 添加
Deskflow.app和deskflow进程 - macOS Sequoia 还需要在 本地网络 中授权
同时放行防火墙(Server 端必须):
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/Deskflow.appsudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /Applications/Deskflow.appmacOS 中文界面设置
Deskflow 是 Qt 应用,内置中文翻译,但 macOS 打包未声明语言支持,导致系统设置里无法切换。一次操作永久生效:
sudo mkdir -p /Applications/Deskflow.app/Contents/Resources/zh-Hans.lprojsudo touch /Applications/Deskflow.app/Contents/Resources/zh-Hans.lproj/Localizable.stringsdefaults write org.deskflow.deskflow AppleLanguages -array "zh-Hans"如果 defaults write 报 domain 不存在,先用 osascript -e 'id of app "Deskflow"' 查 bundle ID,替换 org.deskflow.deskflow。
Windows
- 下载 vc_redist.x64.exe并安装(Visual C++ 运行库)
- 从 GitHub Releases下载
.exe安装包 - 运行安装,一路下一步
Linux
Flatpak(推荐,兼容性最好):
flatpak install flathub org.deskflow.deskflow发行版包管理器也行:
# Debian/Ubuntusudo apt install deskflow
# Fedorasudo dnf install deskflow
# openSUSEsudo zypper install deskflow如果不用 Flatpak,需要满足依赖:libei ≥ 1.3、libportal ≥ 0.8、Qt ≥ 6.7。依赖不满足的话,老老实实用 Flatpak。
Wayland 额外步骤
Wayland 下首次连接时会弹出「输入捕获请求」对话框,必须点允许,否则 Client 收不到键鼠事件。
配置
确定 Server
选择键鼠物理连接的那台电脑做 Server。建议选屏幕最大、最常驻桌面的那台(比如 iMac),或者性能最好、一直开着的那台。
Server 端配置
- 启动 Deskflow,选择 Server 模式
- 点击 配置服务器(Configure Server)
- 将屏幕图标拖到网格中排列好位置
- 记下 Server 的 IP 地址(局域网 IP,形如
192.168.x.x) - 确保防火墙放行端口 24800
防火墙放行(按需执行):
# Linux (firewalld)sudo firewall-cmd --add-port=24800/tcp --permanentsudo firewall-cmd --reload
# Linux (ufw)sudo ufw allow 24800/tcp
# macOS# 系统设置 → 网络 → 防火墙 → 允许传入连接 (Deskflow)Windows 首次运行时会自动弹出防火墙提示,点允许即可。
Client 端配置
- 启动 Deskflow,选择 Client 模式
- 输入 Server 的 IP 地址
- 点击连接
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 |
| Windows | Deskflow 设置中勾选「开机启动」 |
| Linux | 取决于桌面环境,或写 systemd user service |
FAQ
连接不上
- 检查两台电脑是否在同一局域网
- 能否 ping 通 Server IP
- Server 防火墙是否放行 24800 端口
- macOS 是否给了辅助功能和本地网络权限
macOS 安装报 “untrusted tap”
brew trust deskflow/tapbrew install deskflowmacOS 界面是英文,无法切换中文
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 切换器了。
参考:
- GitHub: https://github.com/deskflow/deskflow
- Flatpak: https://flathub.org/apps/org.deskflow.deskflow
- 社区 Matrix:
#deskflow:matrix.org
