尝试在 Ubuntu Linux 中构建全局键盘挂钩时出错

Error when trying to build a Global Keyboard Hook in Ubuntu Linux

本文关键字:键盘 出错 全局 构建 Ubuntu Linux      更新时间:2023-10-16

我正在开发一个代码来获取KeyPress和KeyRelease事件中的键盘输入,但是当我运行程序时没有任何反应,我的代码有什么问题?以及如何获取按下的键值?

void hook()
{
    forever
    {
        XEvent event;
        Display *dpy = XOpenDisplay(NULL);
        XNextEvent(dpy, &event);
        switch (event.type)
        {
        case KeyPress:
            qDebug() << "keypress";
            break;
        case KeyRelease:
            qDebug() << "keyrelease";
            break;
        }
    }
}

阅读有关键盘 X11 事件的更多信息。如果某些 X11 窗口在其事件掩码中设置了一些KeyPressMaskKeyReleaseMask位,则只会从该窗口中获取它们。该窗口应InputOnly创建或InputOutput

您显然正在使用Qt(这是一个好主意)。然后,坚持Qt关键事件。

(如果要捕获所有 X11 键事件,请使用显示器的根窗口。但是你干扰了你的窗口管理器,这是一个坏主意;了解更多关于ICCCM和EWMH的信息)

此外,在终端中运行xev以了解有关 X11 事件的更多信息