浏览代码

implemented ungrabkeys() which is called in cleanup()

Anselm R.Garbe 19 年之前
父节点
当前提交
375a251d16
共有 3 个文件被更改,包括 18 次插入0 次删除
  1. 1 0
      dwm.h
  2. 16 0
      event.c
  3. 1 0
      main.c

+ 1 - 0
dwm.h

@@ -108,6 +108,7 @@ extern unsigned int textw(const char *text);
 
 /* event.c */
 extern void grabkeys();
+extern void ungrabkeys();
 
 /* main.c */
 extern int getproto(Window w);

+ 16 - 0
event.c

@@ -370,3 +370,19 @@ grabkeys()
 				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);
+	}
+}

+ 1 - 0
main.c

@@ -22,6 +22,7 @@ static Bool otherwm;
 static void
 cleanup()
 {
+	ungrabkeys();
 	while(sel) {
 		resize(sel, True, TopLeft);
 		unmanage(sel);