Introduction
Introduction Statistics Contact Development Disclaimer Help
slock-passthrough-20240812-809d3c0.diff - sites - public wiki contents of suckl…
git clone git://git.suckless.org/sites
Log
Files
Refs
---
slock-passthrough-20240812-809d3c0.diff (2918B)
---
1 From 809d3c01cfdc8c5bf7eb37e5d3ade59b0947cab3 Mon Sep 17 00:00:00 2001
2 From: catboomer <[email protected]>
3 Date: Mon, 12 Aug 2024 17:55:30 -0500
4 Subject: [PATCH] [PATCH] passthrough: adds table to config.h to permit c…
5 keys to pass through slock
6
7 ---
8 config.def.h | 15 +++++++++++++++
9 slock.c | 28 +++++++++++++++++++++++++++-
10 2 files changed, 42 insertions(+), 1 deletion(-)
11
12 diff --git a/config.def.h b/config.def.h
13 index 9855e21..5b2ff78 100644
14 --- a/config.def.h
15 +++ b/config.def.h
16 @@ -10,3 +10,18 @@ static const char *colorname[NUMCOLS] = {
17
18 /* treat a cleared input like a wrong password (color) */
19 static const int failonclear = 1;
20 +
21 +#include <X11/XF86keysym.h>
22 +
23 +static const Passthrough passthroughs[] = {
24 + /* Modifier Key */
25 + { 0, XF86XK_AudioRaiseVolume },
26 + { 0, XF86XK_AudioLowerVolume },
27 + { 0, XF86XK_AudioMute },
28 + { 0, XF86XK_AudioPause },
29 + { 0, XF86XK_AudioStop },
30 + { 0, XF86XK_AudioNext },
31 + { 0, XF86XK_AudioPrev },
32 + { 0, XF86XK_MonBrightnessUp },
33 + { 0, XF86XK_MonBrightnessDown },
34 +};
35 diff --git a/slock.c b/slock.c
36 index 5ae738c..522a226 100644
37 --- a/slock.c
38 +++ b/slock.c
39 @@ -22,6 +22,11 @@
40 #include "arg.h"
41 #include "util.h"
42
43 +#include <X11/XF86keysym.h>
44 +#define LENGTH(X) (sizeof X / sizeof X[0])
45 +#define CLEANMASK(mask) (mask & ~(numlockmask|LockMask) & (ShiftMask|Co…
46 +
47 +static unsigned int numlockmask = 0;
48 char *argv0;
49
50 enum {
51 @@ -31,6 +36,11 @@ enum {
52 NUMCOLS
53 };
54
55 +typedef struct {
56 + unsigned int mod;
57 + KeySym keysym;
58 +} Passthrough;
59 +
60 struct lock {
61 int screen;
62 Window root, win;
63 @@ -130,7 +140,7 @@ readpw(Display *dpy, struct xrandr *rr, struct lock …
64 {
65 XRRScreenChangeNotifyEvent *rre;
66 char buf[32], passwd[256], *inputhash;
67 - int num, screen, running, failure, oldc;
68 + int num, screen, running, failure, oldc, i, passing;
69 unsigned int len, color;
70 KeySym ksym;
71 XEvent ev;
72 @@ -156,6 +166,20 @@ readpw(Display *dpy, struct xrandr *rr, struct lock…
73 IsPFKey(ksym) ||
74 IsPrivateKeypadKey(ksym))
75 continue;
76 +
77 + passing = 0;
78 + for (i = 0; i < LENGTH(passthroughs); i++) {
79 + if (ksym == passthroughs[i].keysym &&
80 + CLEANMASK(passthroughs[…
81 + passing = 1;
82 + XSendEvent(dpy, DefaultRootWind…
83 + break;
84 + }
85 + }
86 +
87 + if(passing)
88 + continue;
89 +
90 switch (ksym) {
91 case XK_Return:
92 passwd[len] = '\0';
93 @@ -184,6 +208,8 @@ readpw(Display *dpy, struct xrandr *rr, struct lock …
94 (len + num < sizeof(passwd))) {
95 memcpy(passwd + len, buf, num);
96 len += num;
97 + } else {
98 + continue; /* Don't trigger fail…
99 }
100 break;
101 }
102 --
103 2.46.0
104
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.