diff options
| -rw-r--r-- | config.h | 23 | ||||
| -rw-r--r-- | dmenu.c | 27 |
2 files changed, 45 insertions, 5 deletions
diff --git a/config.h b/config.h new file mode 100644 index 0000000..1edb647 --- /dev/null +++ b/config.h @@ -0,0 +1,23 @@ +/* See LICENSE file for copyright and license details. */ +/* Default settings; can be overriden by command line. */ + +static int topbar = 1; /* -b option; if 0, dmenu appears at bottom */ +/* -fn option overrides fonts[0]; default X11 font or font set */ +static const char *fonts[] = { + "monospace:size=10" +}; +static const char *prompt = NULL; /* -p option; prompt to the left of input field */ +static const char *colors[SchemeLast][2] = { + /* fg bg */ + [SchemeNorm] = { "#bbbbbb", "#222222" }, + [SchemeSel] = { "#eeeeee", "#005577" }, + [SchemeOut] = { "#000000", "#00ffff" }, +}; +/* -l option; if nonzero, dmenu uses vertical list with given number of lines */ +static unsigned int lines = 0; + +/* + * Characters not considered part of a word while deleting words + * for example: " /?\"&[]" + */ +static const char worddelimiters[] = " "; @@ -334,17 +334,17 @@ keypress(XKeyEvent *ev) case XK_g: ksym = XK_Escape; break; case XK_h: ksym = XK_BackSpace; break; case XK_i: ksym = XK_Tab; break; - case XK_j: /* fallthrough */ + /* case XK_j: #<{(| fallthrough |)}># */ case XK_J: /* fallthrough */ case XK_m: /* fallthrough */ case XK_M: ksym = XK_Return; ev->state &= ~ControlMask; break; case XK_n: ksym = XK_Down; break; case XK_p: ksym = XK_Up; break; - case XK_k: /* delete right */ - text[cursor] = '\0'; - match(); - break; + /* case XK_k: #<{(| delete right |)}># */ + /* text[cursor] = '\0'; */ + /* match(); */ + /* break; */ case XK_u: /* delete left */ insert(NULL, 0 - cursor); break; @@ -354,6 +354,7 @@ keypress(XKeyEvent *ev) while (cursor > 0 && !strchr(worddelimiters, text[nextrune(-1)])) insert(NULL, nextrune(-1) - cursor); break; + case XK_v: /* paste selection */ case XK_y: /* paste selection */ case XK_Y: XConvertSelection(dpy, (ev->state & ShiftMask) ? clip : XA_PRIMARY, @@ -371,6 +372,22 @@ keypress(XKeyEvent *ev) case XK_bracketleft: cleanup(); exit(1); + + // ADDED Ctrl-j/k for selection + case XK_j: + /* case XK_Down: */ + if (sel && sel->right && (sel = sel->right) == next) { + curr = next; + calcoffsets(); + } + break; + case XK_k: + if (sel && sel->left && (sel = sel->left)->right == curr) { + curr = prev; + calcoffsets(); + } + break; + default: return; } |
