37 }; |
37 }; |
38 |
38 |
39 /* key definitions */ |
39 /* key definitions */ |
40 #define MODKEY Mod1Mask |
40 #define MODKEY Mod1Mask |
41 #define TAGKEYS(KEY,TAG) \ |
41 #define TAGKEYS(KEY,TAG) \ |
42 { MODKEY, KEY, view, TAG }, \ |
42 { MODKEY, KEY, view, {.ui = 1 << TAG} }, \ |
43 { MODKEY|ControlMask, KEY, toggleview, TAG }, \ |
43 { MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \ |
44 { MODKEY|ShiftMask, KEY, tag, TAG }, \ |
44 { MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \ |
45 { MODKEY|ControlMask|ShiftMask, KEY, toggletag, TAG }, |
45 { MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} }, |
46 |
46 |
47 /* helper for spawning shell commands */ |
47 /* helper for spawning shell commands */ |
48 #define SHCMD(cmd) { .v = (char*[]){ "/bin/sh", "-c", cmd, NULL } } |
48 #define SHCMD(cmd) { .v = (char*[]){ "/bin/sh", "-c", cmd, NULL } } |
49 |
49 |
50 static Key keys[] = { |
50 static Key keys[] = { |
51 /* modifier key function argument */ |
51 /* modifier key function argument */ |
52 { MODKEY, XK_p, spawn, {.v = (char *[]){"dmenu_run", "-fn", FONT, "-nb", NORMBGCOLOR, "-nf", NORMFGCOLOR, "-sb", SELBGCOLOR, "-sf", SELFGCOLOR, NULL}} }, |
52 { MODKEY, XK_p, spawn, {.v = (char *[]){"dmenu_run", "-fn", FONT, "-nb", NORMBGCOLOR, "-nf", NORMFGCOLOR, "-sb", SELBGCOLOR, "-sf", SELFGCOLOR, NULL}} }, |
53 { MODKEY|ShiftMask, XK_Return, spawn, {.v = (char *[]){"uxterm", NULL}} }, |
53 { MODKEY|ShiftMask, XK_Return, spawn, {.v = (char *[]){"uxterm", NULL}} }, |
54 { MODKEY, XK_b, togglebar, {0}}, |
54 { MODKEY, XK_b, togglebar, {0} }, |
55 { MODKEY, XK_j, focusstack, {.i = +1 }}, |
55 { MODKEY, XK_j, focusstack, {.i = +1 } }, |
56 { MODKEY, XK_k, focusstack, {.i = -1 }}, |
56 { MODKEY, XK_k, focusstack, {.i = -1 } }, |
57 { MODKEY, XK_h, setmfact, {.f = -0.05}}, |
57 { MODKEY, XK_h, setmfact, {.f = -0.05} }, |
58 { MODKEY, XK_l, setmfact, {.f = +0.05}}, |
58 { MODKEY, XK_l, setmfact, {.f = +0.05} }, |
59 { MODKEY, XK_m, togglemax, {0}}, |
59 { MODKEY, XK_m, togglemax, {0} }, |
60 { MODKEY, XK_Return, zoom, {0}}, |
60 { MODKEY, XK_Return, zoom, {0} }, |
61 { MODKEY, XK_Tab, view, {0}}, |
61 { MODKEY, XK_Tab, view, {0} }, |
62 { MODKEY|ShiftMask, XK_c, killclient, {0}}, |
62 { MODKEY|ShiftMask, XK_c, killclient, {0} }, |
63 { MODKEY, XK_space, togglelayout, {0}}, |
63 { MODKEY, XK_space, togglelayout, {0} }, |
64 { MODKEY|ShiftMask, XK_space, togglefloating, {0}}, |
64 { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, |
65 { MODKEY, XK_0, view, {.ui = ~0 } }, |
65 { MODKEY, XK_0, view, {.ui = ~0 } }, |
66 { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, |
66 { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, |
67 TAGKEYS( XK_1, {.ui = 1 << 0} ) |
67 TAGKEYS( XK_1, 0) |
68 TAGKEYS( XK_2, {.ui = 1 << 1} ) |
68 TAGKEYS( XK_2, 1) |
69 TAGKEYS( XK_3, {.ui = 1 << 2} ) |
69 TAGKEYS( XK_3, 2) |
70 TAGKEYS( XK_4, {.ui = 1 << 3} ) |
70 TAGKEYS( XK_4, 3) |
71 TAGKEYS( XK_5, {.ui = 1 << 4} ) |
71 TAGKEYS( XK_5, 4) |
72 TAGKEYS( XK_6, {.ui = 1 << 5} ) |
72 TAGKEYS( XK_6, 5) |
73 TAGKEYS( XK_7, {.ui = 1 << 6} ) |
73 TAGKEYS( XK_7, 6) |
74 TAGKEYS( XK_8, {.ui = 1 << 7} ) |
74 TAGKEYS( XK_8, 7) |
75 TAGKEYS( XK_9, {.ui = 1 << 8} ) |
75 TAGKEYS( XK_9, 8) |
76 { MODKEY|ShiftMask, XK_q, quit, {0}}, |
76 { MODKEY|ShiftMask, XK_q, quit, {0} }, |
77 }; |
77 }; |
|
78 |
|
79 /* button definitions */ |
|
80 #define TAGBUTTONS(TAG) \ |
|
81 { TAG, 0, Button1, view, {.ui = 1 << TAG} }, \ |
|
82 { TAG, 0, Button3, toggleview, {.ui = 1 << TAG} }, \ |
|
83 { TAG, MODKEY, Button1, tag, {.ui = 1 << TAG} }, \ |
|
84 { TAG, MODKEY, Button3, toggletag, {.ui = 1 << TAG} }, |
|
85 |
|
86 /* click can be a tag number (starting at 0), |
|
87 * ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */ |
|
88 static Button buttons[] = { |
|
89 /* click event mask button function argument */ |
|
90 { ClkLtSymbol, 0, Button1, togglelayout, {0} }, |
|
91 { ClkLtSymbol, 0, Button3, togglemax, {0} }, |
|
92 { ClkWinTitle, 0, Button1, movemouse, {0} }, |
|
93 { ClkWinTitle, 0, Button2, zoom, {0} }, |
|
94 { ClkWinTitle, 0, Button3, resizemouse, {0} }, |
|
95 { ClkWinTitle, 0, Button4, focusstack, {.i = +1 } }, |
|
96 { ClkWinTitle, 0, Button5, focusstack, {.i = -1 } }, |
|
97 { ClkClientWin, MODKEY, Button1, movemouse, {0} }, |
|
98 { ClkClientWin, MODKEY, Button2, togglefloating, {0} }, |
|
99 { ClkClientWin, MODKEY, Button3, resizemouse, {0} }, |
|
100 { ClkRootWin, Button1Mask, Button3, spawn, {.v = (char *[]){"uxterm", NULL}} }, |
|
101 TAGBUTTONS(0) |
|
102 TAGBUTTONS(1) |
|
103 TAGBUTTONS(2) |
|
104 TAGBUTTONS(3) |
|
105 TAGBUTTONS(4) |
|
106 TAGBUTTONS(5) |
|
107 TAGBUTTONS(6) |
|
108 TAGBUTTONS(7) |
|
109 TAGBUTTONS(8) |
|
110 }; |
|
111 |