Mein Touchpad wird als generische Maus erkannt und verursacht bei alltäglichen Dingen viele Probleme. Ich habe mehrere Distributionen ausprobiert, darunter Ubuntu (16.04, 16.10, 17.04), Arch und derzeit Manjaro.
Ich kann nicht zoomen und wenn ich etwas eintippe, führt die kleinste Berührung dazu, dass das Touchpad einen Klick erkennt und den Fokus von dem ablenkt, was ich gerade tue. Bei meinem vorherigen Modell konnte ich das deaktivieren, indem ich einstellte maxTapTime=0
.
Ich verwende ein Acer Aspire V5-573G. Gibt es eine Möglichkeit, das System dazu zu bringen, das Touchpad als Touchpad und nicht als Maus zu erkennen? Soweit ich gelesen habe, muss ich möglicherweise warten, bis der Kernel Unterstützung hinzufügt. Wenn das der Fall ist, wie ermutige ich das? Ist es mir möglich, meine eigenen Treiber zu schreiben, und wenn ja, könnte mir jemand den richtigen Weg weisen? Vielen Dank im Voraus!
Ich habe einige Ausgaben bereitgestellt, bin mir aber nicht sicher, ob das ausreicht. Wenn ich also etwas übersehen habe, lassen Sie es mich bitte wissen.
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
Antwort1
Sie haben ein Touchpad an den PS/2-Mausanschluss angeschlossen (Linux-Treiber i8042, benannt nach dem Originalchip), weshalb es automatisch als generische Maus erkannt wird.
Versuchen Sie, den Synaptics-Treiber (Pakete usw. je nach Distribution) zu verwenden xf86-input-synaptics
, xserver-xorg-input-synaptics
wie empfohlen, z. B.Hier.
Suchen Sie nach /dev/input/by-path/
dem Symlink, der dem gerade gefundenen Gerätepfad ähnelt und auf Ihr aktuelles /dev/input/eventX
Touchpad verweist. Es gibt keine Garantie dafür, dass die Nummern für Eingabegeräte über mehrere Systemstarts hinweg stabil bleiben (obwohl dies häufig der Fall ist), daher ist es besser, einen solchen Symlink zu verwenden.
Erstellen Sie eine xorg.conf
Datei (Standardpfad ist /etc/X11/xorg.conf
) mit folgendem Abschnitt
Section "InputClass"
Identifier "touchpad"
Driver "synaptics"
MatchIsTouchpad "1"
MatchDevicePath "/dev/input/by-path/path_to_your_touchpad"
EndSection
Fügen Sie Option
Parameter hinzu, um es zu konfigurieren. Überprüfen Sie /var/log/Xorg.0.log
nach dem Neustart von X oder dem Neustart, ob alles funktioniert.
Lesen Sie die Manpage des Treibers und googeln Sie nach „Linux Synaptics-Treiber“ usw., um weitere Informationen zu erhalten.
Bearbeiten:
Wenn es keinen Symlink gibt /dev/input/by-path
, ändert sich die Nummer beim Neustart, versuchen Sie es mit /dev/input/by-id
. Wenn das auch nicht funktioniert, brauchen Sie eine udev
Regel.
udevadm info -a -p /devices/platform/i8042/seriol/input/...
mit dem aktuellen Pfad wird der Pfadbaum nach oben durchsucht und es werden Attribute angezeigt, mit denen Sie ihn identifizieren können. Erstellen Sie eine neue udev
Regeldatei, auf meinem System wäre das etwa so /etc/udev/rules.d/70-acer-touchpad.rules
, und Ihre Regel wird wahrscheinlich so aussehen
ACTION=="add", SUBSYSTEMS=="serio", ATTRS{foo}=="foo", ATTRS{bar}="bar", SYMLINK+="input/by-id/acer-touchpad"
Die Details hängen von Ihrem System und den angezeigten Attributen ab und müssen angepasst werden, bis es funktioniert. Suchen Sie bei Google nach „Udev-Regel schreiben“, um Tutorials usw. zu erhalten, und man udevadm
…
Bearbeiten
Laut der udevadm
Ausgabe
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"
Ich würde es ATTRS{phys}=="isa0060/serio1/input0"
zuerst versuchen. Vielleicht musst du wechseln, SUBSYSTEMS=="serio"
wenn SUBSYSTEMS=="input"
es nicht funktioniert.