Mercurial > dwm-meillo
comparison wm.c @ 8:7066ff2fe8bc
added key handling
author | Anselm R. Garbe <garbeam@wmii.de> |
---|---|
date | Tue, 11 Jul 2006 11:50:18 +0200 |
parents | 49e2fc9fb94f |
children | d567f430a81d |
comparison
equal
deleted
inserted
replaced
7:49e2fc9fb94f | 8:7066ff2fe8bc |
---|---|
22 Bool running = True; | 22 Bool running = True; |
23 Client *client = NULL; | 23 Client *client = NULL; |
24 | 24 |
25 char *bartext, tag[256]; | 25 char *bartext, tag[256]; |
26 int screen, sel_screen; | 26 int screen, sel_screen; |
27 unsigned int lock_mask, numlock_mask; | |
28 | 27 |
29 /* draw structs */ | 28 /* draw structs */ |
30 Brush brush = {0}; | 29 Brush brush = {0}; |
31 | 30 |
32 enum { WM_PROTOCOL_DELWIN = 1 }; | 31 enum { WM_PROTOCOL_DELWIN = 1 }; |
142 other_wm_running = True; | 141 other_wm_running = True; |
143 return -1; | 142 return -1; |
144 } | 143 } |
145 | 144 |
146 static void | 145 static void |
147 init_lock_keys() | |
148 { | |
149 XModifierKeymap *modmap; | |
150 KeyCode numlock; | |
151 int i; | |
152 static int masks[] = { | |
153 ShiftMask, LockMask, ControlMask, Mod1Mask, | |
154 Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask | |
155 }; | |
156 | |
157 numlock_mask = 0; | |
158 modmap = XGetModifierMapping(dpy); | |
159 numlock = XKeysymToKeycode(dpy, XStringToKeysym("Num_Lock")); | |
160 | |
161 if(modmap && modmap->max_keypermod > 0) { | |
162 int max = (sizeof(masks) / sizeof(int)) * modmap->max_keypermod; | |
163 for(i = 0; i < max; i++) | |
164 if(numlock && (modmap->modifiermap[i] == numlock)) | |
165 numlock_mask = masks[i / modmap->max_keypermod]; | |
166 } | |
167 XFreeModifiermap(modmap); | |
168 | |
169 lock_mask = 255 & ~(numlock_mask | LockMask); | |
170 } | |
171 | |
172 static void | |
173 cleanup() | 146 cleanup() |
174 { | 147 { |
175 /* | 148 /* |
176 Client *c; | 149 Client *c; |
177 for(c=client; c; c=c->next) | 150 for(c=client; c; c=c->next) |
241 /* init cursors */ | 214 /* init cursors */ |
242 cursor[CurNormal] = XCreateFontCursor(dpy, XC_left_ptr); | 215 cursor[CurNormal] = XCreateFontCursor(dpy, XC_left_ptr); |
243 cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing); | 216 cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing); |
244 cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur); | 217 cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur); |
245 | 218 |
246 init_lock_keys(); | 219 update_keys(); |
247 | 220 |
248 brush.drawable = XCreatePixmap(dpy, root, rect.width, rect.height, | 221 brush.drawable = XCreatePixmap(dpy, root, rect.width, rect.height, |
249 DefaultDepth(dpy, screen)); | 222 DefaultDepth(dpy, screen)); |
250 brush.gc = XCreateGC(dpy, root, 0, 0); | 223 brush.gc = XCreateGC(dpy, root, 0, 0); |
251 | 224 |