Index: uspace/lib/usb/include/usb/classes/hid.h
===================================================================
--- uspace/lib/usb/include/usb/classes/hid.h	(revision dafab9e00db54e85bdc9fdbe5ca3cdf7a1a5c0ef)
+++ uspace/lib/usb/include/usb/classes/hid.h	(revision a3b11077d8f52e4d473a595250433d9b2a216b53)
@@ -58,4 +58,38 @@
 } usb_hid_protocol_t;
 
+/** Part of standard USB HID descriptor specifying one class descriptor.
+ *
+ * (See HID Specification, p.22)
+ */
+typedef struct {
+	/** Type of class descriptor (Report or Physical). */
+	uint8_t class_descriptor_type;
+	/** Length of class descriptor. */
+	uint16_t class_descriptor_length;
+} __attribute__ ((packed)) usb_standard_hid_descriptor_class_item_t;
+
+/** Standard USB HID descriptor.
+ *
+ * (See HID Specification, p.22)
+ * 
+ * It is actually only the "header" of the descriptor, as it may have arbitrary
+ * length if more than one class descritor is provided.
+ */
+typedef struct {
+	/** Size of this descriptor in bytes. */
+	uint8_t length;
+	/** Descriptor type (USB_DESCTYPE_HID). */
+	uint8_t descriptor_type;
+	/** HID Class Specification release. */
+	uint16_t spec_release;
+	/** Country code of localized hardware. */
+	uint8_t country_code;
+	/** Total number of class (i.e. Report and Physical) descriptors. */
+	uint8_t class_count;
+	/** First mandatory class descriptor info. */
+	usb_standard_hid_descriptor_class_item_t class_descriptor;
+} __attribute__ ((packed)) usb_standard_hid_descriptor_t;
+
+
 /**
  * @brief USB/HID keyboard device type.
