/* Copyright (c) 2005 Russ Cox, see README for licence details */ #include <stdio.h> #include <stdlib.h> #include <X11/X.h> #include <X11/Xos.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xatom.h> #include <X11/keysym.h> #include <X11/extensions/shape.h> #include "dat.h" #include "fns.h" #include "patchlevel.h" enum { GrabAltTab, GrabAltAny }; /*static int tabcode = 0x17; */ /*static int altcode = 0x40; */ /*static int pgupcode = 0x63; */ /*static int pgdowncode = 0x69; */ static void alttab(int shift); void keysetup(void) { int i; int tabcode = XKeysymToKeycode(dpy, XK_Tab); for(i=0; i<num_screens; i++){ XGrabKey(dpy, tabcode, Mod1Mask, screens[i].root, 0, GrabModeSync, GrabModeAsync); XGrabKey(dpy, tabcode, Mod1Mask|ShiftMask, screens[i].root, 0, GrabModeSync, GrabModeAsync); /* XGrabKey(dpy, pgupcode, Mod1Mask, screens[i].root, 0, GrabModeSync, GrabModeAsync); */ /* XGrabKey(dpy, pgdowncode, Mod1Mask, screens[i].root, 0, GrabModeSync, GrabModeAsync); */ /* XGrabKey(dpy, altcode, 0, screens[i].root, 0, GrabModeSync, GrabModeAsync); */ } } void keypress(XKeyEvent *e) { /* * process key press here */ int tabcode = XKeysymToKeycode(dpy, XK_Tab); if(e->keycode == tabcode && (e->state&Mod1Mask) == (1<<3)) alttab(e->state&ShiftMask); XAllowEvents(dpy, SyncKeyboard, e->time); } void keyrelease(XKeyEvent *e) { XAllowEvents(dpy, SyncKeyboard, e->time); } static void alttab(int shift) { shuffle(shift); /* fprintf(stderr, "%sTab\n", shift ? "Back" : ""); */ }