I have seen many examples with the same way of creating IC and using XFilterEvent function:
XSetLocaleModifiers("@im=none")
im = XOpenIM(dpy, 0, NULL, NULL);
if(im)
{
ic = XCreateIC(im, XNInputStyle, XIMPreeditNothing | XIMStatusNothing,
XNClientWindow, my_win_id, XNFocusWindow, my_win_id, NULL);
}
if(ic)
{
unsigned long filter = 0;
if (XGetICValues(ic, XNFilterEvents, &filter, NULL) == NULL)
{
XSelectInput(dpy, my_win_id, win_attribs.event_mask | filter);
}
}
XEvent xev;
while(XPending(dpy))
{
XNextEvent(dpy, &xev);
if(XFilterEvent(&xev, xev.xany.window))
{
continue;
}
//handle events
}
I don't understand what kind of events are filtered when XFilterEvent returns TRUE. Could you please explain how does it work and show some examples ? Moreover, do you know some examples when I may want to handle a filtered event:
bool filtered = false;
if(XFilterEvent(&xev, xev,xany.window))
{
filtered = true;
}
//handle events