我正在编写一个代码来获取按下的键并阻止键盘输入。示例:如果按下 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;
}
}
}