を呼び出した後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