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