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

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

/dev/input/event 

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

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

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

 /etc/udev/rules.d 

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

 ~/.config/ds4drv.conf 

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

 /etc/ds4drv.conf 

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

 /tmp/ds4drv.pid 

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

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.

  • Невозможно выполнить печать из fluxbox, если я не впервые вхожу в систему с другим WM
  • Linux Mint застрял в режиме самолета
  • Как установить Ruby GEM_HOME и GEM_PATH
  • Как изменить размер рабочего стола
  • Каждый раз, когда я перезагружаю компьютер, мне нужно перезапустить службу Bluetooth, как я могу это исправить?
  • Встроенная проблема с отображением - Linux Mint на iMac (конец 2009 года)
  • «Destination Host Unreachable» при проверке беспроводного маршрутизатора
  • Linux Mint GUI остается черным после входа в систему
  • Не удалось получить medibuntu Что-то нечестивое произошло с разрешением (-5 - Нет адреса, связанного с именем хоста)
  • Linux Mint 13 XFCE зависает при подключении внешнего монитора
  • Как изменить размер экрана входа в систему, Linux Mint
  • Interesting Posts

    Как я могу создать и установить пакет и его зависимости от источника с помощью apt?

    Как определить, какой файл шрифта выбран для общего псевдонима системы?

    Эквивалентная команда для двоичных файлов grep

    Rsync не откажется от записи на удаленном удаленном диске

    Используется ли RLIMIT_NICE?

    Параметры командной строки для стойки не отображаются в выводах ps или procfs

    Запланировать задание для запуска один раз в день в планировщике маэстро

    Не удается открыть GUI из контейнера докеров

    сжатие lrzip не сокращает случайные данные

    Как измерить время выполнения программы и сохранить ее внутри переменной

    Почему мой Perl не играет хорошо с Unicode?

    Существует ли `sed` во всех * nixes?

    Какой файл в ядре определяет fork (), vfork () … для использования системного вызова sys_clone ()

    BindAddress в конфигурации ssh на ноутбуке

    Маркировка / слияние нескольких сетевых адресов

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