dev.c
changeset 51 035617ee18d1
parent 50 148f25ed0ad7
child 52 d18f6dd0cf23
equal deleted inserted replaced
50:148f25ed0ad7 51:035617ee18d1
    18 };
    18 };
    19 const char *browse[] = { "firefox", NULL };
    19 const char *browse[] = { "firefox", NULL };
    20 const char *xlock[] = { "xlock", NULL };
    20 const char *xlock[] = { "xlock", NULL };
    21 
    21 
    22 static Key key[] = {
    22 static Key key[] = {
    23 	{ Mod1Mask, XK_Return, zoom, { 0 } },
    23 	{ Mod1Mask, XK_Return, spawn, { .argv = term } },
    24 	{ Mod1Mask, XK_t, spawn, { .argv = term } },
       
    25 	{ Mod1Mask, XK_w, spawn, { .argv = browse } },
    24 	{ Mod1Mask, XK_w, spawn, { .argv = browse } },
    26 	{ Mod1Mask, XK_l, spawn, { .argv = xlock } },
    25 	{ Mod1Mask, XK_l, spawn, { .argv = xlock } },
    27 	{ Mod1Mask, XK_k, prevc, { 0 } },
    26 	{ Mod1Mask, XK_k, prevc, { 0 } },
    28 	{ Mod1Mask, XK_j, nextc, { 0 } }, 
    27 	{ Mod1Mask, XK_j, nextc, { 0 } }, 
    29 	{ Mod1Mask, XK_m, max, { 0 } }, 
    28 	{ Mod1Mask, XK_m, max, { 0 } }, 
    31 	{ Mod1Mask, XK_1, view, { .i = Tdev } }, 
    30 	{ Mod1Mask, XK_1, view, { .i = Tdev } }, 
    32 	{ Mod1Mask, XK_2, view, { .i = Tirc } }, 
    31 	{ Mod1Mask, XK_2, view, { .i = Tirc } }, 
    33 	{ Mod1Mask, XK_3, view, { .i = Twww } }, 
    32 	{ Mod1Mask, XK_3, view, { .i = Twww } }, 
    34 	{ Mod1Mask, XK_4, view, { .i = Twork } }, 
    33 	{ Mod1Mask, XK_4, view, { .i = Twork } }, 
    35 	{ Mod1Mask, XK_space, tiling, { 0 } }, 
    34 	{ Mod1Mask, XK_space, tiling, { 0 } }, 
       
    35 	{ Mod1Mask | ShiftMask, XK_Return, zoom, { 0 } },
    36 	{ Mod1Mask | ShiftMask, XK_space, floating, { 0 } }, 
    36 	{ Mod1Mask | ShiftMask, XK_space, floating, { 0 } }, 
    37 	{ Mod1Mask | ShiftMask, XK_0, tag, { .i = Tscratch } }, 
    37 	{ Mod1Mask | ShiftMask, XK_0, tag, { .i = Tscratch } }, 
    38 	{ Mod1Mask | ShiftMask, XK_1, tag, { .i = Tdev } }, 
    38 	{ Mod1Mask | ShiftMask, XK_1, tag, { .i = Tdev } }, 
    39 	{ Mod1Mask | ShiftMask, XK_2, tag, { .i = Tirc } }, 
    39 	{ Mod1Mask | ShiftMask, XK_2, tag, { .i = Tirc } }, 
    40 	{ Mod1Mask | ShiftMask, XK_3, tag, { .i = Twww } }, 
    40 	{ Mod1Mask | ShiftMask, XK_3, tag, { .i = Twww } }, 
    46 /********** CUSTOMIZE **********/
    46 /********** CUSTOMIZE **********/
    47 
    47 
    48 void
    48 void
    49 update_keys(void)
    49 update_keys(void)
    50 {
    50 {
    51 	unsigned int i, len;
    51 	static unsigned int len = key ? sizeof(key) / sizeof(key[0]) : 0;
       
    52 	unsigned int i;
    52 	KeyCode code;
    53 	KeyCode code;
    53 
    54 
    54 	len = sizeof(key) / sizeof(key[0]);
       
    55 	for(i = 0; i < len; i++) {
    55 	for(i = 0; i < len; i++) {
    56 		code = XKeysymToKeycode(dpy, key[i].keysym);
    56 		code = XKeysymToKeycode(dpy, key[i].keysym);
    57 		XUngrabKey(dpy, code, key[i].mod, root);
    57 		XUngrabKey(dpy, code, key[i].mod, root);
    58 		XGrabKey(dpy, code, key[i].mod, root, True, GrabModeAsync, GrabModeAsync);
    58 		XGrabKey(dpy, code, key[i].mod, root, True, GrabModeAsync, GrabModeAsync);
    59 	}
    59 	}
    61 
    61 
    62 void
    62 void
    63 keypress(XEvent *e)
    63 keypress(XEvent *e)
    64 {
    64 {
    65 	XKeyEvent *ev = &e->xkey;
    65 	XKeyEvent *ev = &e->xkey;
    66 	unsigned int i, len;
    66 	static unsigned int len = key ? sizeof(key) / sizeof(key[0]) : 0;
       
    67 	unsigned int i;
    67 	KeySym keysym;
    68 	KeySym keysym;
    68 
    69 
    69 	keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0);
    70 	keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0);
    70 	len = sizeof(key) / sizeof(key[0]);
       
    71 	for(i = 0; i < len; i++)
    71 	for(i = 0; i < len; i++)
    72 		if((keysym == key[i].keysym) && (key[i].mod == ev->state)) {
    72 		if((keysym == key[i].keysym) && (key[i].mod == ev->state)) {
    73 			if(key[i].func)
    73 			if(key[i].func)
    74 				key[i].func(&key[i].arg);
    74 				key[i].func(&key[i].arg);
    75 			return;
    75 			return;