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