diff options
Diffstat (limited to 'dwl-patches/stale-patches/togglekblayout/togglekblayout.patch')
-rw-r--r-- | dwl-patches/stale-patches/togglekblayout/togglekblayout.patch | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/dwl-patches/stale-patches/togglekblayout/togglekblayout.patch b/dwl-patches/stale-patches/togglekblayout/togglekblayout.patch new file mode 100644 index 0000000..4ef802a --- /dev/null +++ b/dwl-patches/stale-patches/togglekblayout/togglekblayout.patch @@ -0,0 +1,107 @@ +From 1bb99c78da484ce6036dc997962ed2f4c0d11208 Mon Sep 17 00:00:00 2001 +From: wochap <gean.marroquin@gmail.com> +Date: Thu, 19 Oct 2023 23:21:49 -0500 +Subject: [PATCH 1/2] apply main...Stivvo:toggleKbLayout.patch + +--- + config.def.h | 6 ++++++ + dwl.c | 20 ++++++++++++++++++++ + 2 files changed, 26 insertions(+) + +diff --git a/config.def.h b/config.def.h +index db0babc..caa09ea 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -57,6 +57,11 @@ static const struct xkb_rule_names xkb_rules = { + static const int repeat_rate = 25; + static const int repeat_delay = 600; + ++/* gb will be set the first time togglekblayout is called, then us.. it is ++ * recommended to set the same layout in position 0 of kblayouts and in ++ * xkb_rules */ ++static const char *kblayouts[] = {"us", "gb"}; ++ + /* Trackpad */ + static const int tap_to_click = 1; + static const int tap_and_drag = 1; +@@ -141,6 +146,7 @@ static const Key keys[] = { + { MODKEY, XKB_KEY_period, focusmon, {.i = WLR_DIRECTION_RIGHT} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_less, tagmon, {.i = WLR_DIRECTION_LEFT} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_greater, tagmon, {.i = WLR_DIRECTION_RIGHT} }, ++ { MODKEY, XKB_KEY_w, togglekblayout, {0} }, + TAGKEYS( XKB_KEY_1, XKB_KEY_exclam, 0), + TAGKEYS( XKB_KEY_2, XKB_KEY_at, 1), + TAGKEYS( XKB_KEY_3, XKB_KEY_numbersign, 2), +diff --git a/dwl.c b/dwl.c +index ef27a1d..25458e6 100644 +--- a/dwl.c ++++ b/dwl.c +@@ -312,6 +312,7 @@ static void tag(const Arg *arg); + static void tagmon(const Arg *arg); + static void tile(Monitor *m); + static void togglefloating(const Arg *arg); ++static void togglekblayout(const Arg *arg); + static void togglefullscreen(const Arg *arg); + static void toggletag(const Arg *arg); + static void toggleview(const Arg *arg); +@@ -368,6 +369,7 @@ static struct wl_listener lock_listener = {.notify = locksession}; + + static struct wlr_seat *seat; + static struct wl_list keyboards; ++static unsigned int kblayout = 0; /* index of kblayouts */ + static unsigned int cursor_mode; + static Client *grabc; + static int grabcx, grabcy; /* client-relative */ +@@ -2454,6 +2456,24 @@ togglefullscreen(const Arg *arg) + setfullscreen(sel, !sel->isfullscreen); + } + ++void ++togglekblayout(const Arg *arg) ++{ ++ Keyboard *kb; ++ struct xkb_rule_names newrule = xkb_rules; ++ ++ kblayout = (kblayout + 1) % LENGTH(kblayouts); ++ newrule.layout = kblayouts[kblayout]; ++ wl_list_for_each(kb, &keyboards, link) { ++ struct xkb_context *context = xkb_context_new(XKB_CONTEXT_NO_FLAGS); ++ struct xkb_keymap *keymap = xkb_map_new_from_names(context, &newrule, ++ XKB_KEYMAP_COMPILE_NO_FLAGS); ++ wlr_keyboard_set_keymap(kb->device->keyboard, keymap); ++ xkb_keymap_unref(keymap); ++ xkb_context_unref(context); ++ } ++} ++ + void + toggletag(const Arg *arg) + { +-- +2.42.0 + + +From 3428168a686e2da8ba8a9dc1473350610afaef19 Mon Sep 17 00:00:00 2001 +From: wochap <gean.marroquin@gmail.com> +Date: Thu, 19 Oct 2023 23:46:06 -0500 +Subject: [PATCH 2/2] fix build + +--- + dwl.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dwl.c b/dwl.c +index 25458e6..090280f 100644 +--- a/dwl.c ++++ b/dwl.c +@@ -2468,7 +2468,7 @@ togglekblayout(const Arg *arg) + struct xkb_context *context = xkb_context_new(XKB_CONTEXT_NO_FLAGS); + struct xkb_keymap *keymap = xkb_map_new_from_names(context, &newrule, + XKB_KEYMAP_COMPILE_NO_FLAGS); +- wlr_keyboard_set_keymap(kb->device->keyboard, keymap); ++ wlr_keyboard_set_keymap(kb->wlr_keyboard, keymap); + xkb_keymap_unref(keymap); + xkb_context_unref(context); + } +-- +2.42.0 |