Blob Blame Raw
diff --git a/config/hal.c b/config/hal.c
index 3479be9..a235876 100644
--- a/config/hal.c
+++ b/config/hal.c
@@ -177,7 +177,8 @@ device_added(LibHalContext *hal_ctx, const char *udi)
         if (strcmp(props[i], "input.keys") == 0 ||
             strcmp(props[i], "input.keyboard") == 0)
             type |= TYPE_KEYS;
-        if (strcmp(props[i], "input.mouse") == 0)
+        if (strcmp(props[i], "input.mouse") == 0 ||
+            strcmp(props[i], "input.touchpad") == 0)
             type |= TYPE_POINTER;
     }
     libhal_free_string_array(props);
diff --git a/config/x11-input.fdi b/config/x11-input.fdi
index c390706..20c73fa 100644
--- a/config/x11-input.fdi
+++ b/config/x11-input.fdi
@@ -1,7 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <deviceinfo version="0.2">
   <device>
-    <!-- FIXME: Support tablets too. -->
+    <match key="info.capabilities" contains="input.touchpad">
+      <merge key="input.x11_driver" type="string">mouse</merge>
+      <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
+             string="Linux">
+        <merge key="input.x11_driver" type="string">evdev</merge>
+      </match>
+    </match>
+
     <match key="info.capabilities" contains="input.mouse">
       <merge key="input.x11_driver" type="string">mouse</merge>
       <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
@@ -16,6 +23,25 @@
       <!-- If we're using Linux, we use evdev by default (falling back to
            keyboard otherwise). -->
       <merge key="input.x11_driver" type="string">keyboard</merge>
+      <merge key="input.xkb.model" type="string">olpc</merge>
+      <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
+             string="Linux">
+        <merge key="input.x11_driver" type="string">evdev</merge>
+        <merge key="input.xkb.model" type="string">evdev</merge>
+      </match>
+
+      <merge key="input.xkb.layout" type="string">us</merge>
+
+      <merge key="input.xkb.variant" type="string" />
+    </match>
+
+    <!-- older versions of HAL use "keyboard" instead of keys -->
+    <match key="info.capabilities" contains="input.keyboard">
+      <merge key="input.xkb.rules" type="string">base</merge>
+
+      <!-- If we're using Linux, we use evdev by default (falling back to
+           keyboard otherwise). -->
+      <merge key="input.x11_driver" type="string">keyboard</merge>
       <merge key="input.xkb.model" type="string">pc105</merge>
       <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
              string="Linux">