缘起
这是 2024 年 10 月的事。从我在 GitHub 上看到的一个项目说起。这个项目叫作 deskflow,它提供的功能很简单:在两台电脑之间共享键盘和鼠标。
我看了看我的平板,它作为一个副屏性能有些不够,我想到,如果能有个软件能让电脑和平板共享键鼠就好了。
我搜索了一晚上,搜到了两个似乎较为可行的解决方案:deskdock 和 across。
但这两个软件不仅常年没有更新,而且还各有致命的问题:
- 对于 deskdock,使用它时要想使用电脑键盘在安卓设备上打字,需要购买安卓端的付费版本。但是其只有 Google Play 一个购买渠道,并且能通过 Google Play 进行正版验证。由于谷歌几乎完全禁止了来自中国大陆的支付方式,导致我想成为付费用户都没有渠道。
- 对于 across,这个软件主要是通过蓝牙来连接电脑和安卓设备,但我实践发现,可能是因为电脑的蓝牙连接问题,该软件完全不起作用。
于是我突发奇想,我能不能自己写一个这样的软件,满足自己的需求呢?
于是我开始搜索相关信息。经过简单检索,我发现 PC 端可以直接通过 ADB 向发送鼠标和键盘相关事件信号,从而实现我想要的功能。
但是经过简单实现,我发现单纯地使用 ADB 来发送键鼠信号存在较高的延迟,我开始搜寻降低延迟的方法。经过一番搜索,我搜到了 scrcpy 项目下这篇 issue Why your adb shell cmd execute so fast?。简单来说,scrcpy 并没有直接使用 adb 来发送输入信号,而是在安卓客户端设置了一个客户端,从而避免了 ADB 命令执行过程中的一些耗时步骤(比如反复建立 TCP 连接的开销)。
我几经波折,自己实现了 scrcpy 的客户端,用在了这个项目中,目前项目也基本成形,命名为 InputShare,中文名为“输入流转”。