#endif
diff --git a/dom0_driver.c b/dom0_driver.c
new file mode 100644
-index 0000000..a747911
+index 0000000..bdfe37c
--- /dev/null
+++ b/dom0_driver.c
-@@ -0,0 +1,712 @@
+@@ -0,0 +1,718 @@
+/*
+ * QEMU dom0_driver
+ *
+#include <time.h>
+
+extern int vga_passthrough;
++extern int intel;
+
+static void dom0_driver_state_change(const char *path, void *opaque);
+static void dom0_driver_command(const char *path, void *opaque);
+ driver.enter = dom0_driver_unblank;
+ driver.leave = dom0_driver_blank;
+ }
++ else if (intel)
++ {
++ driver.enter = intel_enter;
++ driver.leave = intel_leave;
++ }
+ else
+ {
+ driver.enter = dom0_driver_dummy_enter_leave;
+}
diff --git a/hid-linux.c b/hid-linux.c
new file mode 100644
-index 0000000..9e09f97
+index 0000000..73bb956
--- /dev/null
+++ b/hid-linux.c
-@@ -0,0 +1,557 @@
+@@ -0,0 +1,555 @@
+/*
+ * QEMU hid-linux /dev/input driver
+ *
+ KEY_V, KEY_W, KEY_X, KEY_Y, KEY_Z
+};
+
-+static void hid_linux_secure_read(void *opaque);
-+
+static char keycode2ascii(int keycode)
+{
+ int i = 0;
+ char *ret;
+
+ if (asprintf(&path, HID_LINUX_XS_PATH"/%s", key) == -1)
-+ return;
++ return NULL;
+ ret = xenstore_read(path);
+ free(path);
+
+ * the mouse, but not the keyboard (the appserver has the keyboard),
+ * you want to be able to do Alt+Tab inside the PVM even if you
+ * don't have the keyboard. */
-+static bool hid_linux_check_modifiers_pt(uint32_t keycode)
++static bool hid_linux_check_modifiers_pt(void)
+{
+ /* We don't passthrough if we don't have the mouse */
+ if (!hid_linux_driver.has_mouse)
+ return;
+
+ if (hid_linux_driver.has_keyboard || // We have the keyboard
-+ hid_linux_check_modifiers_pt(keycode))
++ hid_linux_check_modifiers_pt())
+ hid_linux_key_inject(code, keycode);
+}
+
+static void hid_linux_keyboard_read(void *opaque)
+{
-+ struct input_event event[5];
-+ int i = 0;
-+ int read_sz = 0;
-+ int fd = *(int *)opaque;
-+
+ if (hid_linux_driver.secure_key && hid_linux_driver.has_keyboard)
+ {
-+ hid_linux_secure_read(opaque);
++ hid_linux_driver.secure_key(opaque);
+ return;
+ }
+
++ struct input_event event[5];
++ int i = 0;
++ int read_sz = 0;
++ int fd = *(int *)opaque;
++
+ read_sz = read(fd, event, sizeof (event));
+ if (read_sz <= 0)
+ return;
+ else if (event->type == EV_ABS)
+ {
+ static int last_x = 1, last_y = 1;
-+ int px = 0, py = 0, l = 50, d = 1;
++ int px = 0, py = 0, l = 50;
+ double div = 1;
+ char *str = NULL;
+
+ hid_linux_xs_read_int("touchpad-limit", &l);
-+ hid_linux_xs_read_int("touchpad-div", &d);
-+ div = d / 1000.;
++ hid_linux_xs_read_int("touchpad-div", &div);
++ div /= 1000.;
+
+ switch (event->code)
+ {
+int intel_leave(void);
+void intel_display_init(DisplayState *ds);
#endif
-diff --git a/dom0_driver.c b/dom0_driver.c
-index a747911..bdfe37c 100644
---- a/dom0_driver.c
-+++ b/dom0_driver.c
-@@ -43,6 +43,7 @@
- #include <time.h>
-
- extern int vga_passthrough;
-+extern int intel;
-
- static void dom0_driver_state_change(const char *path, void *opaque);
- static void dom0_driver_command(const char *path, void *opaque);
-@@ -697,6 +698,11 @@ void dom0_driver_init(const char *position)
- driver.enter = dom0_driver_unblank;
- driver.leave = dom0_driver_blank;
- }
-+ else if (intel)
-+ {
-+ driver.enter = intel_enter;
-+ driver.leave = intel_leave;
-+ }
- else
- {
- driver.enter = dom0_driver_dummy_enter_leave;
diff --git a/hw/vga.c b/hw/vga.c
index 90bd544..a2b8744 100644
--- a/hw/vga.c
+ lds = ds;
+}
diff --git a/vl.c b/vl.c
-index 45e03c1..fdab62f 100644
+index 0ffe1ec..97cb5d8 100644
--- a/vl.c
+++ b/vl.c
@@ -235,6 +235,7 @@ int win2k_install_hack = 0;
#endif
int usb_enabled = 0;
int smp_cpus = 1;
-@@ -4305,6 +4306,7 @@ enum {
+@@ -4293,6 +4294,7 @@ enum {
QEMU_OPTION_vcpus,
QEMU_OPTION_vga_passthrough,
QEMU_OPTION_dom0_input,
/* Debug/Expert options: */
QEMU_OPTION_serial,
-@@ -4480,6 +4482,7 @@ static const QEMUOption qemu_options[] = {
+@@ -4468,6 +4470,7 @@ static const QEMUOption qemu_options[] = {
{ "vcpus", HAS_ARG, QEMU_OPTION_vcpus },
{ "vga-passthrough", 0, QEMU_OPTION_vga_passthrough },
{ "dom0-input", 1, QEMU_OPTION_dom0_input },
#if defined(CONFIG_XEN) && !defined(CONFIG_DM)
{ "xen-domid", HAS_ARG, QEMU_OPTION_xen_domid },
{ "xen-create", 0, QEMU_OPTION_xen_create },
-@@ -5319,6 +5322,9 @@ int main(int argc, char **argv, char **envp)
+@@ -5307,6 +5310,9 @@ int main(int argc, char **argv, char **envp)
case QEMU_OPTION_dom0_input:
dom0_input = optarg;
break;
case QEMU_OPTION_direct_pci:
direct_pci = optarg;
break;
-@@ -5921,26 +5927,26 @@ int main(int argc, char **argv, char **envp)
+@@ -5909,26 +5915,26 @@ int main(int argc, char **argv, char **envp)
curses_display_init(ds, full_screen);
} else
#endif