Указатель мыши перемещается слишком быстро, xinput временно решает проблему

FreeNX. Вы регистрируетесь графически - так же, как и перед компьютером. Все это происходит в туннеле, хотя SSH. Вам понравится.

2
задан 6 July 2017 в 20:03

2 ответа

Мы можем исправить эту проблему, написав правило 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}.

Записать правило udev

Затем создайте файл здесь:

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 идея приходит отсюда

1
ответ дан 18 July 2018 в 10:38

Мы можем исправить эту проблему, написав правило 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}.

Записать правило udev

Затем создайте файл здесь:

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 идея приходит отсюда

1
ответ дан 24 July 2018 в 19:37
  • 1
    Что делать, если вы отключите мышь и подключите ее обратно? это работает только тогда, когда мышь подключена к первой сессии. – Ravexina 6 July 2017 в 20:12
  • 2
    Поскольку вы изменили свой вопрос (разрешая включение горячего подключения во время сеанса), подход udev, такой как тот, который предоставляется Ravexina, должен быть способом. – Another Tux User 6 July 2017 в 20:33
  • 3
    Единственное, что было изменено в вопросе, это стиль кода . – Ravexina 6 July 2017 в 21:01
  • 4
    Да, это правда, мой плохой, неверный, ваш ответ более точным! – Another Tux User 6 July 2017 в 21:34

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

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