让scrcpy支持中文输入
给scrcpy加一个专用输入法,让电脑输入法产生的中文可以直接输入到手机。

scrcpy是我很喜欢的安卓投屏和控制工具,但它一直有一个痛点:不能直接使用电脑输入法向手机输入中文。

这个问题早在2020年就有人提出:input Chinese directly instead of phone’s input method #1842。前两天折腾了一下,我在自己的fork中给出了一个可用的解法:

zerofancy/scrcpy

问题在哪

scrcpy默认使用Android API注入按键或文本事件。这种方式适合英文和按键操作,却不能完整传递电脑输入法产生的中文等Unicode文本。

换句话说,电脑输入法已经得到了“中文”这段文字,但scrcpy原来的输入链路没有办法把它原样交给手机当前的输入框。

我的方案

我的思路是在手机端提供一个专用于scrcpy的输入法,让它作为电脑输入与手机输入框之间的最后一段桥梁。

使用时启动:

scrcpy --ime

连接设备后,scrcpy会:

  1. 检查手机上是否已经安装匹配版本的scrcpy-ime,需要时自动安装;
  2. 记录手机当前使用的输入法,然后启用并切换到scrcpy-ime
  3. 将电脑输入法产生的文本通过scrcpy的控制链路转发给scrcpy-ime
  4. scrcpy-ime调用InputConnection.commitText(),把文本直接提交到手机当前输入框;
  5. scrcpy退出时恢复手机原来的输入法和启用状态。

这样,在scrcpy窗口中使用电脑输入法打出来的中文,就可以直接出现在手机里了。不只是中文,这条链路本质上传输的是Unicode文本,因此也不局限于某一种语言。

目前这个模式只支持主屏,并使用SDK键盘模式;它不能与OTG、UHID/AOA键盘、相机采集、新建显示或副屏等模式一起使用。对我的日常使用场景来说已经足够。

AI实现

这个方案的思路是我自己想的,实现则完全交给了Codex。包括桌面端参数与安装流程、scrcpy server和输入法之间的通信、输入法APK,以及异常退出后恢复原输入法的看门狗,都是AI完成的。

从结果看,它确实为#1842提供了一个能用的解法。不过,上游scrcpy很强调非侵入性:不在安卓设备上留下已安装的应用。我的方案需要安装一个输入法APK,显然不符合这条原则,应该很难被上游接受。

所以这个fork更多是一次个人需求驱动的尝试,也给遇到同样问题的人提供一个参考。


本文包含AI辅助创作:文章内容由我提供事实、观点与技术思路,并使用Codex协助整理和润色。


最后修改于 2026-08-05