Запуск определенных событий для устройств

Я хотел бы знать, можно ли настраивать специальные триггерные события для устройств при подключении и / или отключении от системы «на лету» без необходимости настраивать их каждый раз, когда устройство подключено или удалено. Триггер, который смотрит

/dev/input/event 

поэтому он знает, когда устройство подключено или не подключено, и оно либо запускает, либо убивает демона для этого устройства во время использования.

Вот что я собираюсь использовать триггерные события;

У меня есть контроллер геймпада, который мне нравится использовать для игры, и каждый раз, когда я его использую, мне всегда приходится возиться с конфигурацией для него каждый раз, когда я подключаю его, чтобы он работал для конкретной конфигурации контроллера. Но также в некоторых случаях события, когда контроллер случайным образом отключает и повторно соединяет его, он сбрасывает и игнорирует конфигурацию, которую я установил для него, то есть мне пришлось повторно настроить его снова. Поэтому я хочу, чтобы он повторно запускал мои конфигурации, вызывая его из сценария, когда он обнаруживает, что устройство подключено к предварительно настроенному файлу конфигурации. Будет ли что-то в

 /etc/udev/rules.d 

Я мог бы создать, чтобы сделать это, как правило? Конфигурационный файл для моего геймпада хранится в

 ~/.config/ds4drv.conf 

и также может быть вызван в

 /etc/ds4drv.conf 

Я бы хотел, чтобы он мог проверять и применять этот файл конфигурации каждый раз, когда он обнаруживает, что геймпад включен или отключен. В конфигурации есть опция для запуска демона, который может заблокировать PID-файл внутри

 /tmp/ds4drv.pid 

когда он работает. Предварительно проверьте, запущен ли процесс демон, если нет, запустите его и примените конфигурацию из файла конфигурации при обнаружении устройства геймпада. Иногда он может столкнуться с играми Steam, когда вы играете, и заставляйте меня снова проверять флажок, чтобы включить контроллер, что может быть очень проблематичным, когда вы просто хотите, чтобы он продолжался там, где он остановился, если контроллер теряет связь на мгновение перед повторным подключением и отсутствием чтения из файла конфигурации.

  • btrfs изменение после обновления системы сломал apt-btrfs-моментальный снимок
  • Линейный экран Linux Mint по умолчанию перед входом в систему
  • Неудовлетворенная зависимость после обновления дистрибутива linux mint
  • Громкий постоянный поклонник Linux Mint 17 с дискретной графической картой
  • Я не могу открыть терминал в Cinnamon
  • Двойные видеокарты в Mint & Ubuntu
  • Подключиться к DSL-соединению (PPPoE) через Wi-Fi в Монетном дворе?
  • Не удается запустить docker hello-world: точка монтирования для устройств не найдена
  • One Solution collect form web for “Запуск определенных событий для устройств”

    udev – ваш друг. вы можете добавить файл с called 99-gamepad.rules в /etc/udev/rules.d/

    этот файл должен содержать строку, похожую на следующую

     DRIVER=="usb",ATTRS{idProduct}=="c52b",RUN+="/path/to/your_script.sh" 

    Вы можете найти ATTRS используя udevadm :

     udevadm info -a -p /sys/bus/usb/devices/3-1.5 

    замените /sys/bus/usb/devices/3-1.5 на путь к вашему USB-устройству в sys, в качестве альтернативы вы можете использовать путь в /dev/ . Обычно я просто пробую несколько путей, пока не найду что-то, что соответствует моему устройству.

    если вы знаете путь к устройству в /dev вы можете использовать следующую строку:

     udevadm info -a -p $(udevadm info -q path -n /dev/input/js0) 

    Вот справочная страница udev, объясняющая, как написать правило.

    Также посмотрите страницу udev ArchWiki.

    Linux и Unix - лучшая ОС в мире.