一名開發(fā)者(下用Nick代稱)在Windows Terminal的GitHub repo中發(fā)表了一個(gè)不是反饋問題的issue——他只是好奇該終端擁有這種如此順滑輸入的效果是如何實(shí)現(xiàn)的。
Nick覺得這種順滑感是其他Windows應(yīng)用都不具備的,甚至是最輕量的notepad.exe都未能提供這種輸入體驗(yàn)。他還問到,這種UI增強(qiáng)功能將來是否會(huì)應(yīng)用于所有Windows應(yīng)用程序。
很快,負(fù)責(zé)此項(xiàng)目的Windows開發(fā)團(tuán)隊(duì)成員(@miniksa)對Nick的疑問進(jìn)行了解答。
miniksa表示,保持在WSL(Windows Subsystem for Linux)默認(rèn)終端輸入內(nèi)容的速度比其他應(yīng)用快,這實(shí)際上就是他們唯一的工作!除此之外,也可能是因?yàn)樗麄儽仨毷褂肳indows最舊和最低級別的API來完成此項(xiàng)工作。
WSL的默認(rèn)終端不像Electron等框架那樣涉及到許多其他的層或框架,它有一個(gè)并不特別的裸窗口,并且沒有任何附加組件。他們會(huì)從窗口消息(window messages)而不是某種事件框架((WPF, WinForms, UWP, Electron))來處理鍵入的內(nèi)容,而這些內(nèi)容是通過內(nèi)核傳輸過來的。接著,他們使用GDI的PolyTextOut將文本直接轉(zhuǎn)儲到窗口而不帶多余的裝飾。
miniksa解釋道,notepad.exe確實(shí)很輕量,不過在其窗口上也具有多個(gè)控件,并且可能在編輯控件中使用某種庫、框架來確定其文本布局(也可能正在使用其他庫或框架進(jìn)行國際化支持...),這些都使得它們的輸入速度比不上WSL默認(rèn)終端。當(dāng)然,WSL也需要進(jìn)行權(quán)衡取舍,它不像其他應(yīng)用那樣提供完全的國際化支持。
為什么要這樣做?第一,conhost.exe已十分陳舊。它必須使用所有內(nèi)容的裸機(jī)底層,因?yàn)樗窃趧?chuàng)建其他大多數(shù)框架之前創(chuàng)建的。第二,它需要保持盡可能底層的級別,而且它是用C/C++編寫的,它需要盡可能保持底層的狀態(tài)以方便提供給第三方使用。
至于其他Windows應(yīng)用是否有機(jī)會(huì)用上這種順滑的輸入效果,miniksa覺得幾乎是沒機(jī)會(huì)。這些應(yīng)用能夠以一種簡單的方式用任何一門語言來調(diào)用一種方法和布局文本(layout text),而無需手動(dòng)計(jì)算像素或關(guān)心它們的字體該采用哪種樣式。而恰好miniksa手動(dòng)計(jì)算像素、滑動(dòng)區(qū)域和數(shù)學(xué)應(yīng)用區(qū)域等的方式正是使得WSL默認(rèn)終端輸入速度更快的原因。
-
微軟
+關(guān)注
關(guān)注
4文章
6630瀏覽量
104473 -
WINDOWS
+關(guān)注
關(guān)注
4文章
3570瀏覽量
89308
發(fā)布評論請先 登錄
相關(guān)推薦
RHEL即將成為微軟WSL的官方Linux發(fā)行版
請問ADS131E08EVM原板默認(rèn)的輸入方式是差分輸入嗎?
微軟拼音輸入法導(dǎo)致KiCad卡死
![<b class='flag-5'>微軟拼音輸入</b>法導(dǎo)致KiCad卡死](https://file1.elecfans.com//web1/M00/F4/DC/wKgaoWcy2PGAepCaAAInWaU_roM966.png)
瑞芯微RK3566鴻蒙開發(fā)板Android11修改第三方輸入法為默認(rèn)輸入法
![瑞芯微RK3566鴻蒙開發(fā)板Android11修改第三方<b class='flag-5'>輸入</b>法為<b class='flag-5'>默認(rèn)輸入</b>法](https://file1.elecfans.com/web2/M00/07/9D/wKgZombyGNqAJ2h0AAB5aXv3W1c207.png)
WSL的ubuntu里面的VSCode燒寫不成功是怎么回事?
在WSL2+ubuntu+vscode+esp-idf環(huán)境中,刷寫時(shí)選擇ESP32-S3(Built-in USB JTAG)、UART模式提示報(bào)錯(cuò)的原因?
ESP32S3用WSL作為開發(fā)環(huán)境, log開啟verbose有錯(cuò)誤提示,為什么?
微軟將優(yōu)化Windows Subsystem for Linux并加入圖形用戶界面設(shè)置
微軟確認(rèn):Windows 11 24H2 默認(rèn)啟用 BitLocker 磁盤加密
微軟更新Win11強(qiáng)制推廣產(chǎn)品引發(fā)爭議
關(guān)于linux的默認(rèn)網(wǎng)關(guān),Linux雙網(wǎng)卡配置
![關(guān)于linux的<b class='flag-5'>默認(rèn)</b>網(wǎng)關(guān),Linux雙網(wǎng)卡配置](https://file1.elecfans.com/web2/M00/CF/5A/wKgZomYh5e6AVEL-AAAIeynnvwI512.png)
微軟WSL更新支持IPv6流量透過Linux
微軟向Windows 10/11推送更新,建議將Bing設(shè)為Chrome默認(rèn)搜索引擎
鴻蒙之@ohos.bundle.defaultAppManager (默認(rèn)應(yīng)用管理)
![鴻蒙之@ohos.bundle.defaultAppManager (<b class='flag-5'>默認(rèn)</b>應(yīng)用管理)](https://file1.elecfans.com/web2/M00/C1/45/wKgaomXUcHyAR0VFAAEEyDtXTVc445.png)
評論