dwm-pwkl-6.1.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
dwm-pwkl-6.1.diff (1514B)
---
1 diff --git a/dwm.c b/dwm.c
2 index 0362114..8807f54 100644
3 --- a/dwm.c
4 +++ b/dwm.c
5 @@ -36,6 +36,7 @@
6 #include <X11/Xlib.h>
7 #include <X11/Xproto.h>
8 #include <X11/Xutil.h>
9 +#include <X11/XKBlib.h>
10 #ifdef XINERAMA
11 #include <X11/extensions/Xinerama.h>
12 #endif /* XINERAMA */
13 @@ -97,6 +98,7 @@ struct Client {
14 Client *snext;
15 Monitor *mon;
16 Window win;
17 + unsigned char kbdgrp;
18 };
19
20 typedef struct {
21 @@ -804,6 +806,7 @@ focus(Client *c)
22 selmon = c->mon;
23 if (c->isurgent)
24 clearurgent(c);
25 + XkbLockGroup(dpy, XkbUseCoreKbd, c->kbdgrp);
26 detachstack(c);
27 attachstack(c);
28 grabbuttons(c, 1);
29 @@ -1035,6 +1038,7 @@ manage(Window w, XWindowAttributes *wa)
30 Client *c, *t = NULL;
31 Window trans = None;
32 XWindowChanges wc;
33 + XkbStateRec kbd_state;
34
35 c = ecalloc(1, sizeof(Client));
36 c->win = w;
37 @@ -1085,6 +1089,8 @@ manage(Window w, XWindowAttributes *wa)
38 if (c->mon == selmon)
39 unfocus(selmon->sel, 0);
40 c->mon->sel = c;
41 + XkbGetState(dpy, XkbUseCoreKbd, &kbd_state);
42 + c->kbdgrp = kbd_state.group;
43 arrange(c->mon);
44 XMapWindow(dpy, c->win);
45 focus(NULL);
46 @@ -1742,6 +1748,7 @@ toggleview(const Arg *arg)
47 void
48 unfocus(Client *c, int setfocus)
49 {
50 + XkbStateRec kbd_state;
51 if (!c)
52 return;
53 grabbuttons(c, 0);
54 @@ -1750,6 +1757,8 @@ unfocus(Client *c, int setfocus)
55 XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
56 XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
57 }
58 + XkbGetState(dpy, XkbUseCoreKbd, &kbd_state);
59 + c->kbdgrp = kbd_state.group;
60 }
61
62 void