keystrokes
diff --git a/src/cmd/rio/key.c b/src/cmd/rio/key.c
index 0951903..38e1bf8 100644
--- a/src/cmd/rio/key.c
+++ b/src/cmd/rio/key.c
@@ -46,6 +46,7 @@
 	/*
 	 * process key press here
 	 */
+	if(0)
 	if(e->keycode == tabcode)
 		alttab(e->state&ShiftMask);
 	XAllowEvents(dpy, SyncKeyboard, e->time);
diff --git a/src/cmd/rio/main.c b/src/cmd/rio/main.c
index 71f85fb..bc43a99 100644
--- a/src/cmd/rio/main.c
+++ b/src/cmd/rio/main.c
@@ -335,7 +335,8 @@
 	attr.cursor = s->arrow;
 	attr.event_mask = SubstructureRedirectMask
 		| SubstructureNotifyMask | ColormapChangeMask
-		| ButtonPressMask | ButtonReleaseMask | PropertyChangeMask;
+		| ButtonPressMask | ButtonReleaseMask | PropertyChangeMask |
+		KeyPressMask;
 	mask = CWCursor|CWEventMask;
 	XChangeWindowAttributes(dpy, s->root, mask, &attr);
 	XSync(dpy, False);
diff --git a/src/cmd/rio/manage.c b/src/cmd/rio/manage.c
index 86c23e8..c453ef5 100644
--- a/src/cmd/rio/manage.c
+++ b/src/cmd/rio/manage.c
@@ -26,7 +26,7 @@
 	XSetWindowAttributes attrs;
 
 	trace("manage", c, 0);
-	XSelectInput(dpy, c->window, ColormapChangeMask | EnterWindowMask | PropertyChangeMask | FocusChangeMask);
+	XSelectInput(dpy, c->window, ColormapChangeMask | EnterWindowMask | PropertyChangeMask | FocusChangeMask | KeyPressMask);
 
 	/* Get loads of hints */
 
@@ -138,7 +138,7 @@
 			CWBackPixel | CWBorderPixel | CWColormap,
 			&attrs);
 
-	XSelectInput(dpy, c->parent, SubstructureRedirectMask | SubstructureNotifyMask|ButtonPressMask| PointerMotionMask|LeaveWindowMask);
+	XSelectInput(dpy, c->parent, SubstructureRedirectMask | SubstructureNotifyMask|ButtonPressMask| PointerMotionMask|LeaveWindowMask|KeyPressMask);
 	if(mapped)
 		c->reparenting = 1;
 	if(doreshape && !fixsize)