commit 449e394f9f1d2286d23d108d3b9157bf4ff79113
Author: Quentin Rameau <[email protected]>
Date:   Sun Mar 19 11:28:38 2023 +0100

    dwm: update keycodes patch to 6.4

diff --git a/dwm.suckless.org/patches/keycodes/dwm-keycodes-6.4.patch 
b/dwm.suckless.org/patches/keycodes/dwm-keycodes-6.4.patch
new file mode 100644
index 00000000..cb70faba
--- /dev/null
+++ b/dwm.suckless.org/patches/keycodes/dwm-keycodes-6.4.patch
@@ -0,0 +1,147 @@
+From 081fc7fb9aa2f45df786561bbcbc99adf8509a90 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        | 16 +++++--------
+ 2 files changed, 40 insertions(+), 44 deletions(-)
+
+diff --git a/config.def.h b/config.def.h
+index 061ad66..bba31ed 100644
+--- a/config.def.h
++++ b/config.def.h
+@@ -60,40 +60,40 @@ static const char *dmenucmd[] = { "dmenu_run", "-fn", 
dmenufont, "-nb", col_gray
+ 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 e5efb6a..65b4562 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;
+@@ -957,14 +956,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);
+       }
+ }
+ 
+@@ -991,13 +989,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 03782f6c..fb957d73 100644
--- a/dwm.suckless.org/patches/keycodes/index.md
+++ b/dwm.suckless.org/patches/keycodes/index.md
@@ -6,6 +6,7 @@ xev to adapt config.h)
 
 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)
 


Reply via email to