tchanging Key.func into Key.func[NFUNCS], this allows sequences execution of fu… | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 19390b1a91da680a502ce5acebd086cfbe32627c | |
parent 8dc86051df197792d35521743cc2cb72b60a47ff | |
Author: arg@mig29 <unknown> | |
Date: Mon, 27 Nov 2006 13:21:38 +0100 | |
changing Key.func into Key.func[NFUNCS], this allows sequences execution of fun… | |
Diffstat: | |
M config.arg.h | 63 ++++++++++++++++-------------… | |
M config.default.h | 69 ++++++++++++++++-------------… | |
M event.c | 9 +++++---- | |
3 files changed, 72 insertions(+), 69 deletions(-) | |
--- | |
diff --git a/config.arg.h b/config.arg.h | |
t@@ -17,45 +17,46 @@ const char *tags[] = { "dev", "work", "net", "fnord", NULL… | |
#define STATUSBGCOLOR "#222222" | |
#define STATUSFGCOLOR "#99ccff" | |
-#define MASTER 600 /* per thousand */ | |
+#define MASTER 600 /* per thousand */ | |
#define MODKEY Mod1Mask | |
-#define SNAP 40 /* pixel */ | |
+#define NFUNCS 1 /* number of funcs per … | |
+#define SNAP 40 /* pixel */ | |
#define KEYS \ | |
static Key key[] = { \ | |
- /* modifier key function … | |
- { MODKEY|ShiftMask, XK_Return, spawn, \ | |
+ /* modifier key functions … | |
+ { MODKEY|ShiftMask, XK_Return, { spawn }, \ | |
{ .cmd = "exec urxvtc -tr -bg black -fg '#eeeeee' -cr '#eeeeee… | |
- { MODKEY, XK_p, spawn, \ | |
+ { MODKEY, XK_p, { spawn }, \ | |
{ .cmd = "exe=\"$(lsx `echo $PATH | sed 's/:/ /g'` | sort -u "… | |
" | dmenu -font '"FONT"' -normbg '"NORMBGCOLOR"' -norm… | |
"-selbg '"SELBGCOLOR"' -selfg '"SELFGCOLOR"')\" && exe… | |
- { MODKEY, XK_j, focusnext, … | |
- { MODKEY, XK_k, focusprev, … | |
- { MODKEY, XK_Return, zoom, … | |
- { MODKEY, XK_g, resizemaster, … | |
- { MODKEY, XK_s, resizemaster, … | |
- { MODKEY|ShiftMask, XK_1, tag, … | |
- { MODKEY|ShiftMask, XK_2, tag, … | |
- { MODKEY|ShiftMask, XK_3, tag, … | |
- { MODKEY|ShiftMask, XK_4, 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|ShiftMask, XK_c, killclient, … | |
- { MODKEY, XK_space, togglemode, {… | |
- { MODKEY|ShiftMask, XK_space, togglefloat, … | |
- { MODKEY, XK_0, viewall, … | |
- { MODKEY, XK_1, view, … | |
- { MODKEY, XK_2, view, … | |
- { MODKEY, XK_3, view, … | |
- { MODKEY, XK_4, view, … | |
- { MODKEY|ControlMask, XK_1, toggleview, … | |
- { MODKEY|ControlMask, XK_2, toggleview, … | |
- { MODKEY|ControlMask, XK_3, toggleview, … | |
- { MODKEY|ControlMask, XK_4, toggleview, … | |
- { MODKEY|ShiftMask, XK_q, quit, … | |
+ { MODKEY, XK_j, { focusnext }, … | |
+ { MODKEY, XK_k, { focusprev }, … | |
+ { MODKEY, XK_Return, { zoom }, … | |
+ { MODKEY, XK_g, { resizemaster }… | |
+ { MODKEY, XK_s, { resizemaster }… | |
+ { MODKEY|ShiftMask, XK_1, { tag }, … | |
+ { MODKEY|ShiftMask, XK_2, { tag }, … | |
+ { MODKEY|ShiftMask, XK_3, { tag }, … | |
+ { MODKEY|ShiftMask, XK_4, { tag }, … | |
+ { MODKEY|ControlMask|ShiftMask, XK_1, { toggleta… | |
+ { MODKEY|ControlMask|ShiftMask, XK_2, { toggleta… | |
+ { MODKEY|ControlMask|ShiftMask, XK_3, { toggleta… | |
+ { MODKEY|ControlMask|ShiftMask, XK_4, { toggleta… | |
+ { MODKEY|ShiftMask, XK_c, { killclient }… | |
+ { MODKEY, XK_space, { togglemode }, … | |
+ { MODKEY|ShiftMask, XK_space, { togglefloat }, … | |
+ { MODKEY, XK_0, { viewall }, … | |
+ { MODKEY, XK_1, { view }, … | |
+ { MODKEY, XK_2, { view }, … | |
+ { MODKEY, XK_3, { view }, … | |
+ { MODKEY, XK_4, { view }, … | |
+ { MODKEY|ControlMask, XK_1, { toggleview… | |
+ { MODKEY|ControlMask, XK_2, { toggleview… | |
+ { MODKEY|ControlMask, XK_3, { toggleview… | |
+ { MODKEY|ControlMask, XK_4, { toggleview… | |
+ { MODKEY|ShiftMask, XK_q, { quit }, … | |
}; | |
#define RULES \ | |
diff --git a/config.default.h b/config.default.h | |
t@@ -17,44 +17,45 @@ const char *tags[] = { "1", "2", "3", "4", "5", NULL }; | |
#define STATUSBGCOLOR "#dddddd" | |
#define STATUSFGCOLOR "#222222" | |
-#define MASTER 600 /* per thousand */ | |
+#define MASTER 600 /* per thousand */ | |
#define MODKEY Mod1Mask | |
-#define SNAP 20 /* pixel */ | |
+#define NFUNCS 1 /* number of funcs per … | |
+#define SNAP 20 /* pixel */ | |
#define KEYS \ | |
static Key key[] = { \ | |
- /* modifier key function … | |
- { MODKEY|ShiftMask, XK_Return, spawn, … | |
- { MODKEY, XK_Tab, focusnext, … | |
- { MODKEY|ShiftMask, XK_Tab, focusprev, … | |
- { MODKEY, XK_Return, zoom, … | |
- { MODKEY, XK_g, resizemaster, … | |
- { MODKEY, XK_s, resizemaster, … | |
- { 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|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|ShiftMask, XK_c, killclient, … | |
- { MODKEY, XK_space, togglemode, {… | |
- { MODKEY|ShiftMask, XK_space, togglefloat, … | |
- { MODKEY, XK_0, viewall, … | |
- { MODKEY, XK_1, view, … | |
- { MODKEY, XK_2, view, … | |
- { MODKEY, XK_3, view, … | |
- { MODKEY, XK_4, view, … | |
- { MODKEY, XK_5, 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|ShiftMask, XK_q, quit, … | |
+ /* modifier key functions … | |
+ { MODKEY|ShiftMask, XK_Return, { spawn }, … | |
+ { MODKEY, XK_Tab, { focusnext },… | |
+ { MODKEY|ShiftMask, XK_Tab, { focusprev … | |
+ { MODKEY, XK_Return, { zoom }, … | |
+ { MODKEY, XK_g, { resizemaster }… | |
+ { MODKEY, XK_s, { resizemaster }… | |
+ { 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|ControlMask|ShiftMask, XK_1, { toggleta… | |
+ { MODKEY|ControlMask|ShiftMask, XK_2, { toggleta… | |
+ { MODKEY|ControlMask|ShiftMask, XK_3, { toggleta… | |
+ { MODKEY|ControlMask|ShiftMask, XK_4, { toggleta… | |
+ { MODKEY|ControlMask|ShiftMask, XK_5, { toggleta… | |
+ { MODKEY|ShiftMask, XK_c, { killclient }… | |
+ { MODKEY, XK_space, { togglemode }, … | |
+ { MODKEY|ShiftMask, XK_space, { togglefloat }, … | |
+ { MODKEY, XK_0, { viewall }, … | |
+ { MODKEY, XK_1, { view }, … | |
+ { MODKEY, XK_2, { view }, … | |
+ { MODKEY, XK_3, { view }, … | |
+ { MODKEY, XK_4, { view }, … | |
+ { MODKEY, XK_5, { 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|ShiftMask, XK_q, { quit }, … | |
}; | |
/* Query class:instance:title for regex matching info with following command: | |
diff --git a/event.c b/event.c | |
t@@ -11,7 +11,7 @@ | |
typedef struct { | |
unsigned long mod; | |
KeySym keysym; | |
- void (*func)(Arg *arg); | |
+ void (*func[NFUNCS])(Arg *arg); | |
Arg arg; | |
} Key; | |
t@@ -245,7 +245,7 @@ expose(XEvent *e) { | |
static void | |
keypress(XEvent *e) { | |
static unsigned int len = sizeof key / sizeof key[0]; | |
- unsigned int i; | |
+ unsigned int i, j; | |
KeySym keysym; | |
XKeyEvent *ev = &e->xkey; | |
t@@ -254,8 +254,9 @@ keypress(XEvent *e) { | |
if(keysym == key[i].keysym | |
&& CLEANMASK(key[i].mod) == CLEANMASK(ev->state)) | |
{ | |
- if(key[i].func) | |
- key[i].func(&key[i].arg); | |
+ for(j = 0; j < NFUNCS; j++) | |
+ if(key[i].func[j]) | |
+ key[i].func[j](&key[i].arg); | |
return; | |
} | |
} |