是否有任何实用实用程序可以模拟 ubuntu 上的鼠标移动?
重要提示:我只希望当机器空闲 X 分钟时该实用程序能够控制鼠标。
当然,我可以用来xdotool
模拟一些运动,但我如何检测 PC 是否空闲了 x 分钟?我找不到任何适用于 Linux 的工具……
答案1
有一个程序,当它检测到您离开或闲置时,就会移动鼠标。
https://github.com/carrot69/keep-presence/
您可以从 snap 中安装它:
sudo snap install keep-presence
然后运行它:
keep-presence --seconds 30
如果它检测到您处于闲置状态,30 秒后它将移动鼠标。
答案2
同时我创建了自己的脚本:
#requires:
# 'xprintidle' for inactivity check (in ms)
# 'rand' for generating random number (screen resolution)
# 'xdotool' to move the mouse pointer
#parameters:
# 100000 idle time in ms before executing the mousemove
# 800 / 600: your screen resolution, at at least the moving range for the mouse pointer
while :; do
if [ $(xprintidle) -gt 100000 ]
then
xdotool mousemove `rand -M 800` `rand -M 600`;
fi
sleep 30
done
答案3
对于 Wayland 和 X11 兼容性,我没有费心检查活动,因为您甚至没有注意到它正在运行。需要 evemu-tools 并且需要以 root 身份运行。
#!/bin/bash
_dev=$(ls -1 /dev/input/by-id/*event-mouse | tail -1)
[ -z "${_dev}" ] && echo "Cannot find mouse event device" && exit 1
echo "Using ${_dev}"
while [ true ]
do
sleep 60
/usr/bin/evemu-event ${_dev} --type EV_REL --code REL_X --value 1 --sync
/usr/bin/evemu-event ${_dev} --type EV_REL --code REL_X --value -1 --sync
echo -n "#"
done
答案4
我能够根据 Howard 的回答编写一个脚本,但我发现移动太明显了。因此,我等待检测到鼠标输入,并根据此情况进行抖动。
此脚本取决于evemu
#!/bin/bash
#### uncomment two lines below to help select your mouse event number ####
# grep -E 'Name|Handlers' /proc/bus/input/devices | grep -B1 'mouse'
# printf "\nFind your mouse's event number, it should be in this format 'eventX' where X is your event number\nWrite your event number into the script"
#### end of find mouse event number code ####
EVENT_NUMBER=24 # use above code to get your mouse event number
SLEEP_TIME=10
output=$(timeout $SLEEP_TIME evemu-record /dev/input/event$EVENT_NUMBER)
if ! grep -q "EV_REL / REL_Y" <<< "$output"; then
mouse=$(ls -1 /dev/input/by-id/*event-mouse | tail -1)
# evemu-event must be ran as sudo
evemu-event $mouse --type EV_REL --code REL_X --value 1 --sync
evemu-event $mouse --type EV_REL --code REL_X --value -1 --sync
fi
然后我每隔几分钟使用 cron 运行此脚本
编辑:我发现我的鼠标事件编号在重新启动时会发生变化。我修改了脚本以仅捕获来自 /dev/input/mice 的输出。作为替代方案,这对我来说效果很好。我确实注意到 bash 发出了空字节警告,但这似乎无害。
#!/bin/bash
# SCRIPT VERSION 2
SLEEP_TIME=4
output=$(timeout $SLEEP_TIME cat /dev/input/mice)
if [[ -z "$output" ]]; then
mouse=$(ls -1 /dev/input/by-id/*event-mouse | tail -1)
# evemu-event must be ran as sudo
evemu-event $mouse --type EV_REL --code REL_X --value 1 --sync
evemu-event $mouse --type EV_REL --code REL_X --value -1 --sync
fi