Welcher Treiber bedient mein Touchpad?

22

Ich möchte wissen, wie ich feststellen kann, welcher Treiber (aus den unten aufgeführten) mit meinem Touchpad umgeht:

appletouch.ko.gz, cyapa.ko.gz, sermouse.ko.gz, synaptics_usb.ko.gz, bcm5974.ko.gz, psmouse.ko.gz, synaptics_i2c.ko.gz, vsxxxaa.ko.gz

banuy
quelle
1
Machen Sie eine lsmodund sehen Sie, welcher dieser Treiber geladen ist. Vielleicht möchten Sie auch Ihre lesen /var/log/Xorg.0.log.
Wingedsubmariner
Diese Frage war eine Fortsetzung meiner vorherigen . Um ehrlich zu sein sieht es so aus, als ob keiner geladen ist.
22.

Antworten:

34

Es ist wahrscheinlich, dass keiner von ihnen es tut. Auf meinem System, auf dem ich zum Beispiel Fedora 19 und ein Thinkpad 410 mit einem synaptischen Touchpad verwende, habe ich auch keinen Kerneltreiber.

$ lsmod|grep -iE "apple|cyapa|sermouse|synap|psmouse|vsxx|bcm"

Also, was kümmert sich dann um dieses Gerät? Nun, es ist eigentlich dieses Kernel-Modul:

$ lsmod|grep -iE "input"
uinput                 17672  0 

Wenn Sie mehr über dieses Modul erfahren möchten, können Sie Folgendes verwenden modinfo uinput:

$ modinfo uinput
filename:       /lib/modules/3.13.11-100.fc19.x86_64/kernel/drivers/input/misc/uinput.ko
version:        0.3
license:        GPL
description:    User level driver support for input subsystem
author:         Aristeu Sergio Rozanski Filho
alias:          devname:uinput
alias:          char-major-10-223
...

Wie sich herausstellt, werden Eingabegeräte wie diese häufig auf einer höheren Ebene behandelt. In diesem Fall werden die eigentlichen Treiber auf der X11-Ebene implementiert.

uinput ist ein Linux-Kernelmodul, mit dem das Eingabe-Subsystem vom Benutzerland aus verwaltet werden kann. Es kann zum Erstellen und Verarbeiten von Eingabegeräten aus einer Anwendung verwendet werden. Es erstellt ein Zeichengerät im Verzeichnis / dev / input. Das Gerät ist eine virtuelle Schnittstelle und gehört nicht zu einem physischen Gerät.

SOURCE: Erste Schritte mit uinput: Das Eingabesubsystem auf Benutzerebene

Wo sind dann meine Touchpad-Treiber?

Sie befinden sich im X11-Subsystem. Sie können das Gerät mit dem xinput --listBefehl anzeigen. Hier sind zum Beispiel die Geräte auf meinem Thinkpad-Laptop:

$ xinput --list 
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                     id=9    [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                     id=10   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=12   [slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                     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)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                    id=14   [slave  keyboard (3)]

Beachten Sie, dass mein TouchPad in dieser Liste angezeigt wird. Weitere Informationen zu diesen Geräten erhalten Sie /procbeispielsweise über:

$ cat /proc/bus/input/devices 
...
I: Bus=0011 Vendor=0002 Product=0007 Version=01b1
N: Name="SynPS/2 Synaptics TouchPad"
P: Phys=isa0060/serio1/input0
S: Sysfs=/devices/platform/i8042/serio1/input/input5
U: Uniq=
H: Handlers=mouse0 event4 
B: PROP=9
B: EV=b
B: KEY=6420 30000 0 0 0 0
B: ABS=260800011000003
...

OK, aber wo ist der Fahrer?

Wenn Ihr System ein synaptisches Touchpad verwendet (von dem ich glaube, dass es ~ 90% aller Touchpads ausmacht), können Sie locate synaptics | grep xorgFolgendes tun :

$ locate synaptics | grep xorg
/usr/lib64/xorg/modules/input/synaptics_drv.so
/usr/share/X11/xorg.conf.d/50-synaptics.conf
/usr/share/doc/xorg-x11-drv-synaptics-1.7.1
/usr/share/doc/xorg-x11-drv-synaptics-1.7.1/COPYING
/usr/share/doc/xorg-x11-drv-synaptics-1.7.1/README

Die ersten Ergebnisse dort sind die tatsächlichen Treiber, nach denen Sie fragen. Es wird über die zweite Datei hier in X.org geladen:

Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
EndSection

Und diese Zeile:

        MatchDevicePath "/dev/input/event*"

Verknüpft die physischen Geräte mit diesem Treiber. Und Sie fragen sich wahrscheinlich, wie kann dieser Kerl so sicher sein? Wenn Sie diesen Befehl verwenden, wird das Gerät angezeigt, das mit meinem angegebenen Synaptic TouchPad verknüpft ist, und zwar anhand id=12der xinput --listzuvor angezeigten Ausgabe:

$ xinput --list-props 12 | grep "Device Node"
    Device Node (251):  "/dev/input/event4"
slm
quelle
Sehr interessant! Da ich anstelle von Synaptics den mtrack xorg-Treiber verwende, habe ich etwas anderes gefunden als auf der mtrack-Seite angegeben : "Unterstützt jedes Trackpad, dessen Kerneltreiber das geschlitzte Multitouch-Protokoll verwendet." Es scheint, dass der xorg-Treiber nicht wirklich direkten Kontakt mit der Hardware bekommt, aber Ihre Antwort scheint mit dieser Aussage in Konflikt zu geraten ...
xuhdev
Ich denke, xorg Input-Treiber unterscheidet sich vom Gerätetreiber. Ich bin gelaufen journalctl -b 0und habe dann gesucht touchpad, und ich habe diese Zeile (**) bcm5974: Applying InputClass "evdev touchpad catchall". So weiß ich, bcm5974ist der Gerätetreiber
xuhdev
@xuhdev - Der xorg-Treiber erhält die Bewegungsdaten über das uinputKernelmodul (Treiber). Was ist an dieser Aussage nicht klar?
slm
@slm Ich denke, das OP fragt nach dem Gerätetreiber, nicht nach dem xorg-Treiber. Was Sie gezeigt haben, ist der xorg-Treiber, der sich meines Erachtens völlig vom Gerätetreiber unterscheidet. uinputDas Modul ist nicht auf Hardware-Geräte ausgerichtet. Es hängt davon ab, ob Hardwaretreiber die richtigen Informationen bereitstellen. Anschließend bietet uinput eine einheitliche Eingabeschnittstelle für das Benutzerland. Die Userland-Software, in diesem Fall der synaptics xorg-Treiber, kann xorg über uinput mit dem Kernel verbinden (und Benutzereingaben indirekt). Bitte korrigieren Sie mich, wenn ich falsch
liege
Sie sollten auch hid_multitouchin Ihre Liste aufnehmen. Ich denke, das ist es, was das Touchpad auf meinem Dell Precision verwaltet, und ich habe das uinputModul nicht geladen.
Cerin
2
$ cat /var/log/Xorg.0.log | grep "input driver"

Auf meinem Laptop zeigt es:

...
[     9.054] (II) Using input driver 'synaptics' for 'Elan Touchpad'
...
Golopot
quelle
2
Verwenden cat | grep Sie diese Option nicht, da Sie sie direkt grepfür Dateien verwenden können, die den catBefehl überspringen .
Thomas
grep -e "input driver" /var/log/Xorg.0.log
Masterwok
journalctl -u display-manager | grep "input driver"und xinput --listhalf mir herauszufinden, ob ich die "Elantech" -Kernel-Option aktivieren muss, wenn ich den Kernel neu kompiliere.
user7610