Flow
把鼠标移出屏幕边缘,让 Logitech 鼠标和键盘切换到旁边的电脑。
Flow 让运行 OpenLogi 的多台电脑共用一套 Logitech 鼠标和键盘。 把鼠标移出屏幕边缘,设备就会切换到那一侧的电脑。
Flow 不通过网络发送你的输入。 每个设备在每台电脑上使用各自的 Easy-Switch 通道配对。 鼠标越过边缘时,OpenLogi 让设备切换通道。 网络只用于协调各台电脑。

要求
- 每台电脑都运行 OpenLogi。 Flow 只与 OpenLogi 配对,不能与 Logi Options+ Flow 配合使用。
- 共享网络。 同一网络中的电脑会互相发现。通过 VPN、VLAN 或覆盖网络连接的电脑可以用地址添加。
- Easy-Switch 设备。 把每个设备与每台电脑配对,且每台电脑使用不同通道。一个设备最多有三个通道。切换使用 HID++
0x1814changeHost。HID++ 1.0 设备无法切换。 - 输入钩子。 Flow 通过系统鼠标钩子发现鼠标到达边缘。请保持
capture_mouse_events开启。在 macOS 上,代理需要辅助功能(Accessibility)权限。没有钩子时,本机无法把设备送走,但仍可接收设备。 - 网络端口。 Flow 使用 UDP 端口
42424。配对对话框打开期间,配对使用 UDP 端口42425。电脑通过 mDNS 互相发现。
Flow 可在 macOS、Windows 和 Linux 上运行。在 Linux 上,只有 X11 会话能把设备送走。Wayland 会话仍可接收设备。
打开 Flow 窗口
点击首页标题栏中的 Flow。鼠标可以切到其他电脑时,按钮上的圆点为绿色;有问题阻止切换时为琥珀色。按钮提示会显示状态。
| 状态 | 含义 |
|---|---|
| 已关闭(Off) | 启用 Flow(Enable Flow)已关闭。 |
| 还没有其他电脑(No other computers) | 还没有配对电脑。 |
| 还不能切换(Can't switch yet) | 已配对电脑,但现在没有电脑能接收设备。 |
| 已就绪 · N 台电脑可切换(Ready · N reachable) | 鼠标可以切到 N 台电脑。 |
在窗口工具栏中打开启用 Flow(Enable Flow)。Flow 默认关闭。
配对电脑
在两台电脑上打开配对
在两台电脑上都打开 Flow 窗口,并分别点击添加电脑…(Add Computer…)。
选择另一台电脑
附近(Nearby)列出本网络中已打开配对的电脑。选择一台,然后点击配对(Pair)。
本网络找不到的电脑,请点击用地址添加(Add by Address)。输入主机名或 IP 地址,例如 192.168.1.20 或 devbox.tailnet.ts.net。配对后,OpenLogi 会把这个主机保存为该电脑的地址。

核对验证码
两台电脑会显示相同的六位验证码。核对后,在两台电脑上都点击验证码相同(Codes Match)。
验证码不同时,请点击取消配对(Cancel Pairing)。两边用户都确认前,两台电脑都不会保存配对。验证码两分钟内有效。

每台电脑都会以对方的主机名保存对方。新配对的电脑还没有屏幕边缘。
对话框打开期间,配对保持开启。10 分钟内没有电脑配对,或后台服务重启时,配对会停止。
| 情况 | 消息 |
|---|---|
| 对方用户取消 | “%{name}”上取消了配对。 |
| 验证码不同 | “%{name}”报告验证码不同。 |
| 已过两分钟 | 两台电脑都确认前,验证码已过期。 |
| 没有电脑应答 | 没有电脑应答。请检查地址,并确认另一台电脑上已打开 OpenLogi。 |
| 版本不兼容 | 这两个版本的 OpenLogi 无法互相配对。请在两台电脑上都更新 OpenLogi。 |
放置另一台电脑
排列图中间是本机。新配对的电脑位于未放置(Not placed)下方。
把它的图块拖到本机的某一侧。也可以选中它后用方向键移动,或在位置(Position)中选择左侧(Left)、右侧(Right)、上方(Top)或下方(Bottom)。
一台电脑只占一侧。选择另一台电脑已占用的一侧时,两台电脑会互换位置。如果移动的电脑原来没有位置,另一台会回到未放置。
位置只设置本机这一侧。回来的方向在另一台电脑上设置。
选择跟着切换的设备
选中另一台电脑。在跟着切换的设备(Devices That Follow)中,为每个设备选择它连接那台电脑所用的 Easy-Switch 通道,范围为 1 至 3。选择不跟随(Off)可让设备留在本机。
选中本机(This Computer)可查看设备在本机的通道(Channels on This Computer),即每个设备连接本机所用的通道。在这里设为不参与(Off)的设备不会参与 Flow。
设备第一次跟随某台电脑时,OpenLogi 会填入本机的通道。它使用设备当前所在的通道,否则使用最小的空闲通道。请检查这个推测。其他电脑已使用的通道不能选择。
列表显示本机已知的鼠标、轨迹球、触控板和键盘。HID++ 1.0 设备会显示不支持切换电脑(Can't switch computers)。
请在两台电脑上都设置设备。电脑只接收其自身 Flow 设置中列出的设备。
连接状态
每台电脑都会显示连接状态。
| 状态 | 含义 |
|---|---|
| 已连接(Connected) | 连接正常,另一台电脑会应答。它的边缘处于启用状态。 |
| 连接不稳定(Unstable) | 连接仍打开,但另一台电脑应答较慢。 |
| 离线(Offline) | 与另一台电脑没有连接。 |
| 状态未知(Unknown) | 后台服务还没有报告这台电脑。 |
只有通往已连接电脑的边缘才会切换设备。
排列图下方的摘要会说明每个边缘的作用,例如 鼠标移出右侧边缘会切到“%{name}”。。它也会列出阻止某台电脑的原因:
| 消息 | 处理方法 |
|---|---|
选择“%{name}”在本机的哪一侧。 | 放置这台电脑。 |
为至少一个设备选择“%{name}”所在的通道。 | 至少为一个设备选择通往它的通道。 |
“%{name}”离线,暂时不能切过去。 | 在那台电脑上打开 OpenLogi,并检查网络。 |
%{device} 不支持切换电脑,请把它对“%{name}”设为“不跟随”。 | 把该设备设为不跟随。它在线时,所有设备都不会移动。 |
跟着切到“%{name}”的设备现在都没有连接本机。 | 把一个设备切回本机。 |
%{device} 不会跟着切到“%{name}”。 | 为该设备选择通道,或有意让它留在本机。 |
切到另一台电脑
让鼠标在边缘停留四分之一秒,或快速移入边缘。
只有外侧边缘有效。与本机另一台显示器相接的边缘不会切换。
使用切换方式(Switch)选择何时切换:
- 鼠标移出屏幕边缘时(At the screen edge):每次越过边缘都会切换。
- 按住 Control 时才切换(Only while holding Control):越过边缘时按住 Control。所有平台都使用 Control 键,macOS 也一样。
OpenLogi 会先检查每个跟随的设备都能切换。只要有一个不能,所有设备都不会移动,因此键盘不会落在鼠标后面。然后设备切换通道,指点设备先切换。另一台电脑会把鼠标放在其对侧边缘的相同相对位置。
同一时间只进行一次切换。切换后,鼠标离开边缘后边缘才会再次响应。
移除电脑
选中电脑,点击移除电脑…(Remove Computer…),然后点击移除(Remove)。OpenLogi 不再切换到它,并删除它的密钥、位置和设备通道。以后要用,需要重新配对。
另一台电脑会保留自己的条目。请在那边也移除本机。
在配置中
Flow 设置位于 config.toml 的 [flow] 下。schema 11 添加了这一节。没有这一节的文件加载后 Flow 为关闭状态。
schema_version = 11
[flow]
enabled = true
require_modifier = false # true:越过边缘时需按住 Control
[[flow.peers]]
name = "work-laptop"
public_key = "ed25519:0f1e2d3c4b5a69780f1e2d3c4b5a69780f1e2d3c4b5a69780f1e2d3c4b5a6978"
addresses = ["work-laptop.tailnet.example", "10.0.0.7"]
[[flow.layout]]
edge = "right" # 本机的右侧边缘
peer = "work-laptop"
[[flow.devices]]
key = "unit:0f1e2d3c"
peer_channels = { self = 0, "work-laptop" = 1 }| 键 | 默认值 | 含义 |
|---|---|---|
enabled | false | 开启 Flow。 |
require_modifier | false | 越过边缘时需要按住 Control。 |
peers[].name | 必填 | 电脑名称。布局与设备条目通过它引用这台电脑。 |
peers[].public_key | 必填 | 配对时固定的密钥:ed25519: 加 64 位小写十六进制数字。 |
peers[].addresses | 空 | mDNS 无法找到这台电脑时尝试的主机名或 IP 地址。未写端口时使用 42424。 |
layout[].edge | 必填 | left、right、top 或 bottom。 |
layout[].peer | 必填 | 该边缘外的电脑。 |
devices[].key | 必填 | 设备的 serial: 或 unit: 身份键。receiver:…:slot:… 这类路由键会被拒绝。 |
devices[].peer_channels | 必填 | 从 0 开始的 Easy-Switch 通道:self 表示本机,另为每个电脑名称各写一项。 |
窗口显示通道 1 至 3。文件中保存为 0 至 2。
两台电脑使用相同名称或密钥、一个边缘出现两次,或布局、设备条目引用未知电脑时,文件无法加载。设备没有 self 通道或重复使用同一通道时,文件也无法加载。电脑名称不能是 self,不能为空,也不能有首尾空白。
文件只保存公钥。本机私钥是 OpenLogi 数据目录中的 flow-identity.pk8,不在 config.toml 中。
命令行
openlogi diag host-switch 通过运行中的代理,把一个设备切换到另一个 Easy-Switch 通道:
openlogi diag host-switch --device "MX Master 3S" --host 1--host 从 0 开始。该命令不会确认设备已到达。OpenLogi 没有其他 Flow 命令。
限制
- Flow 只移动设备,不共享剪贴板。
- Linux Wayland 会话无法通过边缘把设备送走。
- 另一台电脑运行 Logi Options+ 时,Flow 无法使用。
**状态:**macOS、Windows 和 Linux 均可用。每个跟随的设备都需要 HID++ 0x1814 changeHost。