Introduction
Introduction Statistics Contact Development Disclaimer Help
tabbed-keyrelease-20191216-b5f9ec6.diff - sites - public wiki contents of suckl…
git clone git://git.suckless.org/sites
Log
Files
Refs
---
tabbed-keyrelease-20191216-b5f9ec6.diff (2749B)
---
1 From 6c58b480b7b6ce6a28beafc60a096069fbd51532 Mon Sep 17 00:00:00 2001
2 From: LeelaPakanati <LeelaPakanati.gmail.com>
3 Date: Fri, 13 Dec 2019 16:56:42 -0500
4 Subject: [PATCH] Add function handling at keyrelease
5
6 ---
7 config.def.h | 6 ++++++
8 tabbed.c | 30 +++++++++++++++++++++++++++++-
9 2 files changed, 35 insertions(+), 1 deletion(-)
10
11 diff --git a/config.def.h b/config.def.h
12 index defa426..7bfda30 100644
13 --- a/config.def.h
14 +++ b/config.def.h
15 @@ -64,3 +64,9 @@ static Key keys[] = {
16
17 { 0, XK_F11, fullscreen, { 0 } },
18 };
19 +
20 +static Key keyreleases[] = {
21 + /* modifier key function argument */
22 + { 0, XK_Shift_L, NULL, { 0 } },
23 +
24 +};
25 diff --git a/tabbed.c b/tabbed.c
26 index ff3ada0..fe38b9d 100644
27 --- a/tabbed.c
28 +++ b/tabbed.c
29 @@ -113,6 +113,7 @@ static Bool gettextprop(Window w, Atom atom, char *t…
30 static void initfont(const char *fontstr);
31 static Bool isprotodel(int c);
32 static void keypress(const XEvent *e);
33 +static void keyrelease(const XEvent *e);
34 static void killclient(const Arg *arg);
35 static void manage(Window win);
36 static void maprequest(const XEvent *e);
37 @@ -149,6 +150,7 @@ static void (*handler[LASTEvent]) (const XEvent *) =…
38 [Expose] = expose,
39 [FocusIn] = focusin,
40 [KeyPress] = keypress,
41 + [KeyRelease] = keyrelease,
42 [MapRequest] = maprequest,
43 [PropertyNotify] = propertynotify,
44 };
45 @@ -664,6 +666,22 @@ keypress(const XEvent *e)
46 }
47 }
48
49 +void
50 +keyrelease(const XEvent *e)
51 +{
52 + const XKeyEvent *ev = &e->xkey;
53 + unsigned int i;
54 + KeySym keysym;
55 +
56 + keysym = XkbKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0, 0);
57 + for (i = 0; i < LENGTH(keyreleases); i++) {
58 + if (keysym == keyreleases[i].keysym &&
59 + CLEANMASK(keyreleases[i].mod) == CLEANMASK(ev->stat…
60 + keyreleases[i].func)
61 + keyreleases[i].func(&(keyreleases[i].arg));
62 + }
63 +}
64 +
65 void
66 killclient(const Arg *arg)
67 {
68 @@ -714,6 +732,16 @@ manage(Window w)
69 }
70 }
71
72 + for (i = 0; i < LENGTH(keyreleases); i++) {
73 + if ((code = XKeysymToKeycode(dpy, keyreleases[i…
74 + for (j = 0; j < LENGTH(modifiers); j++)…
75 + XGrabKey(dpy, code, keyreleases…
76 + modifiers[j], w, True,
77 + GrabModeAsync, GrabMod…
78 + }
79 + }
80 + }
81 +
82 c = ecalloc(1, sizeof *c);
83 c->win = w;
84
85 @@ -1036,7 +1064,7 @@ setup(void)
86 XMapRaised(dpy, win);
87 XSelectInput(dpy, win, SubstructureNotifyMask | FocusChangeMask…
88 ButtonPressMask | ExposureMask | KeyPressMask |
89 - PropertyChangeMask | StructureNotifyMask |
90 + KeyReleaseMask | PropertyChangeMask | StructureNot…
91 SubstructureRedirectMask);
92 xerrorxlib = XSetErrorHandler(xerror);
93
94 --
95 2.24.0
96
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.