Как настроить прокрутку элемента по зажатию средней кнопки мышки в Linux Xorg?
Хочется сделать так, чтобы при зажатой средней (или правой) кнопке мышки таскание мышки вверх-вниз прокручивало текущий элемент интерфейса вверх-вниз, т.е. делало скроллинг также как будто я тяну за полоску скролла справа. Именно так работает работает прокрутке на ноутбуке через тачпад двумя пальцами вверх вниз, но на полноценном компьютере тачпада нет, а прокрутку очень хочется ;)
Насколько я разобрался, нужно копать где-то в огороде xorg xinput. По-идее такой функционал уже есть в системе, т.к. при использовании тачпада когда делаешь скролл вниз двумя пальцами — работает именно так как надо. Вопрос в том как привязать включение этого режима к зажатию средней кнопки мышки. При этом хотелось бы оставить работоспособным обычный клик мышкой как нажатие третьей кнопки мышки. Может быть xinput тут не причем и нужно копать в display manger (использую kdm), но там тоже не нашёл похожего ничего.
Плагины, которые делают подобное, встречаются для Firefox и Chrome, но хочется чтобы это работало не только в отдельных приложениях, а сразу во всех элементах системы (Использую Ubuntu с оболочкой KDE, но и в GTK-приложениях чтобы тоже работало). Либо, если это нельзя сделать через xorg, то хотя бы какую-то программу запускать которая это делает — тоже было бы годно. Для виндовсов я встречал такую программу (по правой кнопки скроллит списки, но это было лет 5 назад и название уже не вспомню никак), а в линухах что-то никак не найду как это можно сделать. Подскажите пожалуйста как это можно сделать или хотя бы в какую сторону копать?
Благодарю, это работало на Ubuntu 14.06, но на 16.04 и более свежих перестало, видимо потому что Evdev заменили на libinput.
Вот такие свойства сейчас мышка выводит:
Разработка сайтов на Drupal, поисковая оптимизация
Для свежих Ubuntu 18.04 старое решение перестало работать, поэтому пришлось изобретать новое - в папке /etc/X11/Xsession.d создать файл вида 99mouse-middle-scroll с примерно таким содержимым:
IDS=`xinput list | grep 'slave pointer' | grep -v Virtual | grep -o -P 'id=(\d+)' | grep -o -P '\d+'`
for ID in $IDS
do
xinput set-prop $ID "libinput Scroll Method Enabled" 0, 0, 1
done
Как вариант: при помощи xlib «отбирать» мышку, анализировать события и отправлять уже измененные события клиенту. Можно глянуть исходники xdotool, чтобы понять, как оно должно работать.