removed grabkeys, not necessary 2d7bb8d7
Anselm R. Garbe · 2007-09-15 22:31 1 file(s) · +20 −25
dwm.c +20 −25
129 129
static void maprequest(XEvent *e);
130 130
static void propertynotify(XEvent *e);
131 131
static void unmapnotify(XEvent *e);
132 -
static void grabkeys(void);
133 132
static unsigned int idxoftag(const char *tag);
134 133
static void floating(void); /* default floating layout */
135 134
static void applyrules(Client *c);
1070 1069
	KEYS
1071 1070
	unsigned int len = sizeof keys / sizeof keys[0];
1072 1071
	unsigned int i;
1072 +
	KeyCode code;
1073 1073
	KeySym keysym;
1074 -
	XKeyEvent *ev = &e->xkey;
1074 +
	XKeyEvent *ev;
1075 1075
1076 +
	if(!e) { /* grabkeys */
1077 +
		XUngrabKey(dpy, AnyKey, AnyModifier, root);
1078 +
		for(i = 0; i < len; i++) {
1079 +
			code = XKeysymToKeycode(dpy, keys[i].keysym);
1080 +
			XGrabKey(dpy, code, keys[i].mod, root, True,
1081 +
					GrabModeAsync, GrabModeAsync);
1082 +
			XGrabKey(dpy, code, keys[i].mod | LockMask, root, True,
1083 +
					GrabModeAsync, GrabModeAsync);
1084 +
			XGrabKey(dpy, code, keys[i].mod | numlockmask, root, True,
1085 +
					GrabModeAsync, GrabModeAsync);
1086 +
			XGrabKey(dpy, code, keys[i].mod | numlockmask | LockMask, root, True,
1087 +
					GrabModeAsync, GrabModeAsync);
1088 +
		}
1089 +
		return;
1090 +
	}
1091 +
	ev = &e->xkey;
1076 1092
	keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0);
1077 1093
	for(i = 0; i < len; i++)
1078 1094
		if(keysym == keys[i].keysym
1099 1115
1100 1116
	XRefreshKeyboardMapping(ev);
1101 1117
	if(ev->request == MappingKeyboard)
1102 -
		grabkeys();
1118 +
		keypress(NULL);
1103 1119
}
1104 1120
1105 1121
static void
1150 1166
1151 1167
	if((c = getclient(ev->window)))
1152 1168
		unmanage(c);
1153 -
}
1154 -
1155 -
static void
1156 -
grabkeys(void) {
1157 -
	KEYS
1158 -
	unsigned int len = sizeof keys / sizeof keys[0];
1159 -
	unsigned int i;
1160 -
	KeyCode code;
1161 -
1162 -
	XUngrabKey(dpy, AnyKey, AnyModifier, root);
1163 -
	for(i = 0; i < len; i++) {
1164 -
		code = XKeysymToKeycode(dpy, keys[i].keysym);
1165 -
		XGrabKey(dpy, code, keys[i].mod, root, True,
1166 -
				GrabModeAsync, GrabModeAsync);
1167 -
		XGrabKey(dpy, code, keys[i].mod | LockMask, root, True,
1168 -
				GrabModeAsync, GrabModeAsync);
1169 -
		XGrabKey(dpy, code, keys[i].mod | numlockmask, root, True,
1170 -
				GrabModeAsync, GrabModeAsync);
1171 -
		XGrabKey(dpy, code, keys[i].mod | numlockmask | LockMask, root, True,
1172 -
				GrabModeAsync, GrabModeAsync);
1173 -
	}
1174 1169
}
1175 1170
1176 1171
static unsigned int
1546 1541
	wa.cursor = cursor[CurNormal];
1547 1542
	XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa);
1548 1543
	XSelectInput(dpy, root, wa.event_mask);
1549 -
	grabkeys();
1544 +
	keypress(NULL); /* grabkeys */
1550 1545
	compileregs();
1551 1546
	for(ntags = 0; tags[ntags]; ntags++);
1552 1547
	seltags = emallocz(sizeof(Bool) * ntags);