equal
deleted
inserted
replaced
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 |