Index: uspace/lib/usb/src/hidparser.c
===================================================================
--- uspace/lib/usb/src/hidparser.c	(revision cfbbe1d3a9a94acf026279720b2b199d8893f400)
+++ uspace/lib/usb/src/hidparser.c	(revision c7c0984abd146b8b0c0fe4967d83486b28accc5d)
@@ -362,4 +362,5 @@
 					offset_output = 0;
 					offset_feature = 0;
+					usb_hid_report_path_set_report_id (usage_path, report_item->id);
 					break;
 
@@ -1250,4 +1251,6 @@
 		return NULL;
 	}
+
+	new_usage_path->report_id = usage_path->report_id;
 	
 	if(list_empty(&usage_path->head)){
@@ -1639,12 +1642,13 @@
 	while(field_it != &report_des->report_items) {
 		field = list_get_instance(field_it, usb_hid_report_field_t, link);
-			
-		usb_hid_report_path_append_item (field->collection_path, field->usage_page, field->usage);
-		if(usb_hid_report_compare_usage_path (field->collection_path, path, flags) == EOK){
+
+		if(USB_HID_ITEM_FLAG_CONSTANT(field->item_flags) == 0) {
+			usb_hid_report_path_append_item (field->collection_path, field->usage_page, field->usage);
+			if(usb_hid_report_compare_usage_path (field->collection_path, path, flags) == EOK){
+				usb_hid_report_remove_last_item (field->collection_path);
+				return field;
+			}
 			usb_hid_report_remove_last_item (field->collection_path);
-			return field;
-		}
-		usb_hid_report_remove_last_item (field->collection_path);
-
+		}
 		field_it = field_it->next;
 	}
