]> Dogcows Code - chaz/openbox/blob - openbox/grab.c
provide functions for grabbing and ungrabbing the keyboard and pointer
[chaz/openbox] / openbox / grab.c
1 #include "openbox.h"
2 #include <glib.h>
3 #include <X11/Xlib.h>
4
5 static guint kgrabs, pgrabs;
6
7 void grab_keyboard(gboolean grab)
8 {
9 if (grab) {
10 if (kgrabs++ == 0)
11 XGrabKeyboard(ob_display, ob_root, 0, GrabModeAsync, GrabModeSync,
12 CurrentTime);
13 } else if (kgrabs > 0) {
14 if (--kgrabs == 0)
15 XUngrabKeyboard(ob_display, CurrentTime);
16 }
17 }
18
19 void grab_pointer(gboolean grab, Cursor cur)
20 {
21 if (grab) {
22 if (pgrabs++ == 0)
23 XGrabPointer(ob_display, ob_root, False, 0, GrabModeAsync,
24 GrabModeSync, FALSE, cur, CurrentTime);
25 } else if (pgrabs > 0) {
26 if (--pgrabs == 0)
27 XUngrabPointer(ob_display, CurrentTime);
28 }
29 }
30
31 void grab_startup()
32 {
33 kgrabs = pgrabs = 0;
34 }
35
36 void grab_shutdown()
37 {
38 while (kgrabs) grab_keyboard(FALSE);
39 while (pgrabs) grab_pointer(FALSE, None);
40 }
This page took 0.034348 seconds and 4 git commands to generate.