Index: uspace/srv/hid/output/port/chardev.c
===================================================================
--- uspace/srv/hid/output/port/chardev.c	(revision 81ec7e1867942dce648bbef472b80d7b8a71f294)
+++ uspace/srv/hid/output/port/chardev.c	(revision b79c91ccfb4b63d1e2784ab90ed1af67c810c6e1)
@@ -78,11 +78,25 @@
 }
 
-static void chardev_putuchar(char32_t ch)
+static void chardev_putchar(char ch)
 {
 	if (chardev_bused == chardev_buf_size)
 		chardev_flush();
-	if (!ascii_check(ch))
-		ch = '?';
 	chardev_buf[chardev_bused++] = (uint8_t) ch;
+}
+
+static void chardev_putuchar(char32_t ch)
+{
+	char buf[STR_BOUNDS(1)];
+	size_t off;
+	size_t i;
+	errno_t rc;
+
+	off = 0;
+	rc = chr_encode(ch, buf, &off, sizeof(buf));
+	if (rc != EOK)
+		return;
+
+	for (i = 0; i < off; i++)
+		chardev_putchar(buf[i]);
 }
 
