removed NUMLOCKMASK, added dynamically calculated numlockmask instead
This commit is contained in:
		
							parent
							
								
									442334641e
								
							
						
					
					
						commit
						ee31e38dc7
					
				
							
								
								
									
										12
									
								
								client.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								client.c
									
									
									
									
									
								
							| @ -228,27 +228,27 @@ manage(Window w, XWindowAttributes *wa) | |||||||
| 			GrabModeAsync, GrabModeSync, None, None); | 			GrabModeAsync, GrabModeSync, None, None); | ||||||
| 	XGrabButton(dpy, Button1, MODKEY | LockMask, c->win, False, BUTTONMASK, | 	XGrabButton(dpy, Button1, MODKEY | LockMask, c->win, False, BUTTONMASK, | ||||||
| 			GrabModeAsync, GrabModeSync, None, None); | 			GrabModeAsync, GrabModeSync, None, None); | ||||||
| 	XGrabButton(dpy, Button1, MODKEY | NUMLOCKMASK, c->win, False, BUTTONMASK, | 	XGrabButton(dpy, Button1, MODKEY | numlockmask, c->win, False, BUTTONMASK, | ||||||
| 			GrabModeAsync, GrabModeSync, None, None); | 			GrabModeAsync, GrabModeSync, None, None); | ||||||
| 	XGrabButton(dpy, Button1, MODKEY | NUMLOCKMASK | LockMask, c->win, False, BUTTONMASK, | 	XGrabButton(dpy, Button1, MODKEY | numlockmask | LockMask, c->win, False, BUTTONMASK, | ||||||
| 			GrabModeAsync, GrabModeSync, None, None); | 			GrabModeAsync, GrabModeSync, None, None); | ||||||
| 
 | 
 | ||||||
| 	XGrabButton(dpy, Button2, MODKEY, c->win, False, BUTTONMASK, | 	XGrabButton(dpy, Button2, MODKEY, c->win, False, BUTTONMASK, | ||||||
| 			GrabModeAsync, GrabModeSync, None, None); | 			GrabModeAsync, GrabModeSync, None, None); | ||||||
| 	XGrabButton(dpy, Button2, MODKEY | LockMask, c->win, False, BUTTONMASK, | 	XGrabButton(dpy, Button2, MODKEY | LockMask, c->win, False, BUTTONMASK, | ||||||
| 			GrabModeAsync, GrabModeSync, None, None); | 			GrabModeAsync, GrabModeSync, None, None); | ||||||
| 	XGrabButton(dpy, Button2, MODKEY | NUMLOCKMASK, c->win, False, BUTTONMASK, | 	XGrabButton(dpy, Button2, MODKEY | numlockmask, c->win, False, BUTTONMASK, | ||||||
| 			GrabModeAsync, GrabModeSync, None, None); | 			GrabModeAsync, GrabModeSync, None, None); | ||||||
| 	XGrabButton(dpy, Button2, MODKEY | NUMLOCKMASK | LockMask, c->win, False, BUTTONMASK, | 	XGrabButton(dpy, Button2, MODKEY | numlockmask | LockMask, c->win, False, BUTTONMASK, | ||||||
| 			GrabModeAsync, GrabModeSync, None, None); | 			GrabModeAsync, GrabModeSync, None, None); | ||||||
| 
 | 
 | ||||||
| 	XGrabButton(dpy, Button3, MODKEY, c->win, False, BUTTONMASK, | 	XGrabButton(dpy, Button3, MODKEY, c->win, False, BUTTONMASK, | ||||||
| 			GrabModeAsync, GrabModeSync, None, None); | 			GrabModeAsync, GrabModeSync, None, None); | ||||||
| 	XGrabButton(dpy, Button3, MODKEY | LockMask, c->win, False, BUTTONMASK, | 	XGrabButton(dpy, Button3, MODKEY | LockMask, c->win, False, BUTTONMASK, | ||||||
| 			GrabModeAsync, GrabModeSync, None, None); | 			GrabModeAsync, GrabModeSync, None, None); | ||||||
| 	XGrabButton(dpy, Button3, MODKEY | NUMLOCKMASK, c->win, False, BUTTONMASK, | 	XGrabButton(dpy, Button3, MODKEY | numlockmask, c->win, False, BUTTONMASK, | ||||||
| 			GrabModeAsync, GrabModeSync, None, None); | 			GrabModeAsync, GrabModeSync, None, None); | ||||||
| 	XGrabButton(dpy, Button3, MODKEY | NUMLOCKMASK | LockMask, c->win, False, BUTTONMASK, | 	XGrabButton(dpy, Button3, MODKEY | numlockmask | LockMask, c->win, False, BUTTONMASK, | ||||||
| 			GrabModeAsync, GrabModeSync, None, None); | 			GrabModeAsync, GrabModeSync, None, None); | ||||||
| 
 | 
 | ||||||
| 	settags(c); | 	settags(c); | ||||||
|  | |||||||
| @ -13,7 +13,6 @@ const char *tags[] = { "work", "net", "fnord", NULL }; | |||||||
| #define FGCOLOR			"#eeeeee" | #define FGCOLOR			"#eeeeee" | ||||||
| #define BORDERCOLOR		"#3f484d" | #define BORDERCOLOR		"#3f484d" | ||||||
| #define MODKEY			Mod1Mask | #define MODKEY			Mod1Mask | ||||||
| #define NUMLOCKMASK		Mod2Mask |  | ||||||
| #define MASTERW			60 /* percent */ | #define MASTERW			60 /* percent */ | ||||||
| 
 | 
 | ||||||
| #define KEYS \ | #define KEYS \ | ||||||
|  | |||||||
| @ -13,7 +13,6 @@ const char *tags[] = { "0", "1", "2", "3", "4", NULL }; | |||||||
| #define FGCOLOR			"#eeeeee" | #define FGCOLOR			"#eeeeee" | ||||||
| #define BORDERCOLOR		"#9999CC" | #define BORDERCOLOR		"#9999CC" | ||||||
| #define MODKEY			Mod1Mask | #define MODKEY			Mod1Mask | ||||||
| #define NUMLOCKMASK		Mod2Mask |  | ||||||
| #define MASTERW			60 /* percent */ | #define MASTERW			60 /* percent */ | ||||||
| 
 | 
 | ||||||
| #define KEYS \ | #define KEYS \ | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								dwm.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								dwm.h
									
									
									
									
									
								
							| @ -70,7 +70,7 @@ struct Client { | |||||||
| extern const char *tags[]; | extern const char *tags[]; | ||||||
| extern char stext[1024]; | extern char stext[1024]; | ||||||
| extern int screen, sx, sy, sw, sh, bx, by, bw, bh, mw; | extern int screen, sx, sy, sw, sh, bx, by, bw, bh, mw; | ||||||
| extern unsigned int ntags; | extern unsigned int ntags, numlockmask; | ||||||
| extern void (*handler[LASTEvent])(XEvent *); | extern void (*handler[LASTEvent])(XEvent *); | ||||||
| extern void (*arrange)(Arg *); | extern void (*arrange)(Arg *); | ||||||
| extern Atom wmatom[WMLast], netatom[NetLast]; | extern Atom wmatom[WMLast], netatom[NetLast]; | ||||||
|  | |||||||
							
								
								
									
										6
									
								
								event.c
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								event.c
									
									
									
									
									
								
							| @ -18,7 +18,7 @@ typedef struct { | |||||||
| 
 | 
 | ||||||
| KEYS | KEYS | ||||||
| 
 | 
 | ||||||
| #define CLEANMASK(mask) (mask & ~(NUMLOCKMASK | LockMask)) | #define CLEANMASK(mask) (mask & ~(numlockmask | LockMask)) | ||||||
| 
 | 
 | ||||||
| static void | static void | ||||||
| movemouse(Client *c) | movemouse(Client *c) | ||||||
| @ -378,9 +378,9 @@ grabkeys() | |||||||
| 				GrabModeAsync, GrabModeAsync); | 				GrabModeAsync, GrabModeAsync); | ||||||
| 		XGrabKey(dpy, code, key[i].mod | LockMask, root, True, | 		XGrabKey(dpy, code, key[i].mod | LockMask, root, True, | ||||||
| 				GrabModeAsync, GrabModeAsync); | 				GrabModeAsync, GrabModeAsync); | ||||||
| 		XGrabKey(dpy, code, key[i].mod | NUMLOCKMASK, root, True, | 		XGrabKey(dpy, code, key[i].mod | numlockmask, root, True, | ||||||
| 				GrabModeAsync, GrabModeAsync); | 				GrabModeAsync, GrabModeAsync); | ||||||
| 		XGrabKey(dpy, code, key[i].mod | NUMLOCKMASK | LockMask, root, True, | 		XGrabKey(dpy, code, key[i].mod | numlockmask | LockMask, root, True, | ||||||
| 				GrabModeAsync, GrabModeAsync); | 				GrabModeAsync, GrabModeAsync); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										26
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								main.c
									
									
									
									
									
								
							| @ -11,6 +11,7 @@ | |||||||
| #include <unistd.h> | #include <unistd.h> | ||||||
| #include <sys/select.h> | #include <sys/select.h> | ||||||
| #include <X11/cursorfont.h> | #include <X11/cursorfont.h> | ||||||
|  | #include <X11/keysym.h> | ||||||
| #include <X11/Xatom.h> | #include <X11/Xatom.h> | ||||||
| #include <X11/Xproto.h> | #include <X11/Xproto.h> | ||||||
| 
 | 
 | ||||||
| @ -85,7 +86,7 @@ xerrorstart(Display *dsply, XErrorEvent *ee) | |||||||
| char stext[1024]; | char stext[1024]; | ||||||
| Bool *seltag; | Bool *seltag; | ||||||
| int screen, sx, sy, sw, sh, bx, by, bw, bh, mw; | int screen, sx, sy, sw, sh, bx, by, bw, bh, mw; | ||||||
| unsigned int ntags; | unsigned int ntags, numlockmask; | ||||||
| Atom wmatom[WMLast], netatom[NetLast]; | Atom wmatom[WMLast], netatom[NetLast]; | ||||||
| Bool running = True; | Bool running = True; | ||||||
| Bool issel = True; | Bool issel = True; | ||||||
| @ -162,12 +163,13 @@ xerror(Display *dpy, XErrorEvent *ee) | |||||||
| int | int | ||||||
| main(int argc, char *argv[]) | main(int argc, char *argv[]) | ||||||
| { | { | ||||||
| 	int i, xfd; | 	int i, j, xfd; | ||||||
| 	unsigned int mask; | 	unsigned int mask; | ||||||
| 	fd_set rd; | 	fd_set rd; | ||||||
| 	Bool readin = True; | 	Bool readin = True; | ||||||
| 	Window w; | 	Window w; | ||||||
| 	XEvent ev; | 	XEvent ev; | ||||||
|  | 	XModifierKeymap *modmap; | ||||||
| 	XSetWindowAttributes wa; | 	XSetWindowAttributes wa; | ||||||
| 
 | 
 | ||||||
| 	if(argc == 2 && !strncmp("-v", argv[1], 3)) { | 	if(argc == 2 && !strncmp("-v", argv[1], 3)) { | ||||||
| @ -211,7 +213,16 @@ main(int argc, char *argv[]) | |||||||
| 	cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing); | 	cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing); | ||||||
| 	cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur); | 	cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur); | ||||||
| 
 | 
 | ||||||
| 	wa.event_mask = SubstructureRedirectMask | EnterWindowMask | LeaveWindowMask; | 	modmap = XGetModifierMapping(dpy); | ||||||
|  | 	for (i = 0; i < 8; i++) { | ||||||
|  | 		for (j = 0; j < modmap->max_keypermod; j++) { | ||||||
|  | 			if(modmap->modifiermap[i * modmap->max_keypermod + j] == XKeysymToKeycode(dpy, XK_Num_Lock)) | ||||||
|  | 				numlockmask = (1 << i); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	XFree(modmap); | ||||||
|  | 
 | ||||||
|  | 	wa.event_mask = SubstructureRedirectMask | SubstructureNotifyMask | EnterWindowMask | LeaveWindowMask; | ||||||
| 	wa.cursor = cursor[CurNormal]; | 	wa.cursor = cursor[CurNormal]; | ||||||
| 	XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa); | 	XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa); | ||||||
| 
 | 
 | ||||||
| @ -233,13 +244,12 @@ main(int argc, char *argv[]) | |||||||
| 	sh = DisplayHeight(dpy, screen); | 	sh = DisplayHeight(dpy, screen); | ||||||
| 	mw = (sw * MASTERW) / 100; | 	mw = (sw * MASTERW) / 100; | ||||||
| 
 | 
 | ||||||
| 	wa.override_redirect = 1; |  | ||||||
| 	wa.background_pixmap = ParentRelative; |  | ||||||
| 	wa.event_mask = ButtonPressMask | ExposureMask; |  | ||||||
| 
 |  | ||||||
| 	bx = by = 0; | 	bx = by = 0; | ||||||
| 	bw = sw; | 	bw = sw; | ||||||
| 	dc.h = bh = dc.font.height + 4; | 	dc.h = bh = dc.font.height + 4; | ||||||
|  | 	wa.override_redirect = 1; | ||||||
|  | 	wa.background_pixmap = ParentRelative; | ||||||
|  | 	wa.event_mask = ButtonPressMask | ExposureMask; | ||||||
| 	barwin = XCreateWindow(dpy, root, bx, by, bw, bh, 0, DefaultDepth(dpy, screen), | 	barwin = XCreateWindow(dpy, root, bx, by, bw, bh, 0, DefaultDepth(dpy, screen), | ||||||
| 			CopyFromParent, DefaultVisual(dpy, screen), | 			CopyFromParent, DefaultVisual(dpy, screen), | ||||||
| 			CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); | 			CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); | ||||||
| @ -258,6 +268,7 @@ main(int argc, char *argv[]) | |||||||
| 
 | 
 | ||||||
| 	/* main event loop, also reads status text from stdin */ | 	/* main event loop, also reads status text from stdin */ | ||||||
| 	XSync(dpy, False); | 	XSync(dpy, False); | ||||||
|  | 	goto XLoop; | ||||||
| 	while(running) { | 	while(running) { | ||||||
| 		FD_ZERO(&rd); | 		FD_ZERO(&rd); | ||||||
| 		if(readin) | 		if(readin) | ||||||
| @ -278,6 +289,7 @@ main(int argc, char *argv[]) | |||||||
| 				drawstatus(); | 				drawstatus(); | ||||||
| 			} | 			} | ||||||
| 			if(FD_ISSET(xfd, &rd)) { | 			if(FD_ISSET(xfd, &rd)) { | ||||||
|  | XLoop: | ||||||
| 				while(XPending(dpy)) { | 				while(XPending(dpy)) { | ||||||
| 					XNextEvent(dpy, &ev); | 					XNextEvent(dpy, &ev); | ||||||
| 					if(handler[ev.type]) | 					if(handler[ev.type]) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user