这个项目能做什么
DeskHop 是一个硬件项目,用于在两台电脑之间共享一套键盘和鼠标。它不是 USB 切换盒,而是位于外设与两台机器之间,同时保持与两者的连接,并将输入转发到所选的输出端。
工作原理:该设备对键盘/鼠标充当 USB 主机,同时对每台电脑充当 USB 设备。鼠标 HID 报告描述符被改为绝对坐标,而传入的相对移动在内部累积以跟踪位置。当指针到达一个屏幕的边缘时,保留 Y 坐标并交换 X 范围,因此光标会出现在另一台显示器的相同高度,输出也随之切换。可配置的热键(通常是 Ctrl + Caps Lock)用于切换键盘,键盘 LED 可以指示当前活动的输出;每台电脑的 LED 状态会被记住。
项目列出的特性:无明显切换延迟、可在电脑之间拖动光标、无需安装软件、元件成本约 15 欧元、可 3D 打印的卡扣式外壳、输出之间完全电气隔离,并支持 Linux、macOS 和 Windows。它已获得开源硬件认证。
硬件:两块 Raspberry Pi Pico 板通过 UART 连接,并由数字隔离器(ADuM1201 或引脚兼容的 TI ISO7721DR)隔开。双 USB 角色支持来自 Pico-PIO-USB 项目。PCB v1.1 增加了 ESD 保护、VBUS 电容、丝印标记和 USB 串联电阻;提供 Gerber 文件和 STL 外壳文件。物料清单列出约 11 欧元的零件。
构建:仓库捆绑了精简的 Pico SDK 和 TinyUSB。在 Debian/Ubuntu 上,安装 build-essential、cmake、gcc-arm-none-eabi、libnewlib-arm-none-eabi 和 python3,然后运行 cmake 配置和构建;提供 Docker Compose 以实现可复现构建。预构建的 .uf2 镜像发布在 releases 中。固件可通过进入配置模式(Left Ctrl + Right Shift + C + O)更新,这会暴露一个名为 DESKHOP 的 USB 驱动器,也可通过 ROM 引导加载程序,或在调试构建中使用 CDC flash 命令更新。
额外功能包括慢速鼠标切换(Right Ctrl + Right Alt)、切换锁定(Right Ctrl + K)、锁定两个输出(Right Ctrl + L)、使用相对鼠标移动的游戏模式(Left Ctrl + Right Shift + G),以及可选的屏幕保护程序。对于未对齐或尺寸不同的显示器,可进行光标高度校准。设备本地提供 Web 配置页面,并通过 WebHID 在 Chromium/Chrome 中打开;项目指出不支持 Firefox。每个输出多个屏幕需要设置操作系统和屏幕数量,并被描述为实验性功能。
安全选择是刻意为之:系统之间不共享剪贴板或数据,输出端除标准键盘 LED 消息外没有入站连接,不从输出端触发固件升级,不保留输入历史,不由设备发起按键,设备间数据包长度固定,无网络连接,并在不活动后自动退出配置模式。代码完全开放,没有二进制 blob。
已知限制:Windows 10 版本 KB5003637 破坏了 HID 绝对坐标,因此在 Windows 上使用多个屏幕会有问题,除非采用实验性变通方法;macOS 多屏支持也是实验性的;带有额外控制键的高级键盘和鼠标可能无法完全工作;两台电脑都必须连接并提供 USB 电源;作者指出代码需要清理并进行更广泛的设备测试。提到的软件替代方案包括 Barrier、Input Leap、Synergy、Mouse Without Borders 和 Universal Control。计划中的工作包括更好的多屏变通方法、透明/游戏模式、支持两个以上输出、配置 UI 改进,以及单 Pico 的“lite”版本。
评论
0 评分人数达到10人后显示
登录后参与讨论。