Index: uspace/drv/hid/atkbd/atkbd.c
===================================================================
--- uspace/drv/hid/atkbd/atkbd.c	(revision 984a9ba2fa05c490a7066737655ed19130c714e8)
+++ uspace/drv/hid/atkbd/atkbd.c	(revision b13d80b2d3d6107331beeefec2ede2df8f661cba)
@@ -48,4 +48,7 @@
 #define AT_NUM_SCAN_CODE 0x77
 #define AT_SCROLL_SCAN_CODE 0x7E
+
+#define AT_KBD_ENABLE 0xF4
+#define AT_KBD_ACK 0xFA
 
 /* Set 2 scan codes (AT keyboard) */
@@ -405,4 +408,24 @@
 	}
 
+	uint8_t code = AT_KBD_ENABLE;
+	size_t bytes;
+	rc = chardev_write(kbd->chardev, &code, 1, &bytes);
+	if (rc != EOK) {
+		ddf_msg(LVL_ERROR, "Failed to enable keyboard.");
+		fibril_destroy(kbd->polling_fibril);
+		ddf_fun_unbind(kbd->kbd_fun);
+		ddf_fun_destroy(kbd->kbd_fun);
+		return EIO;
+	}
+	rc = chardev_read(kbd->chardev, &code, 1, &bytes);
+	if (rc != EOK || code != AT_KBD_ACK) {
+		ddf_msg(LVL_ERROR, "Failed to confirm keyboard enable: %hhx.",
+		    code);
+		fibril_destroy(kbd->polling_fibril);
+		ddf_fun_unbind(kbd->kbd_fun);
+		ddf_fun_destroy(kbd->kbd_fun);
+		return EIO;
+	}
+
 	fibril_add_ready(kbd->polling_fibril);
 	return EOK;
