我想知道如何确定哪个驱动程序(以下驱动程序中)正在处理我的触摸板:
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
答案1
很可能他们都没有这样做。例如,在我使用 Fedora 19 和带有 Synaptic 触摸板的 Thinkpad 410 的系统上,我也没有内核驱动程序。
$ lsmod|grep -iE "apple|cyapa|sermouse|synap|psmouse|vsxx|bcm"
那么这个设备是由什么来维护的呢?嗯,它实际上是这个内核模块:
$ lsmod|grep -iE "input"
uinput 17672 0
如果您想了解有关此模块的更多信息,可以使用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
...
事实证明,此类输入设备通常在更高级别进行处理,在这种情况下,实际驱动程序是在 X11 级别实现的。
uinput 是一个 Linux 内核模块,允许处理用户态的输入子系统。它可用于创建和处理应用程序中的输入设备。它在 /dev/input 目录中创建一个字符设备。该设备是一个虚拟接口,它不属于物理设备。
那么我的触摸板驱动程序在哪里?
它们位于 X11 的子系统中。您可以使用该命令查看设备xinput --list
。例如,以下是我的 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)]
请注意,我的触摸板出现在该列表中。您可以通过 找到有关这些设备的更多信息/proc
,例如:
$ 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
...
好的,但是司机在哪里?
如果您的系统使用的是 Synaptic 触摸板(我相信他们占所有触摸板的 90%),那么深入挖掘,您可以执行以下操作,locate synaptics | grep xorg
应该会显示以下文件:
$ 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
第一个结果是您要询问的实际驱动程序。它通过此处的第二个文件加载到 X.org 中:
Section "InputClass"
Identifier "touchpad catchall"
Driver "synaptics"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
EndSection
还有这一行:
MatchDevicePath "/dev/input/event*"
是将物理设备与该驱动程序关联起来的。你可能会问自己,这个人怎么能这么确定?使用此命令显示与我之前显示的输出id=12
中的给定 Synaptic TouchPad 关联的设备:xinput --list
$ xinput --list-props 12 | grep "Device Node"
Device Node (251): "/dev/input/event4"
答案2
$ cat /var/log/Xorg.0.log | grep "input driver"
在我的笔记本电脑上显示:
...
[ 9.054] (II) Using input driver 'synaptics' for 'Elan Touchpad'
...