java keyboard无法解析_[源码级解析]阅读源码,分析并解决scrcpy无法正常输入中文的问题...

本文详细分析了scrcpy在中文输入方面的缺陷,通过阅读源码发现与`prefer_text`参数相关的问题。通过设置`--prefer-text`启动scrcpy,成功解决了中文输入问题。同时,建议作者改进文档,以便更多用户能解决类似问题。
摘要由CSDN通过智能技术生成

移动互联网时代下,手机能干的事情越来越多,但如果想要让工作更高效,鼠标键盘依旧是必不可少的。可许多软件(点名阿里系)并没有提供对应的桌面版本,也不兼容基于x86架构的Android模拟器,这就使得我们要用投屏软件来在电脑上操作手机。scrcpy就是众多投屏软件中最具特色的一款,作为一款开源软件,它拥有极佳的性能和丰富的功能,但这款软件在中文输入方面却存在较大的问题。本文将为读者介绍如何让scrcpy正常输入中文,让这款非常好用的投屏软件变得更好用。

本文原载于未命名小站,由作者本人同步至知乎,转载请注明原作者博客地址或本链接,谢谢!

本文撰写时scrcpy最新为1.14版本,依旧存在下文所述的问题,当你阅读本文时也许scrcpy已经解决了这一问题,因此本文内容仅供思路参考和技术分享。

0x01 问题重现

scrcpy相对于其他仅依靠adb shell screencap和adb shell input进行设备控制的软件,拥有更加优秀的性能,这得益于它的系统架构:

cfcb392ac487492b3688917d2ecf414e.png

其中Server在每次启动scrcpy的时候运行于Android端,使用MediaCodec的API对采集到的画面进行编码,并使用多线程,通过Socket传输到PC。PC端则使用ffmpeg和SDL2对画面进行实时解码显示。其中Server使用Java开发,Client使用C开发。具体技术细节可以参考官方文档,此处不再赘述。

言归正传,scrcpy在Unicode文字输入方面一直存在巨大问题,从很久之前就有用户反馈无法输入ascii以外的文字(如#632,表现为PC端输入文字后,手机不显示,终端报错,见图1),而作者则在最近正式加入了对ascii字符的支持,但尚未合并到master分支(见#1426)。

ed4b2e8a45fcb48f23b94ba45e2f68d1.png

图1. 无法正常输入汉字,并提示无法插入字符

构建之后运行,我们会发现问题略有改善,但输入过程中的字母也被传入scrcpy,如图2所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值