Qual driver está manipulando meu touchpad?

19

Gostaria de saber como determinar qual driver (dentre os abaixo) está manipulando meu touchpad:

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

    
por banuy 22.05.2014 / 02:32

2 respostas

28

É provável que nenhum deles esteja fazendo isso. No meu sistema, por exemplo, onde estou usando o Fedora 19 e um Thinkpad 410 com um touchpad Synaptic, também não tenho driver Kernel.

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

Então, o que está tomando conta desse dispositivo? Bem, na verdade é este módulo do Kernel:

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

Se você quiser ver mais sobre esse módulo, use 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
...

Como se verifica, dispositivos de entrada como estes são frequentemente tratados em um nível mais alto, neste caso, os drivers reais são implementados no nível X11.

uinput is a linux kernel module that allows to handle the input subsystem from user land. It can be used to create and to handle input devices from an application. It creates a character device in /dev/input directory. The device is a virtual interface, it doesn't belong to a physical device.

FONTE: Introdução ao uinput: o subsistema de entrada de nível de usuário

Então, onde estão os drivers do meu touchpad?

Eles estão no subsistema do X11. Você pode ver o dispositivo usando o comando xinput --list . Por exemplo, aqui estão os dispositivos no meu laptop Thinkpad:

$ 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)]

Observe que o meu TouchPad aparece nesta lista. Você pode encontrar informações adicionais sobre esses dispositivos por meio de /proc , por exemplo:

$ 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, mas onde está o motorista?

Indo mais fundo se o seu sistema está usando um touchpad Synaptic (que acredito que eles fazem ~ 90% de todos os touchpads), você pode fazer um locate synaptics | grep xorg que deve revelar os seguintes arquivos:

$ 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

Os primeiros resultados são o driver que você está perguntando. Ele é carregado no X.org através do segundo arquivo aqui:

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

E esta linha:

        MatchDevicePath "/dev/input/event*"

É o que associa os dispositivos físicos a esse driver. E você provavelmente está se perguntando, como esse cara pode ter tanta certeza? Usar este comando mostra o dispositivo associado ao meu Synaptic TouchPad determinado usando id=12 da xinput --list output que mostrei anteriormente:

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

No meu laptop, mostra:

...
[     9.054] (II) Using input driver 'synaptics' for 'Elan Touchpad'
...
    
por 24.03.2018 / 14:55