x11 - 无法在XGrabKeyboard后移动窗口 [英] x11 - Unable to move window after XGrabKeyboard
问题描述
致电 XGrabKeyboard()
,我的应用程序捕获并显示所有按键/释放,包括GUI和PrintScreen键。 但是,用户无法再移动应用程序的窗口。到目前为止,这发生在Fedora 17和Ubuntu 12.04上。
如何我允许用户在受到 下面是我的Qt应用程序的示例代码: p> 将grab语句移出事件处理程序并不能解决问题。以下是示例问题的示例项目: TestGrab.zip 我试过这个在KDE,FVWM和GNOME(只是使用Xlib),只有GNOME窗口管理器有这个问题。 > 我认为可能通过拾取ConfigureNotify事件来修复它,但是当您尝试移动窗口时不会生成它。 After calling How can I allow the user to move the application while being under the effect of Below is sample code for my Qt application: 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后移动窗口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
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:
//显示按下哪个键
return true;
case KeyRelease:
//显示哪个键被释放给用户
return true;
}
return false;
}
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.XGrabKeyboard()
?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;
}