const char *xlock[] = { "xlock", NULL };
static Key key[] = {
- { Mod1Mask, XK_Return, (void (*)(void *))spawn, term },
- { Mod1Mask, XK_w, (void (*)(void *))spawn, browse },
- { Mod1Mask, XK_l, (void (*)(void *))spawn, xlock },
- { Mod1Mask, XK_k, sel, "prev" },
- { Mod1Mask, XK_j, sel, "next" },
- { Mod1Mask, XK_t, tiling, NULL },
- { Mod1Mask, XK_f, floating, NULL },
- { Mod1Mask, XK_m, max, NULL },
- { Mod1Mask | ShiftMask, XK_c, ckill, NULL },
- { Mod1Mask | ShiftMask, XK_q, quit, NULL },
+ /* modifier key function arguments */
+ { Mod1Mask, XK_Return, zoom, { 0 } },
+ { Mod1Mask, XK_k, prevc, { 0 } },
+ { Mod1Mask, XK_j, nextc, { 0 } },
+ { Mod1Mask, XK_m, max, { 0 } },
+ { Mod1Mask, XK_0, view, { .i = Tscratch } },
+ { Mod1Mask, XK_1, view, { .i = Tdev } },
+ { Mod1Mask, XK_2, view, { .i = Twww } },
+ { Mod1Mask, XK_3, view, { .i = Twork } },
+ { Mod1Mask, XK_space, tiling, { 0 } },
+ { Mod1Mask|ShiftMask, XK_space, floating, { 0 } },
+ { Mod1Mask|ShiftMask, XK_0, ttrunc, { .i = Tscratch } },
+ { Mod1Mask|ShiftMask, XK_1, ttrunc, { .i = Tdev } },
+ { Mod1Mask|ShiftMask, XK_2, ttrunc, { .i = Twww } },
+ { Mod1Mask|ShiftMask, XK_3, ttrunc, { .i = Twork } },
+ { Mod1Mask|ShiftMask, XK_c, ckill, { 0 } },
+ { Mod1Mask|ShiftMask, XK_q, quit, { 0 } },
+ { Mod1Mask|ShiftMask, XK_Return, spawn, { .argv = term } },
+ { Mod1Mask|ShiftMask, XK_w, spawn, { .argv = browse } },
+ { Mod1Mask|ShiftMask, XK_l, spawn, { .argv = xlock } },
+ { ControlMask, XK_0, tappend, { .i = Tscratch } },
+ { ControlMask, XK_1, tappend, { .i = Tdev } },
+ { ControlMask, XK_2, tappend, { .i = Twww } },
+ { ControlMask, XK_3, tappend, { .i = Twork } },
};
/********** CUSTOMIZE **********/
void
update_keys(void)
{
- unsigned int i, len;
+ static unsigned int len = key ? sizeof(key) / sizeof(key[0]) : 0;
+ unsigned int i;
KeyCode code;
- len = sizeof(key) / sizeof(key[0]);
for(i = 0; i < len; i++) {
code = XKeysymToKeycode(dpy, key[i].keysym);
XUngrabKey(dpy, code, key[i].mod, root);
keypress(XEvent *e)
{
XKeyEvent *ev = &e->xkey;
- unsigned int i, len;
+ static unsigned int len = key ? sizeof(key) / sizeof(key[0]) : 0;
+ unsigned int i;
KeySym keysym;
keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0);
- len = sizeof(key) / sizeof(key[0]);
for(i = 0; i < len; i++)
if((keysym == key[i].keysym) && (key[i].mod == ev->state)) {
if(key[i].func)
- key[i].func(key[i].aux);
+ key[i].func(&key[i].arg);
return;
}
}
c->h = abs(ocy - ev.xmotion.y);
c->x = (ocx <= ev.xmotion.x) ? ocx : ocx - c->w;
c->y = (ocy <= ev.xmotion.y) ? ocy : ocy - c->h;
- resize(c);
+ resize(c, True);
break;
case ButtonRelease:
XUngrabPointer(dpy, CurrentTime);
XFlush(dpy);
c->x = ocx + (ev.xmotion.x - x1);
c->y = ocy + (ev.xmotion.y - y1);
- resize(c);
+ resize(c, False);
break;
case ButtonRelease:
XUngrabPointer(dpy, CurrentTime);