Tôi muốn biết cách xác định trình điều khiển nào (trong số những người bên dưới) đang xử lý bàn di chuột của tôi:
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
Tôi muốn biết cách xác định trình điều khiển nào (trong số những người bên dưới) đang xử lý bàn di chuột của tôi:
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
Câu trả lời:
Có vẻ như không ai trong số họ đang làm điều đó. Trên hệ thống của tôi, ví dụ như tôi đang sử dụng Fedora 19 và Thinkpad 410 với bàn di chuột Synaptic, tôi cũng không có trình điều khiển Kernel.
$ lsmod|grep -iE "apple|cyapa|sermouse|synap|psmouse|vsxx|bcm"
Vì vậy, những gì chăm sóc thiết bị này? Vâng, đây thực sự là mô-đun Kernel này:
$ lsmod|grep -iE "input"
uinput 17672 0
Nếu bạn muốn xem thêm về mô-đun này, bạn có thể sử dụng 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
...
Vì hóa ra các thiết bị đầu vào như những thiết bị này thường được xử lý ở mức cao hơn, trong trường hợp này, các trình điều khiển thực tế được thực hiện ở cấp X11.
uinput là một mô-đun hạt nhân linux cho phép xử lý hệ thống con đầu vào từ vùng đất người dùng. Nó có thể được sử dụng để tạo và xử lý các thiết bị đầu vào từ một ứng dụng. Nó tạo ra một thiết bị ký tự trong thư mục / dev / input. Thiết bị này là một giao diện ảo, nó không thuộc về một thiết bị vật lý.
NGUỒN: Bắt đầu với uinput: hệ thống con đầu vào cấp người dùng
Họ đang ở trong hệ thống con của X11. Bạn có thể thấy thiết bị bằng xinput --list
lệnh. Ví dụ: Đây là các thiết bị trên máy tính xách tay Thinkpad của tôi:
$ 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)]
Lưu ý rằng TouchPad của tôi xuất hiện trong danh sách này. Bạn có thể tìm hiểu thêm thông tin về các thiết bị này thông qua /proc
, ví dụ:
$ 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
...
Tìm hiểu sâu hơn nếu hệ thống của bạn đang sử dụng bàn di chuột Synaptic (mà tôi tin rằng họ tạo ra ~ 90% tất cả các bàn di chuột), bạn có thể thực hiện một thao locate synaptics | grep xorg
tác sẽ tiết lộ các tệp sau:
$ 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
Kết quả đầu tiên là trình điều khiển thực tế mà bạn đang hỏi về. Nó được tải vào X.org thông qua tệp thứ hai tại đây:
Section "InputClass"
Identifier "touchpad catchall"
Driver "synaptics"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
EndSection
Và dòng này:
MatchDevicePath "/dev/input/event*"
Là những gì liên kết các thiết bị vật lý với trình điều khiển này. Và có lẽ bạn đang tự hỏi, làm thế nào mà anh chàng này có thể chắc chắn như vậy? Sử dụng lệnh này sẽ hiển thị thiết bị được liên kết với TouchPad Synaptic đã cho của tôi bằng cách sử dụng id=12
từ xinput --list
đầu ra mà tôi đã hiển thị trước đó:
$ xinput --list-props 12 | grep "Device Node"
Device Node (251): "/dev/input/event4"
journalctl -b 0
và sau đó tìm kiếm touchpad
, và tôi có dòng này (**) bcm5974: Applying InputClass "evdev touchpad catchall"
. Vì vậy, tôi biết bcm5974
là trình điều khiển thiết bị
uinput
mô-đun hạt nhân (trình điều khiển). Điều gì không rõ ràng về tuyên bố này?
uinput
mô-đun không được định hướng liên quan đến các thiết bị phần cứng; nó phụ thuộc vào trình điều khiển phần cứng để cung cấp thông tin chính xác và sau đó uinput cung cấp giao diện nhập thống nhất cho vùng người dùng. Phần mềm userland, trong trường hợp này, trình điều khiển synaptics xorg, có thể kết nối xorg với kernel (và người dùng nhập gián tiếp) bằng cách sử dụng uinput. Xin hãy sửa tôi nếu tôi sai, vì tôi không phải là chuyên gia trong lĩnh vực này ..
hid_multitouch
trong danh sách của bạn. Tôi nghĩ đó là những gì đang quản lý bàn di chuột trên Dell Precision của tôi và tôi không uinput
tải mô-đun.
$ cat /var/log/Xorg.0.log | grep "input driver"
Trên máy tính xách tay của tôi, nó hiển thị:
...
[ 9.054] (II) Using input driver 'synaptics' for 'Elan Touchpad'
...
cat | grep
vì bạn có thể trực tiếp sử dụng grep
trên các tệp bỏ qua cat
lệnh.
grep -e "input driver" /var/log/Xorg.0.log
journalctl -u display-manager | grep "input driver"
và xinput --list
giúp tôi tìm ra tôi cần kích hoạt tùy chọn kernel "Elantech" khi biên dịch lại kernel.
lsmod
và xem những trình điều khiển được tải. Bạn cũng có thể muốn đọc của bạn/var/log/Xorg.0.log
.