Запущение скрипта, когда это обнаруживает ввод-вывод

У меня есть мышь Bluetooth xinput установка сценария для выполнения каждый раз, когда я имею, подключают мышь. В настоящее время я - просто псевдоним короткий ключ как 'BM' для того выполнения файла удара, но я хочу знать, существует ли автоматический способ выполнить файл удара или команду псевдонима каждый раз, когда это обнаруживает соединение мыши.

Благодарность заранее!

человечность 16.10

2
задан 2 November 2016 в 15:40

2 ответа

Я использовал бы .rules файл.

Во-первых, узнайте ID_VENDOR_ID и ID_MODEL_ID из Вашей мыши. Разъедините мышь, выполните эту команду и подключите мышь ( |grep ID часть только для фильтрации информации, в которой Вы не нуждаетесь).

udevadm monitor --property|grep ID

Позволяет говорят, что Вы получаете эти значения:

ID_VENDOR_ID=0a12
ID_MODEL_ID=0001

Теперь создайте файл в папке правил (96, приоритет правила):

sudo gedit /etc/udev/rules.d/96-myusb.rules

Добавьте эти две строки с помощью значений для ID_VENDOR_ID и ID_MODEL_ID. Если Вы не хотите делать что-нибудь при удалении его не включайте вторую строку.

ACTION=="add", SUBSYSTEM=="usb",ENV{ID_VENDOR_ID}=="0a12", ENV{ID_MODEL_ID}=="0001",RUN+="/usr/local/bin/myusb-add.sh"

ACTION=="remove", SUBSYSTEM=="usb",ENV{ID_VENDOR_ID}=="0a12",ENV{ID_MODEL_ID}=="0001",RUN+="/usr/local/bin/myusb-remove.sh"

Можно протестировать это, это работает, создавая эти два сценария:

$ sudo gedit /usr/local/bin/myusb-add.sh

Добавьте что-то вроде этого (изменение add кому: remove в другой одном):

#!/bin/bash
echo "added" >> /tmp/myusb.log

Наконец, выследите файл с tail -f /tmp/myusb.log и соедините/разъедините свою мышь. Необходимо видеть, что текст добавляется к файлу.

0
ответ дан 2 December 2019 в 04:52

То, что Вы хотите, должно использовать подход опроса, для непрерывного чтения вывода xinput --list --name-only и фигура, если название мыши там или нет, и если это - запускает скрипт. Это было бы чем-то вроде этого:

while true; do
    if xinput --list --name-only | grep -q -i 'Mouse Name' ; 
    then 
        echo "yes" # this is where you run script
        break # exit the loop after running the script.   
    fi 
done

В этом случае мы выходим из цикла, как только мышь там. Однако Вы, вероятно, хотите, чтобы это было непрерывно так, чтобы можно было подключить и разъединить мышь. Вместо break, я использовал бы другой while цикл там, который делает противоположное - ожидает названия мыши для исчезновения. Тело того цикла с условием продолжения может быть просто этим - true или :.

1
ответ дан 2 December 2019 в 04:52

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

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