diff options
| author | Anselm R Garbe <garbeam@gmail.com> | 2008-08-23 09:26:11 +0100 | 
|---|---|---|
| committer | Anselm R Garbe <garbeam@gmail.com> | 2008-08-23 09:26:11 +0100 | 
| commit | 2b4157eccd649682c200de837193dd0a24129dc7 (patch) | |
| tree | 3b89acf53fa4b7010798fe8766641b91810fe8e4 | |
| parent | 0f26de991f742d548e024a2dadcbfa3a7db8d4b2 (diff) | |
| download | dwm-2b4157eccd649682c200de837193dd0a24129dc7.tar.gz | |
applied Peter Hartlich's initmodmap patch
| -rw-r--r-- | LICENSE | 1 | ||||
| -rw-r--r-- | dwm.c | 31 | 
2 files changed, 19 insertions, 13 deletions
| @@ -7,6 +7,7 @@ MIT/X Consortium License  © 2007 Szabolcs Nagy <nszabolcs at gmail dot com>  © 2007 Christof Musik <christof at sendfax dot de>  © 2007-2008 Enno Gottox Boland <gottox at s01 dot de> +© 2007-2008 Peter Hartlich <sgkkr at hartlich dot com>  © 2008 Martin Hurton <martin dot hurton at gmail dot com>  Permission is hereby granted, free of charge, to any person obtaining a @@ -158,6 +158,7 @@ static Bool gettextprop(Window w, Atom atom, char *text, unsigned int size);  static void grabbuttons(Client *c, Bool focused);  static void grabkeys(void);  static void initfont(const char *fontstr); +static void initmodmap(void);  static Bool isprotodel(Client *c);  static void keypress(XEvent *e);  static void killclient(const Arg *arg); @@ -753,16 +754,6 @@ grabkeys(void) {  	unsigned int i, j;  	unsigned int modifiers[] = { 0, LockMask, numlockmask, numlockmask|LockMask };  	KeyCode code; -	XModifierKeymap *modmap; - -	/* init modifier map */ -	modmap = XGetModifierMapping(dpy); -	for(i = 0; i < 8; i++) -		for(j = 0; j < modmap->max_keypermod; j++) { -			if(modmap->modifiermap[i * modmap->max_keypermod + j] == XKeysymToKeycode(dpy, XK_Num_Lock)) -				numlockmask = (1 << i); -		} -	XFreeModifiermap(modmap);  	XUngrabKey(dpy, AnyKey, AnyModifier, root);  	for(i = 0; i < LENGTH(keys); i++) { @@ -813,6 +804,19 @@ initfont(const char *fontstr) {  	dc.font.height = dc.font.ascent + dc.font.descent;  } +void +initmodmap(void) { +	unsigned int i, j; +	XModifierKeymap *modmap; + +	modmap = XGetModifierMapping(dpy); +	for(i = 0; i < 8; i++) +		for(j = 0; j < modmap->max_keypermod; j++) +			if(modmap->modifiermap[i * modmap->max_keypermod + j] == XKeysymToKeycode(dpy, XK_Num_Lock)) +				numlockmask = (1 << i); +	XFreeModifiermap(modmap); +} +  Bool  isprotodel(Client *c) {  	int i, n; @@ -925,8 +929,10 @@ mappingnotify(XEvent *e) {  	XMappingEvent *ev = &e->xmapping;  	XRefreshKeyboardMapping(ev); -	if(ev->request == MappingKeyboard) +	if(ev->request == MappingKeyboard) { +		initmodmap();  		grabkeys(); +	}  }  void @@ -1373,8 +1379,7 @@ setup(void) {  	XChangeWindowAttributes(dpy, root, CWEventMask|CWCursor, &wa);  	XSelectInput(dpy, root, wa.event_mask); - -	/* grab keys */ +	initmodmap();  	grabkeys();  } | 
