0

我正在开发一个代码来获取 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;
        }
    }
}
4

1 回答 1

1

阅读有关键盘 X11 事件的更多信息。如果该窗口在其事件掩码KeyPressMask中设置了一些或KeyReleaseMask位,您将只能从某些 X11 窗口中获取它们。并且应该创建该窗口或 InputOnlyInputOutput

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

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

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

于 2013-02-03T09:35:03.730 回答