diff --git a/config.def.h b/config.def.h index 9b7e755..485a2eb 100644 --- a/config.def.h +++ b/config.def.h @@ -31,3 +31,6 @@ static XRectangle rectangles[9] = { { 11, 4, 1, 2 }, }; + +/* allow control key to trigger fail on clear */ +static const int controlkeyclear = 1; diff --git a/slock-git-20161012-control-clear.diff b/slock-git-20161012-control-clear.diff new file mode 100644 index 0000000..b9634cd --- /dev/null +++ b/slock-git-20161012-control-clear.diff @@ -0,0 +1,27 @@ +diff --git a/config.def.h b/config.def.h +index 6fba2b6..933152b 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -10,3 +10,6 @@ static const char *colorname[NUMCOLS] = { + + /* treat a cleared input like a wrong password */ + static const int failonclear = 1; ++ ++/* allow control key to trigger fail on clear */ ++static const int controlkeyclear = 0; +diff --git a/slock.c b/slock.c +index 4d7f06f..15552ef 100644 +--- a/slock.c ++++ b/slock.c +@@ -180,8 +180,9 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens, + passwd[len--] = '\0'; + break; + default: +- if (num && !iscntrl((int)buf[0]) && +- (len + num < sizeof(passwd))) { ++ if (controlkeyclear && iscntrl((int)buf[0])) ++ continue; ++ if (num && (len + num < sizeof(passwd))) { + memcpy(passwd + len, buf, num); + len += num; + } diff --git a/slock.c b/slock.c index c38c15d..77f21ac 100644 --- a/slock.c +++ b/slock.c @@ -216,8 +216,9 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens, passwd[--len] = '\0'; break; default: - if (num && !iscntrl((int)buf[0]) && - (len + num < sizeof(passwd))) { + if (controlkeyclear && iscntrl((int)buf[0])) + continue; + if (num && (len + num < sizeof(passwd))) { memcpy(passwd + len, buf, num); len += num; }