У меня есть 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
подтверждает, что это правило, кажется, не стреляет.
Какая-либо идея, какова ошибка здесь?
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