一名開(kāi)發(fā)者(下用Nick代稱)在Windows Terminal的GitHub repo中發(fā)表了一個(gè)不是反饋問(wèn)題的issue——他只是好奇該終端擁有這種如此順滑輸入的效果是如何實(shí)現(xiàn)的。
Nick覺(jué)得這種順滑感是其他Windows應(yīng)用都不具備的,甚至是最輕量的notepad.exe都未能提供這種輸入體驗(yàn)。他還問(wèn)到,這種UI增強(qiáng)功能將來(lái)是否會(huì)應(yīng)用于所有Windows應(yīng)用程序。
很快,負(fù)責(zé)此項(xiàng)目的Windows開(kāi)發(fā)團(tuán)隊(duì)成員(@miniksa)對(duì)Nick的疑問(wèn)進(jìn)行了解答。
miniksa表示,保持在WSL(Windows Subsystem for Linux)默認(rèn)終端輸入內(nèi)容的速度比其他應(yīng)用快,這實(shí)際上就是他們唯一的工作!除此之外,也可能是因?yàn)樗麄儽仨毷褂肳indows最舊和最低級(jí)別的API來(lái)完成此項(xiàng)工作。
WSL的默認(rèn)終端不像Electron等框架那樣涉及到許多其他的層或框架,它有一個(gè)并不特別的裸窗口,并且沒(méi)有任何附加組件。他們會(huì)從窗口消息(window messages)而不是某種事件框架((WPF, WinForms, UWP, Electron))來(lái)處理鍵入的內(nèi)容,而這些內(nèi)容是通過(guò)內(nèi)核傳輸過(guò)來(lái)的。接著,他們使用GDI的PolyTextOut將文本直接轉(zhuǎn)儲(chǔ)到窗口而不帶多余的裝飾。
miniksa解釋道,notepad.exe確實(shí)很輕量,不過(guò)在其窗口上也具有多個(gè)控件,并且可能在編輯控件中使用某種庫(kù)、框架來(lái)確定其文本布局(也可能正在使用其他庫(kù)或框架進(jìn)行國(guó)際化支持...),這些都使得它們的輸入速度比不上WSL默認(rèn)終端。當(dāng)然,WSL也需要進(jìn)行權(quán)衡取舍,它不像其他應(yīng)用那樣提供完全的國(guó)際化支持。
為什么要這樣做?第一,conhost.exe已十分陳舊。它必須使用所有內(nèi)容的裸機(jī)底層,因?yàn)樗窃趧?chuàng)建其他大多數(shù)框架之前創(chuàng)建的。第二,它需要保持盡可能底層的級(jí)別,而且它是用C/C++編寫的,它需要盡可能保持底層的狀態(tài)以方便提供給第三方使用。
至于其他Windows應(yīng)用是否有機(jī)會(huì)用上這種順滑的輸入效果,miniksa覺(jué)得幾乎是沒(méi)機(jī)會(huì)。這些應(yīng)用能夠以一種簡(jiǎn)單的方式用任何一門語(yǔ)言來(lái)調(diào)用一種方法和布局文本(layout text),而無(wú)需手動(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文章
6756瀏覽量
108113 -
WINDOWS
+關(guān)注
關(guān)注
4文章
3710瀏覽量
94367
發(fā)布評(píng)論請(qǐng)先 登錄
如何在Windows上安裝最新的deepin 25 WSL版本
集特臺(tái)式機(jī) —— 信創(chuàng)時(shí)代的高可靠國(guó)產(chǎn)計(jì)算終端
水資源遙測(cè)終端機(jī)rtu如何對(duì)接省平臺(tái)!#水資源遙測(cè)終端機(jī)rtu #遙測(cè)終端 #遙測(cè)終端機(jī) #遙測(cè)終端機(jī)廠家
rtt studio中 終端窗口輸入不了命令,是沒(méi)打開(kāi)什么東西嗎?
rt thread 的Finsh終端啟用后,怎樣才能在函數(shù)里讀取終端輸入的字符串?
keil無(wú)法寫入wsl文件怎么解決?
遙測(cè)終端機(jī)安裝方法,遙測(cè)終端機(jī)RTU安裝接線視頻教程。#遙測(cè)終端機(jī) #遙測(cè)終端機(jī)RTU #遙測(cè)終端機(jī)
【Banana Pi BPI-RV2開(kāi)發(fā)板試用體驗(yàn)】配置WSL網(wǎng)絡(luò)環(huán)境訪問(wèn)Github
淺談wsl --update` 命令行選項(xiàng)無(wú)效的解決方案
WSL 1 和 WSL 2 的區(qū)別是什么
微功耗電池供電遙測(cè)終端機(jī)RTU產(chǎn)品選型與應(yīng)用解析 #遙測(cè)終端機(jī) #遙測(cè)終端機(jī)rtu #遙測(cè)終端機(jī)廠家
rt thread的Finsh終端啟用后,怎樣才能在函數(shù)里讀取終端輸入的字符串?
微軟WSL的默認(rèn)終端輸入為什么如此順滑
評(píng)論