一名开发者(下用nick代称)在windows terminal的github repo中发表了一个不是反馈问题的issue——他只是好奇该终端拥有这种如此顺滑输入的效果是如何实现的。
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默认终端输入速度更快的原因。
OPPO发布新5G手机,真全面屏+骁龙865+50W超级快充
Linux备份方案 rdiff-backup 为Python 3提供了多种新功能
华为智能穿戴在2020第三季度实现60%的巨幅增长
EB定位解决方案在高度自动驾驶中的使用
MIUI9即将到来,4月19携手小米6,MIUI9或将主打人工智能,全新的智能MIUI9你喜欢吗?
微软WSL的默认终端输入为什么如此顺滑
中兴天机Axon 10 Pro跑分曝光,是骁龙855手机中最高分
电压源内阻越小越好吗 内阻对电源的影响分析
磺酸锂湿敏元件的结构
800MHzLTE来了:国内4G竞争格局生变
变电箱是重要的电力设施,主要分布于城镇各个角落
苹果iPhone8要长这样了:水滴形设计致敬乔布斯
源创通信SinoV-MIDSPAN-4-G-AT供电中跨设备简介
LG即将推出的高端智能手机V40 ThinQ将采用刘海屏设计
单片机基础学习(一):存储结构
美光、英特尔恢复华为部分供货
Transformers是什么意思?人工智能transformer怎么翻译?
详细介绍PCB设计中的9种常见的元器件封装
九号首次架构调整:成立四大机器人团队
ESP32-C3无线Wi-Fi单火线智能开关的详细介绍