调用后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