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