打完电话后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;
}
以抢出声明事件处理程序不解决问题。 这里是一个说明该问题的示例项目: TestGrab.zip