xorg驅(qū)動的圖形系統(tǒng)下,輸入設(shè)備,如觸摸板之類的,都可以通過xinputcli工具或者用xorg.conf配置文件來設(shè)置。不同的是,通過寫xorg.conf是全局設(shè)置,xorg啟動過程中在讀取驅(qū)動信息的時候就可以生效了。而通過cli工具,只能將命令放入user session的啟動腳本(shell的profile文件,或者xinit或其他display manager的配置文件)中,才能做到啟動時生效。這樣設(shè)置條目多的時候user session的啟動腳本就會太長太復(fù)雜。既然是個人電腦,自然就越全局越好。
下面是我的libinput的配置文件。保存在/etc/X11/xorg.conf.d/99-libinput.conf中。
文件名中99這個數(shù)字是因為xorg啟動會讀取多個配置文件夾下的配置文件,且他是按文件名ASCII字母的順序讀取的。如果有相同的配置,后讀取的配置信息會把之前讀取的覆蓋。因為不希望啟動時被別的覆蓋把它設(shè)置在99。相當(dāng)于是最后讀取的配置了,就是希望它肯定能生效。除了這個和后綴.conf,文件名其實不重要。
下面逐條講解:
# 告訴xorg這個section是關(guān)于輸入設(shè)備的
Section "InputClass"
# 標識,不重要。
Identifier "libinput pointer catchall"
# 告訴xorg,捕捉的event是來自Pointer
# Pointer 包括了鼠標和Thinkpad的trackpoint
MatchIsPointer "on"
# 去所有輸入設(shè)備中捕捉event
MatchDevicePath "/dev/input/event*"
# 捕捉到的信息交給驅(qū)動libinput
Driver "libinput"
EndSection
# 另外一個section,用來設(shè)置觸摸板
Section "InputClass"
Identifier "libinput touchpad catchall"
# 需要的是觸摸板的event
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
# Option 開頭的是驅(qū)動選項,設(shè)置會提交給驅(qū)動,以定制行為
# 用鼠標加速,用adaptive和flat可選。adaptive也就是視手指滑動速度即時調(diào)整靈敏度。
# 而flat就是不加速。玩游戲必備,不過要在Pointer的section設(shè)置。
Option "AccelProfile" "adaptive"
# 加速鼠標移動的位置計算時使用的數(shù)值,這個和上面一項的組合可以自己實驗來得到自己想要的效果。
Option "AccelSpeed" "0.6"
# 打字時禁用觸摸板,感覺沒什么用,聊勝于無。
Option "DisableWhileTyping" "true"
# clickfinger選項激活了:單指左鍵,雙指右鍵,三指中鍵
Option "ClickMethod" "clickfinger"
# 反向滾動,模仿mac的scroll,雙指上劃意為著內(nèi)容往上而不是視區(qū)往上。這樣的滑動概念和手機等是一樣的。
Option "NaturalScrolling" "true"
# 輕拍點按,這年頭必不可少。
Option "Tapping" "true"
# 輕拍拖拽
Option "TappingDrag" "true"
# 輕拍拖拽時會在一個很短的時間內(nèi)保留拖拽狀態(tài),長距離拖拽必備。
Option "TappingDragLock" "true"
EndSection
驅(qū)動選項可以用man 4 libinput查看,不同的驅(qū)動是同理。
Pointer和Touchpad的驅(qū)動選項是相同的(廢話)。如果有使用鼠標,特別是玩游戲什么的,可以對Pointer也進行相應(yīng)的設(shè)置。
xinput CLI工具
當(dāng)然了,很多時候我們也需要在GUI環(huán)境內(nèi)隨時調(diào)整諸如鼠標靈敏度什么的。這時候就可以用上xinput命令了。
[]中的代表可填項。
xinput list [設(shè)備名/設(shè)備id]
# 如果你不提供設(shè)備信息,就給你刷一個`X`所托管的輸入設(shè)備的列表。
# 列表中提供設(shè)備名和設(shè)備ID
xinput list-props 設(shè)備名/設(shè)備id
# 列舉該設(shè)備的屬性(其實不是所有,但只要被配置過的屬性都在)
# 列表中有屬性名稱和屬性ID及其數(shù)值。
xinput set-props 設(shè)備名/設(shè)備ID 屬性名/屬性ID 數(shù)值
利用這個指令,我們可以將不同的設(shè)置做成腳本綁定在DE/WM的快捷鍵上。這樣可以在做不同的事情的時候隨時調(diào)整輸入設(shè)備了。
另外如果是臨時想在CLI中調(diào)整數(shù)值,邊查邊設(shè),直接用id比較方便。但如果是寫腳本,盡量使用設(shè)備/屬性的全名。因為,如果有新設(shè)備,啟動X時可能新的設(shè)備會導(dǎo)致ID變動。