summaryrefslogtreecommitdiffstats
path: root/main.c
diff options
context:
space:
mode:
authorBert Münnich <be.muennich@gmail.com>2014-01-31 13:21:23 +0100
committerBert Münnich <be.muennich@gmail.com>2014-01-31 13:21:23 +0100
commitf6510b0a04e9351f0cea740d2237ebe293125f4c (patch)
tree3fc2429d9e2c7bd2f0bd96ff7d682fac7ca58068 /main.c
parentd5b2d377a44db7408c90e5e15e35458bcc0f340c (diff)
parent2d703c30a2372c6b9955f5c08fb6b727cbd3cee0 (diff)
downloadnsxiv-f6510b0a04e9351f0cea740d2237ebe293125f4c.tar.zst
Merged pull request #129
Diffstat (limited to 'main.c')
-rw-r--r--main.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/main.c b/main.c
index be91d68..f95b4f4 100644
--- a/main.c
+++ b/main.c
@@ -75,6 +75,7 @@ int filecnt, fileidx;
int alternate;
int prefix;
+bool extprefix;
bool resized = false;
@@ -522,16 +523,16 @@ void on_keypress(XKeyEvent *kev)
if (IsModifierKey(ksym))
return;
-
- if ((ksym == XK_Escape && MODMASK(kev->state) == 0) ||
- (key >= '0' && key <= '9'))
- {
+ if (ksym == XK_Escape && MODMASK(kev->state) == 0) {
+ extprefix = False;
+ } else if (extprefix) {
+ run_key_handler(XKeysymToString(ksym), kev->state & ~sh);
+ extprefix = False;
+ } else if (key >= '0' && key <= '9') {
/* number prefix for commands */
- prefix = ksym == XK_Escape ? 0 : prefix * 10 + (int) (key - '0');
+ prefix = prefix * 10 + (int) (key - '0');
return;
- }
-
- for (i = 0; i < ARRLEN(keys); i++) {
+ } else for (i = 0; i < ARRLEN(keys); i++) {
if (keys[i].ksym == ksym &&
MODMASK(keys[i].mask | sh) == MODMASK(kev->state) &&
keys[i].cmd != NULL)
@@ -545,8 +546,6 @@ void on_keypress(XKeyEvent *kev)
break;
}
}
- if (i == ARRLEN(keys))
- run_key_handler(XKeysymToString(ksym), kev->state & ~sh);
prefix = 0;
}