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

一名开拓者(下用 Nick 代称)在 Windows Terminal 的 GitHub repo
中发布了一个不是申报难点的 issue ——
他只是好奇该终端具备这种如此顺滑输入的机能是怎么着兑现的。

欧洲杯竞猜平台 1

Nick 认为这种顺滑感是别的 Windows
应用都不持有的,以致是最轻量的 notepad.exe 都未能提供这种输入体验。他还问到,这种 UI
巩固功能现在是否会利用于具备 Windows 应用程序。

神速,担当此项目标 Windows
开拓公司成员(欧洲杯竞猜平台 ,@miniksa)对 Nick的疑问进行领悟答。

miniksa 代表,保持在 WSL
暗中同意终端输入内容的快慢比任何应用快,那件事实上正是他俩唯后生可畏的专门的工作!除了那个之外,也也许是因为她们一定要利用
Windows 最旧和最低端其余 API 来产生此项职业。

WSL 的私下认可终端不像 Electron
等框架那样涉及到比超多别样的层或框架,它有贰个并不特地的裸窗口,并且未有别的附加组件。他们会从窗口新闻(window
messages)而不是某种事件框架((WPF, WinForms, UWP,
ElectronState of Qatar)来拍卖键入的内容,而这么些剧情是由此底蕴传输过来的。接着,他们利用
GDI 的 PolyTextOut 将文件直接转储到窗口而不带多余的装裱。

miniksa 解释道,notepad.exe
确实相当轻量,可是在其窗口上也颇有多个控件,并且可能在编排控件中选取某种库、框架来规定其文件布局(也或者正在利用此外库或框架进行国际化扶持…),那么些都使得它们的输入速度比不上WSL 暗中认可终端。当然,WSL
也亟需开展衡量取舍,它不像任何使用那样提供完全的国际化帮助。

何以要那样做?第意气风发,conhost.exe
已十二分陈旧。它必须利用具备剧情的裸机底层,因为它是在创立其余非常多框架以前创制的。第二,它要求保障尽大概底层的等第,而且它是用
C/C++ 编写的,它须要尽大概维持底层的情事以福利提必要第三方应用。

至于此外 Windows 应用是或不是有机缘用上这种顺滑的输入效果,miniksa
感到差十分少是没机遇。那么些应用能够以生机勃勃种轻易的章程用别的一门语言来调用生龙活虎种办法和构造文本(layout
text),而无需手动计算像素或关心它们的字体该接受哪个种类体制。而刚刚 miniksa
手动计算像素、滑动区域和数学应用区域等的方法正是使得 WSL
暗中同意终端输入速度越来越快的原因。

(文/开源中国卡塔尔(قطر‎    

相关文章