在调用
如何在
以下是我Qt应用程序的示例代码:
将“grab”语句从事件处理程序中拿出并不能解决问题。以下是一个样例项目,说明了这个问题:TestGrab.zip。
XGrabKeyboard()
之后,我的应用程序捕获并显示所有按键的按下/释放事件,包括GUI和PrintScreen键。 然而,用户不能再移动应用程序的窗口。 到目前为止,在Fedora 17和Ubuntu 12.04上出现了这种情况。如何在
XGrabKeyboard()
的影响下允许用户移动应用程序?以下是我Qt应用程序的示例代码:
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;
}
将“grab”语句从事件处理程序中拿出并不能解决问题。以下是一个样例项目,说明了这个问题:TestGrab.zip。