changing Key.func into Key.func[NFUNCS], this allows sequences execution of functions per keypress (avoids implementing useless masterfunctions which call atomic ones)
This commit is contained in:
parent
8dc86051df
commit
19390b1a91
63
config.arg.h
63
config.arg.h
|
@ -17,45 +17,46 @@ const char *tags[] = { "dev", "work", "net", "fnord", NULL };
|
||||||
#define STATUSBGCOLOR "#222222"
|
#define STATUSBGCOLOR "#222222"
|
||||||
#define STATUSFGCOLOR "#99ccff"
|
#define STATUSFGCOLOR "#99ccff"
|
||||||
|
|
||||||
#define MASTER 600 /* per thousand */
|
#define MASTER 600 /* per thousand */
|
||||||
#define MODKEY Mod1Mask
|
#define MODKEY Mod1Mask
|
||||||
#define SNAP 40 /* pixel */
|
#define NFUNCS 1 /* number of funcs per key */
|
||||||
|
#define SNAP 40 /* pixel */
|
||||||
|
|
||||||
#define KEYS \
|
#define KEYS \
|
||||||
static Key key[] = { \
|
static Key key[] = { \
|
||||||
/* modifier key function arguments */ \
|
/* modifier key functions arguments */ \
|
||||||
{ MODKEY|ShiftMask, XK_Return, spawn, \
|
{ MODKEY|ShiftMask, XK_Return, { spawn }, \
|
||||||
{ .cmd = "exec urxvtc -tr -bg black -fg '#eeeeee' -cr '#eeeeee' +sb -fn '"FONT"'" } }, \
|
{ .cmd = "exec urxvtc -tr -bg black -fg '#eeeeee' -cr '#eeeeee' +sb -fn '"FONT"'" } }, \
|
||||||
{ MODKEY, XK_p, spawn, \
|
{ MODKEY, XK_p, { spawn }, \
|
||||||
{ .cmd = "exe=\"$(lsx `echo $PATH | sed 's/:/ /g'` | sort -u " \
|
{ .cmd = "exe=\"$(lsx `echo $PATH | sed 's/:/ /g'` | sort -u " \
|
||||||
" | dmenu -font '"FONT"' -normbg '"NORMBGCOLOR"' -normfg '"NORMFGCOLOR"' " \
|
" | dmenu -font '"FONT"' -normbg '"NORMBGCOLOR"' -normfg '"NORMFGCOLOR"' " \
|
||||||
"-selbg '"SELBGCOLOR"' -selfg '"SELFGCOLOR"')\" && exec $exe" } }, \
|
"-selbg '"SELBGCOLOR"' -selfg '"SELFGCOLOR"')\" && exec $exe" } }, \
|
||||||
{ MODKEY, XK_j, focusnext, { 0 } }, \
|
{ MODKEY, XK_j, { focusnext }, { 0 } }, \
|
||||||
{ MODKEY, XK_k, focusprev, { 0 } }, \
|
{ MODKEY, XK_k, { focusprev }, { 0 } }, \
|
||||||
{ MODKEY, XK_Return, zoom, { 0 } }, \
|
{ MODKEY, XK_Return, { zoom }, { 0 } }, \
|
||||||
{ MODKEY, XK_g, resizemaster, { .i = 15 } }, \
|
{ MODKEY, XK_g, { resizemaster }, { .i = 15 } }, \
|
||||||
{ MODKEY, XK_s, resizemaster, { .i = -15 } }, \
|
{ MODKEY, XK_s, { resizemaster }, { .i = -15 } }, \
|
||||||
{ MODKEY|ShiftMask, XK_1, tag, { .i = 0 } }, \
|
{ MODKEY|ShiftMask, XK_1, { tag }, { .i = 0 } }, \
|
||||||
{ MODKEY|ShiftMask, XK_2, tag, { .i = 1 } }, \
|
{ MODKEY|ShiftMask, XK_2, { tag }, { .i = 1 } }, \
|
||||||
{ MODKEY|ShiftMask, XK_3, tag, { .i = 2 } }, \
|
{ MODKEY|ShiftMask, XK_3, { tag }, { .i = 2 } }, \
|
||||||
{ MODKEY|ShiftMask, XK_4, tag, { .i = 3 } }, \
|
{ MODKEY|ShiftMask, XK_4, { tag }, { .i = 3 } }, \
|
||||||
{ MODKEY|ControlMask|ShiftMask, XK_1, toggletag, { .i = 0 } }, \
|
{ MODKEY|ControlMask|ShiftMask, XK_1, { toggletag }, { .i = 0 } }, \
|
||||||
{ MODKEY|ControlMask|ShiftMask, XK_2, toggletag, { .i = 1 } }, \
|
{ MODKEY|ControlMask|ShiftMask, XK_2, { toggletag }, { .i = 1 } }, \
|
||||||
{ MODKEY|ControlMask|ShiftMask, XK_3, toggletag, { .i = 2 } }, \
|
{ MODKEY|ControlMask|ShiftMask, XK_3, { toggletag }, { .i = 2 } }, \
|
||||||
{ MODKEY|ControlMask|ShiftMask, XK_4, toggletag, { .i = 3 } }, \
|
{ MODKEY|ControlMask|ShiftMask, XK_4, { toggletag }, { .i = 3 } }, \
|
||||||
{ MODKEY|ShiftMask, XK_c, killclient, { 0 } }, \
|
{ MODKEY|ShiftMask, XK_c, { killclient }, { 0 } }, \
|
||||||
{ MODKEY, XK_space, togglemode, { 0 } }, \
|
{ MODKEY, XK_space, { togglemode }, { 0 } }, \
|
||||||
{ MODKEY|ShiftMask, XK_space, togglefloat, { 0 } }, \
|
{ MODKEY|ShiftMask, XK_space, { togglefloat }, { 0 } }, \
|
||||||
{ MODKEY, XK_0, viewall, { 0 } }, \
|
{ MODKEY, XK_0, { viewall }, { 0 } }, \
|
||||||
{ MODKEY, XK_1, view, { .i = 0 } }, \
|
{ MODKEY, XK_1, { view }, { .i = 0 } }, \
|
||||||
{ MODKEY, XK_2, view, { .i = 1 } }, \
|
{ MODKEY, XK_2, { view }, { .i = 1 } }, \
|
||||||
{ MODKEY, XK_3, view, { .i = 2 } }, \
|
{ MODKEY, XK_3, { view }, { .i = 2 } }, \
|
||||||
{ MODKEY, XK_4, view, { .i = 3 } }, \
|
{ MODKEY, XK_4, { view }, { .i = 3 } }, \
|
||||||
{ MODKEY|ControlMask, XK_1, toggleview, { .i = 0 } }, \
|
{ MODKEY|ControlMask, XK_1, { toggleview }, { .i = 0 } }, \
|
||||||
{ MODKEY|ControlMask, XK_2, toggleview, { .i = 1 } }, \
|
{ MODKEY|ControlMask, XK_2, { toggleview }, { .i = 1 } }, \
|
||||||
{ MODKEY|ControlMask, XK_3, toggleview, { .i = 2 } }, \
|
{ MODKEY|ControlMask, XK_3, { toggleview }, { .i = 2 } }, \
|
||||||
{ MODKEY|ControlMask, XK_4, toggleview, { .i = 3 } }, \
|
{ MODKEY|ControlMask, XK_4, { toggleview }, { .i = 3 } }, \
|
||||||
{ MODKEY|ShiftMask, XK_q, quit, { 0 } }, \
|
{ MODKEY|ShiftMask, XK_q, { quit }, { 0 } }, \
|
||||||
};
|
};
|
||||||
|
|
||||||
#define RULES \
|
#define RULES \
|
||||||
|
|
|
@ -17,44 +17,45 @@ const char *tags[] = { "1", "2", "3", "4", "5", NULL };
|
||||||
#define STATUSBGCOLOR "#dddddd"
|
#define STATUSBGCOLOR "#dddddd"
|
||||||
#define STATUSFGCOLOR "#222222"
|
#define STATUSFGCOLOR "#222222"
|
||||||
|
|
||||||
#define MASTER 600 /* per thousand */
|
#define MASTER 600 /* per thousand */
|
||||||
#define MODKEY Mod1Mask
|
#define MODKEY Mod1Mask
|
||||||
#define SNAP 20 /* pixel */
|
#define NFUNCS 1 /* number of funcs per key */
|
||||||
|
#define SNAP 20 /* pixel */
|
||||||
|
|
||||||
#define KEYS \
|
#define KEYS \
|
||||||
static Key key[] = { \
|
static Key key[] = { \
|
||||||
/* modifier key function arguments */ \
|
/* modifier key functions arguments */ \
|
||||||
{ MODKEY|ShiftMask, XK_Return, spawn, { .cmd = "exec xterm" } }, \
|
{ MODKEY|ShiftMask, XK_Return, { spawn }, { .cmd = "exec xterm" } }, \
|
||||||
{ MODKEY, XK_Tab, focusnext, { 0 } }, \
|
{ MODKEY, XK_Tab, { focusnext }, { 0 } }, \
|
||||||
{ MODKEY|ShiftMask, XK_Tab, focusprev, { 0 } }, \
|
{ MODKEY|ShiftMask, XK_Tab, { focusprev }, { 0 } }, \
|
||||||
{ MODKEY, XK_Return, zoom, { 0 } }, \
|
{ MODKEY, XK_Return, { zoom }, { 0 } }, \
|
||||||
{ MODKEY, XK_g, resizemaster, { .i = 15 } }, \
|
{ MODKEY, XK_g, { resizemaster }, { .i = 15 } }, \
|
||||||
{ MODKEY, XK_s, resizemaster, { .i = -15 } }, \
|
{ MODKEY, XK_s, { resizemaster }, { .i = -15 } }, \
|
||||||
{ MODKEY|ShiftMask, XK_1, tag, { .i = 0 } }, \
|
{ MODKEY|ShiftMask, XK_1, { tag }, { .i = 0 } }, \
|
||||||
{ MODKEY|ShiftMask, XK_2, tag, { .i = 1 } }, \
|
{ MODKEY|ShiftMask, XK_2, { tag }, { .i = 1 } }, \
|
||||||
{ MODKEY|ShiftMask, XK_3, tag, { .i = 2 } }, \
|
{ MODKEY|ShiftMask, XK_3, { tag }, { .i = 2 } }, \
|
||||||
{ MODKEY|ShiftMask, XK_4, tag, { .i = 3 } }, \
|
{ MODKEY|ShiftMask, XK_4, { tag }, { .i = 3 } }, \
|
||||||
{ MODKEY|ShiftMask, XK_5, tag, { .i = 4 } }, \
|
{ MODKEY|ShiftMask, XK_5, { tag }, { .i = 4 } }, \
|
||||||
{ MODKEY|ControlMask|ShiftMask, XK_1, toggletag, { .i = 0 } }, \
|
{ MODKEY|ControlMask|ShiftMask, XK_1, { toggletag }, { .i = 0 } }, \
|
||||||
{ MODKEY|ControlMask|ShiftMask, XK_2, toggletag, { .i = 1 } }, \
|
{ MODKEY|ControlMask|ShiftMask, XK_2, { toggletag }, { .i = 1 } }, \
|
||||||
{ MODKEY|ControlMask|ShiftMask, XK_3, toggletag, { .i = 2 } }, \
|
{ MODKEY|ControlMask|ShiftMask, XK_3, { toggletag }, { .i = 2 } }, \
|
||||||
{ MODKEY|ControlMask|ShiftMask, XK_4, toggletag, { .i = 3 } }, \
|
{ MODKEY|ControlMask|ShiftMask, XK_4, { toggletag }, { .i = 3 } }, \
|
||||||
{ MODKEY|ControlMask|ShiftMask, XK_5, toggletag, { .i = 4 } }, \
|
{ MODKEY|ControlMask|ShiftMask, XK_5, { toggletag }, { .i = 4 } }, \
|
||||||
{ MODKEY|ShiftMask, XK_c, killclient, { 0 } }, \
|
{ MODKEY|ShiftMask, XK_c, { killclient }, { 0 } }, \
|
||||||
{ MODKEY, XK_space, togglemode, { 0 } }, \
|
{ MODKEY, XK_space, { togglemode }, { 0 } }, \
|
||||||
{ MODKEY|ShiftMask, XK_space, togglefloat, { 0 } }, \
|
{ MODKEY|ShiftMask, XK_space, { togglefloat }, { 0 } }, \
|
||||||
{ MODKEY, XK_0, viewall, { 0 } }, \
|
{ MODKEY, XK_0, { viewall }, { 0 } }, \
|
||||||
{ MODKEY, XK_1, view, { .i = 0 } }, \
|
{ MODKEY, XK_1, { view }, { .i = 0 } }, \
|
||||||
{ MODKEY, XK_2, view, { .i = 1 } }, \
|
{ MODKEY, XK_2, { view }, { .i = 1 } }, \
|
||||||
{ MODKEY, XK_3, view, { .i = 2 } }, \
|
{ MODKEY, XK_3, { view }, { .i = 2 } }, \
|
||||||
{ MODKEY, XK_4, view, { .i = 3 } }, \
|
{ MODKEY, XK_4, { view }, { .i = 3 } }, \
|
||||||
{ MODKEY, XK_5, view, { .i = 4 } }, \
|
{ MODKEY, XK_5, { view }, { .i = 4 } }, \
|
||||||
{ MODKEY|ControlMask, XK_1, toggleview, { .i = 0 } }, \
|
{ MODKEY|ControlMask, XK_1, { toggleview }, { .i = 0 } }, \
|
||||||
{ MODKEY|ControlMask, XK_2, toggleview, { .i = 1 } }, \
|
{ MODKEY|ControlMask, XK_2, { toggleview }, { .i = 1 } }, \
|
||||||
{ MODKEY|ControlMask, XK_3, toggleview, { .i = 2 } }, \
|
{ MODKEY|ControlMask, XK_3, { toggleview }, { .i = 2 } }, \
|
||||||
{ MODKEY|ControlMask, XK_4, toggleview, { .i = 3 } }, \
|
{ MODKEY|ControlMask, XK_4, { toggleview }, { .i = 3 } }, \
|
||||||
{ MODKEY|ControlMask, XK_5, toggleview, { .i = 4 } }, \
|
{ MODKEY|ControlMask, XK_5, { toggleview }, { .i = 4 } }, \
|
||||||
{ MODKEY|ShiftMask, XK_q, quit, { 0 } }, \
|
{ MODKEY|ShiftMask, XK_q, { quit }, { 0 } }, \
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Query class:instance:title for regex matching info with following command:
|
/* Query class:instance:title for regex matching info with following command:
|
||||||
|
|
9
event.c
9
event.c
|
@ -11,7 +11,7 @@
|
||||||
typedef struct {
|
typedef struct {
|
||||||
unsigned long mod;
|
unsigned long mod;
|
||||||
KeySym keysym;
|
KeySym keysym;
|
||||||
void (*func)(Arg *arg);
|
void (*func[NFUNCS])(Arg *arg);
|
||||||
Arg arg;
|
Arg arg;
|
||||||
} Key;
|
} Key;
|
||||||
|
|
||||||
|
@ -245,7 +245,7 @@ expose(XEvent *e) {
|
||||||
static void
|
static void
|
||||||
keypress(XEvent *e) {
|
keypress(XEvent *e) {
|
||||||
static unsigned int len = sizeof key / sizeof key[0];
|
static unsigned int len = sizeof key / sizeof key[0];
|
||||||
unsigned int i;
|
unsigned int i, j;
|
||||||
KeySym keysym;
|
KeySym keysym;
|
||||||
XKeyEvent *ev = &e->xkey;
|
XKeyEvent *ev = &e->xkey;
|
||||||
|
|
||||||
|
@ -254,8 +254,9 @@ keypress(XEvent *e) {
|
||||||
if(keysym == key[i].keysym
|
if(keysym == key[i].keysym
|
||||||
&& CLEANMASK(key[i].mod) == CLEANMASK(ev->state))
|
&& CLEANMASK(key[i].mod) == CLEANMASK(ev->state))
|
||||||
{
|
{
|
||||||
if(key[i].func)
|
for(j = 0; j < NFUNCS; j++)
|
||||||
key[i].func(&key[i].arg);
|
if(key[i].func[j])
|
||||||
|
key[i].func[j](&key[i].arg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue