diff --git a/hw/pckbd.c b/hw/pckbd.c
-index 3a004f7..73045ea 100644
+index 3a004f7..f91a387 100644
--- a/hw/pckbd.c
+++ b/hw/pckbd.c
-@@ -130,6 +130,8 @@ typedef struct KBDState {
+@@ -26,6 +26,7 @@
+ #include "pc.h"
+ #include "ps2.h"
+ #include "sysemu.h"
++#include "switcher.h"
+
+ /* debug PC keyboard */
+ //#define DEBUG_KBD
+@@ -130,6 +131,8 @@ typedef struct KBDState {
static KBDState kbd_state;
/* update irq and KBD_STAT_[MOUSE_]OBF */
/* XXX: not generating the irqs if KBD_MODE_DISABLE_KBD is set may be
incorrect, but it avoids having to simulate exact delays */
-@@ -185,7 +187,7 @@ static uint32_t kbd_read_status(void *opaque, uint32_t addr)
+@@ -185,7 +188,7 @@ static uint32_t kbd_read_status(void *opaque, uint32_t addr)
int val;
val = s->status;
#if defined(DEBUG_KBD)
#endif
return val;
}
-@@ -203,7 +205,7 @@ static void kbd_write_command(void *opaque, uint32_t addr, uint32_t val)
+@@ -203,7 +206,7 @@ static void kbd_write_command(void *opaque, uint32_t addr, uint32_t val)
KBDState *s = opaque;
#ifdef DEBUG_KBD
#endif
switch(val) {
case KBD_CCMD_READ_MODE:
-@@ -287,7 +289,7 @@ static uint32_t kbd_read_data(void *opaque, uint32_t addr)
+@@ -287,7 +290,7 @@ static uint32_t kbd_read_data(void *opaque, uint32_t addr)
val = ps2_read_data(s->kbd);
#if defined(DEBUG_KBD)
#endif
return val;
}
-@@ -297,11 +299,25 @@ static void kbd_write_data(void *opaque, uint32_t addr, uint32_t val)
+@@ -297,11 +300,25 @@ static void kbd_write_data(void *opaque, uint32_t addr, uint32_t val)
KBDState *s = opaque;
#ifdef DEBUG_KBD