--- a/dwm.h Mon Aug 14 10:18:24 2006 +0200
+++ b/dwm.h Mon Aug 14 10:24:38 2006 +0200
@@ -108,6 +108,7 @@
/* event.c */
extern void grabkeys();
+extern void ungrabkeys();
/* main.c */
extern int getproto(Window w);
--- a/event.c Mon Aug 14 10:18:24 2006 +0200
+++ b/event.c Mon Aug 14 10:24:38 2006 +0200
@@ -370,3 +370,19 @@
GrabModeAsync, GrabModeAsync);
}
}
+
+void
+ungrabkeys()
+{
+ static unsigned int len = sizeof(key) / sizeof(key[0]);
+ unsigned int i;
+ KeyCode code;
+
+ for(i = 0; i < len; i++) {
+ code = XKeysymToKeycode(dpy, key[i].keysym);
+ XUngrabKey(dpy, code, key[i].mod, root);
+ XUngrabKey(dpy, code, key[i].mod | LockMask, root);
+ XUngrabKey(dpy, code, key[i].mod | NUMLOCKMASK, root);
+ XUngrabKey(dpy, code, key[i].mod | NUMLOCKMASK | LockMask, root);
+ }
+}
--- a/main.c Mon Aug 14 10:18:24 2006 +0200
+++ b/main.c Mon Aug 14 10:24:38 2006 +0200
@@ -22,6 +22,7 @@
static void
cleanup()
{
+ ungrabkeys();
while(sel) {
resize(sel, True, TopLeft);
unmanage(sel);