Как прокрутить половину страницы в Linux?

2645
joelostblom

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

3

1 ответ на вопрос

5
joelostblom

I finally came up with a solution that works very well for most of my use-cases. Using xdotools, I created two scripts, one for scrolling in each direction. This is the script for scrolling down (to scroll up, substitute '5' for '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 

Basically, xdotools get the activewindow id and then moves the moves there before sending the mouse scroll signal several times. I could not get it to work by directly specifying which window to send the clicks to, so I solved it by moving the mouse cursor instead. Since Linux automatically scrolls the window under the mouse, this solves problem 1 listed in my question. The --clearmodifiers parameter releases whatever modifier key used in the hotkey combination so that the only key that is sent is the one from xdotool, this solves problem number 2 for me.

The only minor annoyance left is that in some windows, there are multiple panels and with this script I can only scroll the top leftmost panel. This is not a problem when browsing but for IDEs such as spyder. So if someone has a better approach, please share!

Спасибо за это. Я буду пинговать тебя, если найду лучший подход, но пока я беру это Rojo 9 лет назад 0