Index: uspace/lib/libc/generic/io/stream.c
===================================================================
--- uspace/lib/libc/generic/io/stream.c	(revision fa094491c49be2130cd1f5bbad081181cbad82b1)
+++ uspace/lib/libc/generic/io/stream.c	(revision 45448840d542ead240f5fefb8c8e9d8f889335c9)
@@ -68,5 +68,5 @@
 				rc = kbd_get_event(&ev);
 				if (rc < 0) return -1;
-			} while (ev.c == 0);
+			} while (ev.c == 0 || ev.type == KE_RELEASE);
 
 			((char *) buf)[i++] = ev.c;
Index: uspace/lib/libc/generic/kbd.c
===================================================================
--- uspace/lib/libc/generic/kbd.c	(revision fa094491c49be2130cd1f5bbad081181cbad82b1)
+++ uspace/lib/libc/generic/kbd.c	(revision 45448840d542ead240f5fefb8c8e9d8f889335c9)
@@ -51,7 +51,7 @@
 
 	ev->type = r0;
-	ev->c = r1;
-	ev->key = r2;
-	ev->mods = r3;
+	ev->key = r1;
+	ev->mods = r2;
+	ev->c = r3;
 
 	return 0;
