URI: 
       returning to old Key struct - dwm - dynamic window manager
  HTML git clone https://git.parazyd.org/dwm
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 19dcbc5717bdcef4bcb5be6966be7d86f88152d6
   DIR parent d2a4952956aa21a48ac40d7f650036682cb9d97d
  HTML Author: arg@mig29 <unknown>
       Date:   Mon, 27 Nov 2006 17:49:58 +0100
       
       returning to old Key struct
       Diffstat:
         M config.arg.h                        |      59 +++++++++++++++----------------
         M config.default.h                    |      65 +++++++++++++++----------------
         M event.c                             |       9 ++++-----
       
       3 files changed, 65 insertions(+), 68 deletions(-)
       ---
   DIR diff --git a/config.arg.h b/config.arg.h
       @@ -19,44 +19,43 @@ const char *tags[] = { "dev", "work", "net", "fnord", NULL };
        
        #define MASTER                        600                /* per thousand */
        #define MODKEY                        Mod1Mask
       -#define NFUNCS                        1                /* number of funcs per key */
        #define SNAP                        40                /* pixel */
        
        #define KEYS \
        static Key key[] = { \
       -        /* modifier                        key                functions                arguments */ \
       -        { MODKEY|ShiftMask,                XK_Return,        { spawn }, \
       +        /* modifier                        key                function                argument */ \
       +        { MODKEY|ShiftMask,                XK_Return,        spawn, \
                        { .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 " \
                                " | dmenu -font '"FONT"' -normbg '"NORMBGCOLOR"' -normfg '"NORMFGCOLOR"' " \
                                "-selbg '"SELBGCOLOR"' -selfg '"SELFGCOLOR"')\" && exec $exe" } }, \
       -        { MODKEY,                        XK_j,                { focusnext },                { 0 } }, \
       -        { MODKEY,                        XK_k,                { focusprev },                { 0 } }, \
       -        { MODKEY,                        XK_Return,        { zoom },                { 0 } }, \
       -        { MODKEY,                        XK_g,                { resizemaster },        { .i = 15 } }, \
       -        { MODKEY,                        XK_s,                { resizemaster },        { .i = -15 } }, \
       -        { MODKEY|ShiftMask,                XK_1,                { tag },                { .i = 0 } }, \
       -        { MODKEY|ShiftMask,                XK_2,                { tag },                { .i = 1 } }, \
       -        { MODKEY|ShiftMask,                XK_3,                { tag },                { .i = 2 } }, \
       -        { MODKEY|ShiftMask,                XK_4,                { tag },                { .i = 3 } }, \
       -        { MODKEY|ControlMask|ShiftMask,        XK_1,                { toggletag },                { .i = 0 } }, \
       -        { MODKEY|ControlMask|ShiftMask,        XK_2,                { toggletag },                { .i = 1 } }, \
       -        { MODKEY|ControlMask|ShiftMask,        XK_3,                { toggletag },                { .i = 2 } }, \
       -        { MODKEY|ControlMask|ShiftMask,        XK_4,                { toggletag },                { .i = 3 } }, \
       -        { MODKEY|ShiftMask,                XK_c,                { killclient },                { 0 } }, \
       -        { MODKEY,                        XK_space,        { togglemode },                { 0 } }, \
       -        { MODKEY|ShiftMask,                XK_space,        { togglefloat },        { 0 } }, \
       -        { MODKEY,                        XK_0,                { viewall },                { 0 } }, \
       -        { MODKEY,                        XK_1,                { view },                { .i = 0 } }, \
       -        { MODKEY,                        XK_2,                { view },                { .i = 1 } }, \
       -        { MODKEY,                        XK_3,                { view },                { .i = 2 } }, \
       -        { MODKEY,                        XK_4,                { view },                { .i = 3 } }, \
       -        { MODKEY|ControlMask,                XK_1,                { toggleview },                { .i = 0 } }, \
       -        { MODKEY|ControlMask,                XK_2,                { toggleview },                { .i = 1 } }, \
       -        { MODKEY|ControlMask,                XK_3,                { toggleview },                { .i = 2 } }, \
       -        { MODKEY|ControlMask,                XK_4,                { toggleview },                { .i = 3 } }, \
       -        { MODKEY|ShiftMask,                XK_q,                { quit },                { 0 } }, \
       +        { MODKEY,                        XK_j,                focusnext,        { 0 } }, \
       +        { MODKEY,                        XK_k,                focusprev,        { 0 } }, \
       +        { MODKEY,                        XK_Return,        zoom,                { 0 } }, \
       +        { MODKEY,                        XK_g,                resizemaster,        { .i = 15 } }, \
       +        { MODKEY,                        XK_s,                resizemaster,        { .i = -15 } }, \
       +        { MODKEY|ShiftMask,                XK_1,                tag,                { .i = 0 } }, \
       +        { MODKEY|ShiftMask,                XK_2,                tag,                { .i = 1 } }, \
       +        { MODKEY|ShiftMask,                XK_3,                tag,                { .i = 2 } }, \
       +        { MODKEY|ShiftMask,                XK_4,                tag,                { .i = 3 } }, \
       +        { MODKEY|ControlMask|ShiftMask,        XK_1,                toggletag,        { .i = 0 } }, \
       +        { MODKEY|ControlMask|ShiftMask,        XK_2,                toggletag,        { .i = 1 } }, \
       +        { MODKEY|ControlMask|ShiftMask,        XK_3,                toggletag,        { .i = 2 } }, \
       +        { MODKEY|ControlMask|ShiftMask,        XK_4,                toggletag,        { .i = 3 } }, \
       +        { MODKEY|ShiftMask,                XK_c,                killclient,        { 0 } }, \
       +        { MODKEY,                        XK_space,        togglemode,        { 0 } }, \
       +        { MODKEY|ShiftMask,                XK_space,        togglefloat,        { 0 } }, \
       +        { MODKEY,                        XK_0,                viewall,        { 0 } }, \
       +        { MODKEY,                        XK_1,                view,                { .i = 0 } }, \
       +        { MODKEY,                        XK_2,                view,                { .i = 1 } }, \
       +        { MODKEY,                        XK_3,                view,                { .i = 2 } }, \
       +        { MODKEY,                        XK_4,                view,                { .i = 3 } }, \
       +        { MODKEY|ControlMask,                XK_1,                toggleview,        { .i = 0 } }, \
       +        { MODKEY|ControlMask,                XK_2,                toggleview,        { .i = 1 } }, \
       +        { MODKEY|ControlMask,                XK_3,                toggleview,        { .i = 2 } }, \
       +        { MODKEY|ControlMask,                XK_4,                toggleview,        { .i = 3 } }, \
       +        { MODKEY|ShiftMask,                XK_q,                quit,                { 0 } }, \
        };
        
        #define RULES \
   DIR diff --git a/config.default.h b/config.default.h
       @@ -19,43 +19,42 @@ const char *tags[] = { "1", "2", "3", "4", "5", NULL };
        
        #define MASTER                        600                /* per thousand */
        #define MODKEY                        Mod1Mask
       -#define NFUNCS                        1                /* number of funcs per key */
        #define SNAP                        20                /* pixel */
        
        #define KEYS \
        static Key key[] = { \
       -        /* modifier                        key                functions                arguments */ \
       -        { MODKEY|ShiftMask,                XK_Return,        { spawn },                { .cmd = "exec xterm" } }, \
       -        { MODKEY,                        XK_Tab,                { focusnext },                { 0 } }, \
       -        { MODKEY|ShiftMask,                XK_Tab,                { focusprev },                { 0 } }, \
       -        { MODKEY,                        XK_Return,        { zoom },                { 0 } }, \
       -        { MODKEY,                        XK_g,                { resizemaster },        { .i = 15 } }, \
       -        { MODKEY,                        XK_s,                { resizemaster },        { .i = -15 } }, \
       -        { MODKEY|ShiftMask,                XK_1,                { tag },                { .i = 0 } }, \
       -        { MODKEY|ShiftMask,                XK_2,                { tag },                { .i = 1 } }, \
       -        { MODKEY|ShiftMask,                XK_3,                { tag },                { .i = 2 } }, \
       -        { MODKEY|ShiftMask,                XK_4,                { tag },                { .i = 3 } }, \
       -        { MODKEY|ShiftMask,                XK_5,                { tag },                { .i = 4 } }, \
       -        { MODKEY|ControlMask|ShiftMask,        XK_1,                { toggletag },                { .i = 0 } }, \
       -        { MODKEY|ControlMask|ShiftMask,        XK_2,                { toggletag },                { .i = 1 } }, \
       -        { MODKEY|ControlMask|ShiftMask,        XK_3,                { toggletag },                { .i = 2 } }, \
       -        { MODKEY|ControlMask|ShiftMask,        XK_4,                { toggletag },                { .i = 3 } }, \
       -        { MODKEY|ControlMask|ShiftMask,        XK_5,                { toggletag },                { .i = 4 } }, \
       -        { MODKEY|ShiftMask,                XK_c,                { killclient },                { 0 } }, \
       -        { MODKEY,                        XK_space,        { togglemode },                { 0 } }, \
       -        { MODKEY|ShiftMask,                XK_space,        { togglefloat },        { 0 } }, \
       -        { MODKEY,                        XK_0,                { viewall },                { 0 } }, \
       -        { MODKEY,                        XK_1,                { view },                { .i = 0 } }, \
       -        { MODKEY,                        XK_2,                { view },                { .i = 1 } }, \
       -        { MODKEY,                        XK_3,                { view },                { .i = 2 } }, \
       -        { MODKEY,                        XK_4,                { view },                { .i = 3 } }, \
       -        { MODKEY,                        XK_5,                { view },                { .i = 4 } }, \
       -        { MODKEY|ControlMask,                XK_1,                { toggleview },                { .i = 0 } }, \
       -        { MODKEY|ControlMask,                XK_2,                { toggleview },                { .i = 1 } }, \
       -        { MODKEY|ControlMask,                XK_3,                { toggleview },                { .i = 2 } }, \
       -        { MODKEY|ControlMask,                XK_4,                { toggleview },                { .i = 3 } }, \
       -        { MODKEY|ControlMask,                XK_5,                { toggleview },                { .i = 4 } }, \
       -        { MODKEY|ShiftMask,                XK_q,                { quit },                { 0 } }, \
       +        /* modifier                        key                function        argument */ \
       +        { MODKEY|ShiftMask,                XK_Return,        spawn,                { .cmd = "exec xterm" } }, \
       +        { MODKEY,                        XK_Tab,                focusnext,        { 0 } }, \
       +        { MODKEY|ShiftMask,                XK_Tab,                focusprev,        { 0 } }, \
       +        { MODKEY,                        XK_Return,        zoom,                { 0 } }, \
       +        { MODKEY,                        XK_g,                resizemaster,        { .i = 15 } }, \
       +        { MODKEY,                        XK_s,                resizemaster,        { .i = -15 } }, \
       +        { MODKEY|ShiftMask,                XK_1,                tag,                { .i = 0 } }, \
       +        { MODKEY|ShiftMask,                XK_2,                tag,                { .i = 1 } }, \
       +        { MODKEY|ShiftMask,                XK_3,                tag,                { .i = 2 } }, \
       +        { MODKEY|ShiftMask,                XK_4,                tag,                { .i = 3 } }, \
       +        { MODKEY|ShiftMask,                XK_5,                tag,                { .i = 4 } }, \
       +        { MODKEY|ControlMask|ShiftMask,        XK_1,                toggletag,        { .i = 0 } }, \
       +        { MODKEY|ControlMask|ShiftMask,        XK_2,                toggletag,        { .i = 1 } }, \
       +        { MODKEY|ControlMask|ShiftMask,        XK_3,                toggletag,        { .i = 2 } }, \
       +        { MODKEY|ControlMask|ShiftMask,        XK_4,                toggletag,        { .i = 3 } }, \
       +        { MODKEY|ControlMask|ShiftMask,        XK_5,                toggletag,        { .i = 4 } }, \
       +        { MODKEY|ShiftMask,                XK_c,                killclient,        { 0 } }, \
       +        { MODKEY,                        XK_space,        togglemode,        { 0 } }, \
       +        { MODKEY|ShiftMask,                XK_space,        togglefloat,        { 0 } }, \
       +        { MODKEY,                        XK_0,                viewall,        { 0 } }, \
       +        { MODKEY,                        XK_1,                view,                { .i = 0 } }, \
       +        { MODKEY,                        XK_2,                view,                { .i = 1 } }, \
       +        { MODKEY,                        XK_3,                view,                { .i = 2 } }, \
       +        { MODKEY,                        XK_4,                view,                { .i = 3 } }, \
       +        { MODKEY,                        XK_5,                view,                { .i = 4 } }, \
       +        { MODKEY|ControlMask,                XK_1,                toggleview,        { .i = 0 } }, \
       +        { MODKEY|ControlMask,                XK_2,                toggleview,        { .i = 1 } }, \
       +        { MODKEY|ControlMask,                XK_3,                toggleview,        { .i = 2 } }, \
       +        { MODKEY|ControlMask,                XK_4,                toggleview,        { .i = 3 } }, \
       +        { MODKEY|ControlMask,                XK_5,                toggleview,        { .i = 4 } }, \
       +        { MODKEY|ShiftMask,                XK_q,                quit,                { 0 } }, \
        };
        
        /* Query class:instance:title for regex matching info with following command:
   DIR diff --git a/event.c b/event.c
       @@ -11,7 +11,7 @@
        typedef struct {
                unsigned long mod;
                KeySym keysym;
       -        void (*func[NFUNCS])(Arg *arg);
       +        void (*func)(Arg *arg);
                Arg arg;
        } Key;
        
       @@ -245,7 +245,7 @@ expose(XEvent *e) {
        static void
        keypress(XEvent *e) {
                static unsigned int len = sizeof key / sizeof key[0];
       -        unsigned int i, j;
       +        unsigned int i;
                KeySym keysym;
                XKeyEvent *ev = &e->xkey;
        
       @@ -254,9 +254,8 @@ keypress(XEvent *e) {
                        if(keysym == key[i].keysym
                                && CLEANMASK(key[i].mod) == CLEANMASK(ev->state))
                        {
       -                        for(j = 0; j < NFUNCS; j++)
       -                                if(key[i].func[j])
       -                                        key[i].func[j](&key[i].arg);
       +                        if(key[i].func)
       +                                key[i].func(&key[i].arg);
                                return;
                        }
                }