Как прокрутить половину страницы в Linux?
Я ищу способ прокручивать половину страницы, предпочтительно используя комбинацию клавиш, например, сдвиг страницы вверх / вниз. В Windows это можно сделать с помощью autohotkey, для ОС, похоже, нет такого простого решения, как все, что я обнаружил, это.
Я просто переключаюсь на использование Ubuntu 14.04 (из win7). Из поисков в Интернете мне кажется, что самый простой способ достичь этого - создать пару сценариев xdotool/xbindkeys, которые эмулируют полстраницы прокрутки мышью или нажатия стрелок вверх и вниз соответственно. Тогда я бы связал их с пользовательскими горячими клавишами.
Однако, поскольку я только что перешел на Ubuntu, я понимаю, что, возможно, что-то упустил. Поэтому мне интересно, какой ваш предпочтительный способ включить полстраничную прокрутку в Linux?
Обновление: я создал скрипт, который эмулирует прокрутку колесика мыши несколько раз:
#!/bin/bash
xdotool click 4
xdotool click 4
xdotool click 4
xdotool click 4
Работает прилично, но остаются две проблемы:
Он всегда прокручивает окно, где находится мышь. Я попытался прокрутить активное окно, но не повезло.
Поскольку он посылает прокрутки колесика мыши, они интерпретируются другими программами, так что я не могу управлять ими как "горячей клавишей", потому что тогда он масштабируется. Это проблема в программах, где все горячие клавиши используются так идеально, что я хотел бы указать расстояние прокрутки без эмуляции прокрутки колесика мыши.
1 ответ
Я наконец нашел решение, которое очень хорошо работает для большинства моих сценариев использования. С помощью xdotools
Я создал два сценария, по одному для прокрутки в каждом направлении. Это скрипт для прокрутки вниз (для прокрутки вверх замените "5" на "4").
#!/bin/bash
#Get active window id
win=`xdotool getactivewindow`
#Move the mouse to the active window
xdotool mousemove --window $win 45 110
#Scroll active window several times
xdotool click --clearmodifiers 5
xdotool click --clearmodifiers 5
xdotool click --clearmodifiers 5
xdotool click --clearmodifiers 5
xdotool click --clearmodifiers 5
xdotool click --clearmodifiers 5
xdotool click --clearmodifiers 5
xdotool click --clearmodifiers 5
xdotool click --clearmodifiers 5
xdotool click --clearmodifiers 5
xdotool click --clearmodifiers 5
#Send click to specific window. Finicky.
#xdotool click --window $win 5
По сути, xdotools получает идентификатор активного окна, а затем перемещает туда ходы, прежде чем отправлять сигнал прокрутки мыши несколько раз. Я не мог заставить его работать, непосредственно указав, в какое окно отправлять клики, поэтому я решил это, переместив вместо этого курсор мыши. Поскольку Linux автоматически прокручивает окно под мышью, это решает проблему 1, указанную в моем вопросе. --clearmodifiers
Параметр освобождает любой ключ-модификатор, используемый в комбинации горячих клавиш, так что отправляется только один ключ от xdotool, это решает проблему номер 2 для меня.
Единственное небольшое раздражение, которое осталось, это то, что в некоторых окнах есть несколько панелей, и с помощью этого скрипта я могу прокручивать только верхнюю левую панель. Это не проблема при просмотре, но для IDE, таких как spyder. Так что, если у кого-то есть лучший подход, пожалуйста, поделитесь!