Это - о получении 'естественной прокрутки' иначе 'инвертированная прокрутка' для работы со ВСЕМИ приложениями в масштабе всей системы с мышами USB и trackpoints. Эта проблема сводит меня с ума с тех пор 12.04, где я наконец получил ее работающий с набором обходных решений.
Я использую Ubuntu Studio 18.04 (рабочий стол xfce 4.12) и в Предпочтениях существует опция 'Natural Scrolling'. Это работает как ожидалось в браузере и файловом менеджере, и также в текстовых редакторах и т.д. Однако т.е. в xfce4-терминале и коврике для мыши (текстовый редактор) и некоторые другие приложения это - все еще 'неестественная прокрутка'
Кто-либо знает то, что статус разработки по этой теме? Я пропускаю что-то?
Любая справка ценится, прежде чем я запущу и протестирую все те обходные решения.
Studio Ubuntu 18.04.1 с xfce 4.12 4.15.0-20-lowlatency # SMP с 21 Ubuntu ВЫТЕСНЯЕТ
IIRC непоследовательная 'инвертированная прокрутка' поведение даже через значение по умолчанию (x) приложения человечности происходил из-за другой обработки прокрутки в GTK2 и GTK3. Не знайте, применяется ли это все еще..
Так или иначе я просто узнал, что "старый прием xinput" все еще работает (xUbuntu 18.04.1, xinput версия 1.6.2), таким образом, я мог бы также совместно использовать, как это работает. И как заставить его сохранить перезагрузки.
Тест / временное решение
Перечислите все свои в настоящее время доступные указатели и клавиатуры:
xinput list
Что-то вроде этого появится:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech USB Laser Mouse id=9 [slave pointer (2)]
⎜ ↳ TPPS/2 IBM TrackPoint id=12 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [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)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=10 [slave keyboard (3)]
↳ ThinkPad Extra Buttons id=13 [slave keyboard (3)]
Выберите id
из рассматриваемого указателя перечислите все его свойства устройства:
xinput list-props 12
Device 'TPPS/2 IBM TrackPoint':
Device Enabled (143): 1
Coordinate Transformation Matrix (145): 1.000000, ...
libinput Natural Scrolling Enabled (281): 1
libinput Natural Scrolling Enabled Default (282): 0
libinput Scroll Methods Available (283): 0, 0, 1
libinput Scroll Method Enabled (284): 0, 0, 1
libinput Scroll Method Enabled Default (285): 0, 0, 1
libinput Button Scrolling Button (286): 2
...
Это - то, в чем мы нуждаемся: libinput Natural Scrolling Enabled (281)
Для включения естественной прокрутки глобально т.е. для "TPPS/2 IBM TrackPoint" (для текущей сессии) сначала выключите его в 'Мыши и Сенсорной панели' предпочтения.
Введите одну из тех двух строк ниже, совершите нападки, Входят. (оба делают то же, потому что, чтобы читать или записать свойство можно использовать или его все (!) имя или его идентификатор),
xinput set-prop 12 "libinput Natural Scrolling Enabled" 1
xinput set-prop 12 "281" 1
Теперь протестируйте его в приложениях, где naturalscroling не работал бы через установки системы.
Постоянное решение
Если вышеупомянутый тест работал над Вашей машиной, можно применить изменения каждый раз, Вы входите в свою сессию с маленьким сценарием запуска. Часть сценария, которая соответствует deviceName
из этого ответа о картах кнопки @zerobandwidth).
Сохраните код ниже как natural_scrolling.sh
в Вашем корневом каталоге или в /any/path/youLike
#!/bin/bash
# Find all xinput devices whose name matches any of the arguments passed here,
# then set the Natural Scrolling' property to '1' regardless of its
# current state.
# expect multiple arguments, store them as array
deviceNames="$@"
# exit if no argument is passed
if [ "$deviceNames" = "" ]; then
echo "No argument received, exiting."
echo "Call this script with argument(s) like 'Logitech' that match"
echo "any of your attached pointer devices."
exit 1
fi
for deviceName in $deviceNames
do
deviceId=$(xinput --list | awk -v search="$deviceName" \
'$0 ~ search {match($0, /id=[0-9]+/);\
if (RSTART) \
print substr($0, RSTART+3, RLENGTH-3)\
}'\
)
# set device-specific property (works i.e for 'TrackPoint' & 'Logitech')
xinput set-prop $id "libinput Natural Scrolling Enabled" 1
done
Mark исполняемый файл сценария:
chmod +x natural_scrolling.sh
Назовите его с уникальным (!) device_name
строка (строки) как аргумент:
/any/path/youLike/natural_scrolling.sh Logitech TrackPoint
Добавьте его к своим приложениям запуска, т.е. через предпочтения Сессии и Запуска в xfce и протестируйте его, выйдя из системы и въезжайте задним ходом снова.
Увы, у меня нет достаточной репутации для комментария, таким образом, я оказываюсь перед необходимостью добавлять это как ответ. Для любого натыкающегося на это, существует очень небольшая ошибка в коде выше. Предпоследняя строка:
xinput set-prop $id "libinput Natural Scrolling Enabled" 1
Должен читать:
xinput set-prop $deviceId "libinput Natural Scrolling Enabled" 1
Кроме того, я использую Logitech Ultrathin Mouse и по причине who-knows-what, это соединяется и как мышь и как клавиатура, и поэтому появляется дважды в xinput list
. Я поэтому добавил передачу по каналу вывода к head -1
для ограничения, что возвращается только к первой записи (который в моем случае всегда является мышью):
...
print substr($0, RSTART+3, RLENGTH-3)\
}' | head -1 \
)
...