Index: uspace/drv/usbhid/kbd/kbddev.c
===================================================================
--- uspace/drv/usbhid/kbd/kbddev.c	(revision 1989cdf4a4cabe45be8f62104de2e5879b35feb0)
+++ uspace/drv/usbhid/kbd/kbddev.c	(revision f55ded32fc9ca74c4145a4f8b00fcf71563cf0d6)
@@ -677,5 +677,5 @@
 //	    callbacks, kbd_dev);
 	usb_hid_report_path_t *path = usb_hid_report_path();
-	usb_hid_report_path_append_item(path, USB_HIDUT_PAGE_KEYBOARD, 0);
+	usb_hid_report_path_append_item(path, USB_HIDUT_PAGE_GENERIC_DESKTOP, 6);
 	//usb_hid_report_path_set_report_id(path, 0);
 
@@ -695,8 +695,8 @@
 	usb_hid_report_field_t *field = usb_hid_report_get_sibling(
 	    hid_dev->report, NULL, path, 
-	    USB_HID_PATH_COMPARE_END | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY, 
+	    USB_HID_PATH_COMPARE_BEGIN, 
 	    USB_HID_REPORT_TYPE_INPUT);
 	unsigned i = 0;
-	
+
 	while (field != NULL) {
 		//usb_log_debug2("FIELD (%p) - VALUE(%d) USAGE(%u)\n", 
@@ -716,17 +716,18 @@
 		 *       two parts of the Report somehow.
 		 */
+		usb_log_debug("value(%x), usage(%x)\n", field->value, field->usage);
 		if (field->value != 0) {
-			kbd_dev->keys[i] = field->usage;
+			//kbd_dev->keys[i] = field->usage;
 		}
 		else {
-			kbd_dev->keys[i] = 0;
+			//kbd_dev->keys[i] = 0;
 		}
-		usb_log_debug2("Saved %u. key usage %d\n", i, kbd_dev->keys[i]);
+		//usb_log_debug2("Saved %u. key usage %d\n", i, kbd_dev->keys[i]);
 		
 		++i;
 		field = usb_hid_report_get_sibling(hid_dev->report, field, path, 
-		    USB_HID_PATH_COMPARE_END 
-		    | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY, 
+		    USB_HID_PATH_COMPARE_BEGIN,
 		    USB_HID_REPORT_TYPE_INPUT);
+		usb_log_debug("field -- %p\n", field);
 	}
 	
@@ -860,15 +861,8 @@
 	 * TODO: make more general
 	 */
-	usb_hid_report_path_t *path = usb_hid_report_path();
-	usb_hid_report_path_append_item(path, USB_HIDUT_PAGE_KEYBOARD, 0);
-	
-	usb_hid_report_path_set_report_id(path, 0);
-	
 	kbd_dev->key_count = usb_hid_report_size(
 	    hid_dev->report, 0, USB_HID_REPORT_TYPE_INPUT);
-	usb_hid_report_path_free(path);
-	
-	usb_log_debug("Size of the input report: %zu\n", kbd_dev->key_count);
-	
+	
+	usb_log_debug("Size of the input report: %zu\n", kbd_dev->key_count);	
 	kbd_dev->keys = (int32_t *)calloc(kbd_dev->key_count, sizeof(int32_t));
 	
@@ -986,5 +980,5 @@
 		return rc;
 	}
-	
+
 	return EOK;
 }
Index: uspace/drv/usbhid/lgtch-ultrax/lgtch-ultrax.c
===================================================================
--- uspace/drv/usbhid/lgtch-ultrax/lgtch-ultrax.c	(revision 1989cdf4a4cabe45be8f62104de2e5879b35feb0)
+++ uspace/drv/usbhid/lgtch-ultrax/lgtch-ultrax.c	(revision f55ded32fc9ca74c4145a4f8b00fcf71563cf0d6)
@@ -180,4 +180,5 @@
  * @param key Key code of the key according to HID Usage Tables.
  */
+/*
 static void usb_lgtch_push_ev(usb_hid_dev_t *hid_dev, int type, 
     unsigned int key)
@@ -206,5 +207,5 @@
 	    ev.mods, ev.c);
 }
-
+*/
 /*----------------------------------------------------------------------------*/
 
@@ -396,9 +397,9 @@
 
 	usb_hid_report_field_t *field = usb_hid_report_get_sibling(
-	    hid_dev->report, NULL, path, USB_HID_PATH_COMPARE_END 
+	    hid_dev->report, NULL, path, USB_HID_PATH_COMPARE_BEGIN 
 	    | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY, 
 	    USB_HID_REPORT_TYPE_INPUT);
 	
-	unsigned int key;
+//	unsigned int key;
 	
 	/*! @todo Is this iterating OK if done multiple times? 
@@ -409,11 +410,10 @@
 		usb_log_debug(NAME " KEY VALUE(%X) USAGE(%X)\n", field->value, 
 		    field->usage);
-
-		key = field->usage;
-		//key = usb_lgtch_map_usage(field->usage);
-		usb_lgtch_push_ev(hid_dev, KEY_PRESS, key);
+		
+//		key = usb_lgtch_map_usage(field->usage);
+//		usb_lgtch_push_ev(hid_dev, KEY_PRESS, key);
 		
 		field = usb_hid_report_get_sibling(
-		    hid_dev->report, field, path, USB_HID_PATH_COMPARE_END
+		    hid_dev->report, field, path, USB_HID_PATH_COMPARE_BEGIN
 		    | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY, 
 		    USB_HID_REPORT_TYPE_INPUT);
Index: uspace/drv/usbhid/subdrivers.c
===================================================================
--- uspace/drv/usbhid/subdrivers.c	(revision 1989cdf4a4cabe45be8f62104de2e5879b35feb0)
+++ uspace/drv/usbhid/subdrivers.c	(revision f55ded32fc9ca74c4145a4f8b00fcf71563cf0d6)
@@ -42,10 +42,10 @@
 
 static usb_hid_subdriver_usage_t path_kbd[] = {
-	{USB_HIDUT_PAGE_KEYBOARD, 0}, 
+	{USB_HIDUT_PAGE_GENERIC_DESKTOP, 6}, 
 	{0, 0}
 };
 
 static usb_hid_subdriver_usage_t path_mouse2[] = {
-	{USB_HIDUT_PAGE_GENERIC_DESKTOP, USB_HIDUT_USAGE_GENERIC_DESKTOP_X},
+	{USB_HIDUT_PAGE_GENERIC_DESKTOP, 2},
 	{0, 0}
 };
@@ -60,6 +60,5 @@
 		path_kbd,
 		-1,
-		USB_HID_PATH_COMPARE_END 
-		| USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY,
+		USB_HID_PATH_COMPARE_BEGIN ,
 		-1,
 		-1,
@@ -75,6 +74,5 @@
 		lgtch_path,
 		1,
-		USB_HID_PATH_COMPARE_END 
-		| USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY,
+		USB_HID_PATH_COMPARE_BEGIN,
 		0x046d,
 		0xc30e,
@@ -89,6 +87,5 @@
 		path_mouse2,
 		-1,
-		USB_HID_PATH_COMPARE_END 
-		| USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY,
+		USB_HID_PATH_COMPARE_BEGIN,
 		-1,
 		-1,
Index: uspace/drv/usbhid/usbhid.c
===================================================================
--- uspace/drv/usbhid/usbhid.c	(revision 1989cdf4a4cabe45be8f62104de2e5879b35feb0)
+++ uspace/drv/usbhid/usbhid.c	(revision f55ded32fc9ca74c4145a4f8b00fcf71563cf0d6)
@@ -199,12 +199,13 @@
 		    mapping->report_id);
 	}
-	
+
+	uint8_t report_id = (mapping->report_id >= 0) ? mapping->report_id : 0;
 	assert(hid_dev->report != NULL);
 	
 	usb_log_debug("Compare flags: %d\n", mapping->compare);
-	size_t size = usb_hid_report_size(hid_dev->report, mapping->report_id, 
+	size_t size = usb_hid_report_size(hid_dev->report, report_id, 
 	    USB_HID_REPORT_TYPE_INPUT);
 	usb_log_debug("Size of the input report: %zuB\n", size);
-	
+
 	usb_hid_report_path_free(usage_path);
 	
