9menu (1.8-2) 05_morekeys

Summary

 9menu.c |   35 ++++++++++++++++++++++++++++++-----
 1 file changed, 30 insertions(+), 5 deletions(-)

    
download this patch

Patch contents

#!/bin/sh -e
## 05_morekeys.dpatch by Benhard R. Link <brlink@debian.org>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: Add more keys, especially Keypad Enter

if [ $# -ne 1 ]; then
    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
    exit 1
fi

[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
patch_opts="${patch_opts:--f --no-backup-if-mismatch}"

case "$1" in
       -patch) patch $patch_opts -p1 < $0;;
       -unpatch) patch $patch_opts -p1 -R < $0;;
        *)
                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
                exit 1;;
esac

exit 0

@DPATCH@
diff -urNad 9menu-1.8~/9menu.c 9menu-1.8/9menu.c
--- 9menu-1.8~/9menu.c	2009-01-31 14:13:35.000000000 +0100
+++ 9menu-1.8/9menu.c	2009-01-31 14:14:24.000000000 +0100
@@ -124,6 +124,14 @@
 #define CONFIG_MENU_UP_KEY  XK_Up
 #define CONFIG_MENU_DOWN_KEY    XK_Down
 #define CONFIG_MENU_SELECT_KEY  XK_Return
+#define CONFIG_MENU_VI_UP_KEY  XK_k
+#define CONFIG_MENU_VI_DOWN_KEY  XK_j
+#define CONFIG_MENU_EMACS_UP_KEY  XK_p
+#define CONFIG_MENU_EMACS_DOWN_KEY  XK_n
+#define CONFIG_MENU_ALTERNATE_UP_KEY  XK_KP_Up
+#define CONFIG_MENU_ALTERNATE_DOWN_KEY  XK_KP_Down
+#define CONFIG_MENU_ALTERNATE_SELECT_KEY  XK_KP_Enter
+#define CONFIG_MENU_ABORT_KEY XK_Escape
 
 char *progname;		/* my name */
 char *displayname;	/* X display */
@@ -573,13 +581,21 @@
 			key = XKeycodeToKeysym(dpy, ev.xkey.keycode, 0);	
 			if (key != CONFIG_MENU_UP_KEY
 			    && key != CONFIG_MENU_DOWN_KEY
-			    && key != CONFIG_MENU_SELECT_KEY)
+			    && key != CONFIG_MENU_SELECT_KEY
+			    && key != CONFIG_MENU_ALTERNATE_DOWN_KEY
+			    && key != CONFIG_MENU_ALTERNATE_UP_KEY
+			    && key != CONFIG_MENU_ALTERNATE_SELECT_KEY
+			    && key != CONFIG_MENU_EMACS_DOWN_KEY
+			    && key != CONFIG_MENU_EMACS_UP_KEY
+			    && key != CONFIG_MENU_VI_DOWN_KEY
+			    && key != CONFIG_MENU_VI_UP_KEY
+			    && key != CONFIG_MENU_ABORT_KEY)
 				break;
 
-			if (key == CONFIG_MENU_UP_KEY) {
+			if (key == CONFIG_MENU_UP_KEY || key == CONFIG_MENU_EMACS_UP_KEY || key == CONFIG_MENU_VI_UP_KEY || key == CONFIG_MENU_ALTERNATE_UP_KEY) {
 				old = cur;
 				cur--;
-			} else if (key == CONFIG_MENU_DOWN_KEY) {
+			} else if (key == CONFIG_MENU_DOWN_KEY || key == CONFIG_MENU_EMACS_DOWN_KEY || key == CONFIG_MENU_VI_DOWN_KEY || key == CONFIG_MENU_ALTERNATE_DOWN_KEY) {
 				old = cur;
 				cur++;
 			}
@@ -589,7 +605,10 @@
 		
 			cur %= numitems;
 
-			if (key == CONFIG_MENU_UP_KEY || key == CONFIG_MENU_DOWN_KEY) {
+			if (key == CONFIG_MENU_UP_KEY || key == CONFIG_MENU_DOWN_KEY
+			    || key == CONFIG_MENU_EMACS_UP_KEY || key == CONFIG_MENU_EMACS_DOWN_KEY
+			    || key == CONFIG_MENU_VI_UP_KEY || key == CONFIG_MENU_VI_DOWN_KEY
+			    || key == CONFIG_MENU_ALTERNATE_UP_KEY || key == CONFIG_MENU_ALTERNATE_DOWN_KEY) {
 				if (cur == old)
 					break;
 				if (old >= 0 && old < numitems && cur != -1)
@@ -601,7 +620,13 @@
 
 			if (warp)
 				restoremouse();
-			if (key == CONFIG_MENU_SELECT_KEY) {
+			if (key == CONFIG_MENU_ABORT_KEY) {
+				if (commands[cur] != labels[cur]) {
+					spawn(commands[cur]);
+				}
+				return;
+			}
+			if (key == CONFIG_MENU_SELECT_KEY || key == CONFIG_MENU_ALTERNATE_SELECT_KEY) {
 				if (strcmp(labels[cur], "exit") == 0) {
 					if (commands[cur] != labels[cur]) {
 						spawn(commands[cur]);