Index: uspace/app/tetris/scores.c
===================================================================
--- uspace/app/tetris/scores.c	(revision c38ab6cd2a0a1e00ae1a0c294a7f8f7389d4d2eb)
+++ uspace/app/tetris/scores.c	(revision b987eb42ca08ff4d2e679bf590bdcb10aa41d4e0)
@@ -149,4 +149,7 @@
 			continue;
 
+		if ((ev.ev.key.mods & (KM_CTRL | KM_ALT)) != 0)
+			continue;
+
 		kev = &ev.ev.key;
 
Index: uspace/lib/clui/tinput.c
===================================================================
--- uspace/lib/clui/tinput.c	(revision c38ab6cd2a0a1e00ae1a0c294a7f8f7389d4d2eb)
+++ uspace/lib/clui/tinput.c	(revision b987eb42ca08ff4d2e679bf590bdcb10aa41d4e0)
@@ -857,5 +857,5 @@
 		tinput_key_unmod(ti, kev);
 
-	if (kev->c >= ' ') {
+	if (((kev->mods & (KM_CTRL | KM_ALT)) == 0) && kev->c >= ' ') {
 		tinput_sel_delete(ti);
 		tinput_insert_char(ti, kev->c);
Index: uspace/lib/ui/src/entry.c
===================================================================
--- uspace/lib/ui/src/entry.c	(revision c38ab6cd2a0a1e00ae1a0c294a7f8f7389d4d2eb)
+++ uspace/lib/ui/src/entry.c	(revision b987eb42ca08ff4d2e679bf590bdcb10aa41d4e0)
@@ -664,5 +664,4 @@
 		break;
 	}
-
 	return ui_claimed;
 }
@@ -743,13 +742,4 @@
 	if (!entry->active)
 		return ui_unclaimed;
-
-	if (event->type == KEY_PRESS && event->c >= ' ') {
-		off = 0;
-		rc = chr_encode(event->c, buf, &off, sizeof(buf));
-		if (rc == EOK) {
-			buf[off] = '\0';
-			(void) ui_entry_insert_str(entry, buf);
-		}
-	}
 
 	/*
@@ -768,4 +758,14 @@
 	if (event->type == KEY_RELEASE && event->key == KC_RSHIFT)
 		entry->rshift_held = false;
+
+	if (event->type == KEY_PRESS &&
+	    (event->mods & (KM_CTRL | KM_ALT)) == 0 && event->c >= ' ') {
+		off = 0;
+		rc = chr_encode(event->c, buf, &off, sizeof(buf));
+		if (rc == EOK) {
+			buf[off] = '\0';
+			(void) ui_entry_insert_str(entry, buf);
+		}
+	}
 
 	if (event->type == KEY_PRESS &&
Index: uspace/srv/hid/input/layout/ar.c
===================================================================
--- uspace/srv/hid/input/layout/ar.c	(revision c38ab6cd2a0a1e00ae1a0c294a7f8f7389d4d2eb)
+++ uspace/srv/hid/input/layout/ar.c	(revision b987eb42ca08ff4d2e679bf590bdcb10aa41d4e0)
@@ -216,8 +216,4 @@
 	char32_t c;
 
-	/* Produce no characters when Ctrl or Alt is pressed. */
-	if ((ev->mods & (KM_CTRL | KM_ALT)) != 0)
-		return 0;
-
 	c = translate(ev->key, map_neutral, sizeof(map_neutral) / sizeof(char32_t));
 	if (c != 0)
Index: uspace/srv/hid/input/layout/cz.c
===================================================================
--- uspace/srv/hid/input/layout/cz.c	(revision c38ab6cd2a0a1e00ae1a0c294a7f8f7389d4d2eb)
+++ uspace/srv/hid/input/layout/cz.c	(revision b987eb42ca08ff4d2e679bf590bdcb10aa41d4e0)
@@ -322,8 +322,4 @@
 	char32_t c;
 
-	/* Produce no characters when Ctrl or Alt is pressed. */
-	if ((ev->mods & (KM_CTRL | KM_ALT)) != 0)
-		return 0;
-
 	if (ev->key == KC_EQUALS) {
 		if ((ev->mods & KM_SHIFT) != 0)
Index: uspace/srv/hid/input/layout/fr_azerty.c
===================================================================
--- uspace/srv/hid/input/layout/fr_azerty.c	(revision c38ab6cd2a0a1e00ae1a0c294a7f8f7389d4d2eb)
+++ uspace/srv/hid/input/layout/fr_azerty.c	(revision b987eb42ca08ff4d2e679bf590bdcb10aa41d4e0)
@@ -223,7 +223,4 @@
 static char32_t fr_azerty_parse_ev (layout_t *s, kbd_event_t *e)
 {
-	if ((e->mods & (KM_CTRL | KM_ALT)))
-		return 0; // Produce no characters when Ctrl or Alt is pressed
-
 	char32_t c = translate (e->key, map_neutral, sizeof (map_neutral) / sizeof (char32_t));
 	if (c)
Index: uspace/srv/hid/input/layout/us_dvorak.c
===================================================================
--- uspace/srv/hid/input/layout/us_dvorak.c	(revision c38ab6cd2a0a1e00ae1a0c294a7f8f7389d4d2eb)
+++ uspace/srv/hid/input/layout/us_dvorak.c	(revision b987eb42ca08ff4d2e679bf590bdcb10aa41d4e0)
@@ -225,8 +225,4 @@
 	char32_t c;
 
-	/* Produce no characters when Ctrl or Alt is pressed. */
-	if ((ev->mods & (KM_CTRL | KM_ALT)) != 0)
-		return 0;
-
 	c = translate(ev->key, map_neutral, sizeof(map_neutral) / sizeof(char32_t));
 	if (c != 0)
Index: uspace/srv/hid/input/layout/us_qwerty.c
===================================================================
--- uspace/srv/hid/input/layout/us_qwerty.c	(revision c38ab6cd2a0a1e00ae1a0c294a7f8f7389d4d2eb)
+++ uspace/srv/hid/input/layout/us_qwerty.c	(revision b987eb42ca08ff4d2e679bf590bdcb10aa41d4e0)
@@ -219,8 +219,4 @@
 	char32_t c;
 
-	/* Produce no characters when Ctrl or Alt is pressed. */
-	if ((ev->mods & (KM_CTRL | KM_ALT)) != 0)
-		return 0;
-
 	c = translate(ev->key, map_neutral, sizeof(map_neutral) / sizeof(char32_t));
 	if (c != 0)
