电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 1891 人浏览分享

为什么微软 WSL 的默认终端输入体验比其他同类的应用好

[复制链接]
1891 0
一名开发者下用Nick代称在 Windows Terminal的GitHub repo中发表了一个不是反馈问题的 issue ——他只
是好奇该终端拥有这种如此顺滑输入的效果是如何实现的。

20191225083230_9698.jpg

Nick觉得这种顺滑感是其他Windows应用都不具备的 甚至是最轻量的 notepad.exe 都未能提供
这种输入体验他还问到 这种 UI增强功能将来是否会应用于所有Windows应用程序。
很快负责此项目的Windows开发团队成员(@miniksa)对Nick的疑问进行了解答。

miniksa表示 保持在WSL(Windows Subsystem for Linux)默认终端输入内容的速度比其他应用快这实际上就是
他们唯一的工作!除此之外也可能是因为他们必须使用Windows最旧和最低级别的API来完成此项工作。

WSL的默认终端不像 Electron等框架那样涉及到许多其他的层或框架 它有一个并不特别的裸窗口 并且没有任何附加组件
他们会从窗口消息(window messages)而不是某种事件框架((WPF  WinForms UWP  Electron))来处理键入的内容而
这些内容是通过内核传输过来的 接着 他们使用GDI的PolyTextOut将文本直接转储到窗口而不带多余的装饰。

miniksa解释道 notepad.exe确实很轻量 不过在其窗口上也具有多个控件 并且可能在编辑控件中使用某种库 框架来
确定其文本布局(也可能正在使用其他库或框架进行国际化支持...)这些都使得它们的输入速度比不上WSL默认终
端 当然 WSL也需要进行权衡取舍 它不像其他应用那样提供完全的国际化支持。

为什么要这样做?第一 conhost.exe已十分陈旧 它必须使用所有内容的裸机底层 因为它是在创建其他大多数框架之前创建的第二
它需要保持尽可能底层的级别 而且它是用C/C++编写的 它需要尽可能保持底层的状态以方便提供给第三方使用。
至于其他Windows应用是否有机会用上这种顺滑的输入效果 miniksa觉得几乎是没机会 这些应用能够以一种简单的方式用任何一门语言
来调用一种方法和布局文本(layout text)而无需手动计算像素或关心它们的字体该采用哪种样式 而恰好miniksa手动计算像素 滑动区
域和数学应用区域等的方式正是使得WSL默认终端输入速度更快的原因。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.