|  |  |  | @ -328,43 +328,46 @@ | 
			
		
	
		
			
				
					|  |  |  |  | 		#define HID_KEYBOARD_SC_RIGHT_GUI                         0xE7 | 
			
		
	
		
			
				
					|  |  |  |  | 		//@}
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		/** \name Standard HID Device Report Descriptors */ | 
			
		
	
		
			
				
					|  |  |  |  | 		/** \name Common HID Device Report Descriptors */ | 
			
		
	
		
			
				
					|  |  |  |  | 		//@{
 | 
			
		
	
		
			
				
					|  |  |  |  | 		/** \hideinitializer
 | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  A list of HID report item array elements that describe a typical HID USB Joystick. The resulting report descriptor | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  is structured according to the following layout: | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  A list of HID report item array elements that describe a typical HID USB Joystick. The resulting report | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  descriptor is structured according to the following layout: | 
			
		
	
		
			
				
					|  |  |  |  | 		 * | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \code | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  struct | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  { | 
			
		
	
		
			
				
					|  |  |  |  | 		 *      uintA_t Buttons; // Pressed buttons bitmask
 | 
			
		
	
		
			
				
					|  |  |  |  | 		 *      intB_t X; // Signed X axis value
 | 
			
		
	
		
			
				
					|  |  |  |  | 		 *      intB_t Y; // Signed Y axis value
 | 
			
		
	
		
			
				
					|  |  |  |  | 		 *      int8_t Z; // Signed Z axis value
 | 
			
		
	
		
			
				
					|  |  |  |  | 		 *      // Additional axis elements here
 | 
			
		
	
		
			
				
					|  |  |  |  | 		 *      uintA_t Buttons; // Pressed buttons bitmask
 | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  } Joystick_Report; | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \endcode | 
			
		
	
		
			
				
					|  |  |  |  | 		 * | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  Where \c uintA_t is a type large enough to hold one bit per button, and \c intB_t is a type large enough to hold the | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  ranges of the signed \c MinAxisVal and \c MaxAxisVal values. | 
			
		
	
		
			
				
					|  |  |  |  | 		 * | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] MinAxisVal      Minimum X/Y logical axis value. | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] MaxAxisVal      Maximum X/Y logical axis value. | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] MinPhysicalVal  Minimum X/Y physical axis value, for movement resolution calculations. | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] MaxPhysicalVal  Maximum X/Y physical axis value, for movement resolution calculations. | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] Buttons         Total number of buttons in the device. | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] NumAxis         Number of axis in the joystick (8-bit) | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] MinAxisVal      Minimum logical axis value (16-bit). | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] MaxAxisVal      Maximum logical axis value (16-bit). | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] MinPhysicalVal  Minimum physical axis value, for movement resolution calculations (16-bit). | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] MaxPhysicalVal  Maximum physical axis value, for movement resolution calculations (16-bit). | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] Buttons         Total number of buttons in the device (8-bit). | 
			
		
	
		
			
				
					|  |  |  |  | 		 */ | 
			
		
	
		
			
				
					|  |  |  |  | 		#define HID_DESCRIPTOR_JOYSTICK(MinAxisVal, MaxAxisVal, MinPhysicalVal, MaxPhysicalVal, Buttons) \ | 
			
		
	
		
			
				
					|  |  |  |  | 		#define HID_DESCRIPTOR_JOYSTICK(NumAxis, MinAxisVal, MaxAxisVal, MinPhysicalVal, MaxPhysicalVal, Buttons) \ | 
			
		
	
		
			
				
					|  |  |  |  | 			HID_RI_USAGE_PAGE(8, 0x01),                     \ | 
			
		
	
		
			
				
					|  |  |  |  | 			HID_RI_USAGE(8, 0x04),                          \ | 
			
		
	
		
			
				
					|  |  |  |  | 			HID_RI_COLLECTION(8, 0x01),                     \ | 
			
		
	
		
			
				
					|  |  |  |  | 				HID_RI_USAGE(8, 0x01),                      \ | 
			
		
	
		
			
				
					|  |  |  |  | 				HID_RI_COLLECTION(8, 0x00),                 \ | 
			
		
	
		
			
				
					|  |  |  |  | 					HID_RI_USAGE(8, 0x30),                  \ | 
			
		
	
		
			
				
					|  |  |  |  | 					HID_RI_USAGE(8, 0x31),                  \ | 
			
		
	
		
			
				
					|  |  |  |  | 					HID_RI_USAGE_MINIMUM(8, 0x30),          \ | 
			
		
	
		
			
				
					|  |  |  |  | 					HID_RI_USAGE_MAXIMUM(8, (0x30 + (NumAxis - 1))), \ | 
			
		
	
		
			
				
					|  |  |  |  | 					HID_RI_LOGICAL_MINIMUM(16, MinAxisVal), \ | 
			
		
	
		
			
				
					|  |  |  |  | 					HID_RI_LOGICAL_MAXIMUM(16, MaxAxisVal), \ | 
			
		
	
		
			
				
					|  |  |  |  | 					HID_RI_PHYSICAL_MINIMUM(16, MinPhysicalVal), \ | 
			
		
	
		
			
				
					|  |  |  |  | 					HID_RI_PHYSICAL_MAXIMUM(16, MaxPhysicalVal), \ | 
			
		
	
		
			
				
					|  |  |  |  | 					HID_RI_REPORT_COUNT(8, 0x02),           \ | 
			
		
	
		
			
				
					|  |  |  |  | 					HID_RI_REPORT_COUNT(8, NumAxis),        \ | 
			
		
	
		
			
				
					|  |  |  |  | 					HID_RI_REPORT_SIZE(8, ((((MinAxisVal >= -0xFF) && (MaxAxisVal <= 0xFF)) ? 8 : 16))), \ | 
			
		
	
		
			
				
					|  |  |  |  | 					HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), \ | 
			
		
	
		
			
				
					|  |  |  |  | 				HID_RI_END_COLLECTION(0),                   \ | 
			
		
	
	
		
			
				
					|  |  |  | @ -395,8 +398,7 @@ | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  } Keyboard_Report; | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \endcode | 
			
		
	
		
			
				
					|  |  |  |  | 		 * | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] MaxKeys  Number of simultaneous keys that can be reported at the one time (a value between 1 and | 
			
		
	
		
			
				
					|  |  |  |  | 		 *                      (ENDPOINT_SIZE - 2) ). | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] MaxKeys  Number of simultaneous keys that can be reported at the one time (8-bit). | 
			
		
	
		
			
				
					|  |  |  |  | 		 */ | 
			
		
	
		
			
				
					|  |  |  |  | 		#define HID_DESCRIPTOR_KEYBOARD(MaxKeys)            \ | 
			
		
	
		
			
				
					|  |  |  |  | 			HID_RI_USAGE_PAGE(8, 0x01),                     \ | 
			
		
	
	
		
			
				
					|  |  |  | @ -449,11 +451,11 @@ | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  Where \c intA_t is a type large enough to hold one bit per button, and \c intB_t is a type large enough to hold the | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  ranges of the signed \c MinAxisVal and \c MaxAxisVal values. | 
			
		
	
		
			
				
					|  |  |  |  | 		 * | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] MinAxisVal      Minimum X/Y logical axis value. | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] MaxAxisVal      Maximum X/Y logical axis value. | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] MinPhysicalVal  Minimum X/Y physical axis value, for movement resolution calculations. | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] MaxPhysicalVal  Maximum X/Y physical axis value, for movement resolution calculations. | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] Buttons         Total number of buttons in the device. | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] MinAxisVal      Minimum X/Y logical axis value (16-bit). | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] MaxAxisVal      Maximum X/Y logical axis value (16-bit). | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] MinPhysicalVal  Minimum X/Y physical axis value, for movement resolution calculations (16-bit). | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] MaxPhysicalVal  Maximum X/Y physical axis value, for movement resolution calculations (16-bit). | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] Buttons         Total number of buttons in the device (8-bit). | 
			
		
	
		
			
				
					|  |  |  |  | 		 *  \param[in] AbsoluteCoords  Boolean true to use absolute X/Y coordinates (e.g. touchscreen). | 
			
		
	
		
			
				
					|  |  |  |  | 		 */ | 
			
		
	
		
			
				
					|  |  |  |  | 		#define HID_DESCRIPTOR_MOUSE(MinAxisVal, MaxAxisVal, MinPhysicalVal, MaxPhysicalVal, Buttons, AbsoluteCoords) \ | 
			
		
	
	
		
			
				
					|  |  |  | 
 |