X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=event.c;h=0f0382371f9ed65584fecbd2d689a511a3530ae3;hb=11737233a7ce6bc656bc7bc061c68eeda824ee9b;hp=9d693733249eb165526b8f7c50fa5294e1155885;hpb=c53980cddcee8afd13ea793134ed3ddf5dbef0e3;p=dwm.git diff --git a/event.c b/event.c index 9d69373..0f03823 100644 --- a/event.c +++ b/event.c @@ -12,6 +12,14 @@ #define MouseMask (ButtonMask | PointerMotionMask) /* CUSTOMIZE */ + +typedef struct { + unsigned long mod; + KeySym keysym; + void (*func)(Arg *arg); + Arg arg; +} Key; + const char *browse[] = { "firefox", NULL }; const char *gimp[] = { "gimp", NULL }; const char *term[] = { @@ -20,36 +28,36 @@ const char *term[] = { }; const char *xlock[] = { "xlock", NULL }; -Key key[] = { +static Key key[] = { /* modifier key function arguments */ { ControlMask, XK_0, appendtag, { .i = Tscratch } }, { ControlMask, XK_1, appendtag, { .i = Tdev } }, { ControlMask, XK_2, appendtag, { .i = Twww } }, { ControlMask, XK_3, appendtag, { .i = Twork } }, - { 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_j, focusnext, { 0 } }, - { Mod1Mask, XK_k, focusprev, { 0 } }, - { Mod1Mask, XK_m, maximize, { 0 } }, - { Mod1Mask, XK_space, dotile, { 0 } }, - { Mod1Mask, XK_Return, zoom, { 0 } }, + { MODKEY, XK_0, view, { .i = Tscratch } }, + { MODKEY, XK_1, view, { .i = Tdev } }, + { MODKEY, XK_2, view, { .i = Twww } }, + { MODKEY, XK_3, view, { .i = Twork } }, + { MODKEY, XK_j, focusnext, { 0 } }, + { MODKEY, XK_k, focusprev, { 0 } }, + { MODKEY, XK_m, maximize, { 0 } }, + { MODKEY, XK_space, dotile, { 0 } }, + { MODKEY, XK_Return, zoom, { 0 } }, { ControlMask|ShiftMask,XK_0, heretag, { .i = Tscratch } }, { ControlMask|ShiftMask,XK_1, heretag, { .i = Tdev } }, { ControlMask|ShiftMask,XK_2, heretag, { .i = Twww } }, { ControlMask|ShiftMask,XK_3, heretag, { .i = Twork } }, - { Mod1Mask|ShiftMask, XK_0, replacetag, { .i = Tscratch } }, - { Mod1Mask|ShiftMask, XK_1, replacetag, { .i = Tdev } }, - { Mod1Mask|ShiftMask, XK_2, replacetag, { .i = Twww } }, - { Mod1Mask|ShiftMask, XK_3, replacetag, { .i = Twork } }, - { Mod1Mask|ShiftMask, XK_c, killclient, { 0 } }, - { Mod1Mask|ShiftMask, XK_g, spawn, { .argv = gimp } }, - { Mod1Mask|ShiftMask, XK_l, spawn, { .argv = xlock } }, - { Mod1Mask|ShiftMask, XK_q, quit, { 0 } }, - { Mod1Mask|ShiftMask, XK_space, dofloat, { 0 } }, - { Mod1Mask|ShiftMask, XK_w, spawn, { .argv = browse } }, - { Mod1Mask|ShiftMask, XK_Return, spawn, { .argv = term } }, + { MODKEY|ShiftMask, XK_0, replacetag, { .i = Tscratch } }, + { MODKEY|ShiftMask, XK_1, replacetag, { .i = Tdev } }, + { MODKEY|ShiftMask, XK_2, replacetag, { .i = Twww } }, + { MODKEY|ShiftMask, XK_3, replacetag, { .i = Twork } }, + { MODKEY|ShiftMask, XK_c, killclient, { 0 } }, + { MODKEY|ShiftMask, XK_g, spawn, { .argv = gimp } }, + { MODKEY|ShiftMask, XK_l, spawn, { .argv = xlock } }, + { MODKEY|ShiftMask, XK_q, quit, { 0 } }, + { MODKEY|ShiftMask, XK_space, dofloat, { 0 } }, + { MODKEY|ShiftMask, XK_w, spawn, { .argv = browse } }, + { MODKEY|ShiftMask, XK_Return, spawn, { .argv = term } }, }; /* static */ @@ -62,8 +70,8 @@ movemouse(Client *c) unsigned int dui; Window dummy; - ocx = *c->x; - ocy = *c->y; + ocx = c->x; + ocy = c->y; if(XGrabPointer(dpy, root, False, MouseMask, GrabModeAsync, GrabModeAsync, None, cursor[CurMove], CurrentTime) != GrabSuccess) return; @@ -77,8 +85,8 @@ movemouse(Client *c) break; case MotionNotify: XSync(dpy, False); - *c->x = ocx + (ev.xmotion.x - x1); - *c->y = ocy + (ev.xmotion.y - y1); + c->x = ocx + (ev.xmotion.x - x1); + c->y = ocy + (ev.xmotion.y - y1); resize(c, False, TopLeft); break; case ButtonRelease: @@ -95,12 +103,12 @@ resizemouse(Client *c) int ocx, ocy; Corner sticky; - ocx = *c->x; - ocy = *c->y; + ocx = c->x; + ocy = c->y; if(XGrabPointer(dpy, root, False, MouseMask, GrabModeAsync, GrabModeAsync, None, cursor[CurResize], CurrentTime) != GrabSuccess) return; - XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, *c->w, *c->h); + XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w, c->h); for(;;) { XMaskEvent(dpy, MouseMask | ExposureMask, &ev); switch(ev.type) { @@ -110,21 +118,14 @@ resizemouse(Client *c) break; case MotionNotify: XSync(dpy, False); - *c->w = abs(ocx - ev.xmotion.x); - *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; - if(ocx <= ev.xmotion.x) { - if(ocy <= ev.xmotion.y) - sticky = TopLeft; - else - sticky = BottomLeft; - } else { - if(ocy <= ev.xmotion.y) - sticky = TopRight; - else - sticky = BottomRight; - } + c->w = abs(ocx - ev.xmotion.x); + 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; + if(ocx <= ev.xmotion.x) + sticky = (ocy <= ev.xmotion.y) ? TopLeft : BotLeft; + else + sticky = (ocy <= ev.xmotion.y) ? TopRight : BotRight; resize(c, True, sticky); break; case ButtonRelease: @@ -202,13 +203,13 @@ configurerequest(XEvent *e) if((c = getclient(ev->window))) { gravitate(c, True); if(ev->value_mask & CWX) - *c->x = ev->x; + c->x = ev->x; if(ev->value_mask & CWY) - *c->y = ev->y; + c->y = ev->y; if(ev->value_mask & CWWidth) - *c->w = ev->width; + c->w = ev->width; if(ev->value_mask & CWHeight) - *c->h = ev->height; + c->h = ev->height; if(ev->value_mask & CWBorderWidth) c->border = 1; gravitate(c, False);