從 26.7.0 起,終端機裡的每一次點按、拖曳、捲動和雙指縮放,都由 Term 自己的輸入引擎來理解——它知道這一下來自手指、滑鼠、觸控板還是手寫筆。
需要 Term v26.7.0 或更新版本。
撰寫於
終端機裡的每個手勢——點一下、長按、拖曳捲動、雙指縮放、滑鼠點擊、滾輪——以前都要先經過系統給所有 App 的通用手勢處理。那套處理是為按鈕和清單設計的,很多時候分不清是什麼在碰螢幕:等 Term 收到時,手指點一下和滑鼠點一下看起來一模一樣。
26.7.0 起,這些全部由 Term 自己理解,就在繪製終端機的同一個引擎裡。每個判斷都清楚知道輸入來自哪裡,於是手指、滑鼠、觸控板、手寫筆都能得到最合適的回應。
在平板或二合一裝置上用滑鼠拖曳選字,以前得到的是手機式的選取:兩端各一個圓形把手,再加一個蓋在文字上的複製彈出選單——這都是為指尖準備的。現在滑鼠選取就是一片醒目標示,和電腦上一樣。複製用 Ctrl+Shift+C 或右鍵選單。
用手指則完全不變:長按依舊選取單字並帶可拖曳的把手,放開依舊跳出複製。
雙擊就是兩次靠得很近的點按。以前 Term 依 App 處理到每次點按的時間來計算間隔——而第一下點按常常會叫出鍵盤,讓 App 忙上一小會兒。現在 Term 依手指真正碰到螢幕的時間來算,所以快速雙擊就是雙擊,即使 App 剛好忙了一下。長按也一樣。
用上新引擎,Term 通常約 0.4 毫秒就能判斷出你這一下的意思——在華為手機上實測(每個版本各點 20 次),從系統把觸控交給 Term,到 Term 判定這是一次點按為止:
| 以前 | 26.7.0 起 | |
|---|---|---|
| 手指抬起 → Term 判定為點按(典型值) | 1.07 毫秒 | 0.38 毫秒 |
| 最快的一次 | 0.57 毫秒 | 0.17 毫秒 |
| 雙擊單字(試 10 次) | 10 / 10 | 10 / 10 |
作為對照,60 Hz 螢幕上一個畫面大約是 17 毫秒。
新引擎在手機、平板和二合一裝置上,用手指、滑鼠、滾輪和鍵盤逐項檢查:長按與雙擊選字、捲動與慣性滑動、方向鍵搖桿、雙指縮放、滑鼠選字與右鍵選單、tmux 裡的點擊、Shift 選字——每個版本都跑一百多項檢查。
如果覺得哪裡和以前不一樣,請在 App 裡告訴我們——設定 › 帳戶 › 意見回饋——並說明當時用的是手指、滑鼠、觸控板還是手寫筆。