为什么微软 WSL 的默认终端输入体验比其他同类的应用好?
一名开发者(下用 Nick 代称)在 Windows Terminal 的 GitHub repo 中发表了一个不是反馈问题的 issue —— 他只是好奇该终端拥有这种如此顺滑输入的效果是如何实现的。
Nick 觉得这种顺滑感是其他 Windows 应用都不具备的,甚至是最轻量的 notepad.exe
都未能提供这种输入体验。他还问到,这种 UI 增强功能将来是否会应用于所有 Windows 应用程序。
很快,负责此项目的 Windows 开发团队成员(@miniksa)对 Nick 的疑问进行了解答。
miniksa 表示,保持在 WSL 默认终端输入内容的速度比其他应用快,这实际上就是他们唯一的工作!除此之外,也可能是因为他们必须使用 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 默认终端输入速度更快的原因。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
微软构建 Office 浏览器扩展以对抗 Grammarly
在浏览器发展方面,微软目前又在构建新的扩展程序。这些扩展程序将使用户能够访问其服务,而不论他们是使用什么应用程序浏览网络。 例如,本周,捆绑在 Google Chrome 浏览器 Office 扩展中的新功能的迹象表明,微软可能正在开发一种最终可以替代 Grammarly 的工具。 Grammarly 是市场上领先的拼写和语法检查服务之一,还能够通过可安装在浏览器中的专用扩展程序来使用。实际上,这可能就是 Microsoft 的目标,因为其可以将新的所谓的 Microsoft 编辑器捆绑到 Office 扩展中,以帮助提高写作技能。 该新功能的说明显示:“Microsoft Office 扩展程序现在包括编辑器,该编辑器使用在线服务来检查您的作品并在大多数网站上提供建议。” 启用扩展后,该扩展程序允许用户配置拼写和语法验证,还可以配置所谓的“check for refinements”选项,该选项很可能帮助进一步改善写作技巧和其他建议。当然,用户可以选择校对语言,在拼写建议上启用同义词,还可以设置无法提供校对的屏蔽站点。 不过,暂时而言,新功能貌似仅对有限的一组用户可用。安装 Goog...
- 下一篇
俄罗斯成功测试断开互联网
根据 ZDNet 的报导,俄罗斯政府周一宣布,其完成了一系列测试,成功地使该国断开了全球互联网。 测试从上周开始进行了多天,涉及俄罗斯政府机构、本地互联网服务提供商和俄罗斯本地互联网公司,目的是测试俄罗斯的国家互联网基础设施 RuNet 是否可以在不访问全球 DNS 系统和外部互联网的情况下正常运行。 俄罗斯政府在新闻发布会上表示,该实验是成功的,不过其没有透露有关测试及其组成的任何技术细节,只是提到测试了几种断开连接的方案,包括模拟来自国外的敌对网络攻击的方案。现在外部仅知道互联网流量在俄罗斯内部进行了重新路由,有效地使俄罗斯的 RuNet 成为了世界上最大的内部网络。 相关政府官员表示:“事实证明,总的来说,当局和电信运营商都准备好有效应对可能的风险和威胁,并确保俄罗斯的互联网和统一电信网络正常运行。” 此前俄罗斯提出了一项“主权互联网”法案,用以切断对其认为危险的内容的访问。主权互联网法案规定,必须在俄罗斯成千上万个关键的互联网站点安装特殊设备和跟踪软件,这些设备会将数据发送到中央监控机构,该机构具有权力以重新路由流量,可以在国家受到威胁,或者在发生外国网络攻击时将 RuNet ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器