什么XWindow属性可以防止窗口获取焦点,同时允许接收鼠标事件?
我正在用Python和Clutter写一个屏幕键盘。我找到了ClutterStage的XWindow对象,但我找不到任何属性可以让这个窗口不抢占焦点。简单来说,它需要能够接收鼠标事件(比如点击、移动等),但又不能抢走正在输入的窗口的键盘焦点。有没有什么好主意呢? :)
2 个回答
0
顺便说一下,输入的传递在X11系统上是这样的:一个X11窗口必须处于焦点状态才能接收输入事件。换句话说,事件只会发送到当前被选中的窗口。
比如在GTK+中,输入法和无障碍支持依赖于工具包通过特定的API(分别是IM和ATK)来发送和接收数据。这意味着GNOME中的所有虚拟键盘都是通过这些方法来处理输入事件的。
如果你在纯X11环境下,可以使用XTest扩展API将事件从虚拟键盘发送到调用它的应用程序。
1
你想把输入提示设置为不显示,并且不添加WM_TAKE_FOCUS这个属性。这样做的目的是确保窗口管理器不会把键盘焦点转移到你的窗口上,但这并不会阻止其他事件的发生。具体的内容可以参考ICCCM的第4.1.7节。