我正在使用 C++ 和 wxWidgets 编写一个 linux 应用程序。
在我的应用程序中,我需要将键盘事件发送到当前具有焦点的窗口(不属于我的应用程序!)。
我的问题是:
- 如何找出焦点所在的窗口?
- 如何将键盘事件发送到不属于我的应用程序的窗口?
谢谢
丹妮尔
最佳答案
XGetInputFocus(3)
。- X11 不关心“应用程序”。只有 window 。有一个窗口 ID 就足够了(
Window
是 Xlib 数据类型)。使用任何发送事件的方法。我知道有两种方法:XSendEvent(3)
和XTestFakeKeyEvent(3)
。前一种方法不适用于某些选择忽略来自XSendEvent
的事件的程序。后者需要XTest
扩展,它存在于大多数(但不是所有)现代服务器中。 - 请注意
InputFocus
是XSendEvent
的有效窗口指示符,并且XTestFakeKeyEvent
无论如何都会传送到具有焦点的窗口,因此您可能根本不需要调用XGetInputFocus
。
关于linux - 从 linux 中的 wxwidget 应用程序向其他窗口发送键盘事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12312726/