Мы можем исправить эту проблему, написав правило udev.
Сначала мы должны идентифицировать наше устройство мыши, есть разные способы сделать это, я lsusb, и он выводит:
...
Bus 002 Device 011: ID 104f:0003 WB Electronics
...
, тогда я использовал идентификатор продавца 104f, найдите, чтобы найти мой узел устройства мыши:
$ find /dev/input -iname *104f* -ls
540 0 lrwxrwxrwx 1 root ... /dev/input/by-id/usb-104f-mouse -> ../mouse2
, поэтому мое устройство мыши [!]
Используйте udevadm info /dev/input/mouse2 --attribute-walk, чтобы получить список деталей об устройстве, чтобы мы могли использовать их для записи правила udev .
Выберите один раздел, который содержит: ATTRS{idProduct} & amp; ATTRS{idVendor}.
Затем создайте файл здесь:
sudo nano /etc/udev/rules.d/95-mymouse.rules
с выбранным содержимым, подобным:
SUBSYSTEMS=="usb", ATTRS{idProduct}=="xxxx", ATTRS{idVendor}=="xxxx", RUN+="/bin/touch /tmp/my.udev"
Не забудьте изменить xxxx на свое собственное устройство и код продукта.
Теперь запустите:
sudo udevadm control --reload
Каждый раз, когда вы подключаете свою мышь к системе, udev будет запускать команду, а команда будет touch - файл в /tmp/my.udev.
Почему мы просто не запускаем Xinput? После запуска правила udev «X» сбрасывает некоторые детали, поэтому мы не можем просто запустить команду xinput в качестве команды udev.
, поэтому установите inotify-tools:
sudo apt install inotify-tools
, тогда напишите сценарий и поместите его куда угодно:
#!/bin/bash
touch /tmp/my.udev
inotifywait -m -e attrib --format '%w%f' /tmp/my.udev 2>/dev/null | while read event
do
sleep 2
xinput --set-prop "Logitech USB Laser Mouse" "Device Accel Constant Deceleration" 1.75
done
Запустить последний скрипт после входа в систему, вы можете поставить это в сценариях запуска или даже файле .profile, каждый раз, когда вы подключаете свою мышь, udev будет touch, /tmp/my.udev и inotifywait запускают xinput.
inotifywait идея приходит отсюда
Мы можем исправить эту проблему, написав правило udev.
Сначала мы должны идентифицировать наше устройство мыши, есть разные способы сделать это, я lsusb, и он выводит:
...
Bus 002 Device 011: ID 104f:0003 WB Electronics
...
, тогда я использовал идентификатор продавца 104f, найдите, чтобы найти мой узел устройства мыши:
$ find /dev/input -iname *104f* -ls
540 0 lrwxrwxrwx 1 root ... /dev/input/by-id/usb-104f-mouse -> ../mouse2
, поэтому мое устройство мыши [!]
Используйте udevadm info /dev/input/mouse2 --attribute-walk, чтобы получить список деталей об устройстве, чтобы мы могли использовать их для записи правила udev .
Выберите один раздел, который содержит: ATTRS{idProduct} & amp; ATTRS{idVendor}.
Затем создайте файл здесь:
sudo nano /etc/udev/rules.d/95-mymouse.rules
с выбранным содержимым, подобным:
SUBSYSTEMS=="usb", ATTRS{idProduct}=="xxxx", ATTRS{idVendor}=="xxxx", RUN+="/bin/touch /tmp/my.udev"
Не забудьте изменить xxxx на свое собственное устройство и код продукта.
Теперь запустите:
sudo udevadm control --reload
Каждый раз, когда вы подключаете свою мышь к системе, udev будет запускать команду, а команда будет touch - файл в /tmp/my.udev.
Почему мы просто не запускаем Xinput? После запуска правила udev «X» сбрасывает некоторые детали, поэтому мы не можем просто запустить команду xinput в качестве команды udev.
, поэтому установите inotify-tools:
sudo apt install inotify-tools
, тогда напишите сценарий и поместите его куда угодно:
#!/bin/bash
touch /tmp/my.udev
inotifywait -m -e attrib --format '%w%f' /tmp/my.udev 2>/dev/null | while read event
do
sleep 2
xinput --set-prop "Logitech USB Laser Mouse" "Device Accel Constant Deceleration" 1.75
done
Запустить последний скрипт после входа в систему, вы можете поставить это в сценариях запуска или даже файле .profile, каждый раз, когда вы подключаете свою мышь, udev будет touch, /tmp/my.udev и inotifywait запускают xinput.
inotifywait идея приходит отсюда