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">