У меня есть мышь Bluetooth xinput установка сценария для выполнения каждый раз, когда я имею, подключают мышь. В настоящее время я - просто псевдоним короткий ключ как 'BM' для того выполнения файла удара, но я хочу знать, существует ли автоматический способ выполнить файл удара или команду псевдонима каждый раз, когда это обнаруживает соединение мыши.
Благодарность заранее!
человечность 16.10
Я использовал бы .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
и соедините/разъедините свою мышь. Необходимо видеть, что текст добавляется к файлу.
То, что Вы хотите, должно использовать подход опроса, для непрерывного чтения вывода 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
или :
.