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 } |
|