У меня есть ноутбук, и я часто использую с ним мышь Logitech G5. Я не люблю ускорение при использовании мыши. Поэтому мне приходится отключать ускорение каждый раз, когда я подключаю мышь. Есть ли способ автоматически отключать ускорение мыши, когда я подключаю мышь?
Правило UDEV обнаруживает событие подключения мыши и запускает сценарий всякий раз, когда происходит событие. Создайте файл в разделе /etc/udev/rules.d
:
sudo gedit /etc/udev/rules.d/42-kill-mouse-accel.rules
Вставьте в него следующую строку:
ACTION=="add", ATTRS{bInterfaceClass}=="03", ENV{DISPLAY}=":0.0", ENV{XAUTHORITY}="/home/[YOUR_USER_NAME]/.Xauthority", ENV{ID_CLASS}="mouse", RUN+="/usr/local/bin/kill-mouse-accel.sh"
Обратите внимание на часть с надписью [YOUR_USER_NAME]
, вы должны заменить ее с вашим именем пользователя.
Сохраните и выйдите из Gedit.
Скрипт ускорения - это код, запускаемый правилом UDEV, который, в свою очередь, разветвляет рабочий скрипт в фоновом режиме. Фоновый скрипт будет выполнять реальную работу. Мы делаем это, так как хотим немного подождать, прежде чем менять ускорение, но не хотим блокировать UDEV. Создайте файл в /usr/local/bin
:
sudo gedit /usr/local/bin/kill-mouse-accel.sh
Вставьте в него следующий код:
#!/bin/bash
export DISPLAY=${DISPLAY}
/usr/local/bin/kill-mouse-accel-worker.sh &
Сохраните и выйдите из Gedit.
В этом сценарии вызывается команда, отключающая ускорение мыши. Создайте файл в /usr/local/bin
:
sudo gedit /usr/local/bin/kill-mouse-accel-worker.sh
Вставьте в него следующий код:
#!/bin/bash
sleep 2
for i in $(xinput list | grep [Mm]ouse | sed -e 's/^.*id=\([0-9]*.\).*$/\1/')
do
echo "Found device: $i"
# The command disabling mouse acceleration
xinput set-ptr-feedback $i 10 1 1
done
Сохраните и выйдите из Gedit.
Сделайте оба сценария исполняемыми:
sudo chmod +x /usr/local/bin/kill-mouse-accel.sh /usr/local/bin/kill-mouse-accel-worker.sh
Перезапустите UDEV:
sudo service udev restart
Наконец, снова подключите USB-мышь и подождите, пока несколько секунд. Ускорение мыши должно быть отключено.
Авторы получают следующие записи в блоге: http://granjow.net/udev-rules.html
У меня похожая проблема, и я разработал другое решение.
Я написал Python-скрипт, который прослушивает события udev и запускает некоторые команды, когда устройство подключено или отключено. В моем случае одна из команд отключает ускорение мыши . Я выбрал это решение, потому что оно не требует прав root и, следовательно, может применяться в любой системе Linux. Я просто оставляю скрипт Python запущенным в фоновом режиме и больше не беспокоюсь об этом.
Все сценарии доступны по адресу https://bitbucket.org/denilsonsa/small_scripts/src/default/ , и они также скопированы / отражены ниже, для справки.
<час> auto_configure_upon_usb_device_change.py
#!/usr/bin/env python3
import functools
import os.path
import pyudev
import subprocess
import time
def main():
BASE_PATH = os.path.dirname(os.path.realpath(os.path.abspath(__file__)))
path = functools.partial(os.path.join, BASE_PATH)
call = lambda x, *args: subprocess.call([path(x)] + list(args))
context = pyudev.Context()
monitor = pyudev.Monitor.from_netlink(context)
monitor.filter_by(subsystem='usb')
monitor.start()
call('xinput_disable_mouse_acceleration.sh')
for device in iter(monitor.poll, None):
# Wait a short amount of time to let the device get ready.
time.sleep(0.250)
call('xinput_disable_mouse_acceleration.sh')
if __name__ == '__main__':
main()
xinput_disable_mouse_acceleration.sh
#!/bin/sh
xsp_microsoft() {
xinput set-prop 'Microsoft Microsoft Basic Optical Mouse v2.0 ' "$@"
}
xsp_logitech() {
xinput set-prop 'Logitech USB Laser Mouse' "$@"
}
xsp_microsoft 'Device Accel Profile' -1
xsp_logitech 'Device Accel Profile' -1
xsp_microsoft 'Device Accel Constant Deceleration' 1.5
!
, оператор должен быть прежде-perm -u+x
– kos 16 June 2015 в 23:01