Para aqueles que usam o Wayland, esse tipo de entrada falsa foi explicitamente excluída do design do Wayland por segurança. Veja @ resposta do grawity para Alternativa de Wayland para o xdotool do xorg para uma discussão de um problema relacionado.
O script abaixo demonstra a restrição do mouse para a janela quando o script foi iniciado. Alterar o teste no comando while
para testar se uma tarefa foi concluída melhoraria significativamente o script. Descomentar o comando sleep permitiria que a tarefa estivesse fora da janela original como um teste de habilidade / quebra-cabeça.
#!/bin/bash
###
#a script to demonstrate using xdotool to restrict mouse movement to a single window. Inspired by a script posted by pfanne on LinuxQuestions.org
###
#original mouselocation
POS=$(xdotool getmouselocation | sed 's/:/ /g')
WINDOW=$(echo $POS | cut -d' ' -f8)
XPOS=$(echo $POS | cut -d' ' -f2)
YPOS=$(echo $POS | cut -d' ' -f4)
while [ true ]
do
if [ $WINDOW != $(xdotool getmouselocation | sed 's/:/ /g' | cut -d' ' -f8 ) ];
then
xdotool mousemove $XPOS $YPOS;
#sleep 1
fi
done
Este script de pfanne demonstra o uso de um retângulo arbitrário para restringir a localização dos mouses.
#!/bin/bash
borderxl=
borderyu=
borderxr=
borderyd=
check=0
if [ $borderxl -gt $borderxr ]
then
check=1
fi
if [ $borderyu -gt $borderyd ]
then
check=1
fi
if [ $check -ge "1" ]
then
echo "Make sure the first coordinate pair refers to the upper left corner"
echo "and the second pair refers to the lower right one."
fi
if [ $check -lt "1" ]
then
while [ true ]
do
check=0
declare -a pos
pos=$(xdotool getmouselocation)
#xpos='xdotool getmouselocation | awk '{ print }''
#xpos=${xpos:2}
#xpos='getcurpos | awk '{ print }''
#ypos='xdotool getmouselocation | awk '{ print }''
#ypos=${ypos:2}
#ypos='getcurpos | awk '{ print }''
if [ $xpos -gt $borderxr ]
then
check=1
xpos=$borderxr
fi
if [ $ypos -gt $borderyd ]
then
check=1
ypos=$borderyd
fi
if [ $xpos -lt $borderxl ]
then
check=1
xpos=$borderxl
fi
if [ $ypos -lt $borderyu ]
then
check=1
ypos=$borderyu
fi
if [ $check -ge "1" ]
then
xdotool mousemove $xpos $ypos
fi
done
fi