在Bash脚本中检测鼠标点击

5

我想知道如何在后台运行一个bash脚本,使其在用户单击鼠标时执行某些操作(例如运行脚本、命令等)。即使终端关闭,我也希望它能继续运行。有什么建议吗?谢谢!


你能让你的窗口系统继续接受一个已关闭的窗口的输入吗?如果你可以,我会非常惊讶。鼠标处于活动状态意味着必须有一些处理和事件循环来接受输入。如果你关闭一个窗口,则必须依赖外层软件来继续处理,这意味着为了运行脚本,你的外层软件必须知道这个脚本。也许在窗口关闭之前,你可以将其注册为父进程的右键单击事件(这是非常不可能的)。而且bash脚本通常不会接受鼠标点击(在我看来)。抱歉,但祝你好运。 - shellter
你是在谈论字符终端还是X? - Karoly Horvath
我在这里看到两个不同的问题。第一个问题请参见https://dev59.com/fm025IYBdhLWcg3wf2OE,第二个问题请参见Aamir的答案。 - ninjalj
3个回答

5
如果您正在使用X11,可以尝试使用xdotool来捕获鼠标事件。
类似于以下代码:
xdotool search --onlyvisible . behave %@ mouse-click getmouselocation

Xdotool手册

如果你想在后台运行脚本,可以使用以下命令:

./myscript.sh &>/dev/null &

4
如果你想在鼠标点击(或滚轮事件)中只运行bash命令,可以尝试以下示例: $ echo -e "\e[?1000h" $ while read -n 6; do echo hellowworld; done 这是为了滚轮事件(对于单击,请设置12)。

谢谢你终于让我找到了正确的方向!这里有一个很好的参考文档 https://invisible-island.net/xterm/ctlseqs/ctlseqs.html(例如 ?1000l 禁用 ?1000h) - Andy

-1
为了使脚本在终端关闭后仍然运行,您可以尝试使用nohup命令。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接