내 터치패드를 다루는 운전자는 누구인가요?

내 터치패드를 다루는 운전자는 누구인가요?

다음 중 어느 드라이버가 내 터치패드를 처리하고 있는지 확인하는 방법을 알고 싶습니다.

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 디렉토리에 문자 장치를 생성합니다. 장치는 가상 인터페이스이며 물리적 장치에 속하지 않습니다.

원천: 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*"

물리적 장치 및 드라이버와 연결됩니다. 당신은 자문할 수도 있습니다. 이 사람이 어떻게 그렇게 확신할 수 있습니까? 이전에 표시된 출력 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'
...

관련 정보