adb shell兼容VT100

发布日期:2018-02-08    浏览次数:814

0x0 修复方式

本地代码版本(基于git):
platform/system/core.git
2018-02-03
master
176afbbedf5dd1f4c51839dc1e3614a1f3ddd878

影响文件(基于repo):
system/core/adb/sysdeps_win32.cpp

修复手段:
向标准输入流的ConsoleMode中添加0x0200(ENABLE_VIRTUAL_TERMINAL_INPUT)
将配置标准输入流的方法复制一份来修改标准输出流,向标准输出流的ConsoleMode中添加0x0004(ENABLE_VIRTUAL_TERMINAL_PROCESSING)

然后make abd一下就ok了!

0x1 起因
最近被迫升级了Windows 10 1703~1709的版本,不升级的主要原因是资源管理器莫名其妙的留白,但是既然已经被迫升级了,倒也没有什么问题。

结果,1703版本能完美运行adb的powershell开始出现像CMD水土不服的恶劣症状,状况如下(本图为1703版本截图):

回退1703后一切正常。

于是,趁着周末,尝试修复问题。

0x2 解决思路
乱码字符主要内容为:
ESC [ 6 n
发现其为VT100标准中定义的一个指令。

经查询,Windows命令行已经支持VT100,其详细用法见:
https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences

在查询到adb用来配置ConsoleMode的部分后,修改其支持VT100。
经检查,其使用的windows.h不包含此宏定义,因此需要使用数字而非宏定义。

本文网址:https://www.wyxxw.cn/blog-detail-8-11-108.html

返回列表

非特殊说明,本文版权归原作者所有,转载请注明出处

提示:本站所有资源仅供学习与参考,请勿用于商业用途。图片来自互联网~如侵犯您的权益,请联系QQ:1067507709.

提示:转载请注明来自:https://www.cnblogs.com/tutoutu/p/8417352.html 。 转载人:momo