OpenLogi

Flow

把鼠标移出屏幕边缘,让 Logitech 鼠标和键盘切换到旁边的电脑。

Flow 让运行 OpenLogi 的多台电脑共用一套 Logitech 鼠标和键盘。 把鼠标移出屏幕边缘,设备就会切换到那一侧的电脑。

Flow 不通过网络发送你的输入。 每个设备在每台电脑上使用各自的 Easy-Switch 通道配对。 鼠标越过边缘时,OpenLogi 让设备切换通道。 网络只用于协调各台电脑。

Flow 窗口:Living Room iMac 位于右侧且已连接

右侧已连接的电脑,以及跟随它切换的两台设备。

要求

  • 每台电脑都运行 OpenLogi。 Flow 只与 OpenLogi 配对,不能与 Logi Options+ Flow 配合使用。
  • 共享网络。 同一网络中的电脑会互相发现。通过 VPN、VLAN 或覆盖网络连接的电脑可以用地址添加。
  • Easy-Switch 设备。 把每个设备与每台电脑配对,且每台电脑使用不同通道。一个设备最多有三个通道。切换使用 HID++ 0x1814 changeHost。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 }
键默认值含义
enabledfalse开启 Flow。
require_modifierfalse越过边缘时需要按住 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。

本页目录