commit 3128b729cd7a5f5eecc4da9ec4f00b2b225bec53
Author: Quentin Rameau <[email protected]>
Date:   Sun Mar 19 11:29:43 2023 +0100

    dwm: update keycode patch to a38a8b3

diff --git 
a/dwm.suckless.org/patches/keycodes/dwm-keycodes-20170511-ceac8c9.diff 
b/dwm.suckless.org/patches/keycodes/dwm-keycodes-20170511-ceac8c9.diff
deleted file mode 100644
index 3a046eb1..00000000
--- a/dwm.suckless.org/patches/keycodes/dwm-keycodes-20170511-ceac8c9.diff
+++ /dev/null
@@ -1,134 +0,0 @@
-diff --git a/config.def.h b/config.def.h
-index a9ac303..0568db2 100644
---- a/config.def.h
-+++ b/config.def.h
-@@ -60,40 +60,40 @@ static const char *dmenucmd[] = { "dmenu_run", "-m", 
dmenumon, "-fn", dmenufont,
- static const char *termcmd[]  = { "st", NULL };
- 
- static Key keys[] = {
--      /* modifier                     key        function        argument */
--      { MODKEY,                       XK_p,      spawn,          {.v = 
dmenucmd } },
--      { MODKEY|ShiftMask,             XK_Return, spawn,          {.v = 
termcmd } },
--      { MODKEY,                       XK_b,      togglebar,      {0} },
--      { MODKEY,                       XK_j,      focusstack,     {.i = +1 } },
--      { MODKEY,                       XK_k,      focusstack,     {.i = -1 } },
--      { MODKEY,                       XK_i,      incnmaster,     {.i = +1 } },
--      { MODKEY,                       XK_d,      incnmaster,     {.i = -1 } },
--      { MODKEY,                       XK_h,      setmfact,       {.f = -0.05} 
},
--      { MODKEY,                       XK_l,      setmfact,       {.f = +0.05} 
},
--      { MODKEY,                       XK_Return, zoom,           {0} },
--      { MODKEY,                       XK_Tab,    view,           {0} },
--      { MODKEY|ShiftMask,             XK_c,      killclient,     {0} },
--      { MODKEY,                       XK_t,      setlayout,      {.v = 
&layouts[0]} },
--      { MODKEY,                       XK_f,      setlayout,      {.v = 
&layouts[1]} },
--      { MODKEY,                       XK_m,      setlayout,      {.v = 
&layouts[2]} },
--      { MODKEY,                       XK_space,  setlayout,      {0} },
--      { MODKEY|ShiftMask,             XK_space,  togglefloating, {0} },
--      { MODKEY,                       XK_0,      view,           {.ui = ~0 } 
},
--      { MODKEY|ShiftMask,             XK_0,      tag,            {.ui = ~0 } 
},
--      { MODKEY,                       XK_comma,  focusmon,       {.i = -1 } },
--      { MODKEY,                       XK_period, focusmon,       {.i = +1 } },
--      { MODKEY|ShiftMask,             XK_comma,  tagmon,         {.i = -1 } },
--      { MODKEY|ShiftMask,             XK_period, tagmon,         {.i = +1 } },
--      TAGKEYS(                        XK_1,                      0)
--      TAGKEYS(                        XK_2,                      1)
--      TAGKEYS(                        XK_3,                      2)
--      TAGKEYS(                        XK_4,                      3)
--      TAGKEYS(                        XK_5,                      4)
--      TAGKEYS(                        XK_6,                      5)
--      TAGKEYS(                        XK_7,                      6)
--      TAGKEYS(                        XK_8,                      7)
--      TAGKEYS(                        XK_9,                      8)
--      { MODKEY|ShiftMask,             XK_q,      quit,           {0} },
-+      /* modifier             key    function        argument */
-+      { MODKEY,               33,    spawn,          {.v = dmenucmd } }, // p
-+      { MODKEY|ShiftMask,     36,    spawn,          {.v = termcmd } }, // 
Return
-+      { MODKEY,               56,    togglebar,      {0} },             // b
-+      { MODKEY,               44,    focusstack,     {.i = +1 } },      // j
-+      { MODKEY,               45,    focusstack,     {.i = -1 } },      // k
-+      { MODKEY,               31,    incnmaster,     {.i = +1 } },      // i
-+      { MODKEY,               40,    incnmaster,     {.i = -1 } },      // d
-+      { MODKEY,               43,    setmfact,       {.f = -0.05} },    // h
-+      { MODKEY,               46,    setmfact,       {.f = +0.05} },    // l
-+      { MODKEY,               36,    zoom,           {0} },             // 
Return
-+      { MODKEY,               23,    view,           {0} },             // Tab
-+      { MODKEY|ShiftMask,     54,    killclient,     {0} },             // c
-+      { MODKEY,               28,    setlayout,      {.v = &layouts[0]} }, // 
t
-+      { MODKEY,               41,    setlayout,      {.v = &layouts[1]} }, // 
f
-+      { MODKEY,               58,    setlayout,      {.v = &layouts[2]} }, // 
m
-+      { MODKEY,               65,    setlayout,      {0} },             // 
space
-+      { MODKEY|ShiftMask,     65,    togglefloating, {0} },             // 
space
-+      { MODKEY,               19,    view,           {.ui = ~0 } },     // 0
-+      { MODKEY|ShiftMask,     19,    tag,            {.ui = ~0 } },     // 0
-+      { MODKEY,               59,    focusmon,       {.i = -1 } },      // 
comma
-+      { MODKEY,               60,    focusmon,       {.i = +1 } },      // 
period
-+      { MODKEY|ShiftMask,     59,    tagmon,         {.i = -1 } },      // 
comma
-+      { MODKEY|ShiftMask,     60,    tagmon,         {.i = +1 } },      // 
period
-+      TAGKEYS(                10,                    0)                 // 1
-+      TAGKEYS(                11,                    1)                 // 2
-+      TAGKEYS(                12,                    2)                 // 3
-+      TAGKEYS(                13,                    3)                 // 4
-+      TAGKEYS(                14,                    4)                 // 5
-+      TAGKEYS(                15,                    5)                 // 6
-+      TAGKEYS(                16,                    6)                 // 7
-+      TAGKEYS(                17,                    7)                 // 8
-+      TAGKEYS(                18,                    8)                 // 9
-+      { MODKEY|ShiftMask,     24,    quit,           {0} },             // q
- };
- 
- /* button definitions */
-diff --git a/dwm.c b/dwm.c
-index a5ce993..e0f043e 100644
---- a/dwm.c
-+++ b/dwm.c
-@@ -31,7 +31,6 @@
- #include <sys/types.h>
- #include <sys/wait.h>
- #include <X11/cursorfont.h>
--#include <X11/keysym.h>
- #include <X11/Xatom.h>
- #include <X11/Xlib.h>
- #include <X11/Xproto.h>
-@@ -102,7 +101,7 @@ struct Client {
- 
- typedef struct {
-       unsigned int mod;
--      KeySym keysym;
-+      KeyCode keycode;
-       void (*func)(const Arg *);
-       const Arg arg;
- } Key;
-@@ -954,14 +953,13 @@ grabkeys(void)
-       {
-               unsigned int i, j;
-               unsigned int modifiers[] = { 0, LockMask, numlockmask, 
numlockmask|LockMask };
--              KeyCode code;
- 
-               XUngrabKey(dpy, AnyKey, AnyModifier, root);
-               for (i = 0; i < LENGTH(keys); i++)
--                      if ((code = XKeysymToKeycode(dpy, keys[i].keysym)))
--                              for (j = 0; j < LENGTH(modifiers); j++)
--                                      XGrabKey(dpy, code, keys[i].mod | 
modifiers[j], root,
--                                              True, GrabModeAsync, 
GrabModeAsync);
-+                      for (j = 0; j < LENGTH(modifiers); ++j)
-+                              XGrabKey(dpy, keys[i].keycode,
-+                                       keys[i].mod | modifiers[j], root, True,
-+                                       GrabModeAsync, GrabModeAsync);
-       }
- }
- 
-@@ -988,13 +986,11 @@ void
- keypress(XEvent *e)
- {
-       unsigned int i;
--      KeySym keysym;
-       XKeyEvent *ev;
- 
-       ev = &e->xkey;
--      keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0);
-       for (i = 0; i < LENGTH(keys); i++)
--              if (keysym == keys[i].keysym
-+              if (ev->keycode == keys[i].keycode
-               && CLEANMASK(keys[i].mod) == CLEANMASK(ev->state)
-               && keys[i].func)
-                       keys[i].func(&(keys[i].arg));
diff --git 
a/dwm.suckless.org/patches/keycodes/dwm-keycodes-20230319-a38a8b3.patch 
b/dwm.suckless.org/patches/keycodes/dwm-keycodes-20230319-a38a8b3.patch
new file mode 100644
index 00000000..54a3b1bb
--- /dev/null
+++ b/dwm.suckless.org/patches/keycodes/dwm-keycodes-20230319-a38a8b3.patch
@@ -0,0 +1,161 @@
+From a38a8b3310bd6fb4bb1371a5cad486ac280f773d Mon Sep 17 00:00:00 2001
+From: Quentin Rameau <[email protected]>
+Date: Tue, 10 Apr 2018 13:26:33 +0200
+Subject: [PATCH] Use keycode for keyboard input instead of keysyms
+
+---
+ config.def.h | 68 ++++++++++++++++++++++++++--------------------------
+ dwm.c        | 30 +++++++----------------
+ 2 files changed, 42 insertions(+), 56 deletions(-)
+
+diff --git a/config.def.h b/config.def.h
+index 9efa774..b8ed024 100644
+--- a/config.def.h
++++ b/config.def.h
+@@ -61,40 +61,40 @@ static const char *dmenucmd[] = { "dmenu_run", "-m", 
dmenumon, "-fn", dmenufont,
+ static const char *termcmd[]  = { "st", NULL };
+ 
+ static const Key keys[] = {
+-      /* modifier                     key        function        argument */
+-      { MODKEY,                       XK_p,      spawn,          {.v = 
dmenucmd } },
+-      { MODKEY|ShiftMask,             XK_Return, spawn,          {.v = 
termcmd } },
+-      { MODKEY,                       XK_b,      togglebar,      {0} },
+-      { MODKEY,                       XK_j,      focusstack,     {.i = +1 } },
+-      { MODKEY,                       XK_k,      focusstack,     {.i = -1 } },
+-      { MODKEY,                       XK_i,      incnmaster,     {.i = +1 } },
+-      { MODKEY,                       XK_d,      incnmaster,     {.i = -1 } },
+-      { MODKEY,                       XK_h,      setmfact,       {.f = -0.05} 
},
+-      { MODKEY,                       XK_l,      setmfact,       {.f = +0.05} 
},
+-      { MODKEY,                       XK_Return, zoom,           {0} },
+-      { MODKEY,                       XK_Tab,    view,           {0} },
+-      { MODKEY|ShiftMask,             XK_c,      killclient,     {0} },
+-      { MODKEY,                       XK_t,      setlayout,      {.v = 
&layouts[0]} },
+-      { MODKEY,                       XK_f,      setlayout,      {.v = 
&layouts[1]} },
+-      { MODKEY,                       XK_m,      setlayout,      {.v = 
&layouts[2]} },
+-      { MODKEY,                       XK_space,  setlayout,      {0} },
+-      { MODKEY|ShiftMask,             XK_space,  togglefloating, {0} },
+-      { MODKEY,                       XK_0,      view,           {.ui = ~0 } 
},
+-      { MODKEY|ShiftMask,             XK_0,      tag,            {.ui = ~0 } 
},
+-      { MODKEY,                       XK_comma,  focusmon,       {.i = -1 } },
+-      { MODKEY,                       XK_period, focusmon,       {.i = +1 } },
+-      { MODKEY|ShiftMask,             XK_comma,  tagmon,         {.i = -1 } },
+-      { MODKEY|ShiftMask,             XK_period, tagmon,         {.i = +1 } },
+-      TAGKEYS(                        XK_1,                      0)
+-      TAGKEYS(                        XK_2,                      1)
+-      TAGKEYS(                        XK_3,                      2)
+-      TAGKEYS(                        XK_4,                      3)
+-      TAGKEYS(                        XK_5,                      4)
+-      TAGKEYS(                        XK_6,                      5)
+-      TAGKEYS(                        XK_7,                      6)
+-      TAGKEYS(                        XK_8,                      7)
+-      TAGKEYS(                        XK_9,                      8)
+-      { MODKEY|ShiftMask,             XK_q,      quit,           {0} },
++      /* modifier             key     function        argument */
++      { MODKEY,               33,     spawn,          {.v = dmenucmd } }, // p
++      { MODKEY|ShiftMask,     36,     spawn,          {.v = termcmd } }, // 
Return
++      { MODKEY,               56,     togglebar,      {0} },          // b
++      { MODKEY,               44,     focusstack,     {.i = +1 } },   // j
++      { MODKEY,               45,     focusstack,     {.i = -1 } },   // k
++      { MODKEY,               31,     incnmaster,     {.i = +1 } },   // i
++      { MODKEY,               40,     incnmaster,     {.i = -1 } },   // d
++      { MODKEY,               43,     setmfact,       {.f = -0.05} }, // h
++      { MODKEY,               46,     setmfact,       {.f = +0.05} }, // l
++      { MODKEY,               36,     zoom,           {0} },          // 
Return
++      { MODKEY,               23,     view,           {0} },          // Tab
++      { MODKEY|ShiftMask,     54,     killclient,     {0} },          // c
++      { MODKEY,               28,     setlayout,      {.v = &layouts[0]} }, 
// t
++      { MODKEY,               41,     setlayout,      {.v = &layouts[1]} }, 
// f
++      { MODKEY,               58,     setlayout,      {.v = &layouts[2]} }, 
// m
++      { MODKEY,               65,     setlayout,      {0} },          // space
++      { MODKEY|ShiftMask,     65,     togglefloating, {0} },          // space
++      { MODKEY,               19,     view,           {.ui = ~0 } },  // 0
++      { MODKEY|ShiftMask,     19,     tag,            {.ui = ~0 } },  // 0
++      { MODKEY,               59,     focusmon,       {.i = -1 } },   // comma
++      { MODKEY,               60,     focusmon,       {.i = +1 } },   // 
period
++      { MODKEY|ShiftMask,     59,     tagmon,         {.i = -1 } },   // comma
++      { MODKEY|ShiftMask,     60,     tagmon,         {.i = +1 } },   // 
period
++      TAGKEYS(                10,                     0)              // 1
++      TAGKEYS(                11,                     1)              // 2
++      TAGKEYS(                12,                     2)              // 3
++      TAGKEYS(                13,                     3)              // 4
++      TAGKEYS(                14,                     4)              // 5
++      TAGKEYS(                15,                     5)              // 6
++      TAGKEYS(                16,                     6)              // 7
++      TAGKEYS(                17,                     7)              // 8
++      TAGKEYS(                18,                     8)              // 9
++      { MODKEY|ShiftMask,     24,     quit,           {0} },          // q
+ };
+ 
+ /* button definitions */
+diff --git a/dwm.c b/dwm.c
+index c2bd871..f710729 100644
+--- a/dwm.c
++++ b/dwm.c
+@@ -31,7 +31,6 @@
+ #include <sys/types.h>
+ #include <sys/wait.h>
+ #include <X11/cursorfont.h>
+-#include <X11/keysym.h>
+ #include <X11/Xatom.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xproto.h>
+@@ -101,7 +100,7 @@ struct Client {
+ 
+ typedef struct {
+       unsigned int mod;
+-      KeySym keysym;
++      KeyCode keycode;
+       void (*func)(const Arg *);
+       const Arg arg;
+ } Key;
+@@ -954,26 +953,15 @@ grabkeys(void)
+ {
+       updatenumlockmask();
+       {
+-              unsigned int i, j, k;
++              unsigned int i, j;
+               unsigned int modifiers[] = { 0, LockMask, numlockmask, 
numlockmask|LockMask };
+-              int start, end, skip;
+-              KeySym *syms;
+ 
+               XUngrabKey(dpy, AnyKey, AnyModifier, root);
+-              XDisplayKeycodes(dpy, &start, &end);
+-              syms = XGetKeyboardMapping(dpy, start, end - start + 1, &skip);
+-              if (!syms)
+-                      return;
+-              for (k = start; k <= end; k++)
+-                      for (i = 0; i < LENGTH(keys); i++)
+-                              /* skip modifier codes, we do that ourselves */
+-                              if (keys[i].keysym == syms[(k - start) * skip])
+-                                      for (j = 0; j < LENGTH(modifiers); j++)
+-                                              XGrabKey(dpy, k,
+-                                                       keys[i].mod | 
modifiers[j],
+-                                                       root, True,
+-                                                       GrabModeAsync, 
GrabModeAsync);
+-              XFree(syms);
++              for (i = 0; i < LENGTH(keys); i++)
++                      for (j = 0; j < LENGTH(modifiers); j++)
++                              XGrabKey(dpy, keys[i].keycode,
++                                       keys[i].mod | modifiers[j], root,
++                                       True, GrabModeAsync, GrabModeAsync);
+       }
+ }
+ 
+@@ -1000,13 +988,11 @@ void
+ keypress(XEvent *e)
+ {
+       unsigned int i;
+-      KeySym keysym;
+       XKeyEvent *ev;
+ 
+       ev = &e->xkey;
+-      keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0);
+       for (i = 0; i < LENGTH(keys); i++)
+-              if (keysym == keys[i].keysym
++              if (ev->keycode == keys[i].keycode
+               && CLEANMASK(keys[i].mod) == CLEANMASK(ev->state)
+               && keys[i].func)
+                       keys[i].func(&(keys[i].arg));
+-- 
+2.40.0
+
diff --git a/dwm.suckless.org/patches/keycodes/index.md 
b/dwm.suckless.org/patches/keycodes/index.md
index fb957d73..3c08044e 100644
--- a/dwm.suckless.org/patches/keycodes/index.md
+++ b/dwm.suckless.org/patches/keycodes/index.md
@@ -8,7 +8,7 @@ Download
 --------
 * [dwm-keycodes-6.4.diff](dwm-keycodes-6.4.diff)
 * [dwm-keycodes-6.1.diff](dwm-keycodes-6.1.diff)
-* [dwm-keycodes-20170511-ceac8c9.diff](dwm-keycodes-20170511-ceac8c9.diff)
+* [dwm-keycodes-20230319-a38a8b3.diff](dwm-keycodes-20230319-a38a8b3.diff)
 
 Authors
 -------


Reply via email to