Merge pull request #14 from Malod219/master
[xmenu] / xmenu.c
diff --git a/xmenu.c b/xmenu.c
index 2a8de09..c29c31d 100644 (file)
--- a/xmenu.c
+++ b/xmenu.c
@@ -1272,19 +1272,27 @@ selectitem:
 
                        /* cycle through menu */
                        item = NULL;
 
                        /* cycle through menu */
                        item = NULL;
-                       if (ksym == XK_Home) {
+                       if (ksym == XK_Home || ksym == KSYMFIRST) {
                                item = itemcycle(currmenu, ITEMFIRST);
                                item = itemcycle(currmenu, ITEMFIRST);
-                       } else if (ksym == XK_End) {
+                       } else if (ksym == XK_End || ksym == KSYMLAST) {
                                item = itemcycle(currmenu, ITEMLAST);
                                item = itemcycle(currmenu, ITEMLAST);
-                       } else if (ksym == XK_ISO_Left_Tab || ksym == XK_Up) {
+                       } else if (ksym == XK_ISO_Left_Tab || ksym == XK_Up || ksym == KSYMUP) {
                                item = itemcycle(currmenu, ITEMPREV);
                                item = itemcycle(currmenu, ITEMPREV);
-                       } else if (ksym == XK_Tab || ksym == XK_Down) {
+                       } else if (ksym == XK_Tab || ksym == XK_Down || ksym == KSYMDOWN) {
                                item = itemcycle(currmenu, ITEMNEXT);
                                item = itemcycle(currmenu, ITEMNEXT);
-                       } else if ((ksym == XK_Return || ksym == XK_Right) &&
-                                  currmenu->selected != NULL) {
+                       } else if (ksym >= XK_1 && ksym <= XK_9){
+                               item = itemcycle(currmenu, ITEMFIRST);
+                               for(int i = ksym-XK_1; i > 0; i-=1){
+                                       currmenu->selected = item;
+                                       item = itemcycle(currmenu, ITEMNEXT);
+                                       if (item == itemcycle(currmenu, ITEMLAST))
+                                               break;
+                               }
+                       } else if ((ksym == XK_Return || ksym == XK_Right || ksym == KSYMRIGHT) &&
+                                   currmenu->selected != NULL) {
                                item = currmenu->selected;
                                goto selectitem;
                                item = currmenu->selected;
                                goto selectitem;
-                       } else if ((ksym == XK_Escape || ksym == XK_Left) &&
+                       } else if ((ksym == XK_Escape || ksym == XK_Left || ksym == KSYMLEFT) &&
                                   currmenu->parent != NULL) {
                                item = currmenu->parent->selected;
                                currmenu = currmenu->parent;
                                   currmenu->parent != NULL) {
                                item = currmenu->parent->selected;
                                currmenu = currmenu->parent;