Blame


1 0b1c1f41 2005-07-13 devnull /* Copyright (c) 2005 Russ Cox, see README for licence details */
2 0b1c1f41 2005-07-13 devnull #include <stdio.h>
3 0b1c1f41 2005-07-13 devnull #include <stdlib.h>
4 0b1c1f41 2005-07-13 devnull #include <X11/X.h>
5 0b1c1f41 2005-07-13 devnull #include <X11/Xos.h>
6 0b1c1f41 2005-07-13 devnull #include <X11/Xlib.h>
7 0b1c1f41 2005-07-13 devnull #include <X11/Xutil.h>
8 0b1c1f41 2005-07-13 devnull #include <X11/Xatom.h>
9 80c90f27 2010-04-09 rsc #include <X11/keysym.h>
10 0b1c1f41 2005-07-13 devnull #include <X11/extensions/shape.h>
11 0b1c1f41 2005-07-13 devnull #include "dat.h"
12 0b1c1f41 2005-07-13 devnull #include "fns.h"
13 0b1c1f41 2005-07-13 devnull #include "patchlevel.h"
14 0b1c1f41 2005-07-13 devnull
15 0b1c1f41 2005-07-13 devnull enum
16 0b1c1f41 2005-07-13 devnull {
17 0b1c1f41 2005-07-13 devnull GrabAltTab,
18 cbeb0b26 2006-04-01 devnull GrabAltAny
19 0b1c1f41 2005-07-13 devnull };
20 0b1c1f41 2005-07-13 devnull
21 c4da6427 2010-02-19 rsc /*static int tabcode = 0x17; */
22 cbeb0b26 2006-04-01 devnull /*static int altcode = 0x40; */
23 cbeb0b26 2006-04-01 devnull /*static int pgupcode = 0x63; */
24 cbeb0b26 2006-04-01 devnull /*static int pgdowncode = 0x69; */
25 0b1c1f41 2005-07-13 devnull
26 0b1c1f41 2005-07-13 devnull static void alttab(int shift);
27 0b1c1f41 2005-07-13 devnull
28 0b1c1f41 2005-07-13 devnull void
29 0b1c1f41 2005-07-13 devnull keysetup(void)
30 0b1c1f41 2005-07-13 devnull {
31 0b1c1f41 2005-07-13 devnull int i;
32 c4da6427 2010-02-19 rsc int tabcode = XKeysymToKeycode(dpy, XK_Tab);
33 0b1c1f41 2005-07-13 devnull
34 0b1c1f41 2005-07-13 devnull for(i=0; i<num_screens; i++){
35 0b1c1f41 2005-07-13 devnull XGrabKey(dpy, tabcode, Mod1Mask, screens[i].root, 0, GrabModeSync, GrabModeAsync);
36 0b1c1f41 2005-07-13 devnull XGrabKey(dpy, tabcode, Mod1Mask|ShiftMask, screens[i].root, 0, GrabModeSync, GrabModeAsync);
37 cbeb0b26 2006-04-01 devnull /* XGrabKey(dpy, pgupcode, Mod1Mask, screens[i].root, 0, GrabModeSync, GrabModeAsync); */
38 cbeb0b26 2006-04-01 devnull /* XGrabKey(dpy, pgdowncode, Mod1Mask, screens[i].root, 0, GrabModeSync, GrabModeAsync); */
39 cbeb0b26 2006-04-01 devnull /* XGrabKey(dpy, altcode, 0, screens[i].root, 0, GrabModeSync, GrabModeAsync); */
40 0b1c1f41 2005-07-13 devnull }
41 0b1c1f41 2005-07-13 devnull }
42 0b1c1f41 2005-07-13 devnull
43 0b1c1f41 2005-07-13 devnull void
44 0b1c1f41 2005-07-13 devnull keypress(XKeyEvent *e)
45 0b1c1f41 2005-07-13 devnull {
46 0b1c1f41 2005-07-13 devnull /*
47 0b1c1f41 2005-07-13 devnull * process key press here
48 0b1c1f41 2005-07-13 devnull */
49 c4da6427 2010-02-19 rsc int tabcode = XKeysymToKeycode(dpy, XK_Tab);
50 c4da6427 2010-02-19 rsc if(e->keycode == tabcode && (e->state&Mod1Mask) == (1<<3))
51 0b1c1f41 2005-07-13 devnull alttab(e->state&ShiftMask);
52 0b1c1f41 2005-07-13 devnull XAllowEvents(dpy, SyncKeyboard, e->time);
53 0b1c1f41 2005-07-13 devnull }
54 0b1c1f41 2005-07-13 devnull
55 0b1c1f41 2005-07-13 devnull void
56 0b1c1f41 2005-07-13 devnull keyrelease(XKeyEvent *e)
57 0b1c1f41 2005-07-13 devnull {
58 0b1c1f41 2005-07-13 devnull XAllowEvents(dpy, SyncKeyboard, e->time);
59 0b1c1f41 2005-07-13 devnull }
60 0b1c1f41 2005-07-13 devnull
61 0b1c1f41 2005-07-13 devnull static void
62 0b1c1f41 2005-07-13 devnull alttab(int shift)
63 0b1c1f41 2005-07-13 devnull {
64 0b1c1f41 2005-07-13 devnull shuffle(shift);
65 cbeb0b26 2006-04-01 devnull /* fprintf(stderr, "%sTab\n", shift ? "Back" : ""); */
66 0b1c1f41 2005-07-13 devnull }