单声道中的全局热键

本文关键字:全局 声道 单声道 | 更新日期: 2023-09-27 18:35:49

我正在尝试在 Mono 和 X11 中实现全局热键。不幸的是,应用程序使用System.Windows.Forms,所以我不能使用这个问题中提出的GDK#事件过滤器。

使用 XGrabKey 有效,但我在事件循环方面遇到了问题。关闭应用程序时,处理 X11 事件循环的线程仍挂起在 XNextEvent 中。有没有办法解决这个问题?我宁愿不诉诸XPending的民意调查.我可以以某种方式取消XNextEvent或发送虚拟事件吗?

我在根窗口上调用XGrabKey,所以不幸的是我没有收到任何像DestroyNotifyUnmapNotify这样的事件。

单声道中的全局热键

使用 XSendEvent 发送XClientMessageEvent 。创建自己的 atom 并设置事件的Atom成员,以便可能正在根窗口上监视XClientMessageEvent的其他应用不受影响。

在你的事件循环中,检查这个原子,如果你得到它,就退出。