Como rolar meia página no Linux?

3

Estou procurando uma maneira de rolar meia página, de preferência usando uma combinação de teclas como shift page up / down. No Windows, isso é possível via autohotkey , para OS, não parece haver nenhuma solução tão fácil como todos os eu encontrei foi isso .

Eu apenas mudo para o Ubuntu 14.04 (do win7). Do googling, parece-me que a maneira mais fácil de conseguir isso é criar um par de scripts xdotool / xbindkeys, que emulam meia página de rolagem do mouse ou seta para cima e para baixo, respectivamente. Então eu ligaria isso a teclas de atalho personalizadas.

No entanto, desde que mudei para o Ubuntu, percebo que talvez esteja faltando alguma coisa. Portanto, eu me pergunto, qual é a sua maneira preferida de ativar a rolagem de meia página no Linux?

Atualização: Eu criei um script, que emula rolando a roda do mouse algumas vezes:

#!/bin/bash
xdotool click 4
xdotool click 4
xdotool click 4
xdotool click 4

Funciona decentemente, mas restam dois problemas:

  1. Sempre rola a janela onde o mouse está. Eu tentei fazer isso rolar a janela ativa, mas sem sorte.

  2. Como ele envia as rolagens da roda do mouse, elas são interpretadas por outros programas, de modo que não posso ter o controle como uma tecla de atalho, porque ela aumenta o zoom. Este é um problema em programas onde todas as teclas de atalho são tomadas de forma ideal, eu gostaria de especificar a distância de rolagem sem emular a rolagem da roda do mouse.

por joelostblom 21.04.2014 / 18:11

1 resposta

5

Eu finalmente encontrei uma solução que funciona muito bem para a maioria dos meus casos de uso. Usando xdotools , criei dois scripts, um para rolagem em cada direção. Este é o script para rolagem para baixo (para rolar para cima, substitua '5' por '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

Basicamente, o xdotools obtém o ID activewindow e move os movimentos para lá antes de enviar o sinal de rolagem do mouse várias vezes. Eu não consegui fazer isso funcionar especificando diretamente para qual janela enviar os cliques, então resolvi movendo o cursor do mouse. Como o Linux rola automaticamente a janela sob o mouse, isso resolve o problema 1 listado na minha pergunta. O parâmetro --clearmodifiers libera a chave modificadora usada na combinação de teclas de atalho para que a única chave enviada seja a do xdotool, isso resolve o problema número 2 para mim.

O único inconveniente que resta é que, em algumas janelas, há vários painéis e, com esse script, só posso rolar o painel superior esquerdo. Isso não é um problema ao navegar, mas para IDEs como spyder. Então, se alguém tiver uma abordagem melhor, por favor, compartilhe!

    
por 21.04.2014 / 22:55