commit 30fd42c1cea0f7fd50154933a95d1e8ea1f835c1
parent a558b5b0970da906924722ea2df282cbbbca2425
Author: elbachir-one <bachiralfa@gmail.com>
Date: Sat, 18 Jul 2026 00:45:59 +0100
[dwm][patches][keychord] Fixed index.md
Diffstat:
1 file changed, 20 insertions(+), 18 deletions(-)
diff --git a/dwm.suckless.org/patches/keychord/index.md b/dwm.suckless.org/patches/keychord/index.md
@@ -1,31 +1,33 @@
Keychord
-================
+========
Description
-----------
-A patch that change the Key struct to Keychord, letting user map a sequence of key instead of one singular keystroke.
+A patch that change the Key struct to Keychord, letting user map a sequence of
+key instead of one singular keystroke.
*update 01/19/2022:
-change implementation to use array and pointer instead of dynamic heap allocation to minimize crash due heap allocation being too slow.
+change implementation to use array and pointer instead of dynamic heap
+allocation to minimize crash due heap allocation being too slow.
*update 07/19/2023:
-changed grabkeys function to match the changes made in dwm-6.4.
+changed grabkeys function to match the changes made in dwm-6.4.
*update 2026-07-17:
-rebased onto dwm 6.8 and fixed event loss in the chord wait loop. While
-waiting for the next key of a chord, every event that was not a KeyPress was
-discarded. Discarding a ButtonPress that activated the GrabModeSync passive
-grab from grabbuttons() left pointer and keyboard frozen: only buttonpress()'s
-XAllowEvents can release that grab, and the loop cannot exit on its own, because
-the frozen keyboard delivers no further KeyPress. Ordinary input, XTEST and
-xdotool cannot break it; recovery needs a synthetic KeyPress sent with
-XSendEvent event_mask=0 to the _NET_SUPPORTING_WM_CHECK window (event_mask=0
-delivers to the window's creator, bypassing the fact that dwm selects no
-KeyPressMask), followed by a synthetic ButtonPress to make buttonpress() run
-XAllowEvents. Absent such a tool the session is lost. A MapRequest arriving
-mid-chord was dropped the same way, leaving the window unmanaged. Events are now
-dispatched through handler[] as run() does.
-
+rebased onto `dwm` 6.8 and fixed event loss in the chord wait loop. While
+waiting for the next key of a chord, every event that was not a `KeyPress`
+was discarded. Discarding a `ButtonPress` that activated the `GrabModeSync`
+passive grab from `grabbuttons()` left pointer and keyboard frozen: only
+`buttonpress()`'s `XAllowEvents` can release that grab, and the loop cannot
+exit on its own, because the frozen keyboard delivers no further
+`KeyPress`. Ordinary input, `XTEST` and `xdotool` cannot break it; recovery
+needs a synthetic `KeyPress` sent with `XSendEvent event_mask=0` to the
+`_NET_SUPPORTING_WM_CHECK` window (`event_mask=0` delivers to the window's
+creator, bypassing the fact that `dwm` selects no `KeyPressMask`), followed
+by a synthetic `ButtonPress` to make `buttonpress()` run `XAllowEvents`.
+Absent such a tool the session is lost. A `MapRequest` arriving mid-chord
+was dropped the same way, leaving the window unmanaged. Events are now
+dispatched through `handler[]` as `run()` does.
Download
--------