我的觸控板被認為是通用滑鼠,它在日常事物中產生了許多問題。我嘗試過幾個發行版,包括 Ubuntu(16.04、16.10、17.04)、Arch 和目前的 Manjaro。
我無法縮放,當我輸入任何內容時,最輕微的觸摸都會導致觸控板識別出點擊,從而分散我正在做的事情的注意力。在我以前的模型上,我可以透過設定來停用它maxTapTime=0
。
我使用的是宏碁 Aspire V5-573G。有沒有辦法讓系統將觸控板識別為觸控板而不是滑鼠?根據我所讀到的內容,我可能必須等待內核添加支援。如果是這樣的話,我該如何鼓勵呢?我是否可以編寫自己的驅動程序,如果可以,有人可以指出我正確的方向嗎?先致謝!
我已經提供了一些輸出,但我不確定這是否足夠,所以如果我遺漏了任何內容,請告訴我。
uname -a
Linux brandyn-laptop 4.9.20-1-MANJARO #1 SMP PREEMPT Fri Mar 31 17:49:34 UTC 2017 x86_64 GNU/Linux
xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ ImPS/2 Generic Wheel Mouse id=13 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Video Bus id=8 [slave keyboard (3)]
↳ Power Button id=9 [slave keyboard (3)]
↳ Sleep Button id=10 [slave keyboard (3)]
↳ HD WebCam id=11 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=12 [slave keyboard (3)]
↳ Acer WMI hotkeys id=14 [slave keyboard (3)]
lspci
00:00.0 Host bridge: Intel Corporation Haswell-ULT DRAM Controller (rev 09)
00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT Integrated Graphics Controller (rev 09)
00:03.0 Audio device: Intel Corporation Haswell-ULT HD Audio Controller (rev 09)
00:14.0 USB controller: Intel Corporation 8 Series USB xHCI HC (rev 04)
00:16.0 Communication controller: Intel Corporation 8 Series HECI #0 (rev 04)
00:1b.0 Audio device: Intel Corporation 8 Series HD Audio Controller (rev 04)
00:1c.0 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 1 (rev e4)
00:1c.2 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 3 (rev e4)
00:1c.3 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 4 (rev e4)
00:1c.4 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 5 (rev e4)
00:1d.0 USB controller: Intel Corporation 8 Series USB EHCI #1 (rev 04)
00:1f.0 ISA bridge: Intel Corporation 8 Series LPC Controller (rev 04)
00:1f.2 SATA controller: Intel Corporation 8 Series SATA Controller 1 [AHCI mode] (rev 04)
00:1f.3 SMBus: Intel Corporation 8 Series SMBus Controller (rev 04)
01:00.0 3D controller: NVIDIA Corporation GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (rev a1)
04:00.0 Network controller: Qualcomm Atheros AR9462 Wireless Network Adapter (rev 01)
05:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTL8411B PCI Express Card Reader (rev 01)
05:00.1 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 14)
udevadm info -q path -n /dev/input/event16
/devices/platform/i8042/seriol/input/input9/event16
答案1
您有一個連接到 PS/2 滑鼠連接埠(Linux 驅動程式 i8042,以原始晶片命名)的觸控板,這就是它被自動檢測為通用滑鼠的原因。
嘗試使用 synaptics 驅動程式(套件等xf86-input-synaptics
,xserver-xorg-input-synaptics
取決於發行版)驅動程序,如建議的,例如這裡。
查看/dev/input/by-path/
並識別與您剛剛找到的設備路徑類似的符號鏈接,以及指向當前/dev/input/eventX
觸控板的鏈接。輸入裝置的數字不能保證在啟動過程中保持穩定(儘管通常是這樣),因此最好使用這樣的符號連結。
使用以下部分建立一個xorg.conf
檔案(標準路徑是)/etc/X11/xorg.conf
Section "InputClass"
Identifier "touchpad"
Driver "synaptics"
MatchIsTouchpad "1"
MatchDevicePath "/dev/input/by-path/path_to_your_touchpad"
EndSection
新增Option
參數進行配置。/var/log/Xorg.0.log
重新啟動 X 或重新啟動後查看是否一切正常。
閱讀驅動程式手冊頁並谷歌搜尋“linux synaptics driver”等以獲取更多資訊。
編輯:
/dev/input/by-path
如果號碼上沒有符號連結在重新啟動時確實發生變化,請嘗試/dev/input/by-id
。如果這也不起作用,您就需要製定udev
規則。做
udevadm info -a -p /devices/platform/i8042/seriol/input/...
對於目前路徑,這將沿著路徑樹向上走並顯示可用於識別它的屬性。建立一個新的udev
規則文件,在我的系統上它會類似於/etc/udev/rules.d/70-acer-touchpad.rules
,並且您的規則可能類似於
ACTION=="add", SUBSYSTEMS=="serio", ATTRS{foo}=="foo", ATTRS{bar}="bar", SYMLINK+="input/by-id/acer-touchpad"
詳細資訊取決於您的系統和您看到的屬性,並且需要調整直到它起作用。谷歌“編寫 udev 規則”以獲取教程等,以及man udevadm
.
編輯
根據udevadm
輸出,
looking at parent device '/devices/platform/i8042/serio1/input/input7':
KERNELS=="input7"
SUBSYSTEMS=="input"
DRIVERS==""
ATTRS{name}=="ImPS/2 Generic Wheel Mouse"
ATTRS{phys}=="isa0060/serio1/input0"
ATTRS{properties}=="1"
ATTRS{uniq}==""
looking at parent device '/devices/platform/i8042/serio1':
KERNELS=="serio1"
SUBSYSTEMS=="serio"
DRIVERS=="psmouse"
ATTRS{bind_mode}=="auto"
ATTRS{description}=="i8042 AUX port"
ATTRS{firmware_id}==""
ATTRS{protocol}=="ImPS/2"
ATTRS{rate}=="100"
ATTRS{resetafter}=="5"
ATTRS{resolution}=="200"
ATTRS{resync_time}=="0"
我會ATTRS{phys}=="isa0060/serio1/input0"
先試試看。如果不起作用,也許您需要更改SUBSYSTEMS=="serio"
。SUBSYSTEMS=="input"