Как я победил дёрганье скролла мыши в XFCE на Debian 13.1

Недавно столкнулся с довольно раздражающей проблемой — беспроводная мышь работала нормально, курсор летал как надо, но скролл периодически дёргался в обратную сторону. Причём не постоянно, а именно периодически, что бесило ещё больше. Крутишь вниз, а оно раз — и прыгнуло вверх. Особенно заметно было в браузере при чтении длинных статей.

Порывшись в настройках и логах, выяснил две основные причины. Делюсь решением — может кому пригодится.

Диагностика: с чего начать

Первым делом проверяем, что вообще система видит:

sudo apt install xinput
xinput list

У меня в выводе оказалось две штуки — клавиатура и мышь от одного USB-приёмника (комбо-девайс такой). Выглядело примерно так:

⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ YICHIP Wireless Device Mouse            	id=15	[slave  pointer  (2)]

Дальше смотрим логи — вдруг там что-то полезное:

sudo dmesg | grep -i mouse

Если там куча ошибок USB — это одно, если тихо — копаем дальше.

Причина №1: USB автосуспенд душит устройство

Самая частая проблема с беспроводными мышами на Linux. Система пытается сэкономить электричество и переводит USB в режим энергосбережения. А мышь через приёмник начинает тупить.

Проверяем текущее значение:

cat /sys/module/usbcore/parameters/autosuspend

Если там цифра (у меня было 2 — то есть через 2 секунды засыпает), то вот она проблема.

Отключаем временно:

echo -1 | sudo tee /sys/module/usbcore/parameters/autosuspend

Крутим колёсико. Стало лучше? Отлично, делаем постоянно.

Правим grub:

sudo nano /etc/default/grub

Ищем строку с GRUB_CMDLINE_LINUX_DEFAULT (обычно там просто quiet) и добавляем наш параметр:

GRUB_CMDLINE_LINUX_DEFAULT="quiet usbcore.autosuspend=-1"

Сохраняем (Ctrl+O, Enter, Ctrl+X) и обновляем конфиг:

sudo update-grub

После перезагрузки настройка будет работать постоянно.

Причина №2: libinput и его настройки скролла

Даже после отключения autosuspend у меня всё равно иногда дёргало. Оказалось, что параметр Scrolling Pixel Distance был слишком маленький — 15 пикселей. Из-за этого малейший дребезг энкодера в колёсике воспринимался как обратную прокрутку.

Смотрим текущие настройки мыши:

xinput list-props 15 | grep -i scroll

(где 15 — это ID вашей мыши из xinput list)

Вывод у меня был примерно такой:

libinput Scrolling Pixel Distance (350):	15
libinput High Resolution Wheel Scroll Enabled (352):	0

Увеличиваем порог срабатывания:

xinput set-prop 15 "libinput Scrolling Pixel Distance" 25

Можно поиграться со значениями — 25, 30, 35. Чем больше, тем менее чувствительный скролл, но зато без глюков.

Ещё есть опция высокоточного скролла — иногда она помогает:

xinput set-prop 15 "libinput High Resolution Wheel Scroll Enabled" 1

Делаем настройки постоянными

Создаём конфиг для X11:

sudo mkdir -p /etc/X11/xorg.conf.d
sudo nano /etc/X11/xorg.conf.d/90-mouse-scroll.conf

Пишем туда:

Section "InputClass"
    Identifier "Wireless Mouse Scroll Fix"
    MatchProduct "YICHIP Wireless Device Mouse"
    Driver "libinput"
    Option "ScrollPixelDistance" "25"
EndSection

MatchProduct нужно заменить на название вашей мыши из xinput list.

Перелогиниваемся или перезагружаемся — настройки применятся.

Бонус: композитор XFCE тоже может быть виноват

Хотя у меня проблема была не в этом, но многие жалуются что композитор xfwm4 тормозит прокрутку вообще во всём.

Проверить просто — идём в Настройки → Диспетчер окон (дополнительно) → вкладка Эффекты и снимаем галочку «Включить эффекты».

Или через терминал:

xfconf-query -c xfwm4 -p /general/use_compositing -s false

Если станет лучше — значит композитор был виноват. Можно попробовать заменить его на picom:

sudo apt install picom

И запускать вместо встроенного.

Что делать если ничего не помогло

Иногда проблема в самой мыши — дешёвые энкодеры в колёсике просто глючат. Или помехи на радиоканале 2.4GHz (у соседа роутер рядом, например).

Попробуйте:

  • Переставить USB-приёмник в другой порт (желательно USB 2.0, а не 3.0)
  • Положить приёмник поближе к мыши
  • Поменять батарейки
  • Проверить на другом компьютере

Если и там глючит — мышь в утиль, к сожалению.


У меня после отключения autosuspend и увеличения Scrolling Pixel Distance до 25 всё заработало идеально. Надеюсь, кому-то этот гайд сэкономит пару часов гугления.

Полезные команды для копипаста

# Проверить autosuspend
cat /sys/module/usbcore/parameters/autosuspend

# Отключить временно
echo -1 | sudo tee /sys/module/usbcore/parameters/autosuspend

# Список устройств ввода
xinput list

# Свойства мыши (замените 15 на ваш ID)
xinput list-props 15

# Увеличить порог скролла
xinput set-prop 15 "libinput Scrolling Pixel Distance" 25

# Включить высокоточный скролл
xinput set-prop 15 "libinput High Resolution Wheel Scroll Enabled" 1

# Проверить логи USB в реальном времени
sudo dmesg -w

Удачи с настройкой!

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *