tUsing a new tags definition (const char [][MAXTAGLEN] - thanks go to Szabolcs!… | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit e9a07335060337222c94260797582aae2c74d455 | |
parent 198502f41dc3c436b73215f5e2a6b58b050ecfce | |
Author: Anselm R. Garbe <[email protected]> | |
Date: Sat, 10 Nov 2007 19:16:11 +0100 | |
Using a new tags definition (const char [][MAXTAGLEN] - thanks go to Szabolcs! | |
Diffstat: | |
M config.def.h | 115 +++++++++++++++--------------… | |
M dwm.c | 44 +++++++++++++++++------------… | |
2 files changed, 81 insertions(+), 78 deletions(-) | |
--- | |
diff --git a/config.def.h b/config.def.h | |
t@@ -12,7 +12,7 @@ | |
#define SELFGCOLOR "#ffffff" | |
/* tagging */ | |
-const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "www" }; | |
+const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "www"… | |
Bool seltags[LENGTH(tags)] = {[0] = True}; | |
Rule rules[] = { | |
/* class:instance:title regex tags regex isfloating */ | |
t@@ -34,61 +34,60 @@ Layout layouts[] = { | |
/* key definitions */ | |
#define MODKEY Mod1Mask | |
-#define KEYS \ | |
-Key keys[] = { \ | |
- /* modifier key function … | |
- { MODKEY, XK_p, spawn, \ | |
- "exe=`dmenu_path | dmenu -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf … | |
- " -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"'` && exec $exe" }, \ | |
- { MODKEY|ShiftMask, XK_Return, spawn, "exec uxte… | |
- { MODKEY, XK_space, setlayout, NU… | |
- { MODKEY, XK_b, togglebar, … | |
- { MODKEY, XK_j, focusnext, … | |
- { MODKEY, XK_k, focusprev, … | |
- { MODKEY, XK_h, setmwfact, … | |
- { MODKEY, XK_l, setmwfact, … | |
- { MODKEY, XK_m, togglemax, … | |
- { MODKEY, XK_Return, zoom, … | |
- { MODKEY, XK_Tab, viewprevtag, … | |
- { MODKEY|ShiftMask, XK_space, togglefloating, … | |
- { MODKEY|ShiftMask, XK_c, killclient, … | |
- { MODKEY, XK_0, view, … | |
- { MODKEY, XK_1, view, … | |
- { MODKEY, XK_2, view, … | |
- { MODKEY, XK_3, view, … | |
- { MODKEY, XK_4, view, … | |
- { MODKEY, XK_5, view, … | |
- { MODKEY, XK_6, view, … | |
- { MODKEY, XK_7, view, … | |
- { MODKEY, XK_8, view, … | |
- { MODKEY, XK_9, view, … | |
- { MODKEY|ControlMask, XK_1, toggleview, … | |
- { MODKEY|ControlMask, XK_2, toggleview, … | |
- { MODKEY|ControlMask, XK_3, toggleview, … | |
- { MODKEY|ControlMask, XK_4, toggleview, … | |
- { MODKEY|ControlMask, XK_5, toggleview, … | |
- { MODKEY|ControlMask, XK_6, toggleview, … | |
- { MODKEY|ControlMask, XK_7, toggleview, … | |
- { MODKEY|ControlMask, XK_8, toggleview, … | |
- { MODKEY|ControlMask, XK_9, toggleview, … | |
- { MODKEY|ShiftMask, XK_0, tag, … | |
- { MODKEY|ShiftMask, XK_1, tag, … | |
- { MODKEY|ShiftMask, XK_2, tag, … | |
- { MODKEY|ShiftMask, XK_3, tag, … | |
- { MODKEY|ShiftMask, XK_4, tag, … | |
- { MODKEY|ShiftMask, XK_5, tag, … | |
- { MODKEY|ShiftMask, XK_6, tag, … | |
- { MODKEY|ShiftMask, XK_7, tag, … | |
- { MODKEY|ShiftMask, XK_8, tag, … | |
- { MODKEY|ShiftMask, XK_9, tag, … | |
- { MODKEY|ControlMask|ShiftMask, XK_1, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_2, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_3, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_4, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_5, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_6, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_7, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_8, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_9, toggletag,… | |
- { MODKEY|ShiftMask, XK_q, quit, … | |
+Key keys[] = { | |
+ /* modifier key function … | |
+ { MODKEY, XK_p, spawn, | |
+ "exe=`dmenu_path | dmenu -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf … | |
+ " -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"'` && exec $exe" }, | |
+ { MODKEY|ShiftMask, XK_Return, spawn, "exec uxte… | |
+ { MODKEY, XK_space, setlayout, NU… | |
+ { MODKEY, XK_b, togglebar, … | |
+ { MODKEY, XK_j, focusnext, … | |
+ { MODKEY, XK_k, focusprev, … | |
+ { MODKEY, XK_h, setmwfact, … | |
+ { MODKEY, XK_l, setmwfact, … | |
+ { MODKEY, XK_m, togglemax, … | |
+ { MODKEY, XK_Return, zoom, … | |
+ { MODKEY, XK_Tab, viewprevtag, … | |
+ { MODKEY|ShiftMask, XK_space, togglefloating, … | |
+ { MODKEY|ShiftMask, XK_c, killclient, … | |
+ { MODKEY, XK_0, view, … | |
+ { MODKEY, XK_1, view, … | |
+ { MODKEY, XK_2, view, … | |
+ { MODKEY, XK_3, view, … | |
+ { MODKEY, XK_4, view, … | |
+ { MODKEY, XK_5, view, … | |
+ { MODKEY, XK_6, view, … | |
+ { MODKEY, XK_7, view, … | |
+ { MODKEY, XK_8, view, … | |
+ { MODKEY, XK_9, view, … | |
+ { MODKEY|ControlMask, XK_1, toggleview, … | |
+ { MODKEY|ControlMask, XK_2, toggleview, … | |
+ { MODKEY|ControlMask, XK_3, toggleview, … | |
+ { MODKEY|ControlMask, XK_4, toggleview, … | |
+ { MODKEY|ControlMask, XK_5, toggleview, … | |
+ { MODKEY|ControlMask, XK_6, toggleview, … | |
+ { MODKEY|ControlMask, XK_7, toggleview, … | |
+ { MODKEY|ControlMask, XK_8, toggleview, … | |
+ { MODKEY|ControlMask, XK_9, toggleview, … | |
+ { MODKEY|ShiftMask, XK_0, tag, … | |
+ { MODKEY|ShiftMask, XK_1, tag, … | |
+ { MODKEY|ShiftMask, XK_2, tag, … | |
+ { MODKEY|ShiftMask, XK_3, tag, … | |
+ { MODKEY|ShiftMask, XK_4, tag, … | |
+ { MODKEY|ShiftMask, XK_5, tag, … | |
+ { MODKEY|ShiftMask, XK_6, tag, … | |
+ { MODKEY|ShiftMask, XK_7, tag, … | |
+ { MODKEY|ShiftMask, XK_8, tag, … | |
+ { MODKEY|ShiftMask, XK_9, tag, … | |
+ { MODKEY|ControlMask|ShiftMask, XK_1, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_2, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_3, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_4, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_5, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_6, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_7, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_8, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_9, toggletag,… | |
+ { MODKEY|ShiftMask, XK_q, quit, … | |
}; | |
diff --git a/dwm.c b/dwm.c | |
t@@ -44,8 +44,9 @@ | |
/* macros */ | |
#define BUTTONMASK (ButtonPressMask | ButtonReleaseMask) | |
#define CLEANMASK(mask) (mask & ~(numlockmask | LockMask)) | |
-#define MOUSEMASK (BUTTONMASK | PointerMotionMask) | |
#define LENGTH(x) (sizeof x / sizeof x[0]) | |
+#define MAXTAGLEN 16 | |
+#define MOUSEMASK (BUTTONMASK | PointerMotionMask) | |
/* enums */ | |
t@@ -143,6 +144,7 @@ unsigned long getcolor(const char *colstr); | |
long getstate(Window w); | |
Bool gettextprop(Window w, Atom atom, char *text, unsigned int size); | |
void grabbuttons(Client *c, Bool focused); | |
+void grabkeys(void); | |
unsigned int idxoftag(const char *tag); | |
void initfont(const char *fontstr); | |
Bool isoccupied(unsigned int t); | |
t@@ -838,6 +840,25 @@ grabbuttons(Client *c, Bool focused) { | |
GrabModeAsync, GrabModeSync, None, None); | |
} | |
+void | |
+grabkeys(void) { | |
+ unsigned int i; | |
+ KeyCode code; | |
+ | |
+ XUngrabKey(dpy, AnyKey, AnyModifier, root); | |
+ for(i = 0; i < LENGTH(keys); i++) { | |
+ code = XKeysymToKeycode(dpy, keys[i].keysym); | |
+ XGrabKey(dpy, code, keys[i].mod, root, True, | |
+ GrabModeAsync, GrabModeAsync); | |
+ XGrabKey(dpy, code, keys[i].mod | LockMask, root, True, | |
+ GrabModeAsync, GrabModeAsync); | |
+ XGrabKey(dpy, code, keys[i].mod | numlockmask, root, True, | |
+ GrabModeAsync, GrabModeAsync); | |
+ XGrabKey(dpy, code, keys[i].mod | numlockmask | LockMask, root… | |
+ GrabModeAsync, GrabModeAsync); | |
+ } | |
+} | |
+ | |
unsigned int | |
idxoftag(const char *tag) { | |
unsigned int i; | |
t@@ -925,27 +946,10 @@ isvisible(Client *c) { | |
void | |
keypress(XEvent *e) { | |
- KEYS | |
unsigned int i; | |
- KeyCode code; | |
KeySym keysym; | |
XKeyEvent *ev; | |
- if(!e) { /* grabkeys */ | |
- XUngrabKey(dpy, AnyKey, AnyModifier, root); | |
- for(i = 0; i < LENGTH(keys); i++) { | |
- code = XKeysymToKeycode(dpy, keys[i].keysym); | |
- XGrabKey(dpy, code, keys[i].mod, root, True, | |
- GrabModeAsync, GrabModeAsync); | |
- XGrabKey(dpy, code, keys[i].mod | LockMask, root, True, | |
- GrabModeAsync, GrabModeAsync); | |
- XGrabKey(dpy, code, keys[i].mod | numlockmask, root, T… | |
- GrabModeAsync, GrabModeAsync); | |
- XGrabKey(dpy, code, keys[i].mod | numlockmask | LockMa… | |
- GrabModeAsync, GrabModeAsync); | |
- } | |
- return; | |
- } | |
ev = &e->xkey; | |
keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0); | |
for(i = 0; i < LENGTH(keys); i++) | |
t@@ -1048,7 +1052,7 @@ mappingnotify(XEvent *e) { | |
XRefreshKeyboardMapping(ev); | |
if(ev->request == MappingKeyboard) | |
- keypress(NULL); | |
+ grabkeys(); | |
} | |
void | |
t@@ -1460,7 +1464,7 @@ setup(void) { | |
XSelectInput(dpy, root, wa.event_mask); | |
/* grab keys */ | |
- keypress(NULL); | |
+ grabkeys(); | |
/* init tags */ | |
compileregs(); |