applied somwhat similiar patch like Alex Elide proposed - slock - My fancy fork of slock
 (HTM) git clone git://git.drkhsh.at/slock.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 8a7a68c4c09cbc8b03cb2765ac83e99ca1cc808b
 (DIR) parent 6e53ce4582cc1cc338028c099108f6f225a7286d
 (HTM) Author: Anselm R. Garbe <arg@suckless.org>
       Date:   Wed, 18 Oct 2006 18:44:19 +0200
       
       applied somwhat similiar patch like Alex Elide proposed
       Diffstat:
         M slock.c                             |       9 ++++++---
       
       1 file changed, 6 insertions(+), 3 deletions(-)
       ---
 (DIR) diff --git a/slock.c b/slock.c
       @@ -77,9 +77,12 @@ main(int argc, char **argv) {
                XDefineCursor(dpy, w, invisible);
                running = XGrabPointer(dpy, RootWindow(dpy, screen), False,
                                ButtonPressMask | ButtonReleaseMask | PointerMotionMask,
       -                        GrabModeAsync, GrabModeSync, None, invisible, CurrentTime) == GrabSuccess
       -                && XGrabKeyboard(dpy, RootWindow(dpy, screen), True, GrabModeAsync,
       -                         GrabModeAsync, CurrentTime) == GrabSuccess;
       +                        GrabModeAsync, GrabModeSync, None, invisible, CurrentTime) == GrabSuccess;
       +        len = 10;
       +        for(len = 10; len && (XGrabKeyboard(dpy, RootWindow(dpy, screen), True, GrabModeAsync,
       +                GrabModeAsync, CurrentTime) != GrabSuccess); len--)
       +                usleep(1000);
       +        running = running && (len > 0);
                XMapRaised(dpy, w);
                XSync(dpy, False);