【问题标题】:Fullscreen window in Xorg causes no keyboard eventsXorg 中的全屏窗口不会导致键盘事件
【发布时间】:2016-12-05 10:29:51
【问题描述】:

我正在为 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;,那么窗口不再是全屏的,但是键盘事件可以正常接收。

如何让它工作,使窗口全屏,同时接收正确的键盘事件?

【问题讨论】:

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

标签: c linux x11 xorg


【解决方案1】:

;-)

你为什么不试试XSetInputFocus(disp, win, RevertToNone, CurrentTime);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多