add support for more keypad keys - dmenu - dynamic menu | |
git clone git://git.suckless.org/dmenu | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit cd2133a5f66b42f992a9a1b92bbbce11dc26b941 | |
parent c585e8e498ec6f9c423ab8ea07cf853ee5b05fbe | |
Author: Hiltjo Posthuma <[email protected]> | |
Date: Mon, 9 Aug 2021 18:39:25 +0200 | |
add support for more keypad keys | |
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. | |
Diffstat: | |
M dmenu.c | 11 +++++++++++ | |
1 file changed, 11 insertions(+), 0 deletions(-) | |
--- | |
diff --git 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(); |