Я хотів би знати, як визначити, який драйвер (із наведених нижче) обробляє мій тачпад:
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, у мене також немає драйвера Kernel.
$ 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, у цьому випадку драйвер synaptics xorg, може з'єднати 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
.