How can I use XFilterEvent?

91 Views Asked by At

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
0

There are 0 best solutions below