我正在为Xorg(X11,Linux)编写一个简单的应用程序,它应该有一个全屏窗口。
似乎工作得很好,窗口管理器忽略了窗口,因此它被正确定位为全屏。但是有一个问题,事件循环永远不会得到任何KeyPress事件。正确接收鼠标事件,但没有按键。
// assuming some variables are already defined as global here, like display etc.
void main()
{
unsigned long valuemask = CWOverrideRedirect;
XSetWindowAttributes attributes;
Window window;
window = XCreateSimpleWindow(display, XDefaultRootWindow(display), 0, 0,
(DisplayWidth(display, screen)), (DisplayHeight(display, screen)), 0, 0, 0);
attributes.override_redirect = True;
XChangeWindowAttributes(display, window, valuemask, &attributes);
for (;;)
{
XNextEvent(display, &ev);
switch (ev.type)
{
case KeyPress:
... this gets never called if override_redirect = True
}
// ... the rest of code
}
}
如果我设置attributes.override_redirect = False;
,则窗口不再是全屏,而是正确接收键盘事件。
如何使其工作以使窗口全屏显示并且可以同时接收适当的键盘事件?
答案 0 :(得分:1)
;-)
为什么不试试XSetInputFocus(disp, win, RevertToNone, CurrentTime);
?