+               \r
+               #if !defined(HID_MAX_REPORT_IDS) || defined(__DOXYGEN__)\r
+                       /** Constant indicating the maximum number of unique report IDs that can be processed in the report item\r
+                        *  descriptor for the report size information array in the user HID Report Info structure. A large value\r
+                        *  allows for more report ID report sizes to be stored, but consumes more memory. By default this is set\r
+                        *  to 5 items, but this can be overridden by defining HID_MAX_REPORT_IDS to another value in the user project\r
+                        *  makefile, and passing the define to the compiler using the -D compiler switch. Note that IN, OUT and FEATURE\r
+                        *  items sharing the same report ID consume only one size item in the array.\r
+                        */\r
+                       #define HID_MAX_REPORT_IDS            10\r
+               #endif\r
+\r
+               /** Returns the value a given HID report item (once its value has been fetched via \ref USB_GetHIDReportItemInfo())\r
+                *  left-aligned to the given data type. This allows for signed data to be interpreted correctly, by shifting the data\r
+                *  leftwards until the data's sign bit is in the correct position.\r
+                *\r
+                *  \param[in] reportitem  HID Report Item whose retrieved value is to be aligned\r
+                *  \param[in] type  Data type to align the HID report item's value to\r
+                *\r
+                *  \return Left-aligned data of the given report item's pre-retrived value for the given datatype\r
+                */\r
+               #define HID_ALIGN_DATA(reportitem, type) ((type)(reportitem->Value << (sizeof(type) - reportitem->Attributes.BitSize)))\r