如何在GTK中获得全局鼠标事件?

时间:2014-08-23 10:58:05

标签: gtk pygtk pygobject

我最近学习使用PyGObject。我可以听一个"运动 - 通知 - 事件"使用Gtk.Widget获取鼠标移动事件。但是,它不能在窗口外工作,我需要在窗口外面的鼠标事件,。也许我应该问一个根窗口如何监听motion-notify-event。 我认为超时功能可以做到,但不是最好的方法。 我应该怎么做?

1 个答案:

答案 0 :(得分:0)

如何在GTK中获取全局鼠标事件?

我真的不知道如何使用GTK,但你可以通过其他方法轻松完成。

1)您可以在python程序中创建一个记录鼠标位置的线程。 2)你可以(使用gtk)获得你的窗口位置和大小。

所以你有你需要知道的一切......在linux下有一些程序可以让你捕获鼠标位置等。

此命令cnee --record --mouse | awk '/7,4,0,0,1/ { system("xdotool getmouselocation") }'将在您每次单击时打印鼠标位置。 (你必须安装cnee和xdotool)

例如,您可以将该输出写入文件并reed文件的最后一行..或 如果你不想传递文件,你可以直接在python中执行命令并检索它的输出:

(python 2.7)

>>> import os
>>> from subprocess import Popen
>>> mouse=os.popen("xdotool getmouselocation")
>>> mouse=str(mouse.read())
>>> print mouse
x:838 y:439 screen:0

然后你用字符串播放一下,你会得到x,y和屏幕。

使用1)和2)您可以知道鼠标是在窗口内还是在窗外。