it-swarm.com.de

Welcher Treiber bedient mein Touchpad?

Ich möchte wissen, wie ich feststellen kann, welcher Treiber (von den unten aufgeführten) mein Touchpad bedient:

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

22
banuy

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

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

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 modinfo uinput Verwenden:

$ 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 tatsächlichen Treiber auf der X11-Ebene implementiert.

uinput ist ein Linux-Kernelmodul, mit dem das Eingabesubsystem vom Benutzerland aus verwaltet werden kann. Es kann verwendet werden, um Eingabegeräte aus einer Anwendung zu erstellen und zu verarbeiten. 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 Subsystem von X11. Sie können das Gerät mit dem Befehl xinput --list Anzeigen. Beispiel: Hier sind 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 finden Sie unter /proc, Zum Beispiel:

$ 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 einen locate synaptics | grep xorg Ausführen, der die folgenden Dateien anzeigen sollte:

$ 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

Das erste Ergebnis ist der tatsächliche Treiber, nach dem 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*"

Ist das, was die physischen Geräte mit diesem Treiber verknüpft. Und Sie fragen sich wahrscheinlich, wie kann dieser Kerl so sicher sein? Wenn Sie diesen Befehl verwenden, wird das mit meinem angegebenen Synaptic TouchPad verknüpfte Gerät mit id=12 Aus der zuvor gezeigten Ausgabe von xinput --list Angezeigt:

$ xinput --list-props 12 | grep "Device Node"
    Device Node (251):  "/dev/input/event4"
34
slm
$ cat /var/log/Xorg.0.log | grep "input driver"

Auf meinem Laptop zeigt es:

...
[     9.054] (II) Using input driver 'synaptics' for 'Elan Touchpad'
...
2
golopot