我正在尝试在mono和x11中实现全局热键。不幸的是,应用程序使用了System.Windows.Forms,所以我不能使用this question中建议的gdk事件过滤器。
使用XGrabKey可以工作,但我对事件循环有问题。关闭应用程序时,处理x11事件循环的线程仍挂在XNextEvent中。有办法吗?我不想使用XPending进行投票。我可以取消XNextEvent或发送一个虚拟事件吗?
我正在根窗口上调用XGrabKey,因此很不幸,我没有得到任何类似DestroyNotifyUnmapNotify的事件。

最佳答案

使用XSendEvent发送XClientMessageEvent。创建自己的atom并设置事件的Atom成员,以便根窗口上可能正在监视XClientMessageEvent的其他应用程序不受影响。
在你的事件循环中,检查这个原子,如果你得到它就退出。

09-13 00:19