void
 focus(XEvent *ev) {
        if(ev->type == FocusIn) {
+               XSetICFocus(xw.xic);
                xw.state |= WIN_FOCUSED;
                xseturgency(0);
        } else {
+               XUnsetICFocus(xw.xic);
                xw.state &= ~WIN_FOCUSED;
        }
 }
 
                while(XPending(xw.dpy)) {
                        XNextEvent(xw.dpy, &ev);
-                       if(XFilterEvent(&ev, xw.win))
+                       if(XFilterEvent(&ev, None))
                                continue;
                        if(handler[ev.type])
                                (handler[ev.type])(&ev);
 
 run:
        setlocale(LC_CTYPE, "");
+       XSetLocaleModifiers("");
        tnew(80, 24);
        xinit();
        ttynew();