鼠标移动可以防止闲置吗?

鼠标移动可以防止闲置吗?

是否有任何实用实用程序可以模拟 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

相关内容