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

Во всех системах Ubuntu я установил скорость указателя мыши на самое медленное, но она все еще перемещается слишком быстро. (Теперь я использую Ubuntu 16.04.) Я провел некоторое исследование и узнал, что эта команда решает мою проблему:

xinput --set-prop "Logitech USB Laser Mouse" "Device Accel Constant Deceleration" 1.75

Но когда я отключаю мышь и включаю ее назад, ее скорость возвращается к настройкам системы. Таким образом, я должен выполнить эту команду все время.Что мне делать?

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

2 ответа

Короткая версия 1/: (проверенная Ubuntu 16.04)

Обновите .xinputrc файл в своем каталоге $HOME и вставьте Ваши команды xinput (один с методической точностью). Это будет считано каждый раз, когда Вы откроете свою сессию. Если это не делает существует, создайте его: (должен был быть сгенерирован im-конфигурацией),

Мой:

# im-config(8) generated on Wed, 15 Feb 2017 19:29:43 +0100
run_im ibus
# im-config signature: 90bece1e5f840b27085989abd900276a  -

#BYME# Put your xinput commands here
#BYME#With DRI2 : Device Accel Constant Deceleration (267)
xinput --set-prop 11 267 2
#BYME#With DRI3 : Device Accel Constant Deceleration (264)
xinput --set-prop 11 264 2

Этот .xinputrc работает на оба случая (если DRI3 включен или не),

Между прочим, я использую несколько экранов (смешивание 4K и старомодный 16:9 экраны), и я чувствую себя комфортно только устанавливавший Device Accel Constant Deceleration кому: 2. Не стесняйтесь изменять это (или другой) значение.

2/Неправильный способ сделать это:

(НЕ ДЕЛАЙТЕ), добавьте его к своему .bashrc или другому профилю определенный файл (который может быть считан намного больше раз и может привести к неверному истолкованию того, какое поведение мыши на самом деле действительно применяется),

3/версия Long: (работающий над дистрибутивами, поддерживающими xinput команды)

Для определения, какие опции необходимо использовать:

$ xinput --list --short

На моем хосте Ubuntu (я использую KVM для переключения между моими компьютерами), он возвращается:

Virtual core pointer                        id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ No brand Combo Free KVM                   id=11   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ No brand Combo Free KVM                   id=10   [slave  keyboard (3)]

Таким образом вместо того, чтобы смешать со строками (и совершить ошибки при вводе его), я предпочитаю использовать (короткие) числовые идентификаторы (знающий теперь, как найти их и их значения).

В моем случае моя мышь находится под Virtual core pointer, определенный как No brand Combo Free KVM с числовым идентификатором 11. Как объяснено ранее, я теперь собираюсь использовать этот числовой идентификатор вместо соответствующей строки, но можно сделать, как Вы хотите (обе работы).

Для знания, какие свойства / возможности доступны с моей мышью я должен ввести: (адаптируйте эту команду с результатом предыдущего, Ваш собственный идентификатор должен отличаться),

$ xinput --list-props 11

Device 'No brand Combo Free KVM':
    Device Enabled (136):   1
    Coordinate Transformation Matrix (138): 1.000000, 0.000000, 0.000000, 0.000000, 
1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (266): 0
    Device Accel Constant Deceleration (267):   1.000000
    Device Accel Adaptive Deceleration (268):   1.000000
    Device Accel Velocity Scaling (269):    10.000000
    Device Product ID (257):    4309, 20480
    Device Node (258):  "/dev/input/event16"
    Evdev Axis Inversion (270): 0, 0
    Evdev Axes Swap (272):  0
    Axis Labels (273):  "Rel X" (146), "Rel Y" (147), "Rel Horiz Wheel" (264), "
Rel Vert Wheel" (265)
    Button Labels (274):    "Button Left" (139), "Button Middle" (140), "Button Righ
t" (141), "Button Wheel Up" (142), "Button Wheel Down" (143), "Button Horiz Wheel Left" 
(144), "Button Horiz Wheel Right" (145), "Button Side" (262), "Button Extra" (263), "But
ton Unknown" (260), "Button Unknown" (260), "Button Unknown" (260), "Button Unknown" (26
0)
    Evdev Scrolling Distance (275): 1, 1, 1
    Evdev Middle Button Emulation (276):    0
    Evdev Middle Button Timeout (277):  50
    Evdev Third Button Emulation (278): 0
    Evdev Third Button Emulation Timeout (279): 1000
    Evdev Third Button Emulation Button (280):  3
    Evdev Third Button Emulation Threshold (281):   20
    Evdev Wheel Emulation (282):    0
    Evdev Wheel Emulation Axes (283):   0, 0, 4, 5
    Evdev Wheel Emulation Inertia (284):    10
    Evdev Wheel Emulation Timeout (285):    200
    Evdev Wheel Emulation Button (286): 4
    Evdev Drag Lock Buttons (287):  0

Это - то, как мы можем определить, какие свойства должны быть изменены!

Accel Constant Deceleration (числовой идентификатор: 267) делает задание вполне хорошо для меня. Не стесняйтесь "играть" с другими свойствами для нахождения правильного поведения для собственной мыши.

Так, вот почему я добавил следующую строку к своему .xinputrc, изменив значение от 1.000000 кому: 2 (определение плавания не требуется), потому что увеличение замедления приводит к замедлению скорости мыши:

xinput --set-prop 11 267 2

4/, Предупреждающий: это, которое идентификаторы могут изменить при активации DRI3

DRI2 только, по умолчанию, в соответствии с Ubuntu 16.04 (в то время как это может привести к проблемам, как с последними версиями Chrome, требуя, чтобы DRI3 поддерживал гладкое мультиокно),

При включении DRI3 идентификаторы должны теперь быть:

Device 'No brand Combo Free KVM':
    Device Enabled (133):   1
    Coordinate Transformation Matrix (135): 1.000000, 0.000000, 0.000000, 0.000000, 
1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (263): 0
    Device Accel Constant Deceleration (264):   1.000000
    Device Accel Adaptive Deceleration (265):   1.000000
    Device Accel Velocity Scaling (266):    10.000000
    Device Product ID (254):    4309, 20480
    Device Node (255):  "/dev/input/event9"
    Evdev Axis Inversion (267): 0, 0
    Evdev Axes Swap (269):  0
    Axis Labels (270):  "Rel X" (143), "Rel Y" (144), "Rel Horiz Wheel" (261), "
Rel Vert Wheel" (262)
    Button Labels (271):    "Button Left" (136), "Button Middle" (137), "Button Righ
t" (138), "Button Wheel Up" (139), "Button Wheel Down" (140), "Button Horiz Wheel Left" 
(141), "Button Horiz Wheel Right" (142), "Button Side" (259), "Button Extra" (260), "But
ton Unknown" (257), "Button Unknown" (257), "Button Unknown" (257), "Button Unknown" (25
7)
    Evdev Scrolling Distance (272): 1, 1, 1
    Evdev Middle Button Emulation (273):    0
    Evdev Middle Button Timeout (274):  50
    Evdev Third Button Emulation (275): 0
    Evdev Third Button Emulation Timeout (276): 1000
    Evdev Third Button Emulation Button (277):  3
    Evdev Third Button Emulation Threshold (278):   20
    Evdev Wheel Emulation (279):    0
    Evdev Wheel Emulation Axes (280):   0, 0, 4, 5
    Evdev Wheel Emulation Inertia (281):    10
    Evdev Wheel Emulation Timeout (282):    200
    Evdev Wheel Emulation Button (283): 4
    Evdev Drag Lock Buttons (284):  0

Accel Constant Deceleration теперь idenfified 264. Вот почему я также добавил (имеющий то же поведение, неважно, если DRI3 включен или не) в моем .xinputrc:

xinput --set-prop 11 264 2

Надежда это поможет Вам.

2
ответ дан 2 December 2019 в 02:46

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

таким образом, мое устройство мыши /dev/input/mouse2.

Соберите идентичные данные вокруг устройства

Использовать udevadm info /dev/input/mouse2 --attribute-walk получить список деталей об устройстве, таким образом, мы можем использовать их для записи a udev правило.

Выберите единственный раздел, который содержит: ATTRS{idProduct} & 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? После a udev управляйте выполнениями, "X" сброс некоторые детали, таким образом, мы не можем просто выполнить a xinput управляйте как a 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
ответ дан 2 December 2019 в 02:46

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

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