запутался в использовании udevadm

запутался в использовании udevadm

Конечной целью здесь является включение/выключение сенсорной панели при подключении мыши, поэтому я пытаюсь получить некоторые свойства моей мыши и сенсорной панели из базы данных udev, используя udevadm, но я не понимаю, как это работает, и, к сожалению, страница руководства недостаточно ясна для меня…

$ lsb_release -irc
Идентификатор дистрибьютора: 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: вход/по-id/usb-1ea7_2.4G_Беспроводная_мышь-мышь
S: вход/by-path/pci-0000:03:00.0-usb-0:1:1.0-мышь
E: DEVLINKS=/dev/input/by-id/usb-1ea7_2.4G_Wireless_Mouse-мышь /dev/input/by-path/pci-0000:03:00.0-usb-0:1:1.0-мышь
E: ИМЯ_УСТРОЙСТВА=/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/input26/mouse1
E: ID_BUS=usb
E: ID_INPUT=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: ИДЕНТИФИКАТОР_РЕВИЗИИ=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-idsymlinkg для получения пути в 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/

Связанный контент