Linux下的觸控板設定:以 Arch Linux 為例
軟體安裝
安裝 Synaptics 驅動
# arch linux:
pacman -S xf86-input-synaptics
管理工具
# xf86-input-synaptics 自帶了命令列管理工具:Synclient
# 圖形管理工具:GPointing Device Settings
yaourt -S gpointing-device-settings
# KDE 觸控板控制模組
yaourt -S kcm_touchpad
環境配置
一般的設定工作可通過圖形管理工具完成,如單擊、雙擊、右鍵的識別,橫向和縱向滾動、雙指滾動。下面介紹一些高階配置。
基本觸控板配置
可通過修改 synaptics 的配置檔案,修改觸控板配置。包括多指敲擊、滾動、避免手掌觸控、精確度與快速滾動。
#file: /etc/X11/xorg.conf.d/50-synaptics.conf
Section "InputClass"
Identifier "touchpad catchall"
Driver "synaptics"
MatchIsTouchpad "on"
Option "TapButton1" "1" #單指敲擊產生左鍵事件
Option "TapButton2" "2" #雙指敲擊產生中鍵事件
Option "TapButton3" "3" #三指敲擊產生右鍵事件
Option "VertEdgeScroll" "on" #滾動操作:橫向、縱向、環形
Option "VertTwoFingerScroll" "on"
Option "HorizEdgeScroll" "on"
Option "HorizTwoFingerScroll" "on"
Option "CircularScrolling" "on"
Option "CircScrollTrigger" "2"
Option "EmulateTwoFingerMinZ" "40" #精確度
Option "EmulateTwoFingerMinW" "8"
Option "CoastingSpeed" "20" #觸發快速滾動的滾動速度
Option "PalmDetect" "1" #避免手掌觸發觸控板
Option "PalmMinWidth" "3" #認定為手掌的最小寬度
Option "PalmMinZ" "200" #認定為手掌的最小壓力值
EndSection
通過 man synaptics
瞭解更多資訊。
注意:同時安裝 kcm_synaptics
會覆蓋掉該配置資訊。
輸入時禁止觸控板敲擊
這樣可以避免焦點變化,影響當前的輸入。
對於使用 startx
來啟動的桌面系統,可以修改其 .xinitrc
初始化配置檔案來完成:
syndaemon -t -k -i 2 -d &
其中的 -i 2
表示兩秒空閒,即鍵盤事件後的兩秒內不允許響應觸控板 Tap。更多資訊請參照手冊頁:
man syndaemon
外接滑鼠時禁用觸控板
在 arch linux 中,使用 udev 監測硬體的熱拔插,通過修改其規則檔案,來響應外接滑鼠事件,從而禁用和啟用觸控板。如下的規則檔案,呼叫了 synclient。
#file: /etc/udev/rules.d/01-touchpad.rules
ACTION=="add", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0.0", ENV{XAUTHORITY}="/home/harttle/.Xauthority", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient TouchpadOff=1"
ACTION=="remove", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0.0", ENV{XAUTHORITY}="/home/harttle/.Xauthority", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient TouchpadOff=0"
注意:該檔案中每個操作必須單獨一行,可以使用 \
來折行;SUBSYSTEM
與 KERNEL
指定了裝置 /dev/input/mouse[0-9]
(archwiki的中文頁面中此處有誤,我會找時間去修改)。瞭解更多 udev rules 語法:https://wiki.archlinux.org/index.php/Udev
開機時滑鼠檢測
PS/2 滑鼠在開機時不會出發 udev 規則。我們做一個桌面環境的啟動指令碼,在 .xinitrc,profile 中呼叫,或者放在 KDE 的 Autostart 中:
#!/bin/bash
ids=`ls /dev/input/by-id | grep -E '.*-mouse'`
[ "$ids" ] && synclient TouchpadOff=1
觸控板識別錯誤
對於某些型號的機器,Arch 下觸控板識別會有問題(核心bug),官方建議從 AUR 安裝 psmouse-alps-driver
。
受影響的機器有:
- Acer Aspire 7750G
- Dell Latitude E6230, E6520, E6430 and E6530 (ALPS DualPoint TouchPad), Inspiron N5110 (ALPS GlidePoint), Inspiron 14R Turbo SE7420/SE7520 (ALPS GlidePoint)
- Samsung NC110/NF210/QX310/QX410/QX510/SF310/SF410/SF510/RF410/RF510/RF710/RV515
如果問題還沒有解決,可以手動編譯該模組載入核心。
解除安裝原有 Alps 觸控板驅動
pacman -R psmouse-alps-driver
解壓縮,並拷貝至
/usr/src
tar -xvf alps-xxx.tar sudo cp -r usr /
加入編譯樹,並進行編譯
sudo dkms add psmouse/alps-xxx sudo dkms autoinstall
解除安裝原有模組並載入新的核心模組
sudo rmmod psmouse || sudo modprobe psmouse