Изменить скорость прокрутки с помощью libinput

16

Колесо мыши прокручивается слишком медленно, поэтому я хочу увеличить количество строк для каждого тика прокрутки. Я прочитал, что это возможно, установив Evdev Scrolling Distanceс xinput, но я использую, libinputи я не вижу ничего, связанного с расстоянием прокрутки.

Вывод xinput list-propsна мою мышь:

Device Enabled (139):   1                                                                                                       
Coordinate Transformation Matrix (141): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Accel Speed (275): -0.640000                                                                                           
libinput Accel Speed Default (276): 0.000000                                                                                    
libinput Accel Profiles Available (277):    1, 1                                                                                
libinput Accel Profile Enabled (278):   1, 0                                                                                    
libinput Accel Profile Enabled Default (279):   1, 0                                                                            
libinput Natural Scrolling Enabled (280):   0                                                                                   
libinput Natural Scrolling Enabled Default (281):   0                                                                           
libinput Send Events Modes Available (259): 1, 0                                                                                
libinput Send Events Mode Enabled (260):    0, 0                                                                                
libinput Send Events Mode Enabled Default (261):    0, 0                                                                        
libinput Left Handed Enabled (282): 0                                                                                           
libinput Left Handed Enabled Default (283): 0                                                                                   
libinput Scroll Methods Available (284):    0, 0, 1                                                                             
libinput Scroll Method Enabled (285):   0, 0, 0                                                                                 
libinput Scroll Method Enabled Default (286):   0, 0, 0                                                                         
libinput Button Scrolling Button (287): 2                                                                                       
libinput Button Scrolling Button Default (288): 274                                                                             
libinput Middle Emulation Enabled (289):    0                                                                                   
libinput Middle Emulation Enabled Default (290):    0                                                                           
Device Node (262):  "/dev/input/event1"                                                                                         
Device Product ID (263):    1133, 50487                                                                                         
libinput Drag Lock Buttons (291):   <no items>                                                                                  
libinput Horizonal Scroll Enabled (264):    1                                                  

Как я могу изменить скорость прокрутки? Я работаю на Arch Linux, Xfce 4.12.

Эндрю Сан
источник
1
Для реализации этого есть запрос функции libinput (любезно предоставлено @clel ).
n.st

Ответы:

4

В настоящее время нет API для изменения скорости прокрутки для устройств libinput, но в этом блоге объясняется, как щелчки колесика мыши соответствуют углу перемещения, который вы можете изменить для каждой мыши в файле конфигурации systemdev udev /usr/lib/udev/hwdb.d/70-mouse.hwdb. Прочитайте комментарии о MOUSE_WHEEL_CLICK_ANGLEначале этого файла.

Чтобы сделать локальное изменение, создайте новый файл

 /etc/udev/hwdb.d/71-mouse-local.hwdb

и добавьте ваше главное правило. Например, если у вас есть мышь ImExPS / 2, вы можете удвоить значение по умолчанию на 15 градусов за клик до 30 градусов с помощью

# ImExPS/2 Logitech Wheel Mouse
mouse:ps2:*:name:ImExPS/2 Logitech Wheel Mouse:
 MOUSE_DPI=400@250
 MOUSE_WHEEL_CLICK_ANGLE=30

Перезагрузите базу данных udev

 sudo udevadm hwdb --update
 sudo udevadm trigger /dev/input/event1
meuh
источник
1
There is no current api for changing the scroll speed for libinput devices: изменилось ли это с тех пор?
Орширо
1
@orschiro У меня сложилось впечатление, что API не является намерением. Можно надеяться, что все устройства будут правильно идентифицированы и сконфигурированы в udev, и в этом нет необходимости в настройке пользователя. Проверьте все блоги libinput . В частности, 1.4 соответствует завершению начального списка TODO для libinput.
meuh
4
в Ubuntu 16.10 система udev conf находится в /lib/udev/hwdb.d/70-mouse.hwdb
Йонас Берлин,
2
в любом случае сделать то же самое с сенсорной панелью?
Франческо
1
@daboross Да. Следует учитывать два аспекта: приведенный выше ответ просто пытается нормализовать вывод с устройства, чтобы, например, когда пользователь совершал одинаковое движение на двух разных мышах, система могла рассчитать, что они эквивалентны, несмотря на отчеты от аппаратного обеспечения, являющегося другим. Второй аспект заключается в том, сколько движений экрана это должно представлять, и это определяется сложным количеством программного обеспечения, стоящего перед пользователем, таким как графический инструментарий, система управления окнами, разрешение экрана и т. Д.
meuh
3

Либинпут не имеет какой-либо "для каждого колесика концепции n линий / градусов» в качестве общей стороны, на данный момент эта настройка, похоже, зависит от устройства, так как в некоторых Logitech есть параметр, Evdev Scrolling Distance (278)который, возможно, поставлялся со «старым» Водитель Evdev включает.

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

Существует много возможностей для устранения такой проблемы, но это зависит от дистрибутива Linux.

  1. Будьте удачливы и обладайте специфичной для водителя чувствительностью прокрутки - проверьте, выполнив поиск всех входных данных с переменными прокрутки:

    список xinput | cut -f2 | cut -f2 -d '=' | \
                xargs -d $ '\ n' -I '{}' sh -c "xinput list-props '{}' | grep -iq scroll && \
                                        (echo Listing dev id '{}'; xinput list-props '{}') "
    и установка конкретной переменной с помощью , где может быть именем устройства и может быть именем настройки.xinput --set-prop <ID> <SUB-ID> <values><ID><SUB-ID>

  2. Общее исправление - это повторная загрузка кода libinput и перестройка .

  3. Вы можете попробовать выполнить откат к интерфейсам udevadm / evdev с X11, а затем попробовать переменную X11 MOUSE_WHEEL_CLICK_ANGLE .

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

    # Should use imwheel --kill --buttons "4 5" to restart imwheel,
    # if the mouse has back/forward buttons, otherwhise imwheel --kill is enough.
    # imwheel must be set to autostart in your DE tools.
    #Edit ~/.imwheelrc to include, where '3' is a multiplier
    ".*"
    None,      Up,   Button4, 3
    None,      Down, Button5, 3
    Control_L, Up,   Control_L|Button4
    Control_L, Down, Control_L|Button5
    Shift_L,   Up,   Shift_L|Button4
    Shift_L,   Down, Shift_L|Button5
    
  5. Существуют определенные настройки приложения для чувствительности колеса мыши, такие как Chrome SmoothScroll и Firefox SmoothWheel ref .

Матеус Матукума Тейшейра
источник
1
Переход Libinput во многих отношениях был UX-регрессом, почти все из которых сводятся к тому, что пользователь контролирует поведение своего оборудования ... К сожалению, с учетом платформы, на которой это происходит.
Дуглас Гаскелл