Index: uspace/lib/gui/window.c
===================================================================
--- uspace/lib/gui/window.c	(revision 32757361ca7dd704ad29a368b3608043f297356c)
+++ uspace/lib/gui/window.c	(revision 287688f2520fc7e4fc9242e8f371f027e2660730)
@@ -82,4 +82,10 @@
 static pixel_t color_caption_focus = PIXEL(255, 255, 255, 255);
 static pixel_t color_caption_unfocus = PIXEL(255, 207, 207, 207);
+
+static void window_kbd_event(void *, kbd_event_t *);
+
+static display_wnd_cb_t window_cb = {
+	.kbd_event = window_kbd_event
+};
 
 static void paint_internal(widget_t *widget)
@@ -400,6 +406,6 @@
 	wparams.rect.p1.y = height;
 
-	rc = display_window_create(win->display, &wparams, NULL, NULL,
-	    &new_window);
+	rc = display_window_create(win->display, &wparams, &window_cb,
+	    (void *) win, &new_window);
 	if (rc != EOK) {
 		surface_destroy(new_surface);
@@ -794,4 +800,19 @@
 }
 
+static void window_kbd_event(void *arg, kbd_event_t *kevent)
+{
+	window_t *win = (window_t *) arg;
+	window_event_t *event;
+
+	event = (window_event_t *) calloc(1, sizeof(window_event_t));
+	if (event == NULL)
+		return;
+
+	link_initialize(&event->link);
+	event->type = ET_KEYBOARD_EVENT;
+	event->data.kbd = *kevent;
+	prodcons_produce(&win->events, &event->link);
+}
+
 /** @}
  */
