Index: uspace/srv/hid/char_mouse/chardev.c
===================================================================
--- uspace/srv/hid/char_mouse/chardev.c	(revision 6e81d0428f1ba3ff86886a9a56a7a71613519a50)
+++ uspace/srv/hid/char_mouse/chardev.c	(revision 89c09ae14503535d15105952883128c8b6a6d0fe)
@@ -48,5 +48,5 @@
 static int dev_phone;
 
-#define NAME "kbd"
+#define NAME "char_mouse"
 
 int mouse_port_init(void)
Index: uspace/srv/hid/char_mouse/proto/ps2.c
===================================================================
--- uspace/srv/hid/char_mouse/proto/ps2.c	(revision 6e81d0428f1ba3ff86886a9a56a7a71613519a50)
+++ uspace/srv/hid/char_mouse/proto/ps2.c	(revision 89c09ae14503535d15105952883128c8b6a6d0fe)
@@ -36,8 +36,12 @@
 
 #include <stdio.h>
+#include <mouse_port.h>
+#include <char_mouse.h>
 #include <mouse_proto.h>
-#include <char_mouse.h>
 
 #define BUFSIZE 3
+
+#define PS2_MOUSE_OUT_INIT  0xf4
+#define PS2_MOUSE_ACK       0xfa
 
 typedef struct {
@@ -67,4 +71,5 @@
 int mouse_proto_init(void)
 {
+	mouse_port_write(PS2_MOUSE_OUT_INIT);
 	return 0;
 }
Index: uspace/srv/hw/char/i8042/i8042.c
===================================================================
--- uspace/srv/hw/char/i8042/i8042.c	(revision 6e81d0428f1ba3ff86886a9a56a7a71613519a50)
+++ uspace/srv/hw/char/i8042/i8042.c	(revision 89c09ae14503535d15105952883128c8b6a6d0fe)
@@ -68,7 +68,4 @@
 #define i8042_KBD_TRANSLATE	0x40
 
-/* Mouse constants */
-#define MOUSE_OUT_INIT  0xf4
-#define MOUSE_ACK       0xfa
 
 enum {
@@ -177,17 +174,13 @@
 	async_set_interrupt_received(i8042_irq_handler);
 
-	/* Disable kbd, enable mouse */
+	/* Disable kbd and aux */
+	wait_ready();
 	pio_write_8(&i8042->status, i8042_CMD_WRITE_CMDB);
 	wait_ready();
-	pio_write_8(&i8042->status, i8042_CMD_WRITE_CMDB);
-	wait_ready();
-	pio_write_8(&i8042->data, i8042_KBD_DISABLE);
-	wait_ready();
+	pio_write_8(&i8042->data, i8042_KBD_DISABLE | i8042_AUX_DISABLE);
 
 	/* Flush all current IO */
 	while (pio_read_8(&i8042->status) & i8042_OUTPUT_FULL)
 		(void) pio_read_8(&i8042->data);
-
-	i8042_port_write(DEVID_AUX, MOUSE_OUT_INIT);
 
 	i8042_kbd.cmds[0].addr = (void *) &((i8042_t *) i8042_kernel)->status;
@@ -195,10 +188,12 @@
 	ipc_register_irq(sysinfo_value("i8042.inr_a"), device_assign_devno(), 0, &i8042_kbd);
 	ipc_register_irq(sysinfo_value("i8042.inr_b"), device_assign_devno(), 0, &i8042_kbd);
-
+	printf("i8042: registered for interrupts %d and %d\n",
+	    sysinfo_value("i8042.inr_a"), sysinfo_value("i8042.inr_b"));
+
+	wait_ready();
 	pio_write_8(&i8042->status, i8042_CMD_WRITE_CMDB);
 	wait_ready();
 	pio_write_8(&i8042->data, i8042_KBD_IE | i8042_KBD_TRANSLATE |
 	    i8042_AUX_IE);
-	wait_ready();
 
 	return 0;
@@ -271,9 +266,9 @@
 {
 	if (devid == DEVID_AUX) {
+		wait_ready();
 		pio_write_8(&i8042->status, i8042_CMD_WRITE_AUX);
-		wait_ready();
-	}
+	}
+	wait_ready();
 	pio_write_8(&i8042->data, data);
-	wait_ready();
 }
 
