dwm-pwkl-6.2.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.2.diff (1597B)
---
1 diff --color -up /tmp/dwm-6.2/dwm.c dwm-6.2/dwm.c
2 --- /tmp/dwm-6.2/dwm.c 2019-02-02 14:55:28.000000000 +0200
3 +++ dwm-6.2/dwm.c 2020-12-01 12:20:55.584639058 +0200
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 @@ -97,6 +98,7 @@ struct Client {
13 Client *snext;
14 Monitor *mon;
15 Window win;
16 + unsigned char kbdgrp;
17 };
18
19 typedef struct {
20 @@ -792,6 +794,7 @@ focus(Client *c)
21 selmon = c->mon;
22 if (c->isurgent)
23 seturgent(c, 0);
24 + XkbLockGroup(dpy, XkbUseCoreKbd, c->kbdgrp);
25 detachstack(c);
26 attachstack(c);
27 grabbuttons(c, 1);
28 @@ -1020,6 +1023,7 @@ manage(Window w, XWindowAttributes *wa)
29 Client *c, *t = NULL;
30 Window trans = None;
31 XWindowChanges wc;
32 + XkbStateRec kbd_state;
33
34 c = ecalloc(1, sizeof(Client));
35 c->win = w;
36 @@ -1071,6 +1075,8 @@ manage(Window w, XWindowAttributes *wa)
37 if (c->mon == selmon)
38 unfocus(selmon->sel, 0);
39 c->mon->sel = c;
40 + XkbGetState(dpy, XkbUseCoreKbd, &kbd_state);
41 + c->kbdgrp = kbd_state.group;
42 arrange(c->mon);
43 XMapWindow(dpy, c->win);
44 focus(NULL);
45 @@ -1749,6 +1755,7 @@ toggleview(const Arg *arg)
46 void
47 unfocus(Client *c, int setfocus)
48 {
49 + XkbStateRec kbd_state;
50 if (!c)
51 return;
52 grabbuttons(c, 0);
53 @@ -1757,6 +1764,8 @@ unfocus(Client *c, int setfocus)
54 XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
55 XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
56 }
57 + XkbGetState(dpy, XkbUseCoreKbd, &kbd_state);
58 + c->kbdgrp = kbd_state.group;
59 }
60
61 void