Index: uspace/lib/usbhid/src/hiddescriptor.c
===================================================================
--- uspace/lib/usbhid/src/hiddescriptor.c	(revision 574f2763a63b0f7a18a34c671fc59e327a54e4ec)
+++ uspace/lib/usbhid/src/hiddescriptor.c	(revision b2387c2b5ff4443c840ba6e635e77c3ecda0ec84)
@@ -220,5 +220,5 @@
 			}
 			else {
-				usage =	report_item->usages[
+				usage = report_item->usages[
 					report_item->usages_count- 1]; 
 			}
@@ -245,13 +245,20 @@
 
 		field->size = report_item->size;
-	
+
 		if(report_item->type == USB_HID_REPORT_TYPE_INPUT) {
-			field->offset = report_item->offset + 
-			    ((report_item->count - (i + 1)) * 
-			    report_item->size);
+			int offset = report_item->offset + report_item->size * i;
+			int field_offset = (offset/8)*8 + (offset/8 + 1) * 8 - 
+				offset - report_item->size;
+			if(field_offset < 0) {
+				field->offset = 0;
+			}
+			else {
+				field->offset = field_offset;
+			}
 		}
 		else {
 			field->offset = report_item->offset + (i * report_item->size);
 		}
+
 
 		if(report->use_report_ids != 0) {
@@ -259,4 +266,5 @@
 			report->use_report_ids = 1;
 		}
+
 		field->item_flags = report_item->item_flags;
 
