§ libinput для трекболла.

Возможно кто-то из вас знает, а кто-то нет, но я не использую мышь ни дома ни на работе. Для перемещения курсора я использую достаточно редкую вешь в по современным меркам - Trackball. Да именно Ball а не Pad. Я не буду вдаваться в детали почему это удобнее и все такое, вместо этого я расскажу почему я решил перейти от стандартной evdev на новомодный libinput.

Основным приемуществом libinput для меня стала простота и гибкость настройки. На работе я использую Logitech Trackman Marable, у которой вообще нет скролла, а дома более классический Kensington Slimblade Trackball скролл у которого хоть и есть, но недостаточно понятный для управления, да и вообще я привык к так называемой кнопке Scroll Modifier, которая, пока зажата, превращает шарик трекбола в скролл причём в любую из сторон.

Используя обычный evdev я не мог настроить этот самый модификатор скролла, так что бы это было удобно всегда. В качестве модификатора я использую правую кнопку мыши. Когда она зажата трекболл работает как скрол, если она была лишь кликнута я получаю меню по правой кнопки мыши. В принципе это удобно, однако возникали определённые трудности когда необходимо было изменить размер окна. В стандартной конфигурации это делается при помощи Alt и правой кнопки мыши. В этом режиме вы можете ткнуть в любую часть окна (правой кнопкой мыши) и изменять его геометрию не пытаясь нащупать угол, а прямо из любого места.
Evdev как и libinput поддерживает перераспределение кнопок мыши. Тоесть мы можем поменять местами все кнопки, однако основное отличие в том, что если мы используем кнопку "3"(правая кнопка мыши) в качестве модификатора прокрутки, для evdev любая кнопка имеющая данный индекс после перераспределения будет являться модификатором, libinput же сперва назначает модификатор, и только потом перераспределяет назначение клавиш.
Говоря простым языком я могу иметь две правых кнопки мыши на трекболле, но только одна из них будет являться модификатором скролла. В evdev такое не возможно.
Итак отойдём от теории к сухой практике. Для того что бы всё заработало необходимо установить libinput. В разных системах это делается по-разному, в Manjaro который использую я, и как следствие в Arch для этого необходимо установить пакет

$ sudo pacman -S xf86-input-libinput

Дальше я приведу пример моей конфигурации /usr/share/X11/xorg.conf.d/10-trackball.conf
для Logitech Trackman Marable

Section "InputClass"
    Identifier   "Logitech Trackball"
    MatchProduct "Trackball"
    Driver "libinput"
    Option "ScrollMethod" "button"
    Option "ScrollButton" "3"
    Option "NaturalScrolling" "true"
    Option "ButtonMapping"      "1 2 3 4 5 6 7 1 3"
EndSection

и для Kensington Slimblade Trackball

Section "InputClass"
    Identifier "Kensington Slimblade Trackball"
    MatchProduct "Kensington Kensington Slimblade Trackball"
    Driver "libinput"
    Option "ScrollMethod" "button"
    Option "ScrollButton" "8"
    Option "ButtonMapping"      "1 2 3 4 5 6 7 3"
    Option "NaturalScrolling" "true"
EndSectioni

Как вы наверное заметили я так же использую Natural Scrolling, как это принято в Apple MacOS и с последнего времени в Windows. Хотя это дело привычки


comments powered by Disqus