Index: uspace/srv/hid/output/port/chardev.c
===================================================================
--- uspace/srv/hid/output/port/chardev.c	(revision 9b2e20c0a5eabb2e6c8d5c488e41253a920dda59)
+++ uspace/srv/hid/output/port/chardev.c	(revision 3c3657c839d290bbff8acf285476858b027d8657)
@@ -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]);
 }
 
