押されたキーを取得してキーボード入力をブロックするコードを書いています。例: Super_L または Super_R キーが押された場合、それらがアプリケーション メニューを開けないようにします。コードはプログラムが開いている間は機能しますが、プログラムが閉じられるとキーがシステムに送信されます。例: ユーザーが Super_L キーを押しても、プログラムの実行中には何も起こりませんが、プログラムを閉じると、Ubuntu アプリケーション メニューが自動的に開きます。この問題を解決するにはどうすればよいですか?
void hook()
{
Display *dpy = XOpenDisplay(0);
XEvent ev;
if(!dpy)
{
qDebug() << "Error";
return;
}
XGrabKeyboard(dpy, DefaultRootWindow(dpy), false, GrabModeAsync, GrabModeAsync, CurrentTime);
forever
{
XNextEvent(dpy, &ev);
switch (ev.type)
{
case KeyPress:
qDebug() << "KeyPress" << XKeysymToString(XKeycodeToKeysym(dpy, ev.xkey.keycode, 0));
break;
case KeyRelease:
qDebug() << "KeyRelease" << XKeysymToString(XKeycodeToKeysym(dpy, ev.xkey.keycode, 0));
break;
}
}
}