3

Я ищу способ прокручивать половину страницы, предпочтительно используя комбинацию клавиш, например, сдвиг страницы вверх / вниз. В 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. Он всегда прокручивает окно, где находится мышь. Я попытался прокрутить активное окно, но не повезло.

  2. Так как он посылает прокрутки колесика мыши, они интерпретируются другими программами, так что я не могу управлять ими как «горячей клавишей», потому что тогда он масштабируется. Это проблема в программах, где все горячие клавиши используются так идеально, что я хотел бы указать расстояние прокрутки без эмуляции прокрутки колесика мыши.

1 ответ1

5

Я наконец нашел решение, которое очень хорошо работает для большинства моих сценариев использования. Используя 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. Так что, если у кого-то есть лучший подход, пожалуйста, поделитесь!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .