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,
-Enter and Esc.
+Enter and Esc, and 1-9 keys.
 .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);
-                       } 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;