将带有时间戳的鼠标坐标和鼠标单击写入文件?

时间:2019-04-30 14:03:10

标签: linux bash mouse xinput

我正在尝试创建一个bash脚本,该脚本每5毫秒记录一次鼠标的位置。我还想记录鼠标单击的时间戳和位置。

使用xdotool getmouselocation可以轻松记录鼠标的位置。我已经能够使用此处的一些建议记录鼠标的点击:https://unix.stackexchange.com/questions/106736/detect-if-mouse-button-is-pressed-then-invoke-a-script-or-command 但是,我无法将两者结合起来。

有什么办法可以做到这一点?预先谢谢你!

1 个答案:

答案 0 :(得分:1)

https://unix.stackexchange.com/questions/106736/detect-if-mouse-button-is-pressed-then-invoke-a-script-or-command的公认答案中,有一个示例来更改鼠标状态。稍加修改,您就可以在按下鼠标按钮时打印出鼠标位置。

@Gem Taylor提到使用脚本语言并不是一种可选方式。

在测试运行期间,我遇到了无法捕获点击的情况。

#!/bin/bash

MOUSE_ID=$(xinput --list | grep -i -m 1 'mouse' | grep -o 'id=[0-9]\+' | grep -o '[0-9]\+')

STATE1=$(xinput --query-state $MOUSE_ID | grep 'button\['"."'\]=down' | sort)
while true; do
        sleep 0.005
        STATE2=$(xinput --query-state $MOUSE_ID | grep 'button\['"."'\]=down' | sort)
        CLICK=$(comm -13 <(echo "$STATE1") <(echo "$STATE2"))
        if [[ -n $CLICK ]]; then
                echo "$CLICK"
                xinput --query-state $MOUSE_ID | grep 'valuator\['
        fi
        STATE1=$STATE2
done