removed NUMLOCKMASK, added dynamically calculated numlockmask instead
Anselm R.Garbe arg@10ksloc.org
Mon, 14 Aug 2006 19:18:02 +0200
6 files changed,
29 insertions(+),
19 deletions(-)
M
client.c
→
client.c
@@ -228,27 +228,27 @@ XGrabButton(dpy, Button1, MODKEY, c->win, False, BUTTONMASK,
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);
M
config.arg.h
→
config.arg.h
@@ -13,7 +13,6 @@ #define BGCOLOR "#0d121d"
#define FGCOLOR "#eeeeee" #define BORDERCOLOR "#3f484d" #define MODKEY Mod1Mask -#define NUMLOCKMASK Mod2Mask #define MASTERW 60 /* percent */ #define KEYS \
M
config.default.h
→
config.default.h
@@ -13,7 +13,6 @@ #define BGCOLOR "#666699"
#define FGCOLOR "#eeeeee" #define BORDERCOLOR "#9999CC" #define MODKEY Mod1Mask -#define NUMLOCKMASK Mod2Mask #define MASTERW 60 /* percent */ #define KEYS \
M
dwm.h
→
dwm.h
@@ -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];
M
event.c
→
event.c
@@ -18,7 +18,7 @@ } Key;
KEYS -#define CLEANMASK(mask) (mask & ~(NUMLOCKMASK | LockMask)) +#define CLEANMASK(mask) (mask & ~(numlockmask | LockMask)) static void movemouse(Client *c)@@ -378,9 +378,9 @@ XGrabKey(dpy, code, key[i].mod, root, True,
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); } }
M
main.c
→
main.c
@@ -11,6 +11,7 @@ #include <string.h>
#include <unistd.h> #include <sys/select.h> #include <X11/cursorfont.h> +#include <X11/keysym.h> #include <X11/Xatom.h> #include <X11/Xproto.h>@@ -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[CurNormal] = XCreateFontCursor(dpy, XC_left_ptr);
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 @@ sw = DisplayWidth(dpy, screen);
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 @@ scan();
/* 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 @@ strcpy(stext, "broken pipe");
drawstatus(); } if(FD_ISSET(xfd, &rd)) { +XLoop: while(XPending(dpy)) { XNextEvent(dpy, &ev); if(handler[ev.type])