returning to old Key struct 19dcbc57
arg@mig29 · 2006-11-27 17:49 3 file(s) · +65 −68
config.arg.h +29 −30
19 19
20 20
#define MASTER			600		/* per thousand */
21 21
#define MODKEY			Mod1Mask
22 -
#define NFUNCS			1		/* number of funcs per key */
23 22
#define SNAP			40		/* pixel */
24 23
25 24
#define KEYS \
26 25
static Key key[] = { \
27 -
	/* modifier			key		functions		arguments */ \
28 -
	{ MODKEY|ShiftMask,		XK_Return,	{ spawn }, \
26 +
	/* modifier			key		function		argument */ \
27 +
	{ MODKEY|ShiftMask,		XK_Return,	spawn, \
29 28
		{ .cmd = "exec urxvtc -tr -bg black -fg '#eeeeee' -cr '#eeeeee' +sb -fn '"FONT"'" } }, \
30 -
	{ MODKEY,			XK_p,		{ spawn }, \
29 +
	{ MODKEY,			XK_p,		spawn, \
31 30
		{ .cmd = "exe=\"$(lsx `echo $PATH | sed 's/:/ /g'` | sort -u " \
32 31
			" | dmenu -font '"FONT"' -normbg '"NORMBGCOLOR"' -normfg '"NORMFGCOLOR"' " \
33 32
			"-selbg '"SELBGCOLOR"' -selfg '"SELFGCOLOR"')\" && exec $exe" } }, \
34 -
	{ MODKEY,			XK_j,		{ focusnext },		{ 0 } }, \
35 -
	{ MODKEY,			XK_k,		{ focusprev },		{ 0 } }, \
36 -
	{ MODKEY,			XK_Return,	{ zoom },		{ 0 } }, \
37 -
	{ MODKEY,			XK_g,		{ resizemaster },	{ .i = 15 } }, \
38 -
	{ MODKEY,			XK_s,		{ resizemaster },	{ .i = -15 } }, \
39 -
	{ MODKEY|ShiftMask,		XK_1,		{ tag },		{ .i = 0 } }, \
40 -
	{ MODKEY|ShiftMask,		XK_2,		{ tag },		{ .i = 1 } }, \
41 -
	{ MODKEY|ShiftMask,		XK_3,		{ tag },		{ .i = 2 } }, \
42 -
	{ MODKEY|ShiftMask,		XK_4,		{ tag },		{ .i = 3 } }, \
43 -
	{ MODKEY|ControlMask|ShiftMask,	XK_1,		{ toggletag },		{ .i = 0 } }, \
44 -
	{ MODKEY|ControlMask|ShiftMask,	XK_2,		{ toggletag },		{ .i = 1 } }, \
45 -
	{ MODKEY|ControlMask|ShiftMask,	XK_3,		{ toggletag },		{ .i = 2 } }, \
46 -
	{ MODKEY|ControlMask|ShiftMask,	XK_4,		{ toggletag },		{ .i = 3 } }, \
47 -
	{ MODKEY|ShiftMask,		XK_c,		{ killclient },		{ 0 } }, \
48 -
	{ MODKEY,			XK_space,	{ togglemode },		{ 0 } }, \
49 -
	{ MODKEY|ShiftMask,		XK_space,	{ togglefloat },	{ 0 } }, \
50 -
	{ MODKEY,			XK_0,		{ viewall },		{ 0 } }, \
51 -
	{ MODKEY,			XK_1,		{ view },		{ .i = 0 } }, \
52 -
	{ MODKEY,			XK_2,		{ view },		{ .i = 1 } }, \
53 -
	{ MODKEY,			XK_3,		{ view },		{ .i = 2 } }, \
54 -
	{ MODKEY,			XK_4,		{ view },		{ .i = 3 } }, \
55 -
	{ MODKEY|ControlMask,		XK_1,		{ toggleview },		{ .i = 0 } }, \
56 -
	{ MODKEY|ControlMask,		XK_2,		{ toggleview },		{ .i = 1 } }, \
57 -
	{ MODKEY|ControlMask,		XK_3,		{ toggleview },		{ .i = 2 } }, \
58 -
	{ MODKEY|ControlMask,		XK_4,		{ toggleview },		{ .i = 3 } }, \
59 -
	{ MODKEY|ShiftMask,		XK_q,		{ quit },		{ 0 } }, \
33 +
	{ MODKEY,			XK_j,		focusnext,	{ 0 } }, \
34 +
	{ MODKEY,			XK_k,		focusprev,	{ 0 } }, \
35 +
	{ MODKEY,			XK_Return,	zoom,		{ 0 } }, \
36 +
	{ MODKEY,			XK_g,		resizemaster,	{ .i = 15 } }, \
37 +
	{ MODKEY,			XK_s,		resizemaster,	{ .i = -15 } }, \
38 +
	{ MODKEY|ShiftMask,		XK_1,		tag,		{ .i = 0 } }, \
39 +
	{ MODKEY|ShiftMask,		XK_2,		tag,		{ .i = 1 } }, \
40 +
	{ MODKEY|ShiftMask,		XK_3,		tag,		{ .i = 2 } }, \
41 +
	{ MODKEY|ShiftMask,		XK_4,		tag,		{ .i = 3 } }, \
42 +
	{ MODKEY|ControlMask|ShiftMask,	XK_1,		toggletag,	{ .i = 0 } }, \
43 +
	{ MODKEY|ControlMask|ShiftMask,	XK_2,		toggletag,	{ .i = 1 } }, \
44 +
	{ MODKEY|ControlMask|ShiftMask,	XK_3,		toggletag,	{ .i = 2 } }, \
45 +
	{ MODKEY|ControlMask|ShiftMask,	XK_4,		toggletag,	{ .i = 3 } }, \
46 +
	{ MODKEY|ShiftMask,		XK_c,		killclient,	{ 0 } }, \
47 +
	{ MODKEY,			XK_space,	togglemode,	{ 0 } }, \
48 +
	{ MODKEY|ShiftMask,		XK_space,	togglefloat,	{ 0 } }, \
49 +
	{ MODKEY,			XK_0,		viewall,	{ 0 } }, \
50 +
	{ MODKEY,			XK_1,		view,		{ .i = 0 } }, \
51 +
	{ MODKEY,			XK_2,		view,		{ .i = 1 } }, \
52 +
	{ MODKEY,			XK_3,		view,		{ .i = 2 } }, \
53 +
	{ MODKEY,			XK_4,		view,		{ .i = 3 } }, \
54 +
	{ MODKEY|ControlMask,		XK_1,		toggleview,	{ .i = 0 } }, \
55 +
	{ MODKEY|ControlMask,		XK_2,		toggleview,	{ .i = 1 } }, \
56 +
	{ MODKEY|ControlMask,		XK_3,		toggleview,	{ .i = 2 } }, \
57 +
	{ MODKEY|ControlMask,		XK_4,		toggleview,	{ .i = 3 } }, \
58 +
	{ MODKEY|ShiftMask,		XK_q,		quit,		{ 0 } }, \
60 59
};
61 60
62 61
#define RULES \
config.default.h +32 −33
19 19
20 20
#define MASTER			600		/* per thousand */
21 21
#define MODKEY			Mod1Mask
22 -
#define NFUNCS			1		/* number of funcs per key */
23 22
#define SNAP			20		/* pixel */
24 23
25 24
#define KEYS \
26 25
static Key key[] = { \
27 -
	/* modifier			key		functions		arguments */ \
28 -
	{ MODKEY|ShiftMask,		XK_Return,	{ spawn },		{ .cmd = "exec xterm" } }, \
29 -
	{ MODKEY,			XK_Tab,		{ focusnext },		{ 0 } }, \
30 -
	{ MODKEY|ShiftMask,		XK_Tab,		{ focusprev },		{ 0 } }, \
31 -
	{ MODKEY,			XK_Return,	{ zoom },		{ 0 } }, \
32 -
	{ MODKEY,			XK_g,		{ resizemaster },	{ .i = 15 } }, \
33 -
	{ MODKEY,			XK_s,		{ resizemaster },	{ .i = -15 } }, \
34 -
	{ MODKEY|ShiftMask,		XK_1,		{ tag },		{ .i = 0 } }, \
35 -
	{ MODKEY|ShiftMask,		XK_2,		{ tag },		{ .i = 1 } }, \
36 -
	{ MODKEY|ShiftMask,		XK_3,		{ tag },		{ .i = 2 } }, \
37 -
	{ MODKEY|ShiftMask,		XK_4,		{ tag },		{ .i = 3 } }, \
38 -
	{ MODKEY|ShiftMask,		XK_5,		{ tag },		{ .i = 4 } }, \
39 -
	{ MODKEY|ControlMask|ShiftMask,	XK_1,		{ toggletag },		{ .i = 0 } }, \
40 -
	{ MODKEY|ControlMask|ShiftMask,	XK_2,		{ toggletag },		{ .i = 1 } }, \
41 -
	{ MODKEY|ControlMask|ShiftMask,	XK_3,		{ toggletag },		{ .i = 2 } }, \
42 -
	{ MODKEY|ControlMask|ShiftMask,	XK_4,		{ toggletag },		{ .i = 3 } }, \
43 -
	{ MODKEY|ControlMask|ShiftMask,	XK_5,		{ toggletag },		{ .i = 4 } }, \
44 -
	{ MODKEY|ShiftMask,		XK_c,		{ killclient },		{ 0 } }, \
45 -
	{ MODKEY,			XK_space,	{ togglemode },		{ 0 } }, \
46 -
	{ MODKEY|ShiftMask,		XK_space,	{ togglefloat },	{ 0 } }, \
47 -
	{ MODKEY,			XK_0,		{ viewall },		{ 0 } }, \
48 -
	{ MODKEY,			XK_1,		{ view },		{ .i = 0 } }, \
49 -
	{ MODKEY,			XK_2,		{ view },		{ .i = 1 } }, \
50 -
	{ MODKEY,			XK_3,		{ view },		{ .i = 2 } }, \
51 -
	{ MODKEY,			XK_4,		{ view },		{ .i = 3 } }, \
52 -
	{ MODKEY,			XK_5,		{ view },		{ .i = 4 } }, \
53 -
	{ MODKEY|ControlMask,		XK_1,		{ toggleview },		{ .i = 0 } }, \
54 -
	{ MODKEY|ControlMask,		XK_2,		{ toggleview },		{ .i = 1 } }, \
55 -
	{ MODKEY|ControlMask,		XK_3,		{ toggleview },		{ .i = 2 } }, \
56 -
	{ MODKEY|ControlMask,		XK_4,		{ toggleview },		{ .i = 3 } }, \
57 -
	{ MODKEY|ControlMask,		XK_5,		{ toggleview },		{ .i = 4 } }, \
58 -
	{ MODKEY|ShiftMask,		XK_q,		{ quit },		{ 0 } }, \
26 +
	/* modifier			key		function	argument */ \
27 +
	{ MODKEY|ShiftMask,		XK_Return,	spawn,		{ .cmd = "exec xterm" } }, \
28 +
	{ MODKEY,			XK_Tab,		focusnext,	{ 0 } }, \
29 +
	{ MODKEY|ShiftMask,		XK_Tab,		focusprev,	{ 0 } }, \
30 +
	{ MODKEY,			XK_Return,	zoom,		{ 0 } }, \
31 +
	{ MODKEY,			XK_g,		resizemaster,	{ .i = 15 } }, \
32 +
	{ MODKEY,			XK_s,		resizemaster,	{ .i = -15 } }, \
33 +
	{ MODKEY|ShiftMask,		XK_1,		tag,		{ .i = 0 } }, \
34 +
	{ MODKEY|ShiftMask,		XK_2,		tag,		{ .i = 1 } }, \
35 +
	{ MODKEY|ShiftMask,		XK_3,		tag,		{ .i = 2 } }, \
36 +
	{ MODKEY|ShiftMask,		XK_4,		tag,		{ .i = 3 } }, \
37 +
	{ MODKEY|ShiftMask,		XK_5,		tag,		{ .i = 4 } }, \
38 +
	{ MODKEY|ControlMask|ShiftMask,	XK_1,		toggletag,	{ .i = 0 } }, \
39 +
	{ MODKEY|ControlMask|ShiftMask,	XK_2,		toggletag,	{ .i = 1 } }, \
40 +
	{ MODKEY|ControlMask|ShiftMask,	XK_3,		toggletag,	{ .i = 2 } }, \
41 +
	{ MODKEY|ControlMask|ShiftMask,	XK_4,		toggletag,	{ .i = 3 } }, \
42 +
	{ MODKEY|ControlMask|ShiftMask,	XK_5,		toggletag,	{ .i = 4 } }, \
43 +
	{ MODKEY|ShiftMask,		XK_c,		killclient,	{ 0 } }, \
44 +
	{ MODKEY,			XK_space,	togglemode,	{ 0 } }, \
45 +
	{ MODKEY|ShiftMask,		XK_space,	togglefloat,	{ 0 } }, \
46 +
	{ MODKEY,			XK_0,		viewall,	{ 0 } }, \
47 +
	{ MODKEY,			XK_1,		view,		{ .i = 0 } }, \
48 +
	{ MODKEY,			XK_2,		view,		{ .i = 1 } }, \
49 +
	{ MODKEY,			XK_3,		view,		{ .i = 2 } }, \
50 +
	{ MODKEY,			XK_4,		view,		{ .i = 3 } }, \
51 +
	{ MODKEY,			XK_5,		view,		{ .i = 4 } }, \
52 +
	{ MODKEY|ControlMask,		XK_1,		toggleview,	{ .i = 0 } }, \
53 +
	{ MODKEY|ControlMask,		XK_2,		toggleview,	{ .i = 1 } }, \
54 +
	{ MODKEY|ControlMask,		XK_3,		toggleview,	{ .i = 2 } }, \
55 +
	{ MODKEY|ControlMask,		XK_4,		toggleview,	{ .i = 3 } }, \
56 +
	{ MODKEY|ControlMask,		XK_5,		toggleview,	{ .i = 4 } }, \
57 +
	{ MODKEY|ShiftMask,		XK_q,		quit,		{ 0 } }, \
59 58
};
60 59
61 60
/* Query class:instance:title for regex matching info with following command:
event.c +4 −5
11 11
typedef struct {
12 12
	unsigned long mod;
13 13
	KeySym keysym;
14 -
	void (*func[NFUNCS])(Arg *arg);
14 +
	void (*func)(Arg *arg);
15 15
	Arg arg;
16 16
} Key;
17 17
245 245
static void
246 246
keypress(XEvent *e) {
247 247
	static unsigned int len = sizeof key / sizeof key[0];
248 -
	unsigned int i, j;
248 +
	unsigned int i;
249 249
	KeySym keysym;
250 250
	XKeyEvent *ev = &e->xkey;
251 251
254 254
		if(keysym == key[i].keysym
255 255
			&& CLEANMASK(key[i].mod) == CLEANMASK(ev->state))
256 256
		{
257 -
			for(j = 0; j < NFUNCS; j++)
258 -
				if(key[i].func[j])
259 -
					key[i].func[j](&key[i].arg);
257 +
			if(key[i].func)
258 +
				key[i].func(&key[i].arg);
260 259
			return;
261 260
		}
262 261
	}