dwm-setxkbgroup-6.4.diff (1326B)
1 From cbaa365a336355712e3c63a550f903b2cd46ab58 Mon Sep 17 00:00:00 2001 2 From: Anton Yabchinskiy <arn@bestmx.net> 3 Date: Sun, 1 Oct 2023 22:42:59 +0300 4 Subject: [PATCH] Add setxkbgroup() function to be used in keys[] 5 6 --- 7 dwm.c | 17 +++++++++++++++++ 8 1 file changed, 17 insertions(+) 9 10 diff --git a/dwm.c b/dwm.c 11 index e5efb6a2..4a6632f3 100644 12 --- a/dwm.c 13 +++ b/dwm.c 14 @@ -36,6 +36,7 @@ 15 #include <X11/Xlib.h> 16 #include <X11/Xproto.h> 17 #include <X11/Xutil.h> 18 +#include <X11/XKBlib.h> 19 #ifdef XINERAMA 20 #include <X11/extensions/Xinerama.h> 21 #endif /* XINERAMA */ 22 @@ -234,6 +235,7 @@ static int xerror(Display *dpy, XErrorEvent *ee); 23 static int xerrordummy(Display *dpy, XErrorEvent *ee); 24 static int xerrorstart(Display *dpy, XErrorEvent *ee); 25 static void zoom(const Arg *arg); 26 +static void setxkbgroup(const Arg *arg); 27 28 /* variables */ 29 static const char broken[] = "broken"; 30 @@ -2122,6 +2124,21 @@ zoom(const Arg *arg) 31 pop(c); 32 } 33 34 +void 35 +setxkbgroup(const Arg *arg) { 36 + static int hasxkb = -1; 37 + if (hasxkb < 0) { 38 + int major = XkbMajorVersion; 39 + int minor = XkbMinorVersion; 40 + hasxkb = XkbQueryExtension(dpy, NULL, NULL, NULL, &major, &minor); 41 + } 42 + if (hasxkb > 0) { 43 + if (arg != NULL && arg->ui < 4) { 44 + XkbLockGroup(dpy, XkbUseCoreKbd, arg->ui); 45 + } 46 + } 47 +} 48 + 49 int 50 main(int argc, char *argv[]) 51 { 52 -- 53 2.39.2 54