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