dwm-pwkl-5.9.diff - sites - public wiki contents of suckless.org | |
git clone git://git.suckless.org/sites | |
Log | |
Files | |
Refs | |
--- | |
dwm-pwkl-5.9.diff (1384B) | |
--- | |
1 diff -r 406003e3a01f dwm.c | |
2 --- a/dwm.c Mon Sep 27 07:53:44 2010 +0000 | |
3 +++ b/dwm.c Wed Oct 13 21:16:04 2010 +0300 | |
4 @@ -36,6 +36,7 @@ | |
5 #include <X11/Xlib.h> | |
6 #include <X11/Xproto.h> | |
7 #include <X11/Xutil.h> | |
8 +#include <X11/XKBlib.h> | |
9 #ifdef XINERAMA | |
10 #include <X11/extensions/Xinerama.h> | |
11 #endif /* XINERAMA */ | |
12 @@ -93,6 +94,7 @@ | |
13 Client *snext; | |
14 Monitor *mon; | |
15 Window win; | |
16 + unsigned char kbdgrp; | |
17 }; | |
18 | |
19 typedef struct { | |
20 @@ -821,6 +823,7 @@ | |
21 selmon = c->mon; | |
22 if(c->isurgent) | |
23 clearurgent(c); | |
24 + XkbLockGroup (dpy, XkbUseCoreKbd, c->kbdgrp); | |
25 detachstack(c); | |
26 attachstack(c); | |
27 grabbuttons(c, True); | |
28 @@ -1092,6 +1095,7 @@ | |
29 Client *c, *t = NULL; | |
30 Window trans = None; | |
31 XWindowChanges wc; | |
32 + XkbStateRec kbd_state; | |
33 | |
34 if(!(c = malloc(sizeof(Client)))) | |
35 die("fatal: could not malloc() %u bytes\n", sizeof(Clie… | |
36 @@ -1146,6 +1150,8 @@ | |
37 XMapWindow(dpy, c->win); | |
38 setclientstate(c, NormalState); | |
39 arrange(c->mon); | |
40 + XkbGetState (dpy, XkbUseCoreKbd, &kbd_state); | |
41 + c->kbdgrp = kbd_state.group; | |
42 } | |
43 | |
44 void | |
45 @@ -1700,12 +1706,16 @@ | |
46 | |
47 void | |
48 unfocus(Client *c, Bool setfocus) { | |
49 + XkbStateRec kbd_state; | |
50 + | |
51 if(!c) | |
52 return; | |
53 grabbuttons(c, False); | |
54 XSetWindowBorder(dpy, c->win, dc.norm[ColBorder]); | |
55 if(setfocus) | |
56 XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentT… | |
57 + XkbGetState (dpy, XkbUseCoreKbd, &kbd_state); | |
58 + c->kbdgrp = kbd_state.group; | |
59 } | |
60 | |
61 void |