¿Qué controlador maneja mi panel táctil?

22

Me gustaría saber cómo determinar qué controlador (de los siguientes) está manejando mi panel táctil:

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
fuente
1
Haga un lsmody vea cuál de esos controladores está cargado. También es posible que desee leer su /var/log/Xorg.0.log.
wingedsubmariner
Estas preguntas fueron un seguimiento de mi anterior . Para ser sincero, parece que ninguno está cargado.
banuy

Respuestas:

34

Es probable que ninguno de ellos lo esté haciendo. En mi sistema, por ejemplo, donde estoy usando Fedora 19 y un Thinkpad 410 con un panel táctil Synaptic, tampoco tengo un controlador Kernel.

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

Entonces, ¿qué está cuidando este dispositivo? Bueno, en realidad es este módulo Kernel:

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

Si desea ver más sobre este módulo, puede usar 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 resulta que los dispositivos de entrada como estos a menudo se tratan en un nivel superior, en este caso los controladores reales se implementan en el nivel X11.

uinput es un módulo de kernel de Linux que permite manejar el subsistema de entrada desde la tierra del usuario. Se puede usar para crear y manejar dispositivos de entrada desde una aplicación. Crea un dispositivo de caracteres en el directorio / dev / input. El dispositivo es una interfaz virtual, no pertenece a un dispositivo físico.

FUENTE: Primeros pasos con uinput: el subsistema de entrada de nivel de usuario

Entonces, ¿dónde están mis controladores de panel táctil?

Están en el subsistema X11. Puede ver el dispositivo usando el xinput --listcomando. Por ejemplo, aquí están los dispositivos en mi 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)]

Tenga en cuenta que mi TouchPad aparece en esta lista. Puede encontrar información adicional sobre estos dispositivos a través de /proc, por ejemplo:

$ 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, pero ¿dónde está el conductor?

Profundizando si su sistema está usando un panel táctil Synaptic (que creo que hacen ~ 90% de todos los paneles táctiles), puede hacer uno locate synaptics | grep xorgque revele los siguientes archivos:

$ 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

Los primeros resultados son el controlador real sobre el que está preguntando. Se carga en X.org a través del segundo archivo aquí:

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

Y esta linea:

        MatchDevicePath "/dev/input/event*"

Es lo que asocia los dispositivos físicos con este controlador. Y probablemente te estés preguntando, ¿cómo puede estar tan seguro este tipo? El uso de este comando muestra el dispositivo asociado con mi Synaptic TouchPad dado usando id=12el xinput --listresultado que mostré anteriormente:

$ xinput --list-props 12 | grep "Device Node"
    Device Node (251):  "/dev/input/event4"
slm
fuente
¡Muy interesante! Como uso el controlador mtrack xorg en lugar de los sinápticos, encontré algo diferente de lo que dijiste en la página mtrack : "Admite cualquier panel táctil cuyo controlador de kernel use el protocolo multitouch ranurado". Parece que el conductor xorg en realidad no llegar contacto directo con el hardware, pero su respuesta parece conflictos con esta declaración ...
xuhdev
Creo que el controlador de entrada xorg es diferente del controlador del dispositivo. Corrí journalctl -b 0y luego busqué touchpad, y tengo esta línea (**) bcm5974: Applying InputClass "evdev touchpad catchall". Así que sé bcm5974es el controlador de dispositivo
xuhdev
@xuhdev: el controlador xorg obtiene los datos de movimiento a través del uinputmódulo del kernel (controlador). ¿Qué no está claro acerca de esta declaración?
slm
@slm Creo que el OP pregunta por el controlador del dispositivo, no por el controlador xorg. Lo que ha mostrado es el controlador xorg, que, según tengo entendido, es totalmente diferente del controlador del dispositivo. uinputel módulo no está dirigido a dispositivos de hardware; depende de los controladores de hardware para proporcionar la información correcta, y luego uinput proporciona una interfaz de entrada unificada para el usuario. El software userland, en este caso el controlador synaptics xorg, puede conectar xorg con el kernel (y la entrada del usuario indirectamente) usando uinput. Por favor
corrígeme
También debe incluir hid_multitouchen su lista. Creo que eso es lo que está administrando el panel táctil en mi Dell Precision, y no tengo el uinputmódulo cargado.
Cerin
2
$ cat /var/log/Xorg.0.log | grep "input driver"

En mi computadora portátil muestra:

...
[     9.054] (II) Using input driver 'synaptics' for 'Elan Touchpad'
...
golopot
fuente
2
No lo use, cat | grep ya que puede usarlo directamente grepen archivos omitiendo el catcomando.
Thomas
grep -e "input driver" /var/log/Xorg.0.log
masterwok
journalctl -u display-manager | grep "input driver"y xinput --listme ayudó a descubrir que necesito habilitar la opción del núcleo "Elantech" al volver a compilar el núcleo.
user7610