1

我正在用python编写一个屏幕键盘,杂乱无章。我得到了 ClutterStage 的 XWindow 对象,但我找不到任何阻止窗口窃取焦点的属性。基本上,它需要接受鼠标事件(点击、动作等),而不是从它试图输入的窗口中窃取键盘焦点。有什么想法吗?:)

4

2 回答 2

1

您希望将 WM_HINTS 属性中的输入提示设置为 false 并且不添加 WM_TAKE_FOCUS 属性。这将确保窗口管理器永远不会将键盘焦点转移到您的窗口,但不会阻止其他事件。见 ICCCM 第 4.1.7 节。

http://tronche.com/gui/x/icccm/sec-4.html#s-4.1.7

于 2014-04-24T13:01:02.010 回答
0

顺便说一下输入传递在 X11 上的工作方式,这不可能发生:X11 窗口必须具有焦点才能接收输入事件 - 换句话说:事件仅传递到焦点窗口。

例如,GTK+ 中的输入法和可访问性支持依赖于工具包通过特定的 API(分别为 IM 和 ATK)向另一个进程发送和接收数据。GNOME 中的所有虚拟键盘都使用这两种方法来处理输入事件。

在纯 X11 上,您可以使用 XTest 扩展 API 将事件从虚拟键盘发送到调用它的应用程序。

于 2011-12-24T09:27:26.223 回答