介紹
Windows 的觸控板手勢可用性隨著 Windows 10 的鋪開愈來愈高,不僅手勢的樣式較前更為多樣,而且順滑度也不容置疑地有了很大的提升。相比之下,優化在桌面乏力的 Linux 在觸控板的體驗,就成了生存在 Linux 用戶和筆記本用戶兩者並集的使用者需要操心的問題了。
下文主要圍繞 Wayland 自帶的 libinput 而不討論 synaptics 等替代方案。另外,本人對 libinput 的 Archwiki 中文詞條 做了一些微小的貢獻,可以配合食用。
編輯觸控板相關 Xorg 設定檔
Linux 的輸入裝置的設定檔都存儲在 /etc/X11/xorg.conf.d
而 30-touchpad.conf
顧名思義為觸控板的配置資訊。將其複製到 /usr/share/X11/xorg.conf.d
進行修改。此時可以引用 40-libinput.conf
的基本框架,按照以下配置格式:
|
|
其中 Option "Tapping" "on"
開啟了觸控板的「觸摸點按」操作。不用再按下觸控板;
Option "NaturalScrolling" "true"
則還原了更為 Natural 的滾動方向,讓你得以夢回 Windows;
Option "ClickMethod" "clickfinger"
就開啟「雙指點按即按右鍵,三指點按即中鍵按一下」的選項。
除此之外 libinput 提供了更多關於「點按」、「滾動」、「觸控板指針加速度」等較為豐富的選項,其它的配置選項可參見 libinput 的 man page。
關於 libinput 的各種點按滾動操作,在其 文檔 中有友好形象的圖例幫助理解。同時,你也可以在裡面看到對於其它如「小紅點」、「觸控式螢幕幕」等輸入裝置的配置與支援,不在本文「觸控板」的討論範圍之內,所以不議。
安裝 xdotool
xdotool 是一個可以類比鍵盤滑鼠輸入的工具。與下文提到的 libinput-gestures 包配合使用,便可以將觸控板手勢綁定相應的熱鍵或是滑鼠操作,從而達到添加並優化觸控板手勢的目的。
ArchWiki 中對於 Xorg 中模擬鍵鼠輸入的 推薦 中,xdotool 被描述為「Very Buggy」,然而簡單使用下來,我認為 xdotool 的使用十分簡單且沒有什麼毛病(也許是我只是使用了它對鍵盤輸入處理的部分 😂)以下是 xdotool 的基本操作:
|
|
這可以說是非常明瞭的語法了。值得注意的是,對於幾個特殊的按鍵,xdotool 是這麼稱呼的:「1」滑鼠左鍵、「2」滑鼠中鍵、「3」滑鼠右鍵,「Left」方向左鍵、「Right」方向右鍵、「Super」Windows 徽標鍵、「plus」加號、「minus」減號。
xdotool 還支援視窗檢索、獲取視窗焦點等功能,可以實現大部分鍵鼠自動化的需求。
使用 libinput-gestures
安裝 libinput-gestures 並將當前用戶添加到 input 組,將設定檔範本 /etc/libinput-gestures.conf
複製到 ~/.config/
下進行修改。啟動 libinput-gestures-setup
進行初始化。
|
|
其中 gestures 在 libinput-gestures 的認知中有 swipe
和pinch
兩種,分別對應手指在觸控板上滑動和捏合操作。眾所周知,這 Ctrl
+ +
和 Ctrl
+ -
兩個熱鍵基本可以實現大多數軟體視圖上的放大和縮小,習慣上我們把雙指張開作放大操作,雙指捏合作縮小操作,所以先添加到 ~/.config/libinput-gestures.conf
中。
|
|
關於 pinch
,你可以指定 in
和 out
和參與動作的手指數量。同理,對於 swipe
,參與動作的手指數量和滑動的四個方向(分為 Left
、Right
、Up
、Down
)也可以被指定,以下則是一個左右滑動實現在 Chrome 中切換標籤頁的例子。
|
|
向右三指滑動進入下一個標籤頁,向左三指滑動進入上一個標籤頁。雖然沒有相應動畫回饋,但也用得順手。
通過閱讀 libinput-gestures 相關章節 對於原理的介紹得知,觸控板對於參與動作手指數量相同的 swipe 和 pinch 的區分判斷並不是完全準確,所以不要配置出同手指數量的兩種不同動作共存,後期體驗會比較差,較大概率發生誤判。特別是同手指數量滑動但是不同方向的時候,如配置雙指左右滑動切換應用,很可能與雙指上下滑動,也就是滾動的動作產生衝突。
更多可能性
當然,libinput-gestures 和 xdotool 並非必須配合使用,也可以使用支援鍵鼠輸入的如 xte、xvkbd,而它們的操作與 xdotool 大體上也是相同的。
以下是 xvkbd 分別實現了 滑鼠左鍵點擊
and Ctrl+Tab
的例子。
|
|
xte 對複合鍵的操作是使用 keydown
和 keyup
實現的。以下是 xte 實現了 Ctrl+Tab
的例子。
|
|
同樣,你也可以直接給 libinput-gestures 綁定啟動一個應用,如四指上滑呼出應用快捷入口。
遇到觸控板指標跳躍閃爍,或者手勢嚴重誤判的時候,可以嘗試用以下命令重啟 libinput-gestures。
|
|
感謝閱讀 💗