# HG changeset patch # User Anselm R.Garbe # Date 1155575882 -7200 # Node ID 8e6e0aa5e2ae57e4ae056d65ff46f0d019e5b61e # Parent 5c3b8c5286f58cc1db873c6d11ac0d542aae6f03 removed NUMLOCKMASK, added dynamically calculated numlockmask instead diff -r 5c3b8c5286f5 -r 8e6e0aa5e2ae client.c --- a/client.c Mon Aug 14 18:47:13 2006 +0200 +++ b/client.c Mon Aug 14 19:18:02 2006 +0200 @@ -228,27 +228,27 @@ GrabModeAsync, GrabModeSync, None, None); XGrabButton(dpy, Button1, MODKEY | LockMask, c->win, False, BUTTONMASK, 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); - XGrabButton(dpy, Button1, MODKEY | NUMLOCKMASK | LockMask, c->win, False, BUTTONMASK, + XGrabButton(dpy, Button1, MODKEY | numlockmask | LockMask, c->win, False, BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); XGrabButton(dpy, Button2, MODKEY, c->win, False, BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); XGrabButton(dpy, Button2, MODKEY | LockMask, c->win, False, BUTTONMASK, 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); - XGrabButton(dpy, Button2, MODKEY | NUMLOCKMASK | LockMask, c->win, False, BUTTONMASK, + XGrabButton(dpy, Button2, MODKEY | numlockmask | LockMask, c->win, False, BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); XGrabButton(dpy, Button3, MODKEY, c->win, False, BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); XGrabButton(dpy, Button3, MODKEY | LockMask, c->win, False, BUTTONMASK, 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); - XGrabButton(dpy, Button3, MODKEY | NUMLOCKMASK | LockMask, c->win, False, BUTTONMASK, + XGrabButton(dpy, Button3, MODKEY | numlockmask | LockMask, c->win, False, BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); settags(c); diff -r 5c3b8c5286f5 -r 8e6e0aa5e2ae config.arg.h --- a/config.arg.h Mon Aug 14 18:47:13 2006 +0200 +++ b/config.arg.h Mon Aug 14 19:18:02 2006 +0200 @@ -13,7 +13,6 @@ #define FGCOLOR "#eeeeee" #define BORDERCOLOR "#3f484d" #define MODKEY Mod1Mask -#define NUMLOCKMASK Mod2Mask #define MASTERW 60 /* percent */ #define KEYS \ diff -r 5c3b8c5286f5 -r 8e6e0aa5e2ae config.default.h --- a/config.default.h Mon Aug 14 18:47:13 2006 +0200 +++ b/config.default.h Mon Aug 14 19:18:02 2006 +0200 @@ -13,7 +13,6 @@ #define FGCOLOR "#eeeeee" #define BORDERCOLOR "#9999CC" #define MODKEY Mod1Mask -#define NUMLOCKMASK Mod2Mask #define MASTERW 60 /* percent */ #define KEYS \ diff -r 5c3b8c5286f5 -r 8e6e0aa5e2ae dwm.h --- a/dwm.h Mon Aug 14 18:47:13 2006 +0200 +++ b/dwm.h Mon Aug 14 19:18:02 2006 +0200 @@ -70,7 +70,7 @@ extern const char *tags[]; extern char stext[1024]; 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 (*arrange)(Arg *); extern Atom wmatom[WMLast], netatom[NetLast]; diff -r 5c3b8c5286f5 -r 8e6e0aa5e2ae event.c --- a/event.c Mon Aug 14 18:47:13 2006 +0200 +++ b/event.c Mon Aug 14 19:18:02 2006 +0200 @@ -18,7 +18,7 @@ KEYS -#define CLEANMASK(mask) (mask & ~(NUMLOCKMASK | LockMask)) +#define CLEANMASK(mask) (mask & ~(numlockmask | LockMask)) static void movemouse(Client *c) @@ -378,9 +378,9 @@ GrabModeAsync, GrabModeAsync); XGrabKey(dpy, code, key[i].mod | LockMask, root, True, GrabModeAsync, GrabModeAsync); - XGrabKey(dpy, code, key[i].mod | NUMLOCKMASK, root, True, + XGrabKey(dpy, code, key[i].mod | numlockmask, root, True, GrabModeAsync, GrabModeAsync); - XGrabKey(dpy, code, key[i].mod | NUMLOCKMASK | LockMask, root, True, + XGrabKey(dpy, code, key[i].mod | numlockmask | LockMask, root, True, GrabModeAsync, GrabModeAsync); } } diff -r 5c3b8c5286f5 -r 8e6e0aa5e2ae main.c --- a/main.c Mon Aug 14 18:47:13 2006 +0200 +++ b/main.c Mon Aug 14 19:18:02 2006 +0200 @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -85,7 +86,7 @@ char stext[1024]; Bool *seltag; int screen, sx, sy, sw, sh, bx, by, bw, bh, mw; -unsigned int ntags; +unsigned int ntags, numlockmask; Atom wmatom[WMLast], netatom[NetLast]; Bool running = True; Bool issel = True; @@ -162,12 +163,13 @@ int main(int argc, char *argv[]) { - int i, xfd; + int i, j, xfd; unsigned int mask; fd_set rd; Bool readin = True; Window w; XEvent ev; + XModifierKeymap *modmap; XSetWindowAttributes wa; if(argc == 2 && !strncmp("-v", argv[1], 3)) { @@ -211,7 +213,16 @@ cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing); 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]; XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa); @@ -233,13 +244,12 @@ sh = DisplayHeight(dpy, screen); mw = (sw * MASTERW) / 100; + bx = by = 0; + bw = sw; + dc.h = bh = dc.font.height + 4; wa.override_redirect = 1; wa.background_pixmap = ParentRelative; wa.event_mask = ButtonPressMask | ExposureMask; - - bx = by = 0; - bw = sw; - dc.h = bh = dc.font.height + 4; barwin = XCreateWindow(dpy, root, bx, by, bw, bh, 0, DefaultDepth(dpy, screen), CopyFromParent, DefaultVisual(dpy, screen), CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); @@ -258,6 +268,7 @@ /* main event loop, also reads status text from stdin */ XSync(dpy, False); + goto XLoop; while(running) { FD_ZERO(&rd); if(readin) @@ -278,6 +289,7 @@ drawstatus(); } if(FD_ISSET(xfd, &rd)) { +XLoop: while(XPending(dpy)) { XNextEvent(dpy, &ev); if(handler[ev.type])