Index: uspace/app/mkbd/main.c
===================================================================
--- uspace/app/mkbd/main.c	(revision 051f96b3606f515532f8c8fc69ffb662781ad8ac)
+++ uspace/app/mkbd/main.c	(revision 2f2d4b71bfdb0ed347468f43422405f98211d5d0)
@@ -52,4 +52,6 @@
 #include <usb/hid/hiddescriptor.h>
 #include <usb/hid/usages/consumer.h>
+#include <io/console.h>
+#include <io/keycode.h>
 #include <assert.h>
 
@@ -166,4 +168,31 @@
 	
 	usb_hid_report_path_free(path);
+}
+
+static int wait_for_quit_fibril(void *arg)
+{
+	console_ctrl_t *con = console_init(stdin, stdout);
+
+	printf("Press <ESC> to quit the application.\n");
+
+	while (1) {
+		kbd_event_t ev;
+		bool ok = console_get_kbd_event(con, &ev);
+		if (!ok) {
+			printf("Connection with console broken: %s.\n",
+			    str_error(errno));
+			break;
+		}
+
+		if (ev.key == KC_ESCAPE) {
+			break;
+		}
+	}
+
+	console_done(con);
+
+	exit(0);
+
+	return EOK;
 }
 
@@ -242,7 +271,14 @@
 	}
 	
+	fid_t quit_fibril = fibril_create(wait_for_quit_fibril, NULL);
+	if (quit_fibril == 0) {
+		printf("Failed to start extra fibril.\n");
+		return -1;
+	}
+	fibril_add_ready(quit_fibril);
+
 	size_t actual_size;
 	int event_nr;
-	
+
 	while (true) {
 		/** @todo Try blocking call. */
