Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Xorg中的全屏窗口不会导致键盘事件_C_Linux_X11_Xorg - Fatal编程技术网

C Xorg中的全屏窗口不会导致键盘事件

C Xorg中的全屏窗口不会导致键盘事件,c,linux,x11,xorg,C,Linux,X11,Xorg,我正在为Xorg(X11,Linux)编写一个简单的应用程序,它应该有一个全屏窗口 它似乎工作得很好,窗口管理器忽略了窗口,因此它被正确地定位为全屏。但有一个问题,事件循环从未获得任何按键事件。正确接收鼠标事件,但没有按键 // assuming some variables are already defined as global here, like display etc. void main() { unsigned long valuemask = CWOverrideRedi

我正在为Xorg(X11,Linux)编写一个简单的应用程序,它应该有一个全屏窗口

它似乎工作得很好,窗口管理器忽略了窗口,因此它被正确地定位为全屏。但有一个问题,事件循环从未获得任何按键事件。正确接收鼠标事件,但没有按键

// 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\u redirect=False则窗口不再全屏,但键盘事件被正确接收

如何使其工作,使窗口全屏显示,同时可以接收正确的键盘事件?

;-)


为什么不试试
XSetInputFocus(disp、win、RevertToNone、CurrentTime)

尝试了
XSetInputFocus
?太棒了,就是这样!:=]请随意将其作为答案发布。我添加了这个,它修复了这个问题:XSetInputFocus(disp、win、RevertToNone、CurrentTime);