applied Sanders patches (numlock2) 3af64340
arg@10ksloc.org · 2006-08-02 11:13 5 file(s) · +40 −26
config.arg.h +2 −2
3 3
 * See LICENSE file for license details.
4 4
 */
5 5
6 -
enum { Tfnord, Tdev, Tnet, Twork, Tmisc, TLast };
7 6
#define DEFMODE			dotile /* dofloat */
8 -
#define DEFTAG			Tdev
9 7
#define FONT			"-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*"
10 8
#define BGCOLOR			"#0a2c2d"
11 9
#define FGCOLOR			"#ddeeee"
14 12
#define NUMLOCKMASK		Mod2Mask
15 13
#define MASTERW			52 /* percent */
16 14
15 +
enum { Tfnord, Tdev, Tnet, Twork, Tmisc, TLast };
17 16
#define TAGS \
18 17
char *tags[TLast] = { \
19 18
	[Tfnord] = "fnord", \
22 21
	[Twork] = "work", \
23 22
	[Tmisc] = "misc", \
24 23
};
24 +
#define DEFTAG			Tdev
25 25
26 26
#define KEYS \
27 27
	const char *browse[] = { "firefox", NULL }; \
config.h +2 −2
3 3
 * See LICENSE file for license details.
4 4
 */
5 5
6 -
enum { Tfnord, Tdev, Tnet, Twork, Tmisc, TLast };
7 6
#define DEFMODE			dotile /* dofloat */
8 -
#define DEFTAG			Tdev
9 7
#define FONT			"fixed"
10 8
#define BGCOLOR			"#666699"
11 9
#define FGCOLOR			"#eeeeee"
14 12
#define NUMLOCKMASK		Mod2Mask
15 13
#define MASTERW			52 /* percent */
16 14
15 +
enum { Tfnord, Tdev, Tnet, Twork, Tmisc, TLast };
17 16
#define TAGS \
18 17
char *tags[TLast] = { \
19 18
	[Tfnord] = "fnord", \
22 21
	[Twork] = "work", \
23 22
	[Tmisc] = "misc", \
24 23
};
24 +
#define DEFTAG			Tdev
25 25
26 26
#define KEYS \
27 27
	const char *term[] = { "xterm", NULL }; \
config.mk +7 −7
1 -
# Customize to fit your system
1 +
# dwm version
2 +
VERSION = 0.6
3 +
4 +
# Customize below to fit your system
5 +
6 +
# configheader
7 +
CONFIG = config.h
2 8
3 9
# paths
4 10
PREFIX = /usr/local
10 16
# includes and libs
11 17
INCS = -I/usr/lib -I${X11INC}
12 18
LIBS = -L/usr/lib -lc -L${X11LIB} -lX11
13 -
14 -
# dwm version
15 -
VERSION = 0.6
16 -
17 -
# default config.h
18 -
CONFIG = config.h
19 19
20 20
# flags
21 21
CFLAGS = -O3 ${INCS} -DVERSION=\"${VERSION}\" -DCONFIG=\"${CONFIG}\"
dwm.1 +17 −10
38 38
.B master
39 39
column
40 40
.TP
41 -
.B Mod1-k
41 +
.B Mod1-h
42 42
Focus previous
43 -
.B window
43 +
.B tag
44 44
.TP
45 45
.B Mod1-j
46 46
Focus next
47 47
.B window
48 48
.TP
49 +
.B Mod1-k
50 +
Focus previous
51 +
.B window
52 +
.TP
53 +
.B Mod1-l
54 +
Focus next
55 +
.B tag
56 +
.TP
49 57
.B Mod1-m
50 58
Maximize current
51 59
.B window
52 60
.TP
53 61
.B Mod1-[0..n]
54 62
Focus
55 -
.B nth
56 -
tag
63 +
.B nth tag
57 64
.TP
58 65
.B Mod1-space
59 66
Toggle between
65 72
.TP
66 73
.B Mod1-Shift-[0..n]
67 74
Apply
68 -
.B nth
69 -
tag to current
75 +
.B nth tag
76 +
to current
70 77
.B window
71 78
.TP
72 79
.B Mod1-Shift-q
79 86
.TP
80 87
.B Mod1-Control-[0..n]
81 88
Append
82 -
.B nth
83 -
tag to current
89 +
.B nth tag
90 +
to current
84 91
.B window
85 92
.TP
86 93
.B Mod1-Button1
98 105
while dragging
99 106
.SH CUSTOMIZATION
100 107
.B dwm
101 -
is customized through editing config.h of the source code.  This keeps it fast,
102 -
secure and simple.
108 +
is customized by editing the file config.h of the source code.
109 +
This keeps it fast, secure and simple.
event.c +12 −5
19 19
20 20
KEYS
21 21
22 -
static unsigned int valid_mask =  255 &  ~(NUMLOCKMASK | LockMask);
22 +
#define CLEANMASK(mask) (mask & ~(NUMLOCKMASK | LockMask))
23 23
24 24
static void
25 25
movemouse(Client *c)
229 229
	unsigned int i;
230 230
	KeySym keysym;
231 231
	XKeyEvent *ev = &e->xkey;
232 -
	ev->state &= valid_mask;
233 232
234 233
	keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0);
235 234
	for(i = 0; i < len; i++)
236 -
		if((keysym == key[i].keysym) && ((key[i].mod & valid_mask) == ev->state)) {
235 +
		if(keysym == key[i].keysym &&
236 +
				CLEANMASK(key[i].mod) == CLEANMASK(ev->state)) {
237 237
			if(key[i].func)
238 238
				key[i].func(&key[i].arg);
239 239
			return;
335 335
336 336
	for(i = 0; i < len; i++) {
337 337
		code = XKeysymToKeycode(dpy, key[i].keysym);
338 +
		/* normal */
338 339
		XUngrabKey(dpy, code, key[i].mod, root);
339 -
		XUngrabKey(dpy, code, key[i].mod | NUMLOCKMASK, root);
340 -
		XUngrabKey(dpy, code, key[i].mod | NUMLOCKMASK | LockMask, root);
341 340
		XGrabKey(dpy, code, key[i].mod, root, True,
342 341
				GrabModeAsync, GrabModeAsync);
342 +
		/* capslock */
343 +
		XUngrabKey(dpy, code, key[i].mod | LockMask, root);
344 +
		XGrabKey(dpy, code, key[i].mod | LockMask, root, True,
345 +
				GrabModeAsync, GrabModeAsync);
346 +
		/* numlock */
347 +
		XUngrabKey(dpy, code, key[i].mod | NUMLOCKMASK, root);
343 348
		XGrabKey(dpy, code, key[i].mod | NUMLOCKMASK, root, True,
344 349
				GrabModeAsync, GrabModeAsync);
350 +
		/* capslock & numlock */
351 +
		XUngrabKey(dpy, code, key[i].mod | NUMLOCKMASK | LockMask, root);
345 352
		XGrabKey(dpy, code, key[i].mod | NUMLOCKMASK | LockMask, root, True,
346 353
				GrabModeAsync, GrabModeAsync);
347 354
	}