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
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
Respuestas:
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
Están en el subsistema X11. Puede ver el dispositivo usando el xinput --list
comando. 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
...
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 xorg
que 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=12
el xinput --list
resultado que mostré anteriormente:
$ xinput --list-props 12 | grep "Device Node"
Device Node (251): "/dev/input/event4"
journalctl -b 0
y luego busqué touchpad
, y tengo esta línea (**) bcm5974: Applying InputClass "evdev touchpad catchall"
. Así que sé bcm5974
es el controlador de dispositivo
uinput
módulo del kernel (controlador). ¿Qué no está claro acerca de esta declaración?
uinput
el 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
hid_multitouch
en su lista. Creo que eso es lo que está administrando el panel táctil en mi Dell Precision, y no tengo el uinput
módulo cargado.
$ 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'
...
cat | grep
ya que puede usarlo directamente grep
en archivos omitiendo el cat
comando.
grep -e "input driver" /var/log/Xorg.0.log
journalctl -u display-manager | grep "input driver"
y xinput --list
me ayudó a descubrir que necesito habilitar la opción del núcleo "Elantech" al volver a compilar el núcleo.
lsmod
y vea cuál de esos controladores está cargado. También es posible que desee leer su/var/log/Xorg.0.log
.