Fix MIT license language to make its intent clearer.
[pub/lufa.git] / LUFA / Drivers / USB / Class / Common / HID.h
index b860f08..761458b 100644 (file)
@@ -9,13 +9,13 @@
 /*\r
   Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
 \r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
+  Permission to use, copy, modify, distribute, and sell this \r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in \r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting \r
+  documentation, and that the name of the author not be used in \r
+  advertising or publicity pertaining to distribution of the \r
   software without specific, written prior permission.\r
 \r
   The author disclaim all warranties with regard to this\r
 \r
        /* Macros: */\r
                /** HID Class Specific Request to get the current HID report from the device. */\r
-               #define REQ_GetReport      0x01\r
+               #define REQ_GetReport                0x01\r
 \r
                /** HID Class Specific Request to get the current device idle count. */\r
-               #define REQ_GetIdle        0x02\r
+               #define REQ_GetIdle                  0x02\r
 \r
                /** HID Class Specific Request to set the current HID report to the device. */\r
-               #define REQ_SetReport      0x09\r
+               #define REQ_SetReport                0x09\r
 \r
                /** HID Class Specific Request to set the device's idle count. */\r
-               #define REQ_SetIdle        0x0A\r
+               #define REQ_SetIdle                  0x0A\r
 \r
                /** HID Class Specific Request to get the current HID report protocol mode. */\r
-               #define REQ_GetProtocol    0x03\r
+               #define REQ_GetProtocol              0x03\r
 \r
                /** HID Class Specific Request to set the current HID report protocol mode. */\r
-               #define REQ_SetProtocol    0x0B\r
+               #define REQ_SetProtocol              0x0B\r
 \r
                /** Descriptor header type value, to indicate a HID class HID descriptor. */\r
-               #define DTYPE_HID          0x21\r
+               #define DTYPE_HID                    0x21\r
                \r
                /** Descriptor header type value, to indicate a HID class HID report descriptor. */\r
-               #define DTYPE_Report       0x22\r
+               #define DTYPE_Report                 0x22\r
                \r
+               /** Constant for the protocol value of a HID interface descriptor, indicating that the interface does not support\r
+                *  any HID class boot protocol (see HID Class Specification).\r
+                */\r
+               #define HID_NON_BOOT_PROTOCOL        0x00\r
+\r
+               /** Constant for the protocol value of a HID interface descriptor, indicating that the interface supports the\r
+                *  HID class Keyboard boot protocol (see HID Class Specification).\r
+                */\r
+               #define HID_BOOT_KEYBOARD_PROTOCOL   0x01\r
+\r
+               /** Constant for the protocol value of a HID interface descriptor, indicating that the interface supports the\r
+                *  HID class Mouse boot protocol (see HID Class Specification).\r
+                */\r
+               #define HID_BOOT_MOUSE_PROTOCOL      0x02\r
+\r
        /* Type Defines: */\r
+               /** Enum for the different types of HID reports. */\r
+               enum HID_ReportItemTypes_t\r
+               {\r
+                       REPORT_ITEM_TYPE_In                   = 0, /**< Indicates that the item is an IN report type. */\r
+                       REPORT_ITEM_TYPE_Out                  = 1, /**< Indicates that the item is an OUT report type. */\r
+                       REPORT_ITEM_TYPE_Feature              = 2, /**< Indicates that the item is a FEATURE report type. */\r
+               };\r
+\r
                /** Type define for the HID class specific HID descriptor, to describe the HID device's specifications. Refer to the HID\r
                 *  specification for details on the structure elements.\r
                 */\r
                        uint16_t                 HIDReportLength;\r
                } USB_HID_Descriptor_t;\r
 \r
+               /** Type define for a standard Boot Protocol Mouse report */\r
+               typedef struct\r
+               {\r
+                       uint8_t Button; /**< Button mask for currently pressed buttons in the mouse */\r
+                       int8_t  X; /**< Current delta X movement of the mouse */\r
+                       int8_t  Y; /**< Current delta Y movement on the mouse */\r
+               } USB_MouseReport_Data_t;\r
+               \r
+               /** Type define for a standard Boot Protocol Keyboard report */\r
+               typedef struct\r
+               {\r
+                       uint8_t Modifier; /**< Keyboard modifier byte, indicating pressed modifier keys (such as Shift, Control, etc.) */\r
+                       uint8_t Reserved; /**< Reserved for OEM use, always set to 0 */\r
+                       uint8_t KeyCode[6]; /**< Key codes of the currently pressed keys */\r
+               } USB_KeyboardReport_Data_t;\r
+\r
                /** Type define for the data type used to store HID report descriptor elements. */\r
                typedef uint8_t USB_Descriptor_HIDReport_Datatype_t;\r
 \r