add support for more keypad keys
authorHiltjo Posthuma <hiltjo@codemadness.org>
Mon, 9 Aug 2021 16:39:25 +0000 (18:39 +0200)
committerHiltjo Posthuma <hiltjo@codemadness.org>
Mon, 9 Aug 2021 16:39:25 +0000 (18:39 +0200)
The keypad Enter key was already supported. On some keyboard layouts like my
laptop the page-up and page-down key is more comfortable to use.
This adds a few lines but no complexity.

dmenu.c

diff --git a/dmenu.c b/dmenu.c
index 65f25ce576e819421da9320afd7808c730e84ab4..98507d9fa4f391d65914b09e4ae9a979f01bcd2c 100644 (file)
--- a/dmenu.c
+++ b/dmenu.c
@@ -360,9 +360,11 @@ keypress(XKeyEvent *ev)
                                          utf8, utf8, win, CurrentTime);
                        return;
                case XK_Left:
+               case XK_KP_Left:
                        movewordedge(-1);
                        goto draw;
                case XK_Right:
+               case XK_KP_Right:
                        movewordedge(+1);
                        goto draw;
                case XK_Return:
@@ -400,6 +402,7 @@ insert:
                        insert(buf, len);
                break;
        case XK_Delete:
+       case XK_KP_Delete:
                if (text[cursor] == '\0')
                        return;
                cursor = nextrune(+1);
@@ -410,6 +413,7 @@ insert:
                insert(NULL, nextrune(-1) - cursor);
                break;
        case XK_End:
+       case XK_KP_End:
                if (text[cursor] != '\0') {
                        cursor = strlen(text);
                        break;
@@ -429,6 +433,7 @@ insert:
                cleanup();
                exit(1);
        case XK_Home:
+       case XK_KP_Home:
                if (sel == matches) {
                        cursor = 0;
                        break;
@@ -437,6 +442,7 @@ insert:
                calcoffsets();
                break;
        case XK_Left:
+       case XK_KP_Left:
                if (cursor > 0 && (!sel || !sel->left || lines > 0)) {
                        cursor = nextrune(-1);
                        break;
@@ -445,18 +451,21 @@ insert:
                        return;
                /* fallthrough */
        case XK_Up:
+       case XK_KP_Up:
                if (sel && sel->left && (sel = sel->left)->right == curr) {
                        curr = prev;
                        calcoffsets();
                }
                break;
        case XK_Next:
+       case XK_KP_Next:
                if (!next)
                        return;
                sel = curr = next;
                calcoffsets();
                break;
        case XK_Prior:
+       case XK_KP_Prior:
                if (!prev)
                        return;
                sel = curr = prev;
@@ -473,6 +482,7 @@ insert:
                        sel->out = 1;
                break;
        case XK_Right:
+       case XK_KP_Right:
                if (text[cursor] != '\0') {
                        cursor = nextrune(+1);
                        break;
@@ -481,6 +491,7 @@ insert:
                        return;
                /* fallthrough */
        case XK_Down:
+       case XK_KP_Down:
                if (sel && sel->right && (sel = sel->right) == next) {
                        curr = next;
                        calcoffsets();