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