Index: uspace/lib/c/generic/io/console.c
===================================================================
--- uspace/lib/c/generic/io/console.c	(revision 68a552f0cc0e1665ed70383cada86c9355991a73)
+++ uspace/lib/c/generic/io/console.c	(revision 87822cef54e5abb65818d91148b7ff319d6292da)
@@ -180,5 +180,11 @@
 }
 
-bool console_get_event(console_ctrl_t *ctrl, cons_event_t *event)
+/** Get console event.
+ *
+ * @param ctrl Console
+ * @param event Place to store event
+ * @return EOK on success, EIO on failure
+ */
+errno_t console_get_event(console_ctrl_t *ctrl, cons_event_t *event)
 {
 	if (ctrl->input_aid == 0) {
@@ -192,14 +198,10 @@
 		async_wait_for(aid, &rc);
 
-		if (rc != EOK) {
-			errno = rc;
-			return false;
-		}
+		if (rc != EOK)
+			return EIO;
 
 		rc = console_ev_decode(&result, event);
-		if (rc != EOK) {
-			errno = rc;
-			return false;
-		}
+		if (rc != EOK)
+			return EIO;
 	} else {
 		errno_t retval;
@@ -208,20 +210,26 @@
 		ctrl->input_aid = 0;
 
-		if (retval != EOK) {
-			errno = retval;
-			return false;
-		}
+		if (retval != EOK)
+			return EIO;
 
 		errno_t rc = console_ev_decode(&ctrl->input_call, event);
-		if (rc != EOK) {
-			errno = rc;
-			return false;
-		}
-	}
-
-	return true;
-}
-
-bool console_get_event_timeout(console_ctrl_t *ctrl, cons_event_t *event,
+		if (rc != EOK)
+			return EIO;
+	}
+
+	return EOK;
+}
+
+/** Get console event with timeout.
+ *
+ * @param ctrl Console
+ * @param event Place to store event
+ * @param timeout Pointer to timeout. This will be updated to reflect
+ *                the remaining time in case of timeout.
+ * @return EOK on success (event received), ETIMEOUT on time out,
+ *         EIO on I/O error (e.g. lost console connection), ENOMEM
+ *         if out of memory
+ */
+errno_t console_get_event_timeout(console_ctrl_t *ctrl, cons_event_t *event,
     usec_t *timeout)
 {
@@ -239,21 +247,18 @@
 	errno_t rc = async_wait_timeout(ctrl->input_aid, &retval, *timeout);
 	if (rc != EOK) {
+		if (rc == ENOMEM)
+			return ENOMEM;
 		*timeout = 0;
-		errno = rc;
-		return false;
+		return ETIMEOUT;
 	}
 
 	ctrl->input_aid = 0;
 
-	if (retval != EOK) {
-		errno = retval;
-		return false;
-	}
+	if (retval != EOK)
+		return EIO;
 
 	rc = console_ev_decode(&ctrl->input_call, event);
-	if (rc != EOK) {
-		errno = rc;
-		return false;
-	}
+	if (rc != EOK)
+		return EIO;
 
 	/* Update timeout */
@@ -262,5 +267,5 @@
 	*timeout -= NSEC2USEC(ts_sub_diff(&t1, &t0));
 
-	return true;
+	return EOK;
 }
 
