Posso simular movimentos do mouse via terminal sem xdotool?

6

Eu gostaria de escrever um script para impedir que um computador bloqueie virtualmente mexendo no mouse. No entanto, não tenho xdotool no computador que estou usando e não consigo instalar, pois não sou raiz. Existe uma maneira de mover o cursor sem usar xdotool ?

    
por ichbinallen 26.10.2014 / 03:35

2 respostas

9

Não é possível instalar xdotool porque você não é root não significa que não pode executar o programa, pois você não precisa de privilégios especiais.

Basta fazer o download e compilar da origem .

Se você não tiver acesso a um compilador, poderá fazer o download do pacote diretamente para o sistema e extrair o arquivo do pacote (para .deb , use ar , a extração de .rpm pode ser feita com rpm2cpio )

    
por 26.10.2014 / 06:18
7

De acordo com esta resposta, você pode mover o ponteiro do mouse com a linha de comando com o seguinte procedimento:

  1. Primeiro você precisa encontrar o dispositivo de entrada do mouse com

    grep mouse /proc/bus/input/devices | grep event
    

    Você deve ver algo como H: Handlers=mouse0 event7 no meu caso. Pode produzir mais de uma linha se você tiver mais de um mouse (por exemplo, touchpad). A parte importante é event7 , isso significa que você vai escrever em /dev/input/event7 .

  2. Em seguida, o seguinte moverá o ponteiro do mouse 100 pixels para a direita:

    seconds=$(date +%s)
    type=2      # EV_REL
    code=0      # REL_X
    value=100   # 100 pixels
    
    printf '%08X%04X%04X%08X%08X\n' $value $code $type 0 $seconds | xxd -r -p | \
        perl -0777e 'print scalar reverse <>' > /dev/input/event7
    
    type=0      # EV_SYN
    code=0      # SYN_REPORT
    value=0
    
    printf '%08X%04X%04X%08X%08X\n' $value $code $type 0 $seconds | xxd -r -p | \
        perl -0777e 'print scalar reverse <>' > /dev/input/event7
    

Eu não testei se esse procedimento é equivalente ao movimento real do mouse no sentido de interromper o mecanismo de bloqueio.

    
por 26.10.2014 / 07:22