Hi,

I update Evgeny's http://dwm.suckless.org/patches/pwkl patch for version
dwm-6.0. Maybe someone will find it usefull.

Best regards,
Petr
diff --git a/dwm.c b/dwm.c
index 1d78655..f42dcd5 100644
--- a/dwm.c
+++ b/dwm.c
@@ -36,6 +36,7 @@
 #include <X11/Xlib.h>
 #include <X11/Xproto.h>
 #include <X11/Xutil.h>
+#include <X11/XKBlib.h>
 #ifdef XINERAMA
 #include <X11/extensions/Xinerama.h>
 #endif /* XINERAMA */
@@ -95,6 +96,7 @@ struct Client {
        Client *snext;
        Monitor *mon;
        Window win;
+       unsigned char kbdgrp;
 };
 
 typedef struct {
@@ -852,6 +854,7 @@ focus(Client *c) {
                        selmon = c->mon;
                if(c->isurgent)
                        clearurgent(c);
+               XkbLockGroup(dpy, XkbUseCoreKbd, c->kbdgrp);
                detachstack(c);
                attachstack(c);
                grabbuttons(c, True);
@@ -1112,6 +1115,7 @@ manage(Window w, XWindowAttributes *wa) {
        Client *c, *t = NULL;
        Window trans = None;
        XWindowChanges wc;
+       XkbStateRec kbd_state;
 
        if(!(c = calloc(1, sizeof(Client))))
                die("fatal: could not malloc() %u bytes\n", sizeof(Client));
@@ -1163,6 +1167,8 @@ manage(Window w, XWindowAttributes *wa) {
                unfocus(selmon->sel, False);
        c->mon->sel = c;
        arrange(c->mon);
+       XkbGetState(dpy, XkbUseCoreKbd, &kbd_state);
+       c->kbdgrp = kbd_state.group;
        XMapWindow(dpy, c->win);
        focus(NULL);
 }
@@ -1773,12 +1779,16 @@ toggleview(const Arg *arg) {
 
 void
 unfocus(Client *c, Bool setfocus) {
+       XkbStateRec kbd_state;
+
        if(!c)
                return;
        grabbuttons(c, False);
        XSetWindowBorder(dpy, c->win, dc.norm[ColBorder]);
        if(setfocus)
                XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
+       XkbGetState(dpy, XkbUseCoreKbd, &kbd_state);
+       c->kbdgrp = kbd_state.group;
 }
 
 void

Reply via email to