scrcpy是我很喜欢的安卓投屏和控制工具,但它一直有一个痛点:不能直接使用电脑输入法向手机输入中文。
这个问题早在2020年就有人提出:input Chinese directly instead of phone’s input method #1842。前两天折腾了一下,我在自己的fork中给出了一个可用的解法:
问题在哪
scrcpy默认使用Android API注入按键或文本事件。这种方式适合英文和按键操作,却不能完整传递电脑输入法产生的中文等Unicode文本。
换句话说,电脑输入法已经得到了“中文”这段文字,但scrcpy原来的输入链路没有办法把它原样交给手机当前的输入框。
我的方案
我的思路是在手机端提供一个专用于scrcpy的输入法,让它作为电脑输入与手机输入框之间的最后一段桥梁。
使用时启动:
scrcpy --ime
连接设备后,scrcpy会:
- 检查手机上是否已经安装匹配版本的
scrcpy-ime,需要时自动安装; - 记录手机当前使用的输入法,然后启用并切换到
scrcpy-ime; - 将电脑输入法产生的文本通过scrcpy的控制链路转发给
scrcpy-ime; - 由
scrcpy-ime调用InputConnection.commitText(),把文本直接提交到手机当前输入框; - scrcpy退出时恢复手机原来的输入法和启用状态。
这样,在scrcpy窗口中使用电脑输入法打出来的中文,就可以直接出现在手机里了。不只是中文,这条链路本质上传输的是Unicode文本,因此也不局限于某一种语言。
目前这个模式只支持主屏,并使用SDK键盘模式;它不能与OTG、UHID/AOA键盘、相机采集、新建显示或副屏等模式一起使用。对我的日常使用场景来说已经足够。
AI实现
这个方案的思路是我自己想的,实现则完全交给了Codex。包括桌面端参数与安装流程、scrcpy server和输入法之间的通信、输入法APK,以及异常退出后恢复原输入法的看门狗,都是AI完成的。
从结果看,它确实为#1842提供了一个能用的解法。不过,上游scrcpy很强调非侵入性:不在安卓设备上留下已安装的应用。我的方案需要安装一个输入法APK,显然不符合这条原则,应该很难被上游接受。
所以这个fork更多是一次个人需求驱动的尝试,也给遇到同样问题的人提供一个参考。
本文包含AI辅助创作:文章内容由我提供事实、观点与技术思路,并使用Codex协助整理和润色。
最后修改于 2026-08-05