Index: uspace/lib/ui/include/types/ui/control.h
===================================================================
--- uspace/lib/ui/include/types/ui/control.h	(revision db3895d936f17c9389f3e8e2689bf28645fc3697)
+++ uspace/lib/ui/include/types/ui/control.h	(revision a977e37037dd366f66e842d76044202829ce7bf0)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2020 Jiri Svoboda
+ * Copyright (c) 2021 Jiri Svoboda
  * All rights reserved.
  *
@@ -38,4 +38,5 @@
 
 #include <errno.h>
+#include <io/kbd_event.h>
 #include <io/pos_event.h>
 #include <types/ui/event.h>
@@ -50,4 +51,6 @@
 	/** Paint */
 	errno_t (*paint)(void *);
+	/** Keyboard event */
+	ui_evclaim_t (*kbd_event)(void *, kbd_event_t *);
 	/** Position event */
 	ui_evclaim_t (*pos_event)(void *, pos_event_t *);
Index: uspace/lib/ui/include/ui/control.h
===================================================================
--- uspace/lib/ui/include/ui/control.h	(revision db3895d936f17c9389f3e8e2689bf28645fc3697)
+++ uspace/lib/ui/include/ui/control.h	(revision a977e37037dd366f66e842d76044202829ce7bf0)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2020 Jiri Svoboda
+ * Copyright (c) 2021 Jiri Svoboda
  * All rights reserved.
  *
@@ -38,4 +38,5 @@
 
 #include <errno.h>
+#include <io/kbd_event.h>
 #include <io/pos_event.h>
 #include <types/ui/control.h>
@@ -46,4 +47,5 @@
 extern void ui_control_destroy(ui_control_t *);
 extern errno_t ui_control_paint(ui_control_t *);
+extern ui_evclaim_t ui_control_kbd_event(ui_control_t *, kbd_event_t *);
 extern ui_evclaim_t ui_control_pos_event(ui_control_t *, pos_event_t *);
 extern void ui_control_unfocus(ui_control_t *);
Index: uspace/lib/ui/include/ui/entry.h
===================================================================
--- uspace/lib/ui/include/ui/entry.h	(revision db3895d936f17c9389f3e8e2689bf28645fc3697)
+++ uspace/lib/ui/include/ui/entry.h	(revision a977e37037dd366f66e842d76044202829ce7bf0)
@@ -50,6 +50,9 @@
 extern void ui_entry_set_rect(ui_entry_t *, gfx_rect_t *);
 extern void ui_entry_set_halign(ui_entry_t *, gfx_halign_t);
+extern void ui_entry_set_read_only(ui_entry_t *, bool);
 extern errno_t ui_entry_set_text(ui_entry_t *, const char *);
 extern errno_t ui_entry_paint(ui_entry_t *);
+extern ui_evclaim_t ui_entry_kbd_event(ui_entry_t *, kbd_event_t *);
+extern ui_evclaim_t ui_entry_pos_event(ui_entry_t *, pos_event_t *);
 
 #endif
Index: uspace/lib/ui/include/ui/fixed.h
===================================================================
--- uspace/lib/ui/include/ui/fixed.h	(revision db3895d936f17c9389f3e8e2689bf28645fc3697)
+++ uspace/lib/ui/include/ui/fixed.h	(revision a977e37037dd366f66e842d76044202829ce7bf0)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2020 Jiri Svoboda
+ * Copyright (c) 2021 Jiri Svoboda
  * All rights reserved.
  *
@@ -49,4 +49,5 @@
 extern void ui_fixed_remove(ui_fixed_t *, ui_control_t *);
 extern errno_t ui_fixed_paint(ui_fixed_t *);
+extern ui_evclaim_t ui_fixed_kbd_event(ui_fixed_t *, kbd_event_t *);
 extern ui_evclaim_t ui_fixed_pos_event(ui_fixed_t *, pos_event_t *);
 extern void ui_fixed_unfocus(ui_fixed_t *);
Index: uspace/lib/ui/include/ui/window.h
===================================================================
--- uspace/lib/ui/include/ui/window.h	(revision db3895d936f17c9389f3e8e2689bf28645fc3697)
+++ uspace/lib/ui/include/ui/window.h	(revision a977e37037dd366f66e842d76044202829ce7bf0)
@@ -40,4 +40,5 @@
 #include <gfx/context.h>
 #include <gfx/coord.h>
+#include <io/kbd_event.h>
 #include <io/pos_event.h>
 #include <types/ui/control.h>
@@ -62,4 +63,5 @@
 extern void ui_window_set_ctl_cursor(ui_window_t *, ui_stock_cursor_t);
 extern errno_t ui_window_paint(ui_window_t *);
+extern void ui_window_def_kbd(ui_window_t *, kbd_event_t *);
 extern errno_t ui_window_def_paint(ui_window_t *);
 extern void ui_window_def_pos(ui_window_t *, pos_event_t *);
