GTK:单击鼠标时如何确定ctl/alt键状态?

GTK:单击鼠标时如何确定ctl/alt键状态?,gtk,mouseevent,keyboard-events,Gtk,Mouseevent,Keyboard Events,我知道当按下另一个键时,我可以从按键事件中获取ctl/alt键状态。但是我找不到任何方法来检测按键状态,比如说,当鼠标按键被点击时。是的,当按下并释放ctl/alt键时,我会收到事件,只要窗口保持焦点,我就可以跟踪它们是向上还是向下。但是如果用户,比如说,单击桌面使我的窗口失去焦点,然后按住ctl或alt键,然后单击我的窗口,我的代码将不会看到ctl键关闭事件,也不会知道它已关闭 当鼠标点击或其他非键盘事件发生时,有没有办法检查这些修改键的状态?与其试图永久保持状态,不如在每次处理事件时检查修改

我知道当按下另一个键时,我可以从按键事件中获取ctl/alt键状态。但是我找不到任何方法来检测按键状态,比如说,当鼠标按键被点击时。是的,当按下并释放ctl/alt键时,我会收到事件,只要窗口保持焦点,我就可以跟踪它们是向上还是向下。但是如果用户,比如说,单击桌面使我的窗口失去焦点,然后按住ctl或alt键,然后单击我的窗口,我的代码将不会看到ctl键关闭事件,也不会知道它已关闭


当鼠标点击或其他非键盘事件发生时,有没有办法检查这些修改键的状态?

与其试图永久保持状态,不如在每次处理事件时检查修改器

示例:


哦。我没有读过get_state(),也不会想到在鼠标事件中调用它,因为它正在检索键盘信息。看起来是一个正确的答案,但我还没有验证。问题:您的pygtk示例调用get_state(),但另一篇文章似乎说总是调用gtk_accelerator_get_default_mod_mask()来获取修饰符。这些似乎是相互排斥的。也许pygtk代码只是向我展示了一个代码示例(它没有完全正确地执行),GTK文档中的页面显示了正确的执行方法。这是真的吗?请为我澄清一下。我自己也注意到了这一点,但没有深入研究并找出其中的区别,或者哪种方式最好。我说得不对。两个URL都使用事件状态。第一个与之和是调用函数的结果,另一个与之和是各种GDK_*\u掩码常数。就我而言,我看不出第一个方法添加了什么。我做了一些测试,结果都是一样的。在任何情况下,我都会停在这里,把这个问题标记为已回答。