Конечная цель здесь - включить / выключить сенсорную панель на штекере мыши , так Я пытаюсь получить некоторые свойства моей мыши и сенсорной панели из базы данных udev, используя udevadm, но я не понимаю, как это работает, и, к сожалению, справочная страница мне недостаточно понятна…
$ lsb_release -irc Distributor ID: Debian Release: 8.4 Codename: jessie
Вот такая информация Я ищу:
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/
и получил такой результат
syspath not found
Единственный способ получить какое-то свойство использует эту команду:
$ 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: input/mouse1 S: input/by-id/usb-1ea7_2.4G_Wireless_Mouse-mouse S: input/by-path/pci-0000:03:00.0-usb-0:1:1.0-mouse 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/input26/mouse1 E: ID_BUS=usb E: ID_INPUT=1 E: ID_INPUT_MOUSE=1 E: ID_MODEL=2.4G_Wireless_Mouse E: ID_MODEL_ENC=2.4G\x20Wireless\x20Mouse 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=hid 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: MAJOR=13 E: MINOR=33 E: SUBSYSTEM=input E: USEC_INITIALIZED=77840674
Итак, очевидно, что я непонимание того, как запрашивать udev, чтобы получить атрибут устройства.
Надеюсь, я достаточно ясен, если у кого-то есть идея, в которой я ошибаюсь, любой ввод приветствуется!
Спасибо!
Матф.
Примечание что входной номер изменился (с 25
, что вы пробовали, на 26
, что), потому что не гарантируется, что они будут постоянными при загрузке. Попробуйте
udevadm info -q path -n /dev/input/by-id/usb-1ea7_2.4G_Wireless_Mouse-mouse
с постоянной символической ссылкой by-id
, чтобы получить путь в формате, ожидаемом udev
, затем что-то вроде
udevadm info -a -p /path/you/just/got
, чтобы пройти путь и вывести все атрибуты по пути (вам может потребоваться использовать родительские атрибуты, чтобы идентифицировать его).
Вы также можете комбинировать это:
udevadm info -a -p $(udevadm info -q path -n /dev/whatever)
Удалить косую черту в конце (/
), например udevadm info -a -p /sys/class/net/enp0s3
, вместо udevadm info -a -p /sys/class/net/enp0s3/