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