Support for 1-9 numbers to select specific item
authorRisingThumb <aaronleonard@risingthumb.xyz>
Tue, 22 Sep 2020 21:31:12 +0000 (22:31 +0100)
committermalod219 <aaronleonard@risingthumb.xyz>
Tue, 22 Sep 2020 21:31:12 +0000 (22:31 +0100)
xmenu.1
xmenu.c

diff --git a/xmenu.1 b/xmenu.1
index 9a0f6a7..30ea36b 100644 (file)
--- a/xmenu.1
+++ b/xmenu.1
@@ -96,7 +96,7 @@ but can also be controlled by the keyboard.
 Items can be selected using the arrow keys,
 Tab (with and without Shift),
 Home, End,
 Items can be selected using the arrow keys,
 Tab (with and without Shift),
 Home, End,
-Enter and Esc.
+Enter and Esc, and 1-9 keys.
 .TP
 .BR Home
 Select the first item in the menu.
 .TP
 .BR Home
 Select the first item in the menu.
diff --git a/xmenu.c b/xmenu.c
index 0cc56ac..e74c3c7 100644 (file)
--- a/xmenu.c
+++ b/xmenu.c
@@ -1280,7 +1280,14 @@ selectitem:
                                item = itemcycle(currmenu, ITEMPREV);
                        } else if (ksym == XK_Tab || ksym == XK_Down || ksym == KSYMDOWN) {
                                item = itemcycle(currmenu, ITEMNEXT);
                                item = itemcycle(currmenu, ITEMPREV);
                        } else if (ksym == XK_Tab || ksym == XK_Down || ksym == KSYMDOWN) {
                                item = itemcycle(currmenu, ITEMNEXT);
-                       } else if ((ksym == XK_Return || ksym == XK_Right || ksym == KSYMRIGHT) &&
+                       } else if (ksym >= XK_1 && ksym <= XK_9){
+                                item = itemcycle(currmenu, ITEMFIRST);
+                                currmenu->selected = item;
+                                for(int i = ksym-XK_1; i > 0; i-=1){
+                                    item = itemcycle(currmenu, ITEMNEXT);
+                                    currmenu->selected = item;
+                                }
+                        } else if ((ksym == XK_Return || ksym == XK_Right || ksym == KSYMRIGHT) &&
                                   currmenu->selected != NULL) {
                                item = currmenu->selected;
                                goto selectitem;
                                   currmenu->selected != NULL) {
                                item = currmenu->selected;
                                goto selectitem;