Index: uspace/lib/usbhid/include/usb/hid/hid_report_items.h
===================================================================
--- uspace/lib/usbhid/include/usb/hid/hid_report_items.h	(revision 160b75e098f96312d13cf8c93e26f0ee3e46c1a5)
+++ uspace/lib/usbhid/include/usb/hid/hid_report_items.h	(revision 293de44a704e7bc7d4f6002dc296c4b59564d777)
@@ -46,4 +46,11 @@
 #define USB_HID_ITEM_IS_LONG(data)	(data == 0xFE)
 
+
+/**
+ * Extended usage macros
+ */
+#define USB_HID_IS_EXTENDED_USAGE(usage)	((usage & 0xFFFF0000) != 0)
+#define USB_HID_EXTENDED_USAGE_PAGE(usage)	((usage & 0xFFFF0000) >> 16)
+#define USB_HID_EXTENDED_USAGE(usage)		(usage & 0xFFFF)
 
 /**
Index: uspace/lib/usbhid/include/usb/hid/hidparser.h
===================================================================
--- uspace/lib/usbhid/include/usb/hid/hidparser.h	(revision 160b75e098f96312d13cf8c93e26f0ee3e46c1a5)
+++ uspace/lib/usbhid/include/usb/hid/hidparser.h	(revision 293de44a704e7bc7d4f6002dc296c4b59564d777)
@@ -51,8 +51,4 @@
                          size_t size, uint8_t *report_id);
 
-/** */
-size_t usb_hid_report_input_length(const usb_hid_report_t *report,
-	usb_hid_report_path_t *path, int flags);
-
 /*
  * Output report parser functions
@@ -65,7 +61,7 @@
 void usb_hid_report_output_free(uint8_t *output);
 
-/** Returns size of output for given usage path */
-size_t usb_hid_report_output_size(usb_hid_report_t *report,
-                                  usb_hid_report_path_t *path, int flags);
+/** Returns size of report in items */
+size_t usb_hid_report_size(usb_hid_report_t *report, uint8_t report_id, 
+                           usb_hid_report_type_t type);
 
 /** Makes the output report buffer by translated given data */
Index: uspace/lib/usbhid/include/usb/hid/hidtypes.h
===================================================================
--- uspace/lib/usbhid/include/usb/hid/hidtypes.h	(revision 160b75e098f96312d13cf8c93e26f0ee3e46c1a5)
+++ uspace/lib/usbhid/include/usb/hid/hidtypes.h	(revision 293de44a704e7bc7d4f6002dc296c4b59564d777)
@@ -39,5 +39,5 @@
 #include <adt/list.h>
 
-#define USB_HID_MAX_USAGES	20
+#define USB_HID_MAX_USAGES	0xffff
 
 #define USB_HID_UINT32_TO_INT32(x, size)	((((x) & (1 << ((size) - 1))) != 0) ? -(~(x - 1) & ((1 << size) - 1)) : (x)) //(-(~((x) - 1)))
@@ -92,9 +92,11 @@
 	int32_t physical_minimum;
 	int32_t physical_maximum;
-	uint32_t usage_minimum;
-	uint32_t usage_maximum;
+	int32_t usage_minimum;
+	int32_t usage_maximum;
 	uint32_t unit;
 	uint32_t unit_exponent;
-	
+
+	uint32_t *usages;
+	size_t usages_count;
 
 	int32_t value;
@@ -121,7 +123,7 @@
 
 	/** */	
-	uint32_t usage_minimum;
-	/** */	
-	uint32_t usage_maximum;
+	int32_t usage_minimum;
+	/** */	
+	int32_t usage_maximum;
 	/** */	
 	int32_t logical_minimum;
Index: uspace/lib/usbhid/include/usb/hid/usages/core.h
===================================================================
--- uspace/lib/usbhid/include/usb/hid/usages/core.h	(revision 160b75e098f96312d13cf8c93e26f0ee3e46c1a5)
+++ uspace/lib/usbhid/include/usb/hid/usages/core.h	(revision 293de44a704e7bc7d4f6002dc296c4b59564d777)
@@ -67,4 +67,8 @@
 } usb_hidut_usage_generic_desktop_t;
 
+typedef enum {
+	USB_HIDUT_USAGE_CONSUMER_CONSUMER_CONTROL = 1
+} usb_hidut_usage_consumer_t;
+
 
 #endif
