Я хотел бы знать, как определить, какой драйвер (из приведенных ниже) обрабатывает мою сенсорную панель:
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
Я хотел бы знать, как определить, какой драйвер (из приведенных ниже) обрабатывает мою сенсорную панель:
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
Ответы:
Вероятно, никто из них не делает этого. Например, в моей системе, где я использую Fedora 19 и Thinkpad 410 с тачпадом Synaptic, у меня также нет драйвера ядра.
$ 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. Устройство представляет собой виртуальный интерфейс, оно не принадлежит физическому устройству.
ИСТОЧНИК: Начало работы с uinput: подсистема ввода уровня пользователя
Они в подсистеме 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*"
Это то, что связывает физические устройства с этим драйвером. И вы, вероятно, спрашиваете себя, как этот парень может быть так уверен? Использование этой команды показывает устройство, связанное с моей данной Synaptic TouchPad, id=12
из xinput --list
вывода, который я показал ранее:
$ xinput --list-props 12 | grep "Device Node"
Device Node (251): "/dev/input/event4"
journalctl -b 0
а затем искал touchpad
, и у меня есть эта строка (**) bcm5974: Applying InputClass "evdev touchpad catchall"
. Таким образом я знаю bcm5974
это драйвер устройства
uinput
модуль ядра (драйвер). Что не ясно в этом утверждении?
uinput
модуль не относится к аппаратным устройствам; это зависит от драйверов оборудования для предоставления правильной информации, а затем uinput предоставляет унифицированный интерфейс ввода для пользовательского пространства. Программное обеспечение userland, в данном случае драйвер xap synaptics, может соединять xorg с ядром (и косвенно вводить пользователя) с помощью uinput. Пожалуйста, поправьте меня, если я ошибаюсь, так как я не эксперт в этой области ..
hid_multitouch
в свой список. Я думаю, что именно этим управляет тачпад на моем Dell Precision, и у меня не uinput
загружен модуль.
$ cat /var/log/Xorg.0.log | grep "input driver"
На моем ноутбуке это показывает:
...
[ 9.054] (II) Using input driver 'synaptics' for 'Elan Touchpad'
...
cat | grep
поскольку вы можете напрямую использовать grep
файлы, пропускающие cat
команду.
grep -e "input driver" /var/log/Xorg.0.log
journalctl -u display-manager | grep "input driver"
и xinput --list
помог мне понять, что мне нужно включить опцию ядра "Elantech" при перекомпиляции ядра.
lsmod
и посмотрите, какой из этих драйверов загружен. Вы также можете прочитать ваши/var/log/Xorg.0.log
.