Como rolar meia página no Linux?


3

Eu 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 é factível via autohotkey , para OS, não parece haver uma solução tão fácil como todas as Eu encontrei isso .

Eu apenas mudo para usar 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 metade da página de rolagem do mouse ou seta clicando para cima e para baixo, respectivamente. Então eu iria vinculá-los a teclas de atalho personalizadas.

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

Atualizar: 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. Ele sempre rola a janela onde o mouse está. Eu tentei fazer isso rolar a janela ativa, mas sem sorte.

  2. Desde que ele envia scrolls de roda do mouse, estes são interpretados por outros programas, de modo que eu não posso ter o controle como uma tecla de atalho, porque então ele faz 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.

Respostas:


5

Eu finalmente encontrei uma solução que funciona muito bem para a maioria dos meus casos de uso. Usando xdotoolsEu 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 isso 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 --clearmodifiers O parâmetro libera qualquer modificadora chave usada na combinação de teclas de atalho para que a única chave que é 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!


Obrigado por isso. Vou te dar um ping se achar uma abordagem melhor, mas até agora estou
Rojo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.