event.c
changeset 146 f328ce9c558c
parent 145 774754477c35
child 148 5267e1204367
equal deleted inserted replaced
145:774754477c35 146:f328ce9c558c
     6 
     6 
     7 #include <stdlib.h>
     7 #include <stdlib.h>
     8 #include <X11/keysym.h>
     8 #include <X11/keysym.h>
     9 #include <X11/Xatom.h>
     9 #include <X11/Xatom.h>
    10 
    10 
    11 /* CUSTOMIZE */
    11 /* static */
    12 
    12 
    13 typedef struct {
    13 typedef struct {
    14 	unsigned long mod;
    14 	unsigned long mod;
    15 	KeySym keysym;
    15 	KeySym keysym;
    16 	void (*func)(Arg *arg);
    16 	void (*func)(Arg *arg);
    17 	Arg arg;
    17 	Arg arg;
    18 } Key;
    18 } Key;
    19 
    19 
    20 const char *browse[] = { "firefox", NULL };
    20 CMDS
    21 const char *gimp[] = { "gimp", NULL };
    21 KEYS
    22 const char *term[] = { /*"xterm", NULL };*/
    22 
    23 	"urxvt", "-tr", "+sb", "-bg", "black", "-fg", "white", "-cr", "white",
    23 static unsigned int valid_mask =  255 &  ~(NUMLOCKMASK | LockMask);
    24 	"-fn", "-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*", NULL
       
    25 };
       
    26 const char *xlock[] = { "xlock", NULL };
       
    27 
       
    28 static Key key[] = {
       
    29 	/* modifier		key		function	arguments */
       
    30 	{ MODKEY,		XK_0,		view,		{ .i = Tfnord } }, 
       
    31 	{ MODKEY,		XK_1,		view,		{ .i = Tdev } }, 
       
    32 	{ MODKEY,		XK_2,		view,		{ .i = Tnet } }, 
       
    33 	{ MODKEY,		XK_3,		view,		{ .i = Twork } }, 
       
    34 	{ MODKEY,		XK_4,		view,		{ .i = Tmisc} }, 
       
    35 	{ MODKEY,		XK_h,		viewprev,	{ 0 } },
       
    36 	{ MODKEY,		XK_j,		focusnext,	{ 0 } }, 
       
    37 	{ MODKEY,		XK_k,		focusprev,	{ 0 } },
       
    38 	{ MODKEY,		XK_l,		viewnext,	{ 0 } },
       
    39 	{ MODKEY,		XK_m,		togglemax,	{ 0 } }, 
       
    40 	{ MODKEY,		XK_space,	togglemode,	{ 0 } }, 
       
    41 	{ MODKEY,		XK_Return,	zoom,		{ 0 } },
       
    42 	{ MODKEY|ControlMask,	XK_0,		appendtag,	{ .i = Tfnord } }, 
       
    43 	{ MODKEY|ControlMask,	XK_1,		appendtag,	{ .i = Tdev } }, 
       
    44 	{ MODKEY|ControlMask,	XK_2,		appendtag,	{ .i = Tnet } }, 
       
    45 	{ MODKEY|ControlMask,	XK_3,		appendtag,	{ .i = Twork } }, 
       
    46 	{ MODKEY|ControlMask,	XK_4,		appendtag,	{ .i = Tmisc } }, 
       
    47 	{ MODKEY|ShiftMask,	XK_0,		replacetag,	{ .i = Tfnord } }, 
       
    48 	{ MODKEY|ShiftMask,	XK_1,		replacetag,	{ .i = Tdev } }, 
       
    49 	{ MODKEY|ShiftMask,	XK_2,		replacetag,	{ .i = Tnet } }, 
       
    50 	{ MODKEY|ShiftMask,	XK_3,		replacetag,	{ .i = Twork } }, 
       
    51 	{ MODKEY|ShiftMask,	XK_4,		replacetag,	{ .i = Tmisc } }, 
       
    52 	{ MODKEY|ShiftMask,	XK_c,		killclient,	{ 0 } }, 
       
    53 	{ MODKEY|ShiftMask,	XK_q,		quit,		{ 0 } },
       
    54 	{ MODKEY|ShiftMask,	XK_Return,	spawn,		{ .argv = term } },
       
    55 	{ MODKEY|ShiftMask,	XK_g,		spawn,		{ .argv = gimp } },
       
    56 	{ MODKEY|ShiftMask,	XK_l,		spawn,		{ .argv = xlock } },
       
    57 	{ MODKEY|ShiftMask,	XK_w,		spawn,		{ .argv = browse } },
       
    58 };
       
    59 
       
    60 #define NumLockMask Mod2Mask
       
    61 unsigned int valid_mask =  255 &  ~( NumLockMask | LockMask);
       
    62 
       
    63 /* END CUSTOMIZE */
       
    64 
       
    65 /* static */
       
    66 
    24 
    67 static void
    25 static void
    68 movemouse(Client *c)
    26 movemouse(Client *c)
    69 {
    27 {
    70 	int x1, y1, ocx, ocy, di;
    28 	int x1, y1, ocx, ocy, di;
   379 	KeyCode code;
   337 	KeyCode code;
   380 
   338 
   381 	for(i = 0; i < len; i++) {
   339 	for(i = 0; i < len; i++) {
   382 		code = XKeysymToKeycode(dpy, key[i].keysym);
   340 		code = XKeysymToKeycode(dpy, key[i].keysym);
   383 		XUngrabKey(dpy, code, key[i].mod, root);
   341 		XUngrabKey(dpy, code, key[i].mod, root);
   384 		if (NumLockMask)
   342 		XUngrabKey(dpy, code, key[i].mod | NUMLOCKMASK, root);
   385 		{
   343 		XUngrabKey(dpy, code, key[i].mod | NUMLOCKMASK | LockMask, root);
   386 			XUngrabKey(dpy, code, key[i].mod | NumLockMask, root);
       
   387 			XUngrabKey(dpy, code, key[i].mod | NumLockMask | LockMask, root);
       
   388 		}
       
   389 		XGrabKey(dpy, code, key[i].mod, root, True,
   344 		XGrabKey(dpy, code, key[i].mod, root, True,
   390 				GrabModeAsync, GrabModeAsync);
   345 				GrabModeAsync, GrabModeAsync);
   391 		if (NumLockMask)
   346 		XGrabKey(dpy, code, key[i].mod | NUMLOCKMASK, root, True,
   392 		{
   347 				GrabModeAsync, GrabModeAsync);
   393 			XGrabKey(dpy, code, key[i].mod | NumLockMask, root, True,
   348 		XGrabKey(dpy, code, key[i].mod | NUMLOCKMASK | LockMask, root, True,
   394 					GrabModeAsync, GrabModeAsync);
   349 				GrabModeAsync, GrabModeAsync);
   395 			XGrabKey(dpy, code, key[i].mod | NumLockMask | LockMask, root, True,
   350 	}
   396 					GrabModeAsync, GrabModeAsync);
   351 }
   397 		}
       
   398 	}
       
   399 }