问题描述
致电
我试过这个在KDE,FVWM和GNOME(只是使用Xlib),只有GNOME窗口管理器有这个问题。 >
我认为可能通过拾取ConfigureNotify事件来修复它,但是当您尝试移动窗口时不会生成它。
After calling XGrabKeyboard(), my application captures and displays all key presses / releases, including those for the GUI and PrintScreen keys. However, the user is no longer able to move the application's window. So far, this occurs on Fedora 17 and Ubuntu 12.04.
How can I allow the user to move the application while being under the effect of XGrabKeyboard()?
Below is sample code for my Qt application:
bool KeyboardStatus::x11Event(XEvent *event) { switch (event->type) { case FocusIn: XGrabKeyboard(x11Info().display(), winId(), false, GrabModeAsync, GrabModeAsync, CurrentTime); break; case FocusOut: XUngrabKeyboard(x11Info().display(), CurrentTime); break; case KeyPress: // Display which key was pressed to user return true; case KeyRelease: // Display which key was released to user return true; } return false; }
Taking the grab statement out of the event handler does not solve the issue. Here is a sample project which illustrates the problem: TestGrab.zip
I have tried this on KDE, FVWM and GNOME (just using Xlib), and only the GNOME window manager has this problem.
I thought it might be possible to fix it by picking up the ConfigureNotify event, but it is not generated when you try to move the window.
这篇关于x11 - 无法在XGrabKeyboard后移动窗口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!