+       if((c = getclient(ev->window)))
+               unmanage(c);
+}
+
+/* extern */
+
+void (*handler[LASTEvent]) (XEvent *) = {
+       [ButtonPress] = buttonpress,
+       [ConfigureRequest] = configurerequest,
+       [ConfigureNotify] = configurenotify,
+       [DestroyNotify] = destroynotify,
+       [EnterNotify] = enternotify,
+       [LeaveNotify] = leavenotify,
+       [Expose] = expose,
+       [KeyPress] = keypress,
+       [MappingNotify] = mappingnotify,
+       [MapRequest] = maprequest,
+       [PropertyNotify] = propertynotify,
+       [UnmapNotify] = unmapnotify
+};
+
+void
+grabkeys(void) {
+       static unsigned int len = sizeof key / sizeof key[0];
+       unsigned int i;
+       KeyCode code;
+
+       XUngrabKey(dpy, AnyKey, AnyModifier, root);
+       for(i = 0; i < len; i++) {
+               code = XKeysymToKeycode(dpy, key[i].keysym);
+               XGrabKey(dpy, code, key[i].mod, root, True,
+                               GrabModeAsync, GrabModeAsync);
+               XGrabKey(dpy, code, key[i].mod | LockMask, root, True,
+                               GrabModeAsync, GrabModeAsync);
+               XGrabKey(dpy, code, key[i].mod | numlockmask, root, True,
+                               GrabModeAsync, GrabModeAsync);
+               XGrabKey(dpy, code, key[i].mod | numlockmask | LockMask, root, True,
+                               GrabModeAsync, GrabModeAsync);
+       }