1. 程式人生 > >Linux下的觸控板設定:以 Arch Linux 為例

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"

注意:該檔案中每個操作必須單獨一行,可以使用 \ 來折行;SUBSYSTEMKERNEL 指定了裝置 /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

如果問題還沒有解決,可以手動編譯該模組載入核心。

  1. 解除安裝原有 Alps 觸控板驅動

    pacman -R psmouse-alps-driver
  2. 解壓縮,並拷貝至 /usr/src

    tar -xvf alps-xxx.tar
    sudo cp -r usr /
  3. 加入編譯樹,並進行編譯

    sudo dkms add psmouse/alps-xxx
    sudo dkms autoinstall
  4. 解除安裝原有模組並載入新的核心模組

    sudo rmmod psmouse || sudo modprobe psmouse