I’m developing a code to get keyboard input in KeyPress and KeyRelease events, but when i run the program nothing happens, what is wrong with my code? And how to get the pressed key value?
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;
}
}
}
Read more about keyboard X11 events. You will get them only from some X11 windows, if that window has set some of
KeyPressMaskorKeyReleaseMaskbits in its event mask. And that window should be createdInputOnlyorInputOutputYou are apparently using Qt (which is a good idea). Then, stick to Qt key events.
(if you want to catch all X11 key events, use the root window of the display. But then you are interfering with your window manager, which is a bad idea; learn more about ICCCM and EWMH)
Also, run
xev-in a terminal- to understand more about X11 events