Який драйвер обробляє мій тачпад?


22

Я хотів би знати, як визначити, який драйвер (із наведених нижче) обробляє мій тачпад:

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
Зробіть lsmodі подивіться, який із цих драйверів завантажений. Ви також можете прочитати своє /var/log/Xorg.0.log.
крила підводного човна

ці питання були наслідком мого попереднього . Якщо чесно, схоже, що ніхто не завантажений.
заборонити

Відповіді:


34

Ймовірно, ніхто з них цього не робить. Наприклад, у моїй системі, де я використовую 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"

Дуже цікаво! Оскільки я використовую драйвер xtrack xorg замість synaptics, я виявив щось інше, ніж те, що ви сказали на сторінці mtrack : "Підтримує будь-яку трекпад, чий драйвер ядра використовує протокол мультитач з щілиною ". Здається, драйвер xorg насправді не має прямого зв’язку з обладнанням, але ваша відповідь, здається, суперечить цьому твердженню ...
xuhdev

Я думаю, що драйвер введення xorg відрізняється від драйвера пристрою. Я побіг journalctl -b 0і потім шукав touchpad, і у мене є ця лінія (**) bcm5974: Applying InputClass "evdev touchpad catchall". Таким чином я знаю, що bcm5974це драйвер пристрою
xuhdev

@xuhdev - драйвер xorg отримує дані про рух через uinputмодуль ядра (драйвер). Що не ясно в цьому твердженні?
slm

@slm Я думаю, що ОП запитує про драйвер пристрою, а не про драйвер xorg. Що ви показали - це драйвер xorg, який, на моє розуміння, абсолютно відрізняється від драйвера пристрою. uinputмодуль не спрямований на апаратні пристрої; від драйверів апаратних засобів залежить правильну інформацію, і тоді uinput надає єдиний інтерфейс введення в країну користувача. Програмне забезпечення userland, у цьому випадку драйвер synaptics xorg, може з'єднати xorg з ядром (і введення користувача непрямим способом) за допомогою uinput. Будь ласка, виправте мене, якщо я помиляюся, оскільки я не є експертом у цій галузі ..
xuhdev

Ви також повинні включити hid_multitouchу свій список. Я думаю, що це управління тачпада на моїй Dell Precision, і uinputмодуль не завантажений.
Серін

2
$ cat /var/log/Xorg.0.log | grep "input driver"

На моєму ноутбуці видно:

...
[     9.054] (II) Using input driver 'synaptics' for 'Elan Touchpad'
...

2
Не використовуйте так, cat | grep як ви можете безпосередньо використовувати grepфайли, які пропускають catкоманду.
Томас,

grep -e "input driver" /var/log/Xorg.0.log
masterwok

journalctl -u display-manager | grep "input driver"і xinput --listдопомогло мені зрозуміти, що мені потрібно ввімкнути параметр ядра "Elantech" при перекомпіляції ядра.
користувач7610
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.