Auto-clique no mouse enquanto o botão do teclado é pressionado

3

Eu tenho um jogo que requer que eu clique em um objeto em movimento repetidamente, o que é extremamente difícil se você tiver apenas um touchpad sem botões de mouse separados.

O que eu quero é ter uma ferramenta / script que emule repetidamente um clique do mouse (botão esquerdo, talvez cerca de 5 cliques por segundo) enquanto um botão ou combinação de teclado específico é pressionado, por exemplo, Controle (direita) + Menu .

Eu sei que posso emular cliques repetidos com um comando como

xdotool click --repeat 10 --delay 200 1

mas não tenho ideia de como clicá-lo enquanto uma combinação de teclado específica é mantida pressionada em vez de um número fixo de cliques.

    
por Byte Commander 05.02.2017 / 12:21

2 respostas

1

Aqui estão minhas primeiras e quintas tentativas. O primeiro é decente se você não precisar alterar o atraso. Parece haver alguns problemas com certas combinações de teclas, mas não tenho certeza do que está causando isso.

Método 1, em ~/.xbindkeysrc :

keystate_scrolllock = enable

"xdotool click 1"
    Scroll_Lock

Método 5:

keystate_scrolllock = enable

"/home/USER/infinite_clicks.sh event16 KEY_SCROLLLOCK 0.1 &"
    Scroll_Lock

Com infinite_clicks.sh sendo:

#!/bin/bash
kbd=$1 #"event16"
key=$2 #"KEY_SCROLLLOCK"
delay=$3 #"0.1"
fn='basename "$0"'

if [  $# -le 1 ]; then 
    echo "Usage: $fn input_device key_name delay"
    echo "Example: $fn event16 KEY_SCROLLLOCK 0.1"
    echo "Must run as superuser."
    exit 1
fi 

# do not start if already started
if [[ $(pidof -o %PPID -x $fn) ]]; then
    exit 0
fi

while true; do
    # this is why you need to use sudo/superuser
    evtest --query  /dev/input/$kbd EV_KEY $key

    # get evtest return code, if it's 0 the key is up
    if [[ "$?" -eq "0" ]]; then
      break
    fi

    xdotool click 1 &
    sleep "$delay"
done

exit 0

Com este código, você também precisa executar xbindkeys como sudo xbindkeys -f ~/.xbindkeysrc

Você pode encontrar o número do seu evento de teclado usando sudo evtest e, em seguida, encontrar os nomes das chaves usando sudo evtest /dev/input/eventXXX usando o número do evento.

    
por Annan 01.11.2017 / 16:48
-1

Você pode usar xbindkeys . Ele permite que você execute comandos / scripts em um evento de mouse / teclado. Você pode instalá-lo com: sudo apt-get install xbindkeys . Para personalizar facilmente os atalhos de teclados, instale também xbindkeys-config . Em seguida, crie o arquivo ~/.xbindkeysrc .

Em seguida, execute xbindkeys-config , é uma GUI que permite gerenciar seus atalhos. Aqui está uma captura de Xbindkeys-config, com as configurações para executar xdotool click --repeat 10 --delay 200 1 quando ctrl left +w for pressionado.

Quandoterminardedefinirseusatalhos,cliqueem"Salvar & amp; Aplicar & amp; Exit 'e os atalhos devem estar imediatamente disponíveis.

    
por Dark Sinus 05.02.2017 / 14:07