我正在开发一个代码来获取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;
}
}
}
答案 0 :(得分:1)
详细了解keyboard X11 events。如果该窗口在其event mask中设置了一些KeyPressMask
或KeyReleaseMask
位,您将仅从某些X11窗口获取它们。该窗口应为created InputOnly
或InputOutput
你显然正在使用Qt(这是一个好主意)。然后,坚持Qt key事件。
(如果你想捕获所有X11键事件,请使用显示的根窗口。但是你干扰了你的窗口管理器,这是一个坏主意;了解更多关于ICCCM和{{3 }})
此外,在终端中运行xev
- 以了解有关X11事件的更多信息