[英]Catch mouse clicks in python
我正在尝试在python代码中捕获鼠标单击事件(不仅是在我创建的Gtk
窗口中单击,而且还在屏幕上的任何位置)。 经过一番搜索,我发现了一个谈论xlib
的线程(很棒,我已经有了一个依赖项)。
from Xlib import display, X
display = display.Display()
root = display.screen().root
root.change_attribute(event_mask = X.ButtonPressMask | X.ButtonReleaseMask)
while True:
event = root.display.next_event()
print(event)
问题是这段代码抛出错误,我只是找不到好的文档...
X protocol error:
<class 'Xlib.error.BadAccess'>: code = 10, resource_id = 146, sequence_number = 9, major_opcode = 2, minor_opcode = 0
如果您对此错误有任何想法或以其他方式执行此操作,它将真正有帮助!
这里的BadAccess
是因为“试图选择一个事件类型,而另一个客户机已经选择了该事件类型,那么一次只能选择一个。
根据x11协议文档的 ChangeWindowAttributes请求(操作码2是此请求代码,资源id = 146是您的root win ID):
多个客户端可以在同一窗口上选择输入; 它们的事件掩码是不相交的。 生成事件时,会将事件报告给所有感兴趣的客户。 但是,一次只能有一个客户端可以选择SubstructureRedirect,一次只能有一个客户端选择ResizeRedirect,一次只能有一个客户端选择ButtonPress。 尝试违反这些限制会导致访问错误。
尝试仅选择ButtonReleaseMask
作为可能的解决方案
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.