Configure o cursor do mouse para o centro esquerdo da exibição atualmente ativa com o comando / script

1

Estou tentando descobrir como criar um script que funcione da seguinte maneira:

  1. encontra cotas da exibição na qual o ponteiro do mouse está atualmente
  2. move o ponteiro do mouse para o centro da borda esquerda da exibição
  3. Gostaria de poder adicionar argumentos de comando ao executar o script que adicionaria ou subtrairia à posição de borda central esquerda e moveria o mouse de acordo. Por exemplo, se eu corri:

python3 /path/to/script.py

então o script colocaria o ponteiro do mouse na borda esquerda da exibição e no centro do eixo vertical. Se eu corri isto:

python3 /path/to/script.py 10 -10

então o script colocaria o ponteiro do mouse 10px - > da borda esquerda da tela e -10 px (abaixo) do centro do eixo vertical.

Tenho certeza que xdotool e python podem fazer isso, mas eu sou um noob completo quando se trata de programar qualquer coisa, e mesmo assim eu encontrei este link , eu ainda não sei como proceder. Se alguém se sentir tão gentil a ponto de me ajudar com isso, seria muito apreciado, mas se não, então não se preocupe.

Se alguém estiver curioso para saber por que quero fazer isso: estou configurando um tablet para usar o i3wm. Estou criando atalhos de botão de toque para o gerenciamento de janelas do i3 usando o jgmenu. O Jgmenu tem uma opção para lançar no local do ponteiro do mouse. Eu gostaria de usar um gesto de touchegg para primeiro mover o ponteiro do mouse com este script, depois lançar o jgmenu.

    
por Joe Millard 19.04.2018 / 16:39

1 resposta

1

Esta abordagem usa utilitários para servidores X, presumivelmente não funcionará com Wayland.
Aqui está uma pequena função bash para você:

line_up () 
{ 
  vc=$(( $(xwininfo -root|sed '/Height/!d;s/.* //') / 2 ));
  [[ -n $2 ]] && vc=$(( -$2 + vc ));
  xdotool mousemove $(( $1 )) $vc
}

Como um oneliner:

line_up(){ vc=$(($(xwininfo -root|sed '/Height/!d;s/.* //')/2));[[ $2 ]]&&vc=$((-$2+vc));xdotool mousemove $(($1)) $vc;}

Isso usa a saída de xwininfo para obter a altura da exibição atual, divide-a pela metade e a salva como variável cv . Se $2 existir, será subtraído. xdotool , em seguida, move o cursor para as coordenadas $1,$vc . Eu aproveito o fato de que a expressão aritmética de bash apenas retorna 0 se $1 não estiver definido, um xdotool mousemove $1 … simples apenas lançaria um erro nesse caso. Como acima você pode chamar a função com tantos argumentos quanto quiser, se não houver nenhum, apenas moverá o cursor para 0,totalheight/2 , se houver um para $1,totalheight/2 e se houver dois ou mais para $1,totalheight/2-$2 . / p>

Exemplo de execução

$ xwininfo -root|sed '/Height/!d' # display height is 1024 px
  Height: 1024
$ xdotool getmouselocation # current mouse location: 469,875
x:469 y:875 screen:0 window:15294612
$ line_up
$ xdotool getmouselocation # current mouse location: 0,512
x:0 y:512 screen:0 window:14680366
$ line_up 10
$ xdotool getmouselocation # current mouse location: 10,512
x:10 y:512 screen:0 window:14680366
$ line_up 20 -10
$ xdotool getmouselocation # current mouse location: 20,522
x:20 y:522 screen:0 window:14680366

Fontes

por dessert 19.04.2018 / 21:18