now user can set custom key bindings in config.h

This commit is contained in:
phillbush 2020-09-16 22:06:12 -03:00
parent 006c94ce9c
commit 7b166488b1
2 changed files with 31 additions and 6 deletions

View File

@ -32,3 +32,28 @@ static struct Config config = {
/* area around the icon, the triangle and the separator */ /* area around the icon, the triangle and the separator */
.horzpadding = 8, .horzpadding = 8,
}; };
/*
* KEYBINDINGS
*
* Look at your /usr/include/X11/keysymdef.h (or the equivalent file
* in your system) for a list of key symbol constants, and change the
* macros below accordingly. Note there IS NO equal sign (=) between
* the macros and their values. All key symbol constants begin with
* the prefix XK_
*
* For example, to use vim-like key bindings, set KEYSYMLEFT to XK_h,
* KEYSYMDOWN to XK_j, KEYSYMUP to XK_k, etc.
*
* Note that the regular keys like ArrowUp, ArrowDown, Tab, Home, etc
* will ALWAYS work, so you do not need to set them.
*
* If you do not want to set a key binding, keep it with the value of
* XK_VoidSymbol
*/
#define KSYMFIRST XK_VoidSymbol /* select first item */
#define KSYMLAST XK_VoidSymbol /* select last item */
#define KSYMUP XK_VoidSymbol /* select previous item */
#define KSYMDOWN XK_VoidSymbol /* select next item */
#define KSYMLEFT XK_VoidSymbol /* close current menu */
#define KSYMRIGHT XK_VoidSymbol /* enter selected item */

12
xmenu.c
View File

@ -1272,19 +1272,19 @@ selectitem:
/* cycle through menu */ /* cycle through menu */
item = NULL; 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) && } else if ((ksym == XK_Return || ksym == XK_Right || ksym == KSYMRIGHT) &&
currmenu->selected != NULL) { currmenu->selected != NULL) {
item = currmenu->selected; item = currmenu->selected;
goto selectitem; goto selectitem;
} else if ((ksym == XK_Escape || ksym == XK_Left) && } else if ((ksym == XK_Escape || ksym == XK_Left || ksym == KSYMLEFT) &&
currmenu->parent != NULL) { currmenu->parent != NULL) {
item = currmenu->parent->selected; item = currmenu->parent->selected;
currmenu = currmenu->parent; currmenu = currmenu->parent;