
這裡的最終目標是打開/關閉滑鼠插頭上的觸控板,因此我嘗試使用 udevadm 從 udev 資料庫獲取滑鼠和觸控板的一些屬性,但我不明白這是如何工作的,不幸的是,手冊頁不是對我來說還不夠清楚…
$ lsb_release -irc 發行商 ID:Debian 版本:8.4 代號:傑西
這是我正在尋找的資訊:
KERNEL=="input16"
SUBSYSTEM=="input"
DRIVER==""
ATTR{name}=="Bluetooth Laser Travel Mouse"
ATTR{phys}=="5c:e0:c5:9d:63:fd"
ATTR{uniq}=="00:07:61:ec:be:5c"
ATTR{properties}=="0"
從這裡我嘗試過這個:
$ udevadm info -a /sys/devices/pci0000\:00/0000\:00\:1c.3/0000\:03\:00.0/usb2/2-1/2-1\:1.0/0003\:1EA7\:0064.0002/input/input25/mouse1/`
我明白了
未知設備,絕對路徑位於 /dev/ 或 /sys 中。
如果我監控,我會得到這個結果:
$ udevadm monitor -k -s input
monitor will print the received events for:
KERNEL - the kernel uevent
KERNEL[4375.486738] remove /devices/pci0000:00/0000:00:1c.3/0000:03:00.0/usb2/2-1/2-1:1.0/0003:1EA7:0064.0002/input/input25/mouse1 (input)
KERNEL[4375.496500] remove /devices/pci0000:00/0000:00:1c.3/0000:03:00.0/usb2/2-1/2-1:1.0/0003:1EA7:0064.0002/input/input25/event11 (input)
KERNEL[4375.532441] remove /devices/pci0000:00/0000:00:1c.3/0000:03:00.0/usb2/2-1/2-1:1.0/0003:1EA7:0064.0002/input/input25 (input)
KERNEL[4377.840574] add /devices/pci0000:00/0000:00:1c.3/0000:03:00.0/usb2/2-1/2-1:1.0/0003:1EA7:0064.0003/input/input26 (input)
KERNEL[4377.840667] add /devices/pci0000:00/0000:00:1c.3/0000:03:00.0/usb2/2-1/2-1:1.0/0003:1EA7:0064.0003/input/input26/mouse1 (input)
KERNEL[4377.840759] add /devices/pci0000:00/0000:00:1c.3/0000:03:00.0/usb2/2-1/2-1:1.0/0003:1EA7:0064.0003/input/input26/event11 (input)
所以我也嘗試過這個:
$ udevadm info -a -p /sys/devices/pci0000\:00/0000\:00\:1c.3/0000\:03\:00.0/usb2/2-1/2-1\:1.0/0003\:1EA7\:0064.0002/input/input25/
和這個
$ udevadm info -a -p /devices/pci0000\:00/0000\:00\:1c.3/0000\:03\:00.0/usb2/2-1/2-1\:1.0/0003\:1EA7\:0064.0002/input/input25/
並得到這個結果
未找到系統路徑
我設法獲得一些財產的唯一方法是使用以下命令:
$ udevadm info --query=all --name=/dev/input/mouse1
我明白了,但是,我沒有我正在尋找的屬性......(即ATTR{name}
)
P:/devices/pci0000:00/0000:00:1c.3/0000:03:00.0/usb2/2-1/2-1:1.0/0003:1EA7:0064.0003/input/input26/mouse1 N:輸入/滑鼠1 S:輸入/by-id/usb-1ea7_2.4G_Wireless_Mouse-滑鼠 S:輸入/按路徑/pci-0000:03:00.0-usb-0:1:1.0-滑鼠 E: DEVLINKS=/dev/input/by-id/usb-1ea7_2.4G_Wireless_Mouse-mouse /dev/input/by-path/pci-0000:03:00.0-usb-0:1:1.0-mouse E:DEVNAME=/dev/input/mouse1 E:DEVPATH=/devices/pci0000:00/0000:00:1c.3/0000:03:00.0/usb2/2-1/2-1:1.0/0003:1EA7:0064.0003/input/useinput26/momo E:ID_BUS=USB E:ID_輸入=1 E: ID_INPUT_MOUSE=1 E: ID_MODEL=2.4G_無線_滑鼠 E: ID_MODEL_ENC=2.4G\x20無線\x20滑鼠 E: ID_MODEL_ID=0064 E: ID_PATH=pci-0000:03:00.0-usb-0:1:1.0 E:ID_PATH_TAG=pci-0000_03_00_0-usb-0_1_1_0 E: ID_REVISION=0200 E: ID_SERIAL=1ea7_2.4G_Wireless_Mouse E: ID_TYPE=隱藏 E: ID_USB_DRIVER=usbhid E: ID_USB_INTERFACES=:030102: E: ID_USB_INTERFACE_NUM=00 E: ID_VENDOR=1ea7 E: ID_VENDOR_ENC=1ea7 E: ID_VENDOR_ID=1ea7 E:主要=13 E: 小=33 E:子系統=輸入 E: USEC_INITIALIZED=77840674
很明顯,我對如何查詢 udev 來取得裝置的屬性有誤解。
希望我夠清楚,如果有人知道我錯了,歡迎任何意見!
謝謝 !
馬特。
答案1
請注意,輸入數字發生了變化(從25
,您嘗試過的內容,變為26
,什麼 ),因為這些數字不能保證在引導過程中保持不變。嘗試
udevadm info -q path -n /dev/input/by-id/usb-1ea7_2.4G_Wireless_Mouse-mouse
使用常數by-id
symlinkg 來取得所需格式的路徑udev
,然後類似
udevadm info -a -p /path/you/just/got
行走路徑並輸出沿途的所有屬性(您可能需要使用父屬性來識別它)。
您也可以將其結合起來:
udevadm info -a -p $(udevadm info -q path -n /dev/whatever)
答案2
我用了
udevadm info -a /dev/hidraw0
答案3
刪除尾部斜線 ( /
),例如udevadm info -a -p /sys/class/net/enp0s3
代替udevadm info -a -p /sys/class/net/enp0s3/