returning to old Key struct
19dcbc57
3 file(s) · +65 −68
| 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 \ |
| 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: |
| 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 | } |
|