/*++

Copyright (c) Microsoft Corporation. All rights reserved.

Module Name:

        HIDUSAGE.H

Abstract:

   Public Definitions of HID USAGES.

Environment:

    Kernel & user mode

--*/

#ifndef   __HIDUSAGE_H__
#define   __HIDUSAGE_H__
#include <winapifamily.h>

#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)


//
// Usage Pages
//

typedef USHORT USAGE, *PUSAGE;

#define HID_USAGE_PAGE_UNDEFINED                        ((USAGE) 0x00)
#define HID_USAGE_PAGE_GENERIC                          ((USAGE) 0x01)
#define HID_USAGE_PAGE_SIMULATION                       ((USAGE) 0x02)
#define HID_USAGE_PAGE_VR                               ((USAGE) 0x03)
#define HID_USAGE_PAGE_SPORT                            ((USAGE) 0x04)
#define HID_USAGE_PAGE_GAME                             ((USAGE) 0x05)
#define HID_USAGE_PAGE_GENERIC_DEVICE                   ((USAGE) 0x06)
#define HID_USAGE_PAGE_KEYBOARD                         ((USAGE) 0x07)
#define HID_USAGE_PAGE_LED                              ((USAGE) 0x08)
#define HID_USAGE_PAGE_BUTTON                           ((USAGE) 0x09)
#define HID_USAGE_PAGE_ORDINAL                          ((USAGE) 0x0A)
#define HID_USAGE_PAGE_TELEPHONY                        ((USAGE) 0x0B)
#define HID_USAGE_PAGE_CONSUMER                         ((USAGE) 0x0C)
#define HID_USAGE_PAGE_DIGITIZER                        ((USAGE) 0x0D)
#define HID_USAGE_PAGE_HAPTICS                          ((USAGE) 0x0E)
#define HID_USAGE_PAGE_PID                              ((USAGE) 0x0F)
#define HID_USAGE_PAGE_UNICODE                          ((USAGE) 0x10)
#define HID_USAGE_PAGE_ALPHANUMERIC                     ((USAGE) 0x14)
#define HID_USAGE_PAGE_SENSOR                           ((USAGE) 0x20)
#define HID_USAGE_PAGE_LIGHTING_ILLUMINATION            ((USAGE) 0x59)
#define HID_USAGE_PAGE_BARCODE_SCANNER                  ((USAGE) 0x8C)
#define HID_USAGE_PAGE_WEIGHING_DEVICE                  ((USAGE) 0x8D)
#define HID_USAGE_PAGE_MAGNETIC_STRIPE_READER           ((USAGE) 0x8E)
#define HID_USAGE_PAGE_CAMERA_CONTROL                   ((USAGE) 0x90)
#define HID_USAGE_PAGE_ARCADE                           ((USAGE) 0x91)
#define HID_USAGE_PAGE_MICROSOFT_BLUETOOTH_HANDSFREE    ((USAGE) 0xFFF3)
#define HID_USAGE_PAGE_VENDOR_DEFINED_BEGIN             ((USAGE) 0xFF00)
#define HID_USAGE_PAGE_VENDOR_DEFINED_END               ((USAGE) 0xFFFF)

//
// Generic Desktop Page (0x01)
//
#define HID_USAGE_GENERIC_POINTER                                       ((USAGE) 0x01)
#define HID_USAGE_GENERIC_MOUSE                                         ((USAGE) 0x02)
#define HID_USAGE_GENERIC_JOYSTICK                                      ((USAGE) 0x04)
#define HID_USAGE_GENERIC_GAMEPAD                                       ((USAGE) 0x05)
#define HID_USAGE_GENERIC_KEYBOARD                                      ((USAGE) 0x06)
#define HID_USAGE_GENERIC_KEYPAD                                        ((USAGE) 0x07)
#define HID_USAGE_GENERIC_MULTI_AXIS_CONTROLLER                         ((USAGE) 0x08)
#define HID_USAGE_GENERIC_TABLET_PC_SYSTEM_CTL                          ((USAGE) 0x09)
#define HID_USAGE_GENERIC_PORTABLE_DEVICE_CONTROL                       ((USAGE) 0x0D)
#define HID_USAGE_GENERIC_INTERACTIVE_CONTROL                           ((USAGE) 0x0E)
#define HID_USAGE_GENERIC_COUNTED_BUFFER                                ((USAGE) 0x3A)
#define HID_USAGE_GENERIC_SYSTEM_CTL                                    ((USAGE) 0x80)

#define HID_USAGE_GENERIC_X                                             ((USAGE) 0x30)
#define HID_USAGE_GENERIC_Y                                             ((USAGE) 0x31)
#define HID_USAGE_GENERIC_Z                                             ((USAGE) 0x32)
#define HID_USAGE_GENERIC_RX                                            ((USAGE) 0x33)
#define HID_USAGE_GENERIC_RY                                            ((USAGE) 0x34)
#define HID_USAGE_GENERIC_RZ                                            ((USAGE) 0x35)
#define HID_USAGE_GENERIC_SLIDER                                        ((USAGE) 0x36)
#define HID_USAGE_GENERIC_DIAL                                          ((USAGE) 0x37)
#define HID_USAGE_GENERIC_WHEEL                                         ((USAGE) 0x38)
#define HID_USAGE_GENERIC_HATSWITCH                                     ((USAGE) 0x39)
#define HID_USAGE_GENERIC_COUNTED_BUFFER                                ((USAGE) 0x3A)
#define HID_USAGE_GENERIC_BYTE_COUNT                                    ((USAGE) 0x3B)
#define HID_USAGE_GENERIC_MOTION_WAKEUP                                 ((USAGE) 0x3C)
#define HID_USAGE_GENERIC_START                                         ((USAGE) 0x3D)
#define HID_USAGE_GENERIC_SELECT                                        ((USAGE) 0x3E)
#define HID_USAGE_GENERIC_VX                                            ((USAGE) 0x40)
#define HID_USAGE_GENERIC_VY                                            ((USAGE) 0x41)
#define HID_USAGE_GENERIC_VZ                                            ((USAGE) 0x42)
#define HID_USAGE_GENERIC_VBRX                                          ((USAGE) 0x43)
#define HID_USAGE_GENERIC_VBRY                                          ((USAGE) 0x44)
#define HID_USAGE_GENERIC_VBRZ                                          ((USAGE) 0x45)
#define HID_USAGE_GENERIC_VNO                                           ((USAGE) 0x46)
#define HID_USAGE_GENERIC_FEATURE_NOTIFICATION                          ((USAGE) 0x47)
#define HID_USAGE_GENERIC_RESOLUTION_MULTIPLIER                         ((USAGE) 0x48)
#define HID_USAGE_GENERIC_SYSCTL_POWER                                  ((USAGE) 0x81)
#define HID_USAGE_GENERIC_SYSCTL_SLEEP                                  ((USAGE) 0x82)
#define HID_USAGE_GENERIC_SYSCTL_WAKE                                   ((USAGE) 0x83)
#define HID_USAGE_GENERIC_SYSCTL_CONTEXT_MENU                           ((USAGE) 0x84)
#define HID_USAGE_GENERIC_SYSCTL_MAIN_MENU                              ((USAGE) 0x85)
#define HID_USAGE_GENERIC_SYSCTL_APP_MENU                               ((USAGE) 0x86)
#define HID_USAGE_GENERIC_SYSCTL_HELP_MENU                              ((USAGE) 0x87)
#define HID_USAGE_GENERIC_SYSCTL_MENU_EXIT                              ((USAGE) 0x88)
#define HID_USAGE_GENERIC_SYSCTL_MENU_SELECT                            ((USAGE) 0x89)
#define HID_USAGE_GENERIC_SYSCTL_MENU_RIGHT                             ((USAGE) 0x8A)
#define HID_USAGE_GENERIC_SYSCTL_MENU_LEFT                              ((USAGE) 0x8B)
#define HID_USAGE_GENERIC_SYSCTL_MENU_UP                                ((USAGE) 0x8C)
#define HID_USAGE_GENERIC_SYSCTL_MENU_DOWN                              ((USAGE) 0x8D)
#define HID_USAGE_GENERIC_SYSCTL_COLD_RESTART                           ((USAGE) 0x8E)
#define HID_USAGE_GENERIC_SYSCTL_WARM_RESTART                           ((USAGE) 0x8F)
#define HID_USAGE_GENERIC_DPAD_UP                                       ((USAGE) 0x90)
#define HID_USAGE_GENERIC_DPAD_DOWN                                     ((USAGE) 0x91)
#define HID_USAGE_GENERIC_DPAD_RIGHT                                    ((USAGE) 0x92)
#define HID_USAGE_GENERIC_DPAD_LEFT                                     ((USAGE) 0x93)
#define HID_USAGE_GENERIC_SYSCTL_FN                                     ((USAGE) 0x97)
#define HID_USAGE_GENERIC_SYSCTL_FN_LOCK                                ((USAGE) 0x98)
#define HID_USAGE_GENERIC_SYSCTL_FN_LOCK_INDICATOR                      ((USAGE) 0x99)
#define HID_USAGE_GENERIC_SYSCTL_DISMISS_NOTIFICATION                   ((USAGE) 0x9A)
#define HID_USAGE_GENERIC_SYSCTL_DOCK                                   ((USAGE) 0xA0)
#define HID_USAGE_GENERIC_SYSCTL_UNDOCK                                 ((USAGE) 0xA1)
#define HID_USAGE_GENERIC_SYSCTL_SETUP                                  ((USAGE) 0xA2)
#define HID_USAGE_GENERIC_SYSCTL_SYS_BREAK                              ((USAGE) 0xA3)
#define HID_USAGE_GENERIC_SYSCTL_SYS_DBG_BREAK                          ((USAGE) 0xA4)
#define HID_USAGE_GENERIC_SYSCTL_APP_BREAK                              ((USAGE) 0xA5)
#define HID_USAGE_GENERIC_SYSCTL_APP_DBG_BREAK                          ((USAGE) 0xA6)
#define HID_USAGE_GENERIC_SYSCTL_MUTE                                   ((USAGE) 0xA7)
#define HID_USAGE_GENERIC_SYSCTL_HIBERNATE                              ((USAGE) 0xA8)
#define HID_USAGE_GENERIC_SYSCTL_DISP_INVERT                            ((USAGE) 0xB0)
#define HID_USAGE_GENERIC_SYSCTL_DISP_INTERNAL                          ((USAGE) 0xB1)
#define HID_USAGE_GENERIC_SYSCTL_DISP_EXTERNAL                          ((USAGE) 0xB2)
#define HID_USAGE_GENERIC_SYSCTL_DISP_BOTH                              ((USAGE) 0xB3)
#define HID_USAGE_GENERIC_SYSCTL_DISP_DUAL                              ((USAGE) 0xB4)
#define HID_USAGE_GENERIC_SYSCTL_DISP_TOGGLE                            ((USAGE) 0xB5)
#define HID_USAGE_GENERIC_SYSCTL_DISP_SWAP                              ((USAGE) 0xB6)
#define HID_USAGE_GENERIC_SYSCTL_DISP_AUTOSCALE                         ((USAGE) 0xB7)
#define HID_USAGE_GENERIC_SYSTEM_DISPLAY_ROTATION_LOCK_BUTTON           ((USAGE) 0xC9)
#define HID_USAGE_GENERIC_SYSTEM_DISPLAY_ROTATION_LOCK_SLIDER_SWITCH    ((USAGE) 0xCA)
#define HID_USAGE_GENERIC_CONTROL_ENABLE                                ((USAGE) 0xCB)

//
// Simulation Controls Page (0x02)
//
#define HID_USAGE_SIMULATION_FLIGHT_SIMULATION_DEVICE          ((USAGE) 0x01)
#define HID_USAGE_SIMULATION_AUTOMOBILE_SIMULATION_DEVICE      ((USAGE) 0x02)
#define HID_USAGE_SIMULATION_TANK_SIMULATION_DEVICE            ((USAGE) 0x03)
#define HID_USAGE_SIMULATION_SPACESHIP_SIMULATION_DEVICE       ((USAGE) 0x04)
#define HID_USAGE_SIMULATION_SUBMARINE_SIMULATION_DEVICE       ((USAGE) 0x05)
#define HID_USAGE_SIMULATION_SAILING_SIMULATION_DEVICE         ((USAGE) 0x06)
#define HID_USAGE_SIMULATION_MOTORCYCLE_SIMULATION_DEVICE      ((USAGE) 0x07)
#define HID_USAGE_SIMULATION_SPORTS_SIMULATION_DEVICE          ((USAGE) 0x08)
#define HID_USAGE_SIMULATION_AIRPLANE_SIMULATION_DEVICE        ((USAGE) 0x09)
#define HID_USAGE_SIMULATION_HELICOPTER_SIMULATION_DEVICE      ((USAGE) 0x0A)
#define HID_USAGE_SIMULATION_MAGIC_CARPET_SIMULATION_DEVICE    ((USAGE) 0x0B)
#define HID_USAGE_SIMULATION_BICYCLE_SIMULATION_DEVICE         ((USAGE) 0x0C)
#define HID_USAGE_SIMULATION_FLIGHT_CONTROL_STICK              ((USAGE) 0x20)
#define HID_USAGE_SIMULATION_FLIGHT_STICK                      ((USAGE) 0x21)
#define HID_USAGE_SIMULATION_CYCLIC_CONTROL                    ((USAGE) 0x22)
#define HID_USAGE_SIMULATION_CYCLIC_TRIM                       ((USAGE) 0x23)
#define HID_USAGE_SIMULATION_FLIGHT_YOKE                       ((USAGE) 0x24)
#define HID_USAGE_SIMULATION_TRACK_CONTROL                     ((USAGE) 0x25)

#define HID_USAGE_SIMULATION_AILERON                           ((USAGE) 0xB0)
#define HID_USAGE_SIMULATION_AILERON_TRIM                      ((USAGE) 0xB1)
#define HID_USAGE_SIMULATION_ANTI_TORQUE_CONTROL               ((USAGE) 0xB2)
#define HID_USAGE_SIMULATION_AUTOPIOLOT_ENABLE                 ((USAGE) 0xB3)
#define HID_USAGE_SIMULATION_CHAFF_RELEASE                     ((USAGE) 0xB4)
#define HID_USAGE_SIMULATION_COLLECTIVE_CONTROL                ((USAGE) 0xB5)
#define HID_USAGE_SIMULATION_DIVE_BRAKE                        ((USAGE) 0xB6)
#define HID_USAGE_SIMULATION_ELECTRONIC_COUNTERMEASURES        ((USAGE) 0xB7)
#define HID_USAGE_SIMULATION_ELEVATOR                          ((USAGE) 0xB8)
#define HID_USAGE_SIMULATION_ELEVATOR_TRIM                     ((USAGE) 0xB9)
#define HID_USAGE_SIMULATION_RUDDER                            ((USAGE) 0xBA)
#define HID_USAGE_SIMULATION_THROTTLE                          ((USAGE) 0xBB)
#define HID_USAGE_SIMULATION_FLIGHT_COMMUNICATIONS             ((USAGE) 0xBC)
#define HID_USAGE_SIMULATION_FLARE_RELEASE                     ((USAGE) 0xBD)
#define HID_USAGE_SIMULATION_LANDING_GEAR                      ((USAGE) 0xBE)
#define HID_USAGE_SIMULATION_TOE_BRAKE                         ((USAGE) 0xBF)
#define HID_USAGE_SIMULATION_TRIGGER                           ((USAGE) 0xC0)
#define HID_USAGE_SIMULATION_WEAPONS_ARM                       ((USAGE) 0xC1)
#define HID_USAGE_SIMULATION_WEAPONS_SELECT                    ((USAGE) 0xC2)
#define HID_USAGE_SIMULATION_WING_FLAPS                        ((USAGE) 0xC3)
#define HID_USAGE_SIMULATION_ACCELLERATOR                      ((USAGE) 0xC4)
#define HID_USAGE_SIMULATION_BRAKE                             ((USAGE) 0xC5)
#define HID_USAGE_SIMULATION_CLUTCH                            ((USAGE) 0xC6)
#define HID_USAGE_SIMULATION_SHIFTER                           ((USAGE) 0xC7)
#define HID_USAGE_SIMULATION_STEERING                          ((USAGE) 0xC8)
#define HID_USAGE_SIMULATION_TURRET_DIRECTION                  ((USAGE) 0xC9)
#define HID_USAGE_SIMULATION_BARREL_ELEVATION                  ((USAGE) 0xCA)
#define HID_USAGE_SIMULATION_DIVE_PLANE                        ((USAGE) 0xCB)
#define HID_USAGE_SIMULATION_BALLAST                           ((USAGE) 0xCC)
#define HID_USAGE_SIMULATION_BICYCLE_CRANK                     ((USAGE) 0xCD)
#define HID_USAGE_SIMULATION_HANDLE_BARS                       ((USAGE) 0xCE)
#define HID_USAGE_SIMULATION_FRONT_BRAKE                       ((USAGE) 0xCF)
#define HID_USAGE_SIMULATION_REAR_BRAKE                        ((USAGE) 0xD0)

//
// Virtual Reality Controls Page (0x03)
//
#define HID_USAGE_VR_BELT                    ((USAGE) 0x01)
#define HID_USAGE_VR_BODY_SUIT               ((USAGE) 0x02)
#define HID_USAGE_VR_FLEXOR                  ((USAGE) 0x03)
#define HID_USAGE_VR_GLOVE                   ((USAGE) 0x04)
#define HID_USAGE_VR_HEAD_TRACKER            ((USAGE) 0x05)
#define HID_USAGE_VR_HEAD_MOUNTED_DISPLAY    ((USAGE) 0x06)
#define HID_USAGE_VR_HAND_TRACKER            ((USAGE) 0x07)
#define HID_USAGE_VR_OCULOMETER              ((USAGE) 0x08)
#define HID_USAGE_VR_VEST                    ((USAGE) 0x09)
#define HID_USAGE_VR_ANIMATRONIC_DEVICE      ((USAGE) 0x0A)

#define HID_USAGE_VR_STEREO_ENABLE           ((USAGE) 0x20)
#define HID_USAGE_VR_DISPLAY_ENABLE          ((USAGE) 0x21)

//
// Sport Controls Page (0x04)
//
#define HID_USAGE_SPORT_BASEBALL_BAT        ((USAGE) 0x01)
#define HID_USAGE_SPORT_GOLF_CLUB           ((USAGE) 0x02)
#define HID_USAGE_SPORT_ROWING_MACHINE      ((USAGE) 0x03)
#define HID_USAGE_SPORT_TREADMILL           ((USAGE) 0x04)
#define HID_USAGE_SPORT_STICK_TYPE          ((USAGE) 0x38)

#define HID_USAGE_SPORT_OAR                 ((USAGE) 0x30)
#define HID_USAGE_SPORT_SLOPE               ((USAGE) 0x31)
#define HID_USAGE_SPORT_RATE                ((USAGE) 0x32)
#define HID_USAGE_SPORT_STICK_SPEED         ((USAGE) 0x33)
#define HID_USAGE_SPORT_STICK_FACE_ANGLE    ((USAGE) 0x34)
#define HID_USAGE_SPORT_HEEL_TOE            ((USAGE) 0x35)
#define HID_USAGE_SPORT_FOLLOW_THROUGH      ((USAGE) 0x36)
#define HID_USAGE_SPORT_TEMPO               ((USAGE) 0x37)
#define HID_USAGE_SPORT_HEIGHT              ((USAGE) 0x39)
#define HID_USAGE_SPORT_PUTTER              ((USAGE) 0x50)
#define HID_USAGE_SPORT_1_IRON              ((USAGE) 0x51)
#define HID_USAGE_SPORT_2_IRON              ((USAGE) 0x52)
#define HID_USAGE_SPORT_3_IRON              ((USAGE) 0x53)
#define HID_USAGE_SPORT_4_IRON              ((USAGE) 0x54)
#define HID_USAGE_SPORT_5_IRON              ((USAGE) 0x55)
#define HID_USAGE_SPORT_6_IRON              ((USAGE) 0x56)
#define HID_USAGE_SPORT_7_IRON              ((USAGE) 0x57)
#define HID_USAGE_SPORT_8_IRON              ((USAGE) 0x58)
#define HID_USAGE_SPORT_9_IRON              ((USAGE) 0x59)
#define HID_USAGE_SPORT_10_IRON             ((USAGE) 0x5A)
#define HID_USAGE_SPORT_11_IRON             ((USAGE) 0x5B)
#define HID_USAGE_SPORT_SAND_WEDGE          ((USAGE) 0x5C)
#define HID_USAGE_SPORT_LOFT_WEDGE          ((USAGE) 0x5D)
#define HID_USAGE_SPORT_POWER_WEDGE         ((USAGE) 0x5E)
#define HID_USAGE_SPORT_1_WOOD              ((USAGE) 0x5F)
#define HID_USAGE_SPORT_3_WOOD              ((USAGE) 0x60)
#define HID_USAGE_SPORT_5_WOOD              ((USAGE) 0x61)
#define HID_USAGE_SPORT_7_WOOD              ((USAGE) 0x62)
#define HID_USAGE_SPORT_9_WOOD              ((USAGE) 0x63)

//
// Game Controls Page (0x05)
//
#define HID_USAGE_GAME_3D_GAME_CONTROLLER    ((USAGE) 0x01)
#define HID_USAGE_GAME_PINBALL_DEVICE        ((USAGE) 0x02)
#define HID_USAGE_GAME_GUN_DEVICE            ((USAGE) 0x03)
#define HID_USAGE_GAME_POINT_OF_VIEW         ((USAGE) 0x20)
#define HID_USAGE_GAME_GUN_SELECTOR          ((USAGE) 0x32)
#define HID_USAGE_GAME_GAMEPAD_FIRE_JUMP     ((USAGE) 0x37)
#define HID_USAGE_GAME_GAMEPAD_TRIGGER       ((USAGE) 0x39)

#define HID_USAGE_GAME_TURN_RIGHT_LEFT       ((USAGE) 0x21)
#define HID_USAGE_GAME_PITCH_FORWARD_BACK    ((USAGE) 0x22)
#define HID_USAGE_GAME_ROLL_RIGHT_LEFT       ((USAGE) 0x23)
#define HID_USAGE_GAME_MOVE_RIGHT_LEFT       ((USAGE) 0x24)
#define HID_USAGE_GAME_MOVE_FORWARD_BACK     ((USAGE) 0x25)
#define HID_USAGE_GAME_MOVE_UP_DOWN          ((USAGE) 0x26)
#define HID_USAGE_GAME_LEAN_RIGHT_LEFT       ((USAGE) 0x27)
#define HID_USAGE_GAME_LEAN_FORWARD_BACK     ((USAGE) 0x28)
#define HID_USAGE_GAME_POV_HEIGHT            ((USAGE) 0x29)
#define HID_USAGE_GAME_FLIPPER               ((USAGE) 0x2A)
#define HID_USAGE_GAME_SECONDARY_FLIPPER     ((USAGE) 0x2B)
#define HID_USAGE_GAME_BUMP                  ((USAGE) 0x2C)
#define HID_USAGE_GAME_NEW_GAME              ((USAGE) 0x2D)
#define HID_USAGE_GAME_SHOOT_BALL            ((USAGE) 0x2E)
#define HID_USAGE_GAME_PLAYER                ((USAGE) 0x2F)
#define HID_USAGE_GAME_GUN_BOLT              ((USAGE) 0x30)
#define HID_USAGE_GAME_GUN_CLIP              ((USAGE) 0x31)
#define HID_USAGE_GAME_GUN_SINGLE_SHOT       ((USAGE) 0x33)
#define HID_USAGE_GAME_GUN_BURST             ((USAGE) 0x34)
#define HID_USAGE_GAME_GUN_AUTOMATIC         ((USAGE) 0x35)
#define HID_USAGE_GAME_GUN_SAFETY            ((USAGE) 0x36)

//
// Generic Device Controls Page (0x06)
//
#define HID_USAGE_GENERIC_DEVICE_BATTERY_STRENGTH              ((USAGE) 0x20)
#define HID_USAGE_GENERIC_DEVICE_WIRELESS_CHANNEL              ((USAGE) 0x21)
#define HID_USAGE_GENERIC_DEVICE_WIRELESS_ID                   ((USAGE) 0x22)
#define HID_USAGE_GENERIC_DEVICE_DISCOVER_WIRELESS_CONTROL     ((USAGE) 0x23)
#define HID_USAGE_GENERIC_DEVICE_SECURITY_CODE_CHAR_ENTERED    ((USAGE) 0x24)
#define HID_USAGE_GENERIC_DEVICE_SECURITY_CODE_CHAR_ERASED     ((USAGE) 0x25)
#define HID_USAGE_GENERIC_DEVICE_SECURITY_CODE_CLEARED         ((USAGE) 0x26)

//
// Keyboard/Keypad Page (0x07)
//

// Error "keys"
#define HID_USAGE_KEYBOARD_NOEVENT     ((USAGE) 0x00)
#define HID_USAGE_KEYBOARD_ROLLOVER    ((USAGE) 0x01)
#define HID_USAGE_KEYBOARD_POSTFAIL    ((USAGE) 0x02)
#define HID_USAGE_KEYBOARD_UNDEFINED   ((USAGE) 0x03)

// Letters
#define HID_USAGE_KEYBOARD_aA          ((USAGE) 0x04)
#define HID_USAGE_KEYBOARD_zZ          ((USAGE) 0x1D)

// Numbers
#define HID_USAGE_KEYBOARD_ONE         ((USAGE) 0x1E)
#define HID_USAGE_KEYBOARD_ZERO        ((USAGE) 0x27)

// Modifier Keys
#define HID_USAGE_KEYBOARD_LCTRL       ((USAGE) 0xE0)
#define HID_USAGE_KEYBOARD_LSHFT       ((USAGE) 0xE1)
#define HID_USAGE_KEYBOARD_LALT        ((USAGE) 0xE2)
#define HID_USAGE_KEYBOARD_LGUI        ((USAGE) 0xE3)
#define HID_USAGE_KEYBOARD_RCTRL       ((USAGE) 0xE4)
#define HID_USAGE_KEYBOARD_RSHFT       ((USAGE) 0xE5)
#define HID_USAGE_KEYBOARD_RALT        ((USAGE) 0xE6)
#define HID_USAGE_KEYBOARD_RGUI        ((USAGE) 0xE7)
#define HID_USAGE_KEYBOARD_SCROLL_LOCK ((USAGE) 0x47)
#define HID_USAGE_KEYBOARD_NUM_LOCK    ((USAGE) 0x53)
#define HID_USAGE_KEYBOARD_CAPS_LOCK   ((USAGE) 0x39)

// Function keys
#define HID_USAGE_KEYBOARD_F1          ((USAGE) 0x3A)
#define HID_USAGE_KEYBOARD_F2          ((USAGE) 0x3B)
#define HID_USAGE_KEYBOARD_F3          ((USAGE) 0x3C)
#define HID_USAGE_KEYBOARD_F4          ((USAGE) 0x3D)
#define HID_USAGE_KEYBOARD_F5          ((USAGE) 0x3E)
#define HID_USAGE_KEYBOARD_F6          ((USAGE) 0x3F)
#define HID_USAGE_KEYBOARD_F7          ((USAGE) 0x40)
#define HID_USAGE_KEYBOARD_F8          ((USAGE) 0x41)
#define HID_USAGE_KEYBOARD_F9          ((USAGE) 0x42)
#define HID_USAGE_KEYBOARD_F10         ((USAGE) 0x43)
#define HID_USAGE_KEYBOARD_F11         ((USAGE) 0x44)
#define HID_USAGE_KEYBOARD_F12         ((USAGE) 0x45)
#define HID_USAGE_KEYBOARD_F13         ((USAGE) 0x68)
#define HID_USAGE_KEYBOARD_F14         ((USAGE) 0x69)
#define HID_USAGE_KEYBOARD_F15         ((USAGE) 0x6A)
#define HID_USAGE_KEYBOARD_F16         ((USAGE) 0x6B)
#define HID_USAGE_KEYBOARD_F17         ((USAGE) 0x6C)
#define HID_USAGE_KEYBOARD_F18         ((USAGE) 0x6D)
#define HID_USAGE_KEYBOARD_F19         ((USAGE) 0x6E)
#define HID_USAGE_KEYBOARD_F20         ((USAGE) 0x6F)
#define HID_USAGE_KEYBOARD_F21         ((USAGE) 0x70)
#define HID_USAGE_KEYBOARD_F22         ((USAGE) 0x71)
#define HID_USAGE_KEYBOARD_F23         ((USAGE) 0x72)
#define HID_USAGE_KEYBOARD_F24         ((USAGE) 0x73)

#define HID_USAGE_KEYBOARD_RETURN      ((USAGE) 0x28)
#define HID_USAGE_KEYBOARD_ESCAPE      ((USAGE) 0x29)
#define HID_USAGE_KEYBOARD_DELETE      ((USAGE) 0x2A)

#define HID_USAGE_KEYBOARD_PRINT_SCREEN      ((USAGE) 0x46)
#define HID_USAGE_KEYBOARD_DELETE_FORWARD    ((USAGE) 0x4C)

// Numeric Keypad
#define HID_USAGE_KEYBOARD_KEYPAD_1_AND_END     ((USAGE) 0x59)
#define HID_USAGE_KEYBOARD_KEYPAD_0_AND_INSERT  ((USAGE) 0x62)

//
// LED Page (0x08)
//
#define HID_USAGE_LED_NUM_LOCK               ((USAGE) 0x01)
#define HID_USAGE_LED_CAPS_LOCK              ((USAGE) 0x02)
#define HID_USAGE_LED_SCROLL_LOCK            ((USAGE) 0x03)
#define HID_USAGE_LED_COMPOSE                ((USAGE) 0x04)
#define HID_USAGE_LED_KANA                   ((USAGE) 0x05)
#define HID_USAGE_LED_POWER                  ((USAGE) 0x06)
#define HID_USAGE_LED_SHIFT                  ((USAGE) 0x07)
#define HID_USAGE_LED_DO_NOT_DISTURB         ((USAGE) 0x08)
#define HID_USAGE_LED_MUTE                   ((USAGE) 0x09)
#define HID_USAGE_LED_TONE_ENABLE            ((USAGE) 0x0A)
#define HID_USAGE_LED_HIGH_CUT_FILTER        ((USAGE) 0x0B)
#define HID_USAGE_LED_LOW_CUT_FILTER         ((USAGE) 0x0C)
#define HID_USAGE_LED_EQUALIZER_ENABLE       ((USAGE) 0x0D)
#define HID_USAGE_LED_SOUND_FIELD_ON         ((USAGE) 0x0E)
#define HID_USAGE_LED_SURROUND_FIELD_ON      ((USAGE) 0x0F)
#define HID_USAGE_LED_REPEAT                 ((USAGE) 0x10)
#define HID_USAGE_LED_STEREO                 ((USAGE) 0x11)
#define HID_USAGE_LED_SAMPLING_RATE_DETECT   ((USAGE) 0x12)
#define HID_USAGE_LED_SPINNING               ((USAGE) 0x13)
#define HID_USAGE_LED_CAV                    ((USAGE) 0x14)
#define HID_USAGE_LED_CLV                    ((USAGE) 0x15)
#define HID_USAGE_LED_RECORDING_FORMAT_DET   ((USAGE) 0x16)
#define HID_USAGE_LED_OFF_HOOK               ((USAGE) 0x17)
#define HID_USAGE_LED_RING                   ((USAGE) 0x18)
#define HID_USAGE_LED_MESSAGE_WAITING        ((USAGE) 0x19)
#define HID_USAGE_LED_DATA_MODE              ((USAGE) 0x1A)
#define HID_USAGE_LED_BATTERY_OPERATION      ((USAGE) 0x1B)
#define HID_USAGE_LED_BATTERY_OK             ((USAGE) 0x1C)
#define HID_USAGE_LED_BATTERY_LOW            ((USAGE) 0x1D)
#define HID_USAGE_LED_SPEAKER                ((USAGE) 0x1E)
#define HID_USAGE_LED_HEAD_SET               ((USAGE) 0x1F)
#define HID_USAGE_LED_HOLD                   ((USAGE) 0x20)
#define HID_USAGE_LED_MICROPHONE             ((USAGE) 0x21)
#define HID_USAGE_LED_COVERAGE               ((USAGE) 0x22)
#define HID_USAGE_LED_NIGHT_MODE             ((USAGE) 0x23)
#define HID_USAGE_LED_SEND_CALLS             ((USAGE) 0x24)
#define HID_USAGE_LED_CALL_PICKUP            ((USAGE) 0x25)
#define HID_USAGE_LED_CONFERENCE             ((USAGE) 0x26)
#define HID_USAGE_LED_STAND_BY               ((USAGE) 0x27)
#define HID_USAGE_LED_CAMERA_ON              ((USAGE) 0x28)
#define HID_USAGE_LED_CAMERA_OFF             ((USAGE) 0x29)
#define HID_USAGE_LED_ON_LINE                ((USAGE) 0x2A)
#define HID_USAGE_LED_OFF_LINE               ((USAGE) 0x2B)
#define HID_USAGE_LED_BUSY                   ((USAGE) 0x2C)
#define HID_USAGE_LED_READY                  ((USAGE) 0x2D)
#define HID_USAGE_LED_PAPER_OUT              ((USAGE) 0x2E)
#define HID_USAGE_LED_PAPER_JAM              ((USAGE) 0x2F)
#define HID_USAGE_LED_REMOTE                 ((USAGE) 0x30)
#define HID_USAGE_LED_FORWARD                ((USAGE) 0x31)
#define HID_USAGE_LED_REVERSE                ((USAGE) 0x32)
#define HID_USAGE_LED_STOP                   ((USAGE) 0x33)
#define HID_USAGE_LED_REWIND                 ((USAGE) 0x34)
#define HID_USAGE_LED_FAST_FORWARD           ((USAGE) 0x35)
#define HID_USAGE_LED_PLAY                   ((USAGE) 0x36)
#define HID_USAGE_LED_PAUSE                  ((USAGE) 0x37)
#define HID_USAGE_LED_RECORD                 ((USAGE) 0x38)
#define HID_USAGE_LED_ERROR                  ((USAGE) 0x39)
#define HID_USAGE_LED_SELECTED_INDICATOR     ((USAGE) 0x3A)
#define HID_USAGE_LED_IN_USE_INDICATOR       ((USAGE) 0x3B)
#define HID_USAGE_LED_MULTI_MODE_INDICATOR   ((USAGE) 0x3C)
#define HID_USAGE_LED_INDICATOR_ON           ((USAGE) 0x3D)
#define HID_USAGE_LED_INDICATOR_FLASH        ((USAGE) 0x3E)
#define HID_USAGE_LED_INDICATOR_SLOW_BLINK   ((USAGE) 0x3F)
#define HID_USAGE_LED_INDICATOR_FAST_BLINK   ((USAGE) 0x40)
#define HID_USAGE_LED_INDICATOR_OFF          ((USAGE) 0x41)
#define HID_USAGE_LED_FLASH_ON_TIME          ((USAGE) 0x42)
#define HID_USAGE_LED_SLOW_BLINK_ON_TIME     ((USAGE) 0x43)
#define HID_USAGE_LED_SLOW_BLINK_OFF_TIME    ((USAGE) 0x44)
#define HID_USAGE_LED_FAST_BLINK_ON_TIME     ((USAGE) 0x45)
#define HID_USAGE_LED_FAST_BLINK_OFF_TIME    ((USAGE) 0x46)
#define HID_USAGE_LED_INDICATOR_COLOR        ((USAGE) 0x47)
#define HID_USAGE_LED_RED                    ((USAGE) 0x48)
#define HID_USAGE_LED_GREEN                  ((USAGE) 0x49)
#define HID_USAGE_LED_AMBER                  ((USAGE) 0x4A)
#define HID_USAGE_LED_GENERIC_INDICATOR      ((USAGE) 0x4B)
#define HID_USAGE_LED_SYSTEM_SUSPEND         ((USAGE) 0x4C)
#define HID_USAGE_LED_EXTERNAL_POWER         ((USAGE) 0x4D)

//
//  Button Page (0x09)
//
//  There is no need to label these usages.
//


//
//  Ordinal Page (0x0A)
//
//  There is no need to label these usages.
//


//
//  Telephony Device Page (0x0B)
//
#define HID_USAGE_TELEPHONY_PHONE                   ((USAGE) 0x01)
#define HID_USAGE_TELEPHONY_ANSWERING_MACHINE       ((USAGE) 0x02)
#define HID_USAGE_TELEPHONY_MESSAGE_CONTROLS        ((USAGE) 0x03)
#define HID_USAGE_TELEPHONY_HANDSET                 ((USAGE) 0x04)
#define HID_USAGE_TELEPHONY_HEADSET                 ((USAGE) 0x05)
#define HID_USAGE_TELEPHONY_KEYPAD                  ((USAGE) 0x06)
#define HID_USAGE_TELEPHONY_PROGRAMMABLE_BUTTON     ((USAGE) 0x07)
#define HID_USAGE_TELEPHONY_REDIAL                  ((USAGE) 0x24)
#define HID_USAGE_TELEPHONY_TRANSFER                ((USAGE) 0x25)
#define HID_USAGE_TELEPHONY_DROP                    ((USAGE) 0x26)
#define HID_USAGE_TELEPHONY_LINE                    ((USAGE) 0x2A)
#define HID_USAGE_TELEPHONY_RING_ENABLE             ((USAGE) 0x2D)
#define HID_USAGE_TELEPHONY_SEND                    ((USAGE) 0x31)
#define HID_USAGE_TELEPHONY_KEYPAD_0                ((USAGE) 0xB0)
#define HID_USAGE_TELEPHONY_KEYPAD_D                ((USAGE) 0xBF)
#define HID_USAGE_TELEPHONY_HOST_AVAILABLE          ((USAGE) 0xF1)


//
// Consumer Controls Page (0x0C)
//
#define HID_USAGE_CONSUMERCTRL                      ((USAGE) 0x01)

// channel
#define HID_USAGE_CONSUMER_CHANNEL_INCREMENT        ((USAGE) 0x9C)
#define HID_USAGE_CONSUMER_CHANNEL_DECREMENT        ((USAGE) 0x9D)

// transport control
#define HID_USAGE_CONSUMER_PLAY                     ((USAGE) 0xB0)
#define HID_USAGE_CONSUMER_PAUSE                    ((USAGE) 0xB1)
#define HID_USAGE_CONSUMER_RECORD                   ((USAGE) 0xB2)
#define HID_USAGE_CONSUMER_FAST_FORWARD             ((USAGE) 0xB3)
#define HID_USAGE_CONSUMER_REWIND                   ((USAGE) 0xB4)
#define HID_USAGE_CONSUMER_SCAN_NEXT_TRACK          ((USAGE) 0xB5)
#define HID_USAGE_CONSUMER_SCAN_PREV_TRACK          ((USAGE) 0xB6)
#define HID_USAGE_CONSUMER_STOP                     ((USAGE) 0xB7)
#define HID_USAGE_CONSUMER_PLAY_PAUSE               ((USAGE) 0xCD)

// GameDVR
#define HID_USAGE_CONSUMER_GAMEDVR_OPEN_GAMEBAR     ((USAGE) 0xD0)
#define HID_USAGE_CONSUMER_GAMEDVR_TOGGLE_RECORD    ((USAGE) 0xD1)
#define HID_USAGE_CONSUMER_GAMEDVR_RECORD_CLIP      ((USAGE) 0xD2)
#define HID_USAGE_CONSUMER_GAMEDVR_SCREENSHOT       ((USAGE) 0xD3)
#define HID_USAGE_CONSUMER_GAMEDVR_TOGGLE_INDICATOR ((USAGE) 0xD4)
#define HID_USAGE_CONSUMER_GAMEDVR_TOGGLE_MICROPHONE ((USAGE) 0xD5)
#define HID_USAGE_CONSUMER_GAMEDVR_TOGGLE_CAMERA    ((USAGE) 0xD6)
#define HID_USAGE_CONSUMER_GAMEDVR_TOGGLE_BROADCAST ((USAGE) 0xD7)

// audio
#define HID_USAGE_CONSUMER_VOLUME                   ((USAGE) 0xE0)
#define HID_USAGE_CONSUMER_BALANCE                  ((USAGE) 0xE1)
#define HID_USAGE_CONSUMER_MUTE                     ((USAGE) 0xE2)
#define HID_USAGE_CONSUMER_BASS                     ((USAGE) 0xE3)
#define HID_USAGE_CONSUMER_TREBLE                   ((USAGE) 0xE4)
#define HID_USAGE_CONSUMER_BASS_BOOST               ((USAGE) 0xE5)
#define HID_USAGE_CONSUMER_SURROUND_MODE            ((USAGE) 0xE6)
#define HID_USAGE_CONSUMER_LOUDNESS                 ((USAGE) 0xE7)
#define HID_USAGE_CONSUMER_MPX                      ((USAGE) 0xE8)
#define HID_USAGE_CONSUMER_VOLUME_INCREMENT         ((USAGE) 0xE9)
#define HID_USAGE_CONSUMER_VOLUME_DECREMENT         ((USAGE) 0xEA)

// supplementary audio
#define HID_USAGE_CONSUMER_BASS_INCREMENT           ((USAGE) 0x152)
#define HID_USAGE_CONSUMER_BASS_DECREMENT           ((USAGE) 0x153)
#define HID_USAGE_CONSUMER_TREBLE_INCREMENT         ((USAGE) 0x154)
#define HID_USAGE_CONSUMER_TREBLE_DECREMENT         ((USAGE) 0x155)

// Application Launch
#define HID_USAGE_CONSUMER_AL_CONFIGURATION         ((USAGE) 0x183)
#define HID_USAGE_CONSUMER_AL_EMAIL                 ((USAGE) 0x18A)
#define HID_USAGE_CONSUMER_AL_CALCULATOR            ((USAGE) 0x192)
#define HID_USAGE_CONSUMER_AL_BROWSER               ((USAGE) 0x194)
#define HID_USAGE_CONSUMER_AL_SEARCH                ((USAGE) 0x1C6)

// Application Control
#define HID_USAGE_CONSUMER_AC_SEARCH                ((USAGE) 0x221)
#define HID_USAGE_CONSUMER_AC_GOTO                  ((USAGE) 0x222)
#define HID_USAGE_CONSUMER_AC_HOME                  ((USAGE) 0x223)
#define HID_USAGE_CONSUMER_AC_BACK                  ((USAGE) 0x224)
#define HID_USAGE_CONSUMER_AC_FORWARD               ((USAGE) 0x225)
#define HID_USAGE_CONSUMER_AC_STOP                  ((USAGE) 0x226)
#define HID_USAGE_CONSUMER_AC_REFRESH               ((USAGE) 0x227)
#define HID_USAGE_CONSUMER_AC_PREVIOUS              ((USAGE) 0x228)
#define HID_USAGE_CONSUMER_AC_NEXT                  ((USAGE) 0x229)
#define HID_USAGE_CONSUMER_AC_BOOKMARKS             ((USAGE) 0x22A)
#define HID_USAGE_CONSUMER_AC_PAN                   ((USAGE) 0x238)

// Keyboard Extended Attributes (defined on consumer page in HUTRR42)
#define HID_USAGE_CONSUMER_EXTENDED_KEYBOARD_ATTRIBUTES_COLLECTION      ((USAGE) 0x2C0)
#define HID_USAGE_CONSUMER_KEYBOARD_FORM_FACTOR                         ((USAGE) 0x2C1)
#define HID_USAGE_CONSUMER_KEYBOARD_KEY_TYPE                            ((USAGE) 0x2C2)
#define HID_USAGE_CONSUMER_KEYBOARD_PHYSICAL_LAYOUT                     ((USAGE) 0x2C3)
#define HID_USAGE_CONSUMER_VENDOR_SPECIFIC_KEYBOARD_PHYSICAL_LAYOUT     ((USAGE) 0x2C4)
#define HID_USAGE_CONSUMER_KEYBOARD_IETF_LANGUAGE_TAG_INDEX             ((USAGE) 0x2C5)
#define HID_USAGE_CONSUMER_IMPLEMENTED_KEYBOARD_INPUT_ASSIST_CONTROLS   ((USAGE) 0x2C6)

//
// Digitizer Page (0x0D)
//
#define HID_USAGE_DIGITIZER_DIGITIZER                      ((USAGE) 0x01)
#define HID_USAGE_DIGITIZER_PEN                            ((USAGE) 0x02)
#define HID_USAGE_DIGITIZER_LIGHT_PEN                      ((USAGE) 0x03)
#define HID_USAGE_DIGITIZER_TOUCH_SCREEN                   ((USAGE) 0x04)
#define HID_USAGE_DIGITIZER_TOUCH_PAD                      ((USAGE) 0x05)
#define HID_USAGE_DIGITIZER_WHITE_BOARD                    ((USAGE) 0x06)
#define HID_USAGE_DIGITIZER_COORD_MEASURING                ((USAGE) 0x07)
#define HID_USAGE_DIGITIZER_3D_DIGITIZER                   ((USAGE) 0x08)
#define HID_USAGE_DIGITIZER_STEREO_PLOTTER                 ((USAGE) 0x09)
#define HID_USAGE_DIGITIZER_ARTICULATED_ARM                ((USAGE) 0x0A)
#define HID_USAGE_DIGITIZER_ARMATURE                       ((USAGE) 0x0B)
#define HID_USAGE_DIGITIZER_MULTI_POINT                    ((USAGE) 0x0C)
#define HID_USAGE_DIGITIZER_FREE_SPACE_WAND                ((USAGE) 0x0D)
#define HID_USAGE_DIGITIZER_HEAT_MAP                       ((USAGE) 0x0F)
#define HID_USAGE_DIGITIZER_STYLUS                         ((USAGE) 0x20)
#define HID_USAGE_DIGITIZER_PUCK                           ((USAGE) 0x21)
#define HID_USAGE_DIGITIZER_FINGER                         ((USAGE) 0x22)
#define HID_USAGE_DIGITIZER_TABLET_FUNC_KEYS               ((USAGE) 0x39)
#define HID_USAGE_DIGITIZER_PROG_CHANGE_KEYS               ((USAGE) 0x3A)

#define HID_USAGE_DIGITIZER_TIP_PRESSURE                   ((USAGE) 0x30)
#define HID_USAGE_DIGITIZER_BARREL_PRESSURE                ((USAGE) 0x31)
#define HID_USAGE_DIGITIZER_IN_RANGE                       ((USAGE) 0x32)
#define HID_USAGE_DIGITIZER_TOUCH                          ((USAGE) 0x33)
#define HID_USAGE_DIGITIZER_UNTOUCH                        ((USAGE) 0x34)
#define HID_USAGE_DIGITIZER_TAP                            ((USAGE) 0x35)
#define HID_USAGE_DIGITIZER_QUALITY                        ((USAGE) 0x36)
#define HID_USAGE_DIGITIZER_DATA_VALID                     ((USAGE) 0x37)
#define HID_USAGE_DIGITIZER_TRANSDUCER_INDEX               ((USAGE) 0x38)
#define HID_USAGE_DIGITIZER_BATTERY_STRENGTH               ((USAGE) 0x3B)
#define HID_USAGE_DIGITIZER_INVERT                         ((USAGE) 0x3C)
#define HID_USAGE_DIGITIZER_X_TILT                         ((USAGE) 0x3D)
#define HID_USAGE_DIGITIZER_Y_TILT                         ((USAGE) 0x3E)
#define HID_USAGE_DIGITIZER_AZIMUTH                        ((USAGE) 0x3F)
#define HID_USAGE_DIGITIZER_ALTITUDE                       ((USAGE) 0x40)
#define HID_USAGE_DIGITIZER_TWIST                          ((USAGE) 0x41)
#define HID_USAGE_DIGITIZER_TIP_SWITCH                     ((USAGE) 0x42)
#define HID_USAGE_DIGITIZER_SECONDARY_TIP_SWITCH           ((USAGE) 0x43)
#define HID_USAGE_DIGITIZER_BARREL_SWITCH                  ((USAGE) 0x44)
#define HID_USAGE_DIGITIZER_ERASER                         ((USAGE) 0x45)
#define HID_USAGE_DIGITIZER_TABLET_PICK                    ((USAGE) 0x46)
#define HID_USAGE_DIGITIZER_TRANSDUCER_SERIAL              ((USAGE) 0x5B)
#define HID_USAGE_DIGITIZER_HEAT_MAP_PROTOCOL_VENDOR_ID    ((USAGE) 0x6A)
#define HID_USAGE_DIGITIZER_HEAT_MAP_PROTOCOL_VERSION      ((USAGE) 0x6B)
#define HID_USAGE_DIGITIZER_HEAT_MAP_FRAME_DATA            ((USAGE) 0x6C)
#define HID_USAGE_DIGITIZER_TRANSDUCER_SERIAL_PART2        ((USAGE) 0x6E)
#define HID_USAGE_DIGITIZER_TRANSDUCER_VENDOR              ((USAGE) 0x91)
#define HID_USAGE_DIGITIZER_TRANSDUCER_PRODUCT             ((USAGE) 0x92)
#define HID_USAGE_DIGITIZER_TRANSDUCER_CONNECTED           ((USAGE) 0xA2)

//
// Simple Haptic Controller Page (0x0E)
//
#define HID_USAGE_HAPTICS_SIMPLE_CONTROLLER         ((USAGE)0x01)

#define HID_USAGE_HAPTICS_WAVEFORM_LIST             ((USAGE)0x10)
#define HID_USAGE_HAPTICS_DURATION_LIST             ((USAGE)0x11)

#define HID_USAGE_HAPTICS_AUTO_TRIGGER              ((USAGE)0x20)
#define HID_USAGE_HAPTICS_MANUAL_TRIGGER            ((USAGE)0x21)
#define HID_USAGE_HAPTICS_AUTO_ASSOCIATED_CONTROL   ((USAGE)0x22)
#define HID_USAGE_HAPTICS_INTENSITY                 ((USAGE)0x23)
#define HID_USAGE_HAPTICS_REPEAT_COUNT              ((USAGE)0x24)
#define HID_USAGE_HAPTICS_RETRIGGER_PERIOD          ((USAGE)0x25)
#define HID_USAGE_HAPTICS_WAVEFORM_VENDOR_PAGE      ((USAGE)0x26)
#define HID_USAGE_HAPTICS_WAVEFORM_VENDOR_ID        ((USAGE)0x27)
#define HID_USAGE_HAPTICS_WAVEFORM_CUTOFF_TIME      ((USAGE)0x28)

// Waveform types
#define HID_USAGE_HAPTICS_WAVEFORM_BEGIN            ((USAGE)0x1000)
#define HID_USAGE_HAPTICS_WAVEFORM_STOP             ((USAGE)0x1001)
#define HID_USAGE_HAPTICS_WAVEFORM_NULL             ((USAGE)0x1002)
#define HID_USAGE_HAPTICS_WAVEFORM_CLICK            ((USAGE)0x1003)
#define HID_USAGE_HAPTICS_WAVEFORM_BUZZ             ((USAGE)0x1004)
#define HID_USAGE_HAPTICS_WAVEFORM_RUMBLE           ((USAGE)0x1005)
#define HID_USAGE_HAPTICS_WAVEFORM_PRESS            ((USAGE)0x1006)
#define HID_USAGE_HAPTICS_WAVEFORM_RELEASE          ((USAGE)0x1007)
#define HID_USAGE_HAPTICS_WAVEFORM_END              ((USAGE)0x1FFF)

#define HID_USAGE_HAPTICS_WAVEFORM_VENDOR_BEGIN     ((USAGE)0x2000)
#define HID_USAGE_HAPTICS_WAVEFORM_VENDOR_END       ((USAGE)0x2FFF)

//
//  Unicode Page (0x10)
//
//  There is no need to label these usages.
//

//
//  Alphanumeric Display Page (0x14)
//
#define HID_USAGE_ALPHANUMERIC_ALPHANUMERIC_DISPLAY            ((USAGE) 0x01)
#define HID_USAGE_ALPHANUMERIC_BITMAPPED_DISPLAY               ((USAGE) 0x02)
#define HID_USAGE_ALPHANUMERIC_DISPLAY_ATTRIBUTES_REPORT       ((USAGE) 0x20)
#define HID_USAGE_ALPHANUMERIC_DISPLAY_CONTROL_REPORT          ((USAGE) 0x24)
#define HID_USAGE_ALPHANUMERIC_CHARACTER_REPORT                ((USAGE) 0x2B)
#define HID_USAGE_ALPHANUMERIC_DISPLAY_STATUS                  ((USAGE) 0x2D)
#define HID_USAGE_ALPHANUMERIC_CURSOR_POSITION_REPORT          ((USAGE) 0x32)
#define HID_USAGE_ALPHANUMERIC_FONT_REPORT                     ((USAGE) 0x3B)
#define HID_USAGE_ALPHANUMERIC_FONT_DATA                       ((USAGE) 0x3C)
#define HID_USAGE_ALPHANUMERIC_CHARACTER_ATTRIBUTE             ((USAGE) 0x48)
#define HID_USAGE_ALPHANUMERIC_PALETTE_REPORT                  ((USAGE) 0x85)
#define HID_USAGE_ALPHANUMERIC_PALETTE_DATA                    ((USAGE) 0x88)
#define HID_USAGE_ALPHANUMERIC_BLIT_REPORT                     ((USAGE) 0x8A)
#define HID_USAGE_ALPHANUMERIC_BLIT_DATA                       ((USAGE) 0x8F)
#define HID_USAGE_ALPHANUMERIC_SOFT_BUTTON                     ((USAGE) 0x90)

#define HID_USAGE_ALPHANUMERIC_ASCII_CHARACTER_SET             ((USAGE) 0x21)
#define HID_USAGE_ALPHANUMERIC_DATA_READ_BACK                  ((USAGE) 0x22)
#define HID_USAGE_ALPHANUMERIC_FONT_READ_BACK                  ((USAGE) 0x23)
#define HID_USAGE_ALPHANUMERIC_CLEAR_DISPLAY                   ((USAGE) 0x25)
#define HID_USAGE_ALPHANUMERIC_DISPLAY_ENABLE                  ((USAGE) 0x26)
#define HID_USAGE_ALPHANUMERIC_SCREEN_SAVER_DELAY              ((USAGE) 0x27)
#define HID_USAGE_ALPHANUMERIC_SCREEN_SAVER_ENABLE             ((USAGE) 0x28)
#define HID_USAGE_ALPHANUMERIC_VERTICAL_SCROLL                 ((USAGE) 0x29)
#define HID_USAGE_ALPHANUMERIC_HORIZONTAL_SCROLL               ((USAGE) 0x2A)
#define HID_USAGE_ALPHANUMERIC_DISPLAY_DATA                    ((USAGE) 0x2C)
#define HID_USAGE_ALPHANUMERIC_STATUS_NOT_READY                ((USAGE) 0x2E)
#define HID_USAGE_ALPHANUMERIC_STATUS_READY                    ((USAGE) 0x2F)
#define HID_USAGE_ALPHANUMERIC_ERR_NOT_A_LOADABLE_CHARACTER    ((USAGE) 0x30)
#define HID_USAGE_ALPHANUMERIC_ERR_FONT_DATA_CANNOT_BE_READ    ((USAGE) 0x31)
#define HID_USAGE_ALPHANUMERIC_ROW                             ((USAGE) 0x33)
#define HID_USAGE_ALPHANUMERIC_COLUMN                          ((USAGE) 0x34)
#define HID_USAGE_ALPHANUMERIC_ROWS                            ((USAGE) 0x35)
#define HID_USAGE_ALPHANUMERIC_COLUMNS                         ((USAGE) 0x36)
#define HID_USAGE_ALPHANUMERIC_CURSOR_PIXEL_POSITIONING        ((USAGE) 0x37)
#define HID_USAGE_ALPHANUMERIC_CURSOR_MODE                     ((USAGE) 0x38)
#define HID_USAGE_ALPHANUMERIC_CURSOR_ENABLE                   ((USAGE) 0x39)
#define HID_USAGE_ALPHANUMERIC_CURSOR_BLINK                    ((USAGE) 0x3A)
#define HID_USAGE_ALPHANUMERIC_CHAR_WIDTH                      ((USAGE) 0x3D)
#define HID_USAGE_ALPHANUMERIC_CHAR_HEIGHT                     ((USAGE) 0x3E)
#define HID_USAGE_ALPHANUMERIC_CHAR_SPACING_HORIZONTAL         ((USAGE) 0x3F)
#define HID_USAGE_ALPHANUMERIC_CHAR_SPACING_VERTICAL           ((USAGE) 0x40)
#define HID_USAGE_ALPHANUMERIC_UNICODE_CHAR_SET                ((USAGE) 0x41)
#define HID_USAGE_ALPHANUMERIC_FONT_7_SEGMENT                  ((USAGE) 0x42)
#define HID_USAGE_ALPHANUMERIC_7_SEGMENT_DIRECT_MAP            ((USAGE) 0x43)
#define HID_USAGE_ALPHANUMERIC_FONT_14_SEGMENT                 ((USAGE) 0x44)
#define HID_USAGE_ALPHANUMERIC_14_SEGMENT_DIRECT_MAP           ((USAGE) 0x45)
#define HID_USAGE_ALPHANUMERIC_DISPLAY_BRIGHTNESS              ((USAGE) 0x46)
#define HID_USAGE_ALPHANUMERIC_DISPLAY_CONTRAST                ((USAGE) 0x47)
#define HID_USAGE_ALPHANUMERIC_ATTRIBUTE_READBACK              ((USAGE) 0x49)
#define HID_USAGE_ALPHANUMERIC_ATTRIBUTE_DATA                  ((USAGE) 0x4A)
#define HID_USAGE_ALPHANUMERIC_CHAR_ATTR_ENHANCE               ((USAGE) 0x4B)
#define HID_USAGE_ALPHANUMERIC_CHAR_ATTR_UNDERLINE             ((USAGE) 0x4C)
#define HID_USAGE_ALPHANUMERIC_CHAR_ATTR_BLINK                 ((USAGE) 0x4D)
#define HID_USAGE_ALPHANUMERIC_BITMAP_SIZE_X                   ((USAGE) 0x80)
#define HID_USAGE_ALPHANUMERIC_BITMAP_SIZE_Y                   ((USAGE) 0x81)
#define HID_USAGE_ALPHANUMERIC_BIT_DEPTH_FORMAT                ((USAGE) 0x83)
#define HID_USAGE_ALPHANUMERIC_DISPLAY_ORIENTATION             ((USAGE) 0x84)
#define HID_USAGE_ALPHANUMERIC_PALETTE_DATA_SIZE               ((USAGE) 0x86)
#define HID_USAGE_ALPHANUMERIC_PALETTE_DATA_OFFSET             ((USAGE) 0x87)
#define HID_USAGE_ALPHANUMERIC_BLIT_RECTANGLE_X1               ((USAGE) 0x8B)
#define HID_USAGE_ALPHANUMERIC_BLIT_RECTANGLE_Y1               ((USAGE) 0x8C)
#define HID_USAGE_ALPHANUMERIC_BLIT_RECTANGLE_X2               ((USAGE) 0x8D)
#define HID_USAGE_ALPHANUMERIC_BLIT_RECTANGLE_Y2               ((USAGE) 0x8E)
#define HID_USAGE_ALPHANUMERIC_SOFT_BUTTON_ID                  ((USAGE) 0x91)
#define HID_USAGE_ALPHANUMERIC_SOFT_BUTTON_SIDE                ((USAGE) 0x92)
#define HID_USAGE_ALPHANUMERIC_SOFT_BUTTON_OFFSET1             ((USAGE) 0x93)
#define HID_USAGE_ALPHANUMERIC_SOFT_BUTTON_OFFSET2             ((USAGE) 0x94)
#define HID_USAGE_ALPHANUMERIC_SOFT_BUTTON_REPORT              ((USAGE) 0x95)

//
// Sensor Page (0x20)
//

//
// LampArray Page (0x59)
//
#define HID_USAGE_LAMPARRAY                                             ((USAGE) 0x01)
#define HID_USAGE_LAMPARRAY_ATTRBIUTES_REPORT                           ((USAGE) 0x02)
#define HID_USAGE_LAMPARRAY_LAMP_COUNT                                  ((USAGE) 0x03)
#define HID_USAGE_LAMPARRAY_BOUNDING_BOX_WIDTH_IN_MICROMETERS           ((USAGE) 0x04)
#define HID_USAGE_LAMPARRAY_BOUNDING_BOX_HEIGHT_IN_MICROMETERS          ((USAGE) 0x05)
#define HID_USAGE_LAMPARRAY_BOUNDING_BOX_DEPTH_IN_MICROMETERS           ((USAGE) 0x06)
#define HID_USAGE_LAMPARRAY_KIND                                        ((USAGE) 0x07)
#define HID_USAGE_LAMPARRAY_MIN_UPDATE_INTERVAL_IN_MICROSECONDS         ((USAGE) 0x08)

// 0x09 - 0x1F Reserved

#define HID_USAGE_LAMPARRAY_LAMP_ATTRIBUTES_REQUEST_REPORT              ((USAGE) 0x20)
#define HID_USAGE_LAMPARRAY_LAMP_ID                                     ((USAGE) 0x21)
#define HID_USAGE_LAMPARRAY_LAMP_ATTRIBUTES_RESPONSE_REPORT             ((USAGE) 0x22)
#define HID_USAGE_LAMPARRAY_POSITION_X_IN_MICROMETERS                   ((USAGE) 0x23)
#define HID_USAGE_LAMPARRAY_POSITION_Y_IN_MICROMETERS                   ((USAGE) 0x24)
#define HID_USAGE_LAMPARRAY_POSITION_Z_IN_MICROMETERS                   ((USAGE) 0x25)
#define HID_USAGE_LAMPARRAY_LAMP_PURPOSES                               ((USAGE) 0x26)
#define HID_USAGE_LAMPARRAY_UPDATE_LATENCY_IN_MICROSECONDS              ((USAGE) 0x27)
#define HID_USAGE_LAMPARRAY_RED_LEVEL_COUNT                             ((USAGE) 0x28)
#define HID_USAGE_LAMPARRAY_GREEN_LEVEL_COUNT                           ((USAGE) 0x29)
#define HID_USAGE_LAMPARRAY_BLUE_LEVEL_COUNT                            ((USAGE) 0x2A)
#define HID_USAGE_LAMPARRAY_INTENSITY_LEVEL_COUNT                       ((USAGE) 0x2B)
#define HID_USAGE_LAMPARRAY_IS_PROGRAMMABLE                             ((USAGE) 0x2C)
#define HID_USAGE_LAMPARRAY_INPUT_BINDING                               ((USAGE) 0x2D)

// 0x2E - 0x4F Reserved

#define HID_USAGE_LAMPARRAY_LAMP_MULTI_UPDATE_REPORT                    ((USAGE) 0x50)
#define HID_USAGE_LAMPARRAY_LAMP_RED_UPDATE_CHANNEL                     ((USAGE) 0x51)
#define HID_USAGE_LAMPARRAY_LAMP_GREEN_UPDATE_CHANNEL                   ((USAGE) 0x52)
#define HID_USAGE_LAMPARRAY_LAMP_BLUE_UPDATE_CHANNEL                    ((USAGE) 0x53)
#define HID_USAGE_LAMPARRAY_LAMP_INTENSITY_UPDATE_CHANNEL               ((USAGE) 0x54)
#define HID_USAGE_LAMPARRAY_LAMP_UPDATE_FLAGS                           ((USAGE) 0x55)

// 0x55 - 0x5F Reserved

#define HID_USAGE_LAMPARRAY_LAMP_RANGE_UPDATE_REPORT                    ((USAGE) 0x60)
#define HID_USAGE_LAMPARRAY_LAMP_ID_START                               ((USAGE) 0x61)
#define HID_USAGE_LAMPARRAY_LAMP_ID_END                                 ((USAGE) 0x62)

// 0x63 - 0x6F Reserved

#define HID_USAGE_LAMPARRAY_CONTROL_REPORT                              ((USAGE) 0x70)
#define HID_USAGE_LAMPARRAY_AUTONOMOUS_MODE                             ((USAGE) 0x71)

//
// Camera Control Page (0x90)
//
#define HID_USAGE_CAMERA_AUTO_FOCUS                 ((USAGE) 0x20)
#define HID_USAGE_CAMERA_SHUTTER                    ((USAGE) 0x21)

//
// Microsoft Bluetooth Handsfree Page (0xFFF3)
//
#define HID_USAGE_MS_BTH_HF_DIALNUMBER              ((USAGE) 0x21)
#define HID_USAGE_MS_BTH_HF_DIALMEMORY              ((USAGE) 0x22)


#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion

#endif
