SMOLNET PORTAL home about changes
iKeyboard navigation - thingmenu - A simple graphical menu launcher for X11.	Err	bitreich.org	70
hgit clone git://bitreich.org/thingmenu	URL:git://bitreich.org/thingmenu	bitreich.org	70
1Log	/scm/thingmenu/log.gph	bitreich.org	70
1Files	/scm/thingmenu/files.gph	bitreich.org	70
1Refs	/scm/thingmenu/refs.gph	bitreich.org	70
1Tags	/scm/thingmenu/tag	bitreich.org	70
1LICENSE	/scm/thingmenu/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit 2c8bfd20bd0a5f65d9b513083210049701420ad6	/scm/thingmenu/commit/2c8bfd20bd0a5f65d9b513083210049701420ad6.gph	bitreich.org	70
1parent 3cf543dfa6b3f04acdead19043cb862e12ad3396	/scm/thingmenu/commit/3cf543dfa6b3f04acdead19043cb862e12ad3396.gph	bitreich.org	70
hAuthor: Stephen Paul Weber <singpolyma@singpolyma.net>	URL:mailto:singpolyma@singpolyma.net	bitreich.org	70
iDate:   Tue,  1 Nov 2011 13:10:47 -0500	Err	bitreich.org	70
i	Err	bitreich.org	70
iKeyboard navigation	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M thingmenu.c                         |      57 +++++++++++++++++++++++++++++--	Err	bitreich.org	70
i	Err	bitreich.org	70
i1 file changed, 54 insertions(+), 3 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/thingmenu.c b/thingmenu.c	/scm/thingmenu/file/thingmenu.c.gph	bitreich.org	70
i@@ -56,6 +56,7 @@ typedef struct {	Err	bitreich.org	70
i 	Err	bitreich.org	70
i /* function declarations */	Err	bitreich.org	70
i static void motionnotify(XEvent *e);	Err	bitreich.org	70
i+static void keyrelease(XEvent *e);	Err	bitreich.org	70
i static void buttonpress(XEvent *e);	Err	bitreich.org	70
i static void buttonrelease(XEvent *e);	Err	bitreich.org	70
i static void cleanup(void);	Err	bitreich.org	70
i@@ -79,6 +80,7 @@ static void updateentries(void);	Err	bitreich.org	70
i /* variables */	Err	bitreich.org	70
i static int screen;	Err	bitreich.org	70
i static void (*handler[LASTEvent]) (XEvent *) = {	Err	bitreich.org	70
i+        [KeyRelease] = keyrelease,	Err	bitreich.org	70
i         [ButtonPress] = buttonpress,	Err	bitreich.org	70
i         [ButtonRelease] = buttonrelease,	Err	bitreich.org	70
i         [ConfigureNotify] = configurenotify,	Err	bitreich.org	70
i@@ -140,6 +142,55 @@ motionnotify(XEvent *e)	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void	Err	bitreich.org	70
i+keyrelease(XEvent *e)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        int i;	Err	bitreich.org	70
i+        XKeyEvent *xkey = &e->xkey;	Err	bitreich.org	70
i+        KeySym key = XLookupKeysym(xkey, 0);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        /* Find highlighted entry */	Err	bitreich.org	70
i+        for (i = 0; i < nentries && !entries[i]->highlighted; i++);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        switch (key) {	Err	bitreich.org	70
i+        case XK_k:	Err	bitreich.org	70
i+                key = XK_Up;	Err	bitreich.org	70
i+        case XK_j:	Err	bitreich.org	70
i+                if(key == XK_j)	Err	bitreich.org	70
i+                        key = XK_Down;	Err	bitreich.org	70
i+        case XK_Up:	Err	bitreich.org	70
i+        case XK_Down:	Err	bitreich.org	70
i+                if (i < nentries) {	Err	bitreich.org	70
i+                        entries[i]->highlighted = False;	Err	bitreich.org	70
i+                        drawentry(entries[i]);	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                if (key == XK_Up) {	Err	bitreich.org	70
i+                        i = ((i - 1) + nentries) % nentries;	Err	bitreich.org	70
i+                } else if(key == XK_Down) {	Err	bitreich.org	70
i+                        if (i < nentries) {	Err	bitreich.org	70
i+                                i = (i + 1) % nentries;	Err	bitreich.org	70
i+                        } else {	Err	bitreich.org	70
i+                                i = 0;	Err	bitreich.org	70
i+                        }	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                entries[i]->highlighted = True;	Err	bitreich.org	70
i+                drawentry(entries[i]);	Err	bitreich.org	70
i+                break;	Err	bitreich.org	70
i+        case XK_Return:	Err	bitreich.org	70
i+        case XK_space:	Err	bitreich.org	70
i+                if (i < nentries) {	Err	bitreich.org	70
i+                        press(entries[i]);	Err	bitreich.org	70
i+                        unpress(entries[i]);	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i+                break;	Err	bitreich.org	70
i+        case XK_Escape:	Err	bitreich.org	70
i+                running = False;	Err	bitreich.org	70
i+                break;	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+void	Err	bitreich.org	70
i buttonpress(XEvent *e)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         XButtonPressedEvent *ev = &e->xbutton;	Err	bitreich.org	70
i@@ -431,9 +482,9 @@ setup(void)	Err	bitreich.org	70
i         win = XCreateWindow(dpy, root, wx, wy, ww, wh, 0,	Err	bitreich.org	70
i                             CopyFromParent, CopyFromParent, CopyFromParent,	Err	bitreich.org	70
i                             CWOverrideRedirect | CWBorderPixel | CWBackingPixel, &wa);	Err	bitreich.org	70
i-        XSelectInput(dpy, win, StructureNotifyMask|ButtonReleaseMask|	Err	bitreich.org	70
i-                        ButtonPressMask|ExposureMask|LeaveWindowMask|	Err	bitreich.org	70
i-                        PointerMotionMask);	Err	bitreich.org	70
i+        XSelectInput(dpy, win, StructureNotifyMask|KeyReleaseMask|	Err	bitreich.org	70
i+                               ButtonReleaseMask|ButtonPressMask|	Err	bitreich.org	70
i+                               ExposureMask|LeaveWindowMask|PointerMotionMask);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         sizeh = XAllocSizeHints();	Err	bitreich.org	70
i         sizeh->flags = PMaxSize | PMinSize;	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/thingmenu/commit/2c8bfd20bd0a...
Content-Typetext/plain; charset=utf-8