Настройка чувствительности скроллинга мышью в Linux

Сегодня прямо с утра, без объявления войны меня спросили как можно настроить чувствительность скроллинга мыши в Linux. Если для настройки скорости перемещения курсора имеются штатные инструменты настройки что в KDE, что в GNOME, то про чувствительность скроллинга пришлось информацию поискать и как выяснилось многими скрытыми параметрами устройств ввода можно управлять через xinput.

 
 
Логотип GITA-DEV

Автор: Черноусов Антон aka Gita-Dev
Опубликовано: 24 Сен 2018 (последние правки 3 месяца)

apt chat dev git курс

Первым делом, получаем список доступных в системе устройств ввода:

$ xinput list
⎡ Virtual core pointer                         id=2   [master pointer (3)]
⎜  ↳ Virtual core XTEST pointer               id=4   [slave pointer (2)]
⎜  ↳ Logitech USB Optical Mouse               id=9   [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)]
   ↳ Power Button                             id=7   [slave keyboard (3)]
   ↳ Logitech USB Keyboard                    id=10  [slave keyboard (3)]
   ↳ Logitech USB Keyboard                    id=11  [slave keyboard (3)]
   ↳ Eee PC WMI hotkeys                       id=12  [slave keyboard (3)]
   ↳ C-Media Electronics Inc.      Microsoft LifeChat LX-3000 id=8   [slave keyboard (3)]

Нас интересуем мышь и ее идентификатор девять (Logitech USB Optical Mouse id=9). Далее, мы можем запросить список всех доступных для нашего устройства ввода параметров (при помощи все той же команды xinput):

$ xinput list-props 9
Device 'Logitech USB Optical Mouse':
       Device Enabled (154):  1
       Coordinate Transformation Matrix (156): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
       Device Accel Profile (285):    0
       Device Accel Constant Deceleration (286):      1.000000
       Device Accel Adaptive Deceleration (287):      1.000000
       Device Accel Velocity Scaling (288):   10.000000
       Device Product ID (275):       1133, 49271
       Device Node (276):     "/dev/input/event3"
       Evdev Axis Inversion (289):    0, 0
       Evdev Axes Swap (291): 0
       Axis Labels (292):     "Rel X" (164), "Rel Y" (165), "Rel Vert Wheel" (284)
       Button Labels (293):   "Button Left" (157), "Button Middle" (158), "Button Right" (159), "Button Wheel Up" (160), "Button Wheel Down" (161), "Button Horiz Wheel Left" (162), "Button Horiz Wheel Right" (163), "Button Side" (279), "Button Extra" (280), "Button Forward" (281), "Button Back" (282), "Button Task" (283), "Button Unknown" (278), "Button Unknown" (278), "Button Unknown" (278), "Button Unknown" (278)
       Evdev Scrolling Distance (294): 1, 1, 1
       Evdev Middle Button Emulation (295):   0
       Evdev Middle Button Timeout (296):     50
       Evdev Middle Button Button (297):      2
       Evdev Third Button Emulation (298):    0
       Evdev Third Button Emulation Timeout (299):    1000
       Evdev Third Button Emulation Button (300):     3
       Evdev Third Button Emulation Threshold (301):  20
       Evdev Wheel Emulation (302):   0
       Evdev Wheel Emulation Axes (303):      0, 0, 4, 5
       Evdev Wheel Emulation Inertia (304):   10
       Evdev Wheel Emulation Timeout (305):   200
       Evdev Wheel Emulation Button (306):    4
       Evdev Drag Lock Buttons (307): 0

Как вы видите параметров с которыми можно поиграть достаточно много, но меня конкретно интересовало все связанное с колесом прокрутки. Названия параметров достаточно информативные и за скроллинг отвечает (Evdev Scrolling Distance), а более подробно про все параметры можно почитать тут https://www.mankier.com/4/evdev. Итак, если вам лень читать инструкцию, то эти три параметра это:

Option "VertScrollDelta" "integer"
The amount of motion considered one unit of scrolling vertically. Default: "1". Property: "Evdev Scrolling Distance".
Option "HorizScrollDelta" "integer"
The amount of motion considered one unit of scrolling horizontally. Default: "1". Property: "Evdev Scrolling Distance".
Option "DialDelta" "integer"
The amount of motion considered one unit of turning the dial. Default: "1". Property: "Evdev Scrolling Distance".

Честно говоря совершено не информативно и совершенно непонятно где применяется горизонтальный скроллинг. Экспериментальным путем я выяснил, что чувствительностью скроллинга можно управлять увеличивая или уменьшая первый параметр:

$ xinput set-prop 9 'Evdev Scrolling Distance' 4 1 1

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

Похожие статьи

Полноценный ввод рабочей станции Ubuntu Linux в Windows-домен

Полноценный ввод рабочей станции Ubuntu Linux в Windows-домен

Рабочая станция или сервер под управлением Linux-дистрибутива в Windows домене, миф или реальность? Давно уже не только реальность, а еще и достаточно типовая задача решаемая при помощи пошаговой инструкции, а если ее переложить в виде скрипта, то ввод в домен будет не сложнее чем при использовании родных утилит Windows. Так как последние версии Samba позволяют вводить рабочую станцию или сервер под управлением OS Linux в домен Windows практически без "танцев с бубном", мы проработали подробный план по вводу в домен для систем на базе Ubuntu Linux. Данная инструкция была многократно протестирована в различных доменах.


Автоматическое обновление DNS-записи рабочей станции Linux при вводе в DNS-домен (No DNS domain configured for computer. Unable to perform DNS Update)

Автоматическое обновление DNS-записи рабочей станции Linux при вводе в DNS-домен (No DNS domain configured for computer. Unable to perform DNS Update)

После выхода Samba 4 ввести рабочую станцию под управлением Linux в Windows домен стало гораздо проще, но все еще переодически всплывают нестандартные ситации такие как ошибка No DNS domain configured for computer. Unable to perform DNS Update.


Linux Workstation autodeploy script (скрипт автоматического развертывания рабочих станций)

Linux Workstation autodeploy script (скрипт автоматического развертывания рабочих станций)

Наверное каждого системного администратора рано или поздно посещает идея написать скрипт автоматической настройки рабочих станций и серверов, причем вне зависимости от того какой вы администратор Windows или Linux и если такая идея вам пришла в голову, то значит вы дозрели. Без шуток, идея просто отличная и требует обязательного воплощения! Давайте сразу же начнем его и разрабатывать.


Сканирование локальной сети и поиск рабочих станций (практический пример)

Сканирование локальной сети и поиск рабочих станций (практический пример)

Сегодня мы будем удаленно искать потерянные рабочие станции на филиале. Поступила типовая задачка провести инвентаризацию рабочих станций, но как обычно старые записи не соответствуют действительности и многое поменялось, поэтому надо начинать с банального сканирования сети и поиска рабочих станций.


Отзывы и комментарии