Выполните команду, когда USB-устройство будет добавлено

У меня есть razer deathadder мышь, подключенная к моему ноутбуку человечности 15.10. Эта мышь использует 3 500 DPI на значение по умолчанию который его путь к быстро. Используя razercfg Я могу установить это на DPI 1800, таким образом, без проблем здесь. К сожалению, это опции не сохраняется по перезагрузкам или даже suspend-to-ram/disk (закрытый ноутбук). Моя первая мысль состояла в том, чтобы звонить razercfg на входе в систему, но поскольку я сказал, что это не работает если с suspend-to-ram/disk. Поэтому я думал об использовании udev правила:

lsusb говорит мне:

Bus 003 Device 003: ID 058f:9540 Alcor Micro Corp. AU9540 Smartcard Reader
Bus 003 Device 002: ID 8087:8000 Intel Corp. 
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 17ef:1010 Lenovo 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 007: ID 04f2:b39a Chicony Electronics Co., Ltd 
Bus 001 Device 003: ID 138a:0017 Validity Sensors, Inc. Fingerprint Reader
Bus 001 Device 011: ID 1532:0016 Razer USA, Ltd DeathAdder Mouse
Bus 001 Device 008: ID 17ef:100f Lenovo 
Bus 001 Device 006: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 001 Device 004: ID 04b4:0101 Cypress Semiconductor Corp. Keyboard/Hub
Bus 001 Device 002: ID 17ef:1010 Lenovo 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Используя поставщика и идентификатор продукта, я создал файл /etc/udev/rules.d/100-razer-deathadder.rules содержа:

ACTION=="add", ATTRS{idVendor}=="1532", ATTRS{idProduct}=="0016", RUN+="razercfg -p 1 -r 1:1800"

который должен установить соответствующий DPI для мыши при добавлении к системе. Команда razercfg -p 1 -r 1:1800тестируется и работает. Я перезагрузил правила с sudo udevadm control --reload-rules && udevadm trigger.

Однако это не работает. Действительно, udevadm monitor подтверждает, что это правило, кажется, не стреляет.

Какая-либо идея, какова ошибка здесь?

0
задан 7 February 2016 в 15:05

1 ответ

1) Входят /dev/input/ и запрашивают устройства ввода данных, которые, скорее всего, будут соответствовать Вашей мыши с терминалом cmd:

 $ udevadm info --query=all --name=/dev/input/yr-device-file-name

Вы сможете определить его с помощью этих двух переменных среды (огибающий var)

  • ID_VENDOR_ID=1532

  • MODEL_ID=0016

на вопрос (в зависимости от устройства, 2-й огибающий var не может показать).

2) Определяют значение огибающего var SUBSYSTEM и добавляют его к Вашему правилу udev.

3) Добавляют полный путь для исполняемого файла razercfg.

, Таким образом, Ваше правило udev должно считать что-то как:

SUBSYSTEM=="___", ACTION=="add", ATTRS{idVendor}=="1532", ATTRS{idProduct}=="0016", RUN+="/path/to/razercfg -p 1 -r 1:1800"

Помнят, что udev не выполняется в среде оболочки, таким образом, он не может знать (главным образом не знает) ПУТЕЙ и других параметров среды, от которых Вы, возможно, приехали для зависимости как зарегистрированный пользователь. Это включает печать в stdout (FD1), если Вы не делаете условия для этого правильно установкой DISPLAY и экспортом его из правила udev, т.е. из сценария обертки, который выполняется razercfg... (См. этот ответ а. е. для отредактированной сводки на том конкретном аспекте и чтении о udevadm на man udevadm, если Вы поэтому уже не сделали).

HTH

1
ответ дан 29 September 2019 в 12:37

Другие вопросы по тегам:

Похожие вопросы: