歡迎您光臨本站 註冊首頁

為什麼微軟 WSL 的默認終端輸入體驗比其他同類的應用好?

←手機掃碼閱讀     admin @ 2019-12-25 , reply:0

一名開發者(下用 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 默認終端輸入速度更快的原因。


[admin ]

來源:OsChina
連結:https://www.oschina.net/news/112320/why-typing-inside-wsl-terminal-better-than-every-other-app
為什麼微軟 WSL 的默認終端輸入體驗比其他同類的應用好?已經有217次圍觀

http://coctec.com/news/soft/show-post-221673.html