You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
opentrackpadcontroller/include/hid_def.h

1666 lines
72 KiB
C

#ifndef __HID_DEF_H__
#define __HID_DEF_H__
/**
* @defgroup hid HID Defines
* @brief The helpful HID macros definitions
*
* @{
*/
#include "macro.h"
#define HID_REQ_GET_REPORT 0x01
#define HID_REQ_GET_IDLE 0x02
#define HID_REQ_GET_PROTOCOL 0x03
#define HID_REQ_SET_REPORT 0x09
#define HID_REQ_SET_IDLE 0x0a
#define HID_REQ_SET_PROTOCOL 0x0b
#define HID_REPORT_INPUT 0x01
#define HID_REPORT_OUTPUT 0x02
#define HID_REPORT_FEATURE 0x03
/*
* type: USB_DT_REPORT or USB_DT_HID
*/
#define HID_REQ_VALUE(dt, id) (((dt) << 8) | (id))
/*
* Element prefix
*/
#define HID_TYPE_MAIN (0<<2)
#define HID_TYPE_GLOBAL (1<<2)
#define HID_TYPE_LOCAL (2<<2)
#define HID_HEAD(tag, type, size) (((tag)<<4) | _CAT2(HID_TYPE_, type) | (((size) < 4 ? (size) : 3) & 0x3))
#define HID_DATA0(x)
#define HID_DATA1(x) , (x)
#define HID_ENDIAN_LITTLE 1
#define HID_ENDIAN_BIG 2
#define HID_ENDIAN_PDP 3
#ifndef HID_ENDIAN
# ifdef __GNUC__
# if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
# define HID_ENDIAN HID_ENDIAN_LITTLE
# elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
# define HID_ENDIAN HID_ENDIAN_BIG
# elif __BYTE_ORDER__ == __ORDER_PDP_ENDIAN__
# define HID_ENDIAN HID_ENDIAN_PDP
# else
# error "Unsupported endian! Possibly you should define HID_ENDIAN macro."
# endif
# else
# ifdef _MSC_VER
# ifdef _WIN32
# define HID_ENDIAN HID_ENDIAN_LITTLE
# endif
# endif
# endif
#endif
#ifndef HID_ENDIAN
# error "Unable to determine endianness! Possibly you should define HID_ENDIAN macro."
#endif
#if HID_ENDIAN == HID_ENDIAN_LITTLE
# define HID_DATA2(x) , (((x) >> 0) & 0xff), (((x) >> 8) & 0xff)
# define HID_DATA4(x) , (((x) >> 0) & 0xff), (((x) >> 8) & 0xff), (((x) >> 16) & 0xff), (((x) >> 24) & 0xff)
#else /* HID_ENDIAN == HID_ENDIAN_BIG || HID_ENDIAN == HID_ENDIAN_PDP */
# define HID_DATA2(x) , (((x) >> 8) & 0xff), (((x) >> 0) & 0xff)
# if HID_ENDIAN == HID_ENDIAN_PDP
# define HID_DATA4(x) , (((x) >> 16) & 0xff), (((x) >> 24) & 0xff), (((x) >> 0) & 0xff), (((x) >> 8) & 0xff)
# else /* HID_ENDIAN == HID_ENDIAN_BIG */
# define HID_DATA4(x) , (((x) >> 24) & 0xff), (((x) >> 16) & 0xff), (((x) >> 8) & 0xff), (((x) >> 0) & 0xff)
# endif
#endif
#define HID_DATA(size, data) _CAT2(HID_DATA, size)(data)
#define HID_ELEM(tag, type, size, ...) HID_HEAD(tag, type, size) HID_DATA(size, __VA_ARGS__)
/*
* Main elements
*/
/* type */
#define HID_FLAG_DATA (0<<0)
#define HID_FLAG_CONSTANT (1<<0)
/* kind */
#define HID_FLAG_ARRAY (0<<1)
#define HID_FLAG_VARIABLE (1<<1)
/* rel */
#define HID_FLAG_ABSOLUTE (0<<2)
#define HID_FLAG_RELATIVE (1<<2)
/* wrap */
#define HID_FLAG_NO_WRAP (0<<3)
#define HID_FLAG_WRAP (1<<3)
/* lin */
#define HID_FLAG_LINEAR (0<<4)
#define HID_FLAG_NON_LINEAR (1<<4)
/* pref */
#define HID_FLAG_PREFERRED_STATE (0<<5)
#define HID_FLAG_NO_PREFERRED (1<<5)
/* null */
#define HID_FLAG_NO_NULL_POSITION (0<<6)
#define HID_FLAG_NULL_STATE (1<<6)
/* vol (only for feature and output) */
#define HID_FLAG_NON_VOLATILE (0<<7)
#define HID_FLAG_VOLATILE (1<<7)
/* data */
#define HID_FLAG_BIT_FIELD (0<<7)
#define HID_FLAG_BUFFERED_BYTES (1<<7)
#define HID_APPLY_FLAG(x) _CAT2(HID_FLAG_, x)
#define HID_UNION_FLAG(...) (0 _MAP(| HID_APPLY_FLAG, ##__VA_ARGS__))
#define HID_INPUT(...) HID_ELEM(0x8, MAIN, 1, HID_UNION_FLAG(__VA_ARGS__))
#define HID_OUTPUT(...) HID_ELEM(0x9, MAIN, 1, HID_UNION_FLAG(__VA_ARGS__))
#define HID_FEATURE(...) HID_ELEM(0xb, MAIN, 1, HID_UNION_FLAG(__VA_ARGS__))
#define HID_COLLECTION_PHYSICAL 0x00 /* group of axes */
#define HID_COLLECTION_APPLICATION 0x01 /* mouse, keyboard */
#define HID_COLLECTION_LOGICAL 0x02 /* interrelated data */
#define HID_COLLECTION_REPORT 0x03
#define HID_COLLECTION_NAMED_ARRAY 0x04
#define HID_COLLECTION_USAGE_SWITCH 0x05
#define HID_COLLECTION_USAGE_MODIFIER 0x06
#define HID_COLLECTION_VENDOR_DEFINED 0x80
#define HID_COLLECTION(x) HID_ELEM(0xa, MAIN, 1, _CAT2(HID_COLLECTION_, x))
#define HID_END_COLLECTION(...) HID_ELEM(0xc, MAIN, 0)
/*
* Global elements
*/
/* Usage Pages (see Hut1_12v2.pdf) */
#define HID_USAGE_PAGE_UNDEFINED 1, 0x00
#define HID_USAGE_PAGE_GENERIC_DESKTOP 1, 0x01
#define HID_USAGE_PAGE_DESKTOP 1, 0x01
#define HID_USAGE_PAGE_SIMULATION 1, 0x02
#define HID_USAGE_PAGE_VIRTUAL_REALITY 1, 0x03
#define HID_USAGE_PAGE_SPORT 1, 0x04
#define HID_USAGE_PAGE_GAME 1, 0x05
#define HID_USAGE_PAGE_GENERIC_DEVICE 1, 0x06
#define HID_USAGE_PAGE_KEYBOARD 1, 0x07
#define HID_USAGE_PAGE_KEYPAD 1, 0x07
#define HID_USAGE_PAGE_LED 1, 0x08
#define HID_USAGE_PAGE_LEDS 1, 0x08
#define HID_USAGE_PAGE_BUTTON 1, 0x09
#define HID_USAGE_PAGE_BUTTONS 1, 0x09
#define HID_USAGE_PAGE_ORDINAL 1, 0x0a
#define HID_USAGE_PAGE_TELEPHONY 1, 0x0b
#define HID_USAGE_PAGE_CONSUMER 1, 0x0c
#define HID_USAGE_PAGE_DIGITIZER 1, 0x0d
#define HID_USAGE_PAGE_PHYSICAL_DEVICE 1, 0x0f
#define HID_USAGE_PAGE_UNICODE 1, 0x10
#define HID_USAGE_PAGE_ALPHA_NUMERIC_DISPLAY 1, 0x14
#define HID_USAGE_PAGE_MEDICAL_INSTRUMENTS 1, 0x40
#define HID_USAGE_PAGE_MONITOR_DEVICE 1, 0x80
#define HID_USAGE_PAGE_POWER_DEVICE 1, 0x84
#define HID_USAGE_PAGE_BATTERY_SYSTEM 1, 0x85
#define HID_USAGE_PAGE_BAR_CODE_SCANNER 1, 0x8c
#define HID_USAGE_PAGE_SCALE 1, 0x8d
#define HID_USAGE_PAGE_CAMERA_CONTROL 1, 0x90
#define HID_USAGE_PAGE_ARCADE 1, 0x91
/* End of Usage Pages */
#define HID_USAGE_PAGE2(n, x) HID_ELEM(0x0, GLOBAL, n, x)
#define HID_USAGE_PAGE(x) _CALL(HID_USAGE_PAGE2, _CAT2(HID_USAGE_PAGE_, x))
#define HID_LOGICAL_MINIMUM(n, x) HID_ELEM(0x1, GLOBAL, n, x)
#define HID_LOGICAL_MAXIMUM(n, x) HID_ELEM(0x2, GLOBAL, n, x)
#define HID_PHYSICAL_MINIMUM(n, x) HID_ELEM(0x3, GLOBAL, n, x)
#define HID_PHYSICAL_MAXIMUM(n, x) HID_ELEM(0x4, GLOBAL, n, x)
/**
* @brief HID unit exponent
*
* @param e The unit exponent
*
* unit x 10 ^ e
*/
#define HID_UNIT_EXPONENT(e) HID_ELEM(0x5, GLOBAL, 1, e)
#define HID_UNIT_NONE_SYSTEM 0x0
#define HID_UNIT_SI_LINEAR 0x1
#define HID_UNIT_SI_LIN 0x1
#define HID_UNIT_SI_ROTATION 0x2
#define HID_UNIT_SI_ROT 0x2
#define HID_UNIT_EN_LINEAR 0x3
#define HID_UNIT_EN_LIN 0x3
#define HID_UNIT_EN_ROTATION 0x4
#define HID_UNIT_EN_ROT 0x4
#define HID_UNIT_VENDOR_DEFINED 0xf
#define HID_UNIT_SI(k) HID_UNIT_SI_##k
#define HID_UNIT_EN(k) HID_UNIT_EN_##k
#define HID_UNIT_EXP(n) (!_ASSERT(-8 <= (n) && (n) <= 7) ? (0) : ((n) < 0) ? (0x10 + (n)) : (n))
#define HID_UNIT_NIB(n, x) ((x) << (4 * (n)))
#define HID_UNIT_LENGTH(n) HID_UNIT_NIB(1, HID_UNIT_EXP(n))
#define HID_UNIT_MASS(n) HID_UNIT_NIB(2, HID_UNIT_EXP(n))
#define HID_UNIT_TIME(n) HID_UNIT_NIB(3, HID_UNIT_EXP(n))
#define HID_UNIT_TEMPERATURE(n) HID_UNIT_NIB(4, HID_UNIT_EXP(n))
#define HID_UNIT_CURRENT(n) HID_UNIT_NIB(5, HID_UNIT_EXP(n))
#define HID_UNIT_LUMINOSITY(n) HID_UNIT_NIB(6, HID_UNIT_EXP(n))
#define HID_UNIT_NONE 0x0
#define HID_UNIT_CENTIMETER(n) HID_UNIT_LENGTH(n)
#define HID_UNIT_GRAM(n) HID_UNIT_MASS(n)
#define HID_UNIT_SECOND(n) HID_UNIT_TIME(n)
#define HID_UNIT_KELVIN(n) HID_UNIT_TEMPERATURE(n)
#define HID_UNIT_AMPERE(n) HID_UNIT_CURRENT(n)
#define HID_UNIT_CANDELLA(n) HID_UNIT_LUMINOSITY(n)
#define HID_UNIT_RADIANS(n) HID_UNIT_LENGTH(n)
#define HID_UNIT_INCH(n) HID_UNIT_LENGTH(n)
#define HID_UNIT_SLUG(n) HID_UNIT_MASS(n)
#define HID_UNIT_FAHRENHEIT(n) HID_UNIT_TEMPERATURE(n)
#define HID_UNIT_DEGREES(n) HID_UNIT_LENGTH(n)
#define HID_UNIT_CM(n) HID_UNIT_CENTIMETER(n)
#define HID_UNIT_G(n) HID_UNIT_GRAM(n)
#define HID_UNIT_SEC(n) HID_UNIT_SECOND(n)
#define HID_UNIT_S(n) HID_UNIT_SECOND(n)
#define HID_UNIT_K(n) HID_UNIT_KELVIN(n)
#define HID_UNIT_AMP(n) HID_UNIT_AMPERE(n)
#define HID_UNIT_A(n) HID_UNIT_AMPERE(n)
#define HID_UNIT_CD(n) HID_UNIT_CANDELLA(n)
#define HID_UNIT_RAD(n) HID_UNIT_RADIANS(n)
#define HID_UNIT_IN(n) HID_UNIT_INCH(n)
#define HID_UNIT_F(n) HID_UNIT_FAHRENHEIT(n)
#define HID_UNIT_DEG(n) HID_UNIT_DEGREES(n)
#define HID_APPLY_UNIT(x) _CAT2(HID_UNIT_, x)
#define HID_UNION_UNIT(...) (0 _MAP(| HID_APPLY_UNIT, ##__VA_ARGS__))
/**
* @brief HID units
*
* @param ... The set of basic units with exponent
*
* The measurement systems:
* @li SI(k) - Si units
* @li EN(k) - English units
* where @p k is LINEAR (LIN) or ROTATION (ROT).
*
* The basic units:
* @li CENTIMETER(e) or CM(e) - Centimeter ^ e
* @li GRAM(e) or G(e) - Gram ^ e
* @li SECOND(e) or S(e) - Second ^ e
* @li KELVIN(e) or K(e) - Kelvin ^ e
* @li AMPERE(e) or A(e) - Ampere ^ e
* @li CANDELLA(e) or CD(e) - Candella ^ e
* @li RADIANS(e) or RAD(e) - Radians ^ e
* @li INCH(e) or IN(e) - Inch ^ e
* @li SLUG(e) - Slug ^ e
* @li FAHRENHEIT(n) or F(e) - Fahrenheit ^ e
* @li DEGREES(e) or DEG(e) - Degrees ^ e
*/
#define HID_UNIT(...) HID_ELEM(0x6, GLOBAL, 4, HID_UNION_UNIT(__VA_ARGS__))
/*
#define HID_UNITS_NM HID_UNIT(CM(1)), HID_UNIT_EXPONENT(-7)
#define HID_UNITS_UM HID_UNIT(CM(1)), HID_UNIT_EXPONENT(-4)
#define HID_UNITS_MM HID_UNIT(CM(1)), HID_UNIT_EXPONENT(-1)
#define HID_UNITS_CM _EVAL(HID_UNIT(CM(1)), HID_UNIT_EXPONENT(0))
#define HID_UNITS_DM HID_UNIT(CM(1)), HID_UNIT_EXPONENT(1)
#define HID_UNITS_M HID_UNIT(CM(1)), HID_UNIT_EXPONENT(2)
#define HID_UNITS_KM HID_UNIT(CM(1)), HID_UNIT_EXPONENT(5)
*/
#define HID_UNITS(x) _CAT2(HID_UNITS_, x)
#define HID_REPORT_SIZE(x) HID_ELEM(0x7, GLOBAL, 1, x)
#define HID_REPORT_ID(x) HID_ELEM(0x8, GLOBAL, 1, x)
#define HID_REPORT_COUNT(x) HID_ELEM(0x9, GLOBAL, 1, x)
#define HID_PUSH HID_ELEM(0xa, GLOBAL, 0)
#define HID_POP HID_ELEM(0xb, GLOBAL, 0)
/*
* Local elements
*/
#define HID_USAGE_UNDEFINED 1, 0x00
/* Generic Desktop Usages */
#define HID_USAGE_POINTER 1, 0x01
#define HID_USAGE_MOUSE 1, 0x02
#define HID_USAGE_JOYSTICK 1, 0x04
#define HID_USAGE_GAME_PAD 1, 0x05
#define HID_USAGE_KEYBOARD 1, 0x06
#define HID_USAGE_KEYPAD 1, 0x07
#define HID_USAGE_MULTI_AXIS 1, 0x08
#define HID_USAGE_TABLET 1, 0x09
#define HID_USAGE_X 1, 0x30
#define HID_USAGE_Y 1, 0x31
#define HID_USAGE_Z 1, 0x32
#define HID_USAGE_RX 1, 0x33
#define HID_USAGE_RY 1, 0x34
#define HID_USAGE_RZ 1, 0x35
#define HID_USAGE_SLIDER 1, 0x36
#define HID_USAGE_DIAL 1, 0x37
#define HID_USAGE_WHEEL 1, 0x38
#define HID_USAGE_HAT_SWITCH 1, 0x39
#define HID_USAGE_COUNTED_BUFFER 1, 0x3a
#define HID_USAGE_BYTE_COUNT 1, 0x3b
#define HID_USAGE_MOTION_WAKEUP 1, 0x3c
#define HID_USAGE_START 1, 0x3d
#define HID_USAGE_SELECT 1, 0x3e
#define HID_USAGE_VX 1, 0x40
#define HID_USAGE_VY 1, 0x41
#define HID_USAGE_VZ 1, 0x42
#define HID_USAGE_VBRX 1, 0x43
#define HID_USAGE_VBRY 1, 0x44
#define HID_USAGE_VBRZ 1, 0x45
#define HID_USAGE_VNO 1, 0x46
#define HID_USAGE_FEATURE_NOTIFICATION 1, 0x47
#define HID_USAGE_RESOLUTION_MULTIPLIER 1, 0x48
#define HID_USAGE_SYSTEM_CONTROL 1, 0x80
#define HID_USAGE_SYSTEM_POWER_DOWN 1, 0x81
#define HID_USAGE_SYSTEM_SLEEP 1, 0x82
#define HID_USAGE_SYSTEM_WAKE_UP 1, 0x83
#define HID_USAGE_SYSTEM_CONTEXT_MENU 1, 0x84
#define HID_USAGE_SYSTEM_MAIN_MENU 1, 0x85
#define HID_USAGE_SYSTEM_APP_MENU 1, 0x86
#define HID_USAGE_SYSTEM_MENU_HELP 1, 0x87
#define HID_USAGE_SYSTEM_MENU_EXIT 1, 0x88
#define HID_USAGE_SYSTEM_MENU_SELECT 1, 0x89
#define HID_USAGE_SYSTEM_MENU_RIGHT 1, 0x8a
#define HID_USAGE_SYSTEM_MENU_LEFT 1, 0x8b
#define HID_USAGE_SYSTEM_MENU_UP 1, 0x8c
#define HID_USAGE_SYSTEM_MENU_DOWN 1, 0x8d
#define HID_USAGE_SYSTEM_COLD_RESTART 1, 0x8e
#define HID_USAGE_SYSTEM_WARM_RESTART 1, 0x8f
#define HID_USAGE_D_PAD_UP 1, 0x90
#define HID_USAGE_D_PAD_DOWN 1, 0x91
#define HID_USAGE_D_PAD_RIGHT 1, 0x92
#define HID_USAGE_D_PAD_LEFT 1, 0x93
#define HID_USAGE_SYSTEM_DOCK 1, 0xa0
#define HID_USAGE_SYSTEM_UNDOCK 1, 0xa1
#define HID_USAGE_SYSTEM_SETUP 1, 0xa2
#define HID_USAGE_SYSTEM_BREAK 1, 0xa3
#define HID_USAGE_SYSTEM_DEBUGGER_BREAK 1, 0xa4
#define HID_USAGE_APPLICATION_BREAK 1, 0xa5
#define HID_USAGE_APPLICATION_DEBUGGER_BREAK 1, 0xa6
#define HID_USAGE_SYSTEM_SPEAKER_MUTE 1, 0xa7
#define HID_USAGE_SYSTEM_HIBERNATE 1, 0xa8
#define HID_USAGE_SYSTEM_DISPLAY_INVERT 1, 0xb0
#define HID_USAGE_SYSTEM_DISPLAY_INTERNAL 1, 0xb1
#define HID_USAGE_SYSTEM_DISPLAY_EXTERNAL 1, 0xb2
#define HID_USAGE_SYSTEM_DISPLAY_BOTH 1, 0xb3
#define HID_USAGE_SYSTEM_DISPLAY_DUAL 1, 0xb4
#define HID_USAGE_SYSTEM_DISPLAY_TOGGLE 1, 0xb5
#define HID_USAGE_SYSTEM_DISPLAY_SWAP 1, 0xb6
#define HID_USAGE_SYSTEM_DISPLAY_AUTOSCALE 1, 0xb7
/* Simulation Usages */
#define HID_USAGE_FLIGHT 1, 0x01
#define HID_USAGE_AUTOMOBILE 1, 0x02
#define HID_USAGE_TANK 1, 0x03
#define HID_USAGE_SPACESHIP 1, 0x04
#define HID_USAGE_SUBMARINE 1, 0x05
#define HID_USAGE_SAILING 1, 0x06
#define HID_USAGE_MOTOCYCLE 1, 0x07
#define HID_USAGE_SPORTS 1, 0x08
#define HID_USAGE_AIRPLANE 1, 0x09
#define HID_USAGE_HELICOPTER 1, 0x0a
#define HID_USAGE_MAGIC_CARPET 1, 0x0b
#define HID_USAGE_BICYCLE 1, 0x0c
#define HID_USAGE_FLIGHT_CONTROL_STICK 1, 0x20
#define HID_USAGE_FLIGHT_STICK 1, 0x21
#define HID_USAGE_CYCLE_CONTROL 1, 0x22
#define HID_USAGE_CYCLE_TRIM 1, 0x23
#define HID_USAGE_FLIGHT_YOKE 1, 0x24
#define HID_USAGE_TRACK_CONTROL 1, 0x25
#define HID_USAGE_AILERON 1, 0xb0
#define HID_USAGE_AILERON_TRIM 1, 0xb1
#define HID_USAGE_ANTI_TORQUE_CONTROL 1, 0xb2
#define HID_USAGE_AUTOPILOT_ENABLE 1, 0xb3
#define HID_USAGE_CHAFF_RELEASE 1, 0xb4
#define HID_USAGE_COLLECTIVE_CONTROL 1, 0xb5
#define HID_USAGE_DRIVE_BRAKE 1, 0xb6
#define HID_USAGE_ELECRONIC_CONTERMEASURES 1, 0xb7
#define HID_USAGE_ELEVATOR 1, 0xb8
#define HID_USAGE_ELEVATOR_TRIM 1, 0xb9
#define HID_USAGE_RUDDER 1, 0xba
#define HID_USAGE_THROTTLE 1, 0xbb
#define HID_USAGE_FLIGHT_COMMUNICATIONS 1, 0xbc
#define HID_USAGE_FLARE_RELEASE 1, 0xbd
#define HID_USAGE_LANDING_GEAR 1, 0xbe
#define HID_USAGE_TOE_BRAKE 1, 0xbf
#define HID_USAGE_TRIGGER 1, 0xc0
#define HID_USAGE_WEAPON_ARM 1, 0xc1
#define HID_USAGE_WEAPON_SELECT 1, 0xc2
#define HID_USAGE_WING_FLAPS 1, 0xc3
#define HID_USAGE_ACCELERATOR 1, 0xc4
#define HID_USAGE_BRAKE 1, 0xc5
#define HID_USAGE_CLUTCH 1, 0xc6
#define HID_USAGE_SHIFTER 1, 0xc7
#define HID_USAGE_STEERING 1, 0xc8
#define HID_USAGE_TURRET_DIRECTION 1, 0xc9
#define HID_USAGE_BARREL_ELEVATION 1, 0xca
#define HID_USAGE_DIVE_PLANE 1, 0xcb
#define HID_USAGE_BALLAST 1, 0xcc
#define HID_USAGE_BICYCLE_CRANK 1, 0xcd
#define HID_USAGE_HANDLE_BARS 1, 0xce
#define HID_USAGE_FRONT_BRAKE 1, 0xcf
#define HID_USAGE_REAR_BRAKE 1, 0xd0
/* Virtual Reality Usages */
#define HID_USAGE_BELT 1, 0x01
#define HID_USAGE_BODY_SUIT 1, 0x02
#define HID_USAGE_FLEXOR 1, 0x03
#define HID_USAGE_GLOVE 1, 0x04
#define HID_USAGE_HEAD_TRACKER 1, 0x05
#define HID_USAGE_HEAD_DISPLAY 1, 0x06
#define HID_USAGE_HAND_TRACKER 1, 0x07
#define HID_USAGE_OCULOMETER 1, 0x08
#define HID_USAGE_VEST 1, 0x09
#define HID_USAGE_ANIMATRONIC 1, 0x0a
#define HID_USAGE_STEREO_ENABLE 1, 0x20
#define HID_USAGE_DISPLAY_ENABLE 1, 0x21
/* Sport Controls Usages */
#define HID_USAGE_BASEBALL_BAT 1, 0x01
#define HID_USAGE_GOLF_CLUB 1, 0x02
#define HID_USAGE_ROWING_MACHINE 1, 0x03
#define HID_USAGE_TREADMILL 1, 0x04
#define HID_USAGE_OAR 1, 0x30
#define HID_USAGE_SLOPE 1, 0x31
#define HID_USAGE_RATE 1, 0x32
#define HID_USAGE_STICK_SPEED 1, 0x33
#define HID_USAGE_STICK_FACE_ANGLE 1, 0x34
#define HID_USAGE_STICK_HEEL_TOE 1, 0x35
#define HID_USAGE_STICK_FLOW_THROUGH 1, 0x36
#define HID_USAGE_STICK_TEMPO 1, 0x37
#define HID_USAGE_STICK_TYPE 1, 0x38
#define HID_USAGE_STICK_HEIGHT 1, 0x39
#define HID_USAGE_PUTTER 1, 0x50
#define HID_USAGE_IRON(n) 1, (0x50 + (_ASSERT(1 <= (n) && (n) <= 11) ? (n) : (0))) /* n: [1..11] */
#define HID_USAGE_SAND_WEDGE 1, 0x5c
#define HID_USAGE_LOFT_WEDGE 1, 0x5d
#define HID_USAGE_POWER_WEDGE 1, 0x5e
#define HID_USAGE_WOOD(n) 1, (0x5e + (_ASSERT(1 <= (n) && (n) <= 11) ? (n) : (0))) /* n: [1..9] */
/* Game Controls Usages */
#define HID_USAGE_GAME_3D 1, 0x01
#define HID_USAGE_PINBALL 1, 0x02
#define HID_USAGE_GUN 1, 0x03
#define HID_USAGE_POINT_OF_VIEW 1, 0x20
#define HID_USAGE_TURN_RIGHT_LEFT 1, 0x21
#define HID_USAGE_PITCH_FORWARD_BACKWARD 1, 0x22
#define HID_USAGE_ROLL_RIGHT_LEFT 1, 0x23
#define HID_USAGE_MOVE_RIGHT_LEFT 1, 0x24
#define HID_USAGE_MOVE_FORWARD_BACKWARD 1, 0x25
#define HID_USAGE_MOVE_UP_DOWN 1, 0x26
#define HID_USAGE_LEAN_RIGHT_LEFT 1, 0x27
#define HID_USAGE_LEAN_FORWARD_BACKWARD 1, 0x28
#define HID_USAGE_HEIGHT_OF_POV 1, 0x29
#define HID_USAGE_FLIPPER 1, 0x2a
#define HID_USAGE_SECONDARY_FLIPPER 1, 0x2b
#define HID_USAGE_BUMP 1, 0x2c
#define HID_USAGE_NEW_GAME 1, 0x2d
#define HID_USAGE_SHOOT_BALL 1, 0x2e
#define HID_USAGE_PLAYER 1, 0x2f
#define HID_USAGE_GUN_BOLT 1, 0x30
#define HID_USAGE_GUN_CLIP 1, 0x31
#define HID_USAGE_GUN_SELECTOR 1, 0x32
#define HID_USAGE_GUN_SINGLE_SHOOT 1, 0x33
#define HID_USAGE_GUN_BURST 1, 0x34
#define HID_USAGE_GUN_AUTOMATIC 1, 0x35
#define HID_USAGE_GUN_SAFETY 1, 0x36
#define HID_USAGE_GAMEPAD_FIRE_JUMP 1, 0x37
#define HID_USAGE_GAMEPAD_TRIGGER 1, 0x39
/* Generic Device Usages */
#define HID_USAGE_BATTERY_STRENGTH 1, 0x20
#define HID_USAGE_WIRELESS_CHANNEL 1, 0x21
#define HID_USAGE_WIRELESS_ID 1, 0x22
#define HID_USAGE_DISCOVER_WIRELESS_CONTROL 1, 0x23
#define HID_USAGE_SECURITY_CODE_CHAR_ENTERED 1, 0x24
#define HID_USAGE_SECURITY_CODE_CHAR_ERASED 1, 0x25
#define HID_USAGE_SECURITY_CODE_CLEARED 1, 0x26
/* Keyboard/Keypad Usages */
#define HID_USAGE_ERROR_ROLL_OVER 1, 0x01
#define HID_USAGE_POST_FAIL 1, 0x02
#define HID_USAGE_ERROR_UNDEFINED 1, 0x03
#define HID_USAGE_KEY_A 1, 0x04
#define HID_USAGE_KEY_B 1, 0x05
#define HID_USAGE_KEY_C 1, 0x06
#define HID_USAGE_KEY_D 1, 0x07
#define HID_USAGE_KEY_E 1, 0x08
#define HID_USAGE_KEY_F 1, 0x09
#define HID_USAGE_KEY_G 1, 0x0a
#define HID_USAGE_KEY_H 1, 0x0b
#define HID_USAGE_KEY_I 1, 0x0c
#define HID_USAGE_KEY_J 1, 0x0d
#define HID_USAGE_KEY_K 1, 0x0e
#define HID_USAGE_KEY_L 1, 0x0f
#define HID_USAGE_KEY_M 1, 0x10
#define HID_USAGE_KEY_N 1, 0x11
#define HID_USAGE_KEY_O 1, 0x12
#define HID_USAGE_KEY_P 1, 0x13
#define HID_USAGE_KEY_Q 1, 0x14
#define HID_USAGE_KEY_R 1, 0x15
#define HID_USAGE_KEY_S 1, 0x16
#define HID_USAGE_KEY_T 1, 0x17
#define HID_USAGE_KEY_U 1, 0x18
#define HID_USAGE_KEY_V 1, 0x19
#define HID_USAGE_KEY_W 1, 0x1a
#define HID_USAGE_KEY_X 1, 0x1b
#define HID_USAGE_KEY_Y 1, 0x1c
#define HID_USAGE_KEY_Z 1, 0x1d
#define HID_USAGE_KEY_1 1, 0x1e
#define HID_USAGE_KEY_2 1, 0x1f
#define HID_USAGE_KEY_3 1, 0x20
#define HID_USAGE_KEY_4 1, 0x21
#define HID_USAGE_KEY_5 1, 0x22
#define HID_USAGE_KEY_6 1, 0x23
#define HID_USAGE_KEY_7 1, 0x24
#define HID_USAGE_KEY_8 1, 0x25
#define HID_USAGE_KEY_9 1, 0x26
#define HID_USAGE_KEY_0 1, 0x27
#define HID_USAGE_KEY_ENTER 1, 0x28
#define HID_USAGE_KEY_ESCAPE 1, 0x29
#define HID_USAGE_KEY_DELETE 1, 0x2a
#define HID_USAGE_KEY_BACKSPACE 1, 0x2a
#define HID_USAGE_KEY_TAB 1, 0x2b
#define HID_USAGE_KEY_SPACEBAR 1, 0x2c
#define HID_USAGE_KEY_SPACE 1, 0x2c
#define HID_USAGE_KEY_MINUS 1, 0x2d
#define HID_USAGE_KEY_UNDERSCORE 1, 0x2d
#define HID_USAGE_KEY_EQUALS 1, 0x2e
#define HID_USAGE_KEY_PLUS 1, 0x2e
#define HID_USAGE_KEY_SQUARE_OPEN 1, 0x2f
#define HID_USAGE_KEY_SQUARE_CLOSE 1, 0x30
#define HID_USAGE_KEY_BACKSLASH 1, 0x31
#define HID_USAGE_KEY_NON_US_SHARP 1, 0x32
#define HID_USAGE_KEY_SEMICOLON 1, 0x33
#define HID_USAGE_KEY_COLON 1, 0x33
#define HID_USAGE_KEY_QUOTE 1, 0x34
#define HID_USAGE_KEY_GRAVE_ACCENT 1, 0x35
#define HID_USAGE_KEY_TILDE 1, 0x35
#define HID_USAGE_KEY_COMMA 1, 0x36
#define HID_USAGE_KEY_DOT 1, 0x37
#define HID_USAGE_KEY_SLASH 1, 0x38
#define HID_USAGE_KEY_CAPS_LOCK 1, 0x39
#define HID_USAGE_KEY_F1 1, 0x3a
#define HID_USAGE_KEY_F2 1, 0x3b
#define HID_USAGE_KEY_F3 1, 0x3c
#define HID_USAGE_KEY_F4 1, 0x3d
#define HID_USAGE_KEY_F5 1, 0x3e
#define HID_USAGE_KEY_F6 1, 0x3f
#define HID_USAGE_KEY_F7 1, 0x40
#define HID_USAGE_KEY_F8 1, 0x41
#define HID_USAGE_KEY_F9 1, 0x42
#define HID_USAGE_KEY_F10 1, 0x43
#define HID_USAGE_KEY_F11 1, 0x44
#define HID_USAGE_KEY_F12 1, 0x45
#define HID_USAGE_KEY_PRINT_SCREEN 1, 0x46
#define HID_USAGE_KEY_SCROLL_LOCK 1, 0x47
#define HID_USAGE_KEY_PAUSE 1, 0x48
#define HID_USAGE_KEY_INSERT 1, 0x49
#define HID_USAGE_KEY_HOME 1, 0x4a
#define HID_USAGE_KEY_PAGE_UP 1, 0x4b
#define HID_USAGE_KEY_DELETE_FORWARD 1, 0x4c
#define HID_USAGE_KEY_END 1, 0x4d
#define HID_USAGE_KEY_PAGE_DOWN 1, 0x4e
#define HID_USAGE_KEY_RIGHT_ARROW 1, 0x4f
#define HID_USAGE_KEY_LEFT_ARROW 1, 0x50
#define HID_USAGE_KEY_DOWN_ARROW 1, 0x51
#define HID_USAGE_KEY_UP_ARROW 1, 0x52
#define HID_USAGE_KEY_PAD_NUM_LOCK 1, 0x53
#define HID_USAGE_KEY_PAD_DIVIDE 1, 0x54
#define HID_USAGE_KEY_PAD_MULTIPLY 1, 0x55
#define HID_USAGE_KEY_PAD_MINUS 1, 0x56
#define HID_USAGE_KEY_PAD_PLUS 1, 0x57
#define HID_USAGE_KEY_PAD_ENTER 1, 0x58
#define HID_USAGE_KEY_PAD_1 1, 0x59
#define HID_USAGE_KEY_PAD_END 1, 0x59
#define HID_USAGE_KEY_PAD_2 1, 0x5a
#define HID_USAGE_KEY_PAD_DOWN_ARROW 1, 0x5a
#define HID_USAGE_KEY_PAD_3 1, 0x5b
#define HID_USAGE_KEY_PAD_PAGE_DOWN 1, 0x5b
#define HID_USAGE_KEY_PAD_4 1, 0x5c
#define HID_USAGE_KEY_PAD_LEFT_ARROW 1, 0x5c
#define HID_USAGE_KEY_PAD_5 1, 0x5d
#define HID_USAGE_KEY_PAD_6 1, 0x5e
#define HID_USAGE_KEY_PAD_RIGHT_ARROW 1, 0x5e
#define HID_USAGE_KEY_PAD_7 1, 0x5f
#define HID_USAGE_KEY_PAD_HOME 1, 0x5f
#define HID_USAGE_KEY_PAD_8 1, 0x60
#define HID_USAGE_KEY_PAD_UP_ARROW 1, 0x60
#define HID_USAGE_KEY_PAD_9 1, 0x61
#define HID_USAGE_KEY_PAD_PAGE_UP 1, 0x61
#define HID_USAGE_KEY_PAD_0 1, 0x62
#define HID_USAGE_KEY_PAD_INSERT 1, 0x62
#define HID_USAGE_KEY_PAD_DOT 1, 0x63
#define HID_USAGE_KEY_PAD_DELETE 1, 0x63
#define HID_USAGE_KEY_NON_US_BACKSLASH 1, 0x64
#define HID_USAGE_KEY_APPLICATION 1, 0x65
#define HID_USAGE_KEY_POWER 1, 0x66
#define HID_USAGE_KEY_PAD_EQUALS 1, 0x67
#define HID_USAGE_KEY_F13 1, 0x68
#define HID_USAGE_KEY_F14 1, 0x69
#define HID_USAGE_KEY_F15 1, 0x6a
#define HID_USAGE_KEY_F16 1, 0x6b
#define HID_USAGE_KEY_F17 1, 0x6c
#define HID_USAGE_KEY_F18 1, 0x6d
#define HID_USAGE_KEY_F19 1, 0x6e
#define HID_USAGE_KEY_F20 1, 0x6f
#define HID_USAGE_KEY_F21 1, 0x70
#define HID_USAGE_KEY_F22 1, 0x71
#define HID_USAGE_KEY_F23 1, 0x72
#define HID_USAGE_KEY_F24 1, 0x73
#define HID_USAGE_KEY_EXECUTE 1, 0x74
#define HID_USAGE_KEY_HELP 1, 0x75
#define HID_USAGE_KEY_MENU 1, 0x76
#define HID_USAGE_KEY_SELECT 1, 0x77
#define HID_USAGE_KEY_STOP 1, 0x78
#define HID_USAGE_KEY_AGAIN 1, 0x79
#define HID_USAGE_KEY_UNDO 1, 0x7a
#define HID_USAGE_KEY_CUT 1, 0x7b
#define HID_USAGE_KEY_COPY 1, 0x7c
#define HID_USAGE_KEY_PASTE 1, 0x7d
#define HID_USAGE_KEY_FIND 1, 0x7e
#define HID_USAGE_KEY_MUTE 1, 0x7f
#define HID_USAGE_KEY_VOLUME_UP 1, 0x80
#define HID_USAGE_KEY_VOLUME_DOWN 1, 0x81
#define HID_USAGE_KEY_LOCKING_CAPS_LOCK 1, 0x82
#define HID_USAGE_KEY_LOCKING_NUM_LOCK 1, 0x83
#define HID_USAGE_KEY_LOCKING_SCROLL_LOCK 1, 0x84
#define HID_USAGE_KEY_PAD_COMMA 1, 0x85
#define HID_USAGE_KEY_PAD_EQUAL_SIGN 1, 0x86
#define HID_USAGE_KEY_INTERNATIONAL_1 1, 0x87
#define HID_USAGE_KEY_INTERNATIONAL_2 1, 0x88
#define HID_USAGE_KEY_INTERNATIONAL_3 1, 0x89
#define HID_USAGE_KEY_INTERNATIONAL_4 1, 0x8a
#define HID_USAGE_KEY_INTERNATIONAL_5 1, 0x8b
#define HID_USAGE_KEY_INTERNATIONAL_6 1, 0x8c
#define HID_USAGE_KEY_INTERNATIONAL_7 1, 0x8d
#define HID_USAGE_KEY_INTERNATIONAL_8 1, 0x8e
#define HID_USAGE_KEY_INTERNATIONAL_9 1, 0x8f
#define HID_USAGE_KEY_LANG_1 1, 0x90
#define HID_USAGE_KEY_LANG_2 1, 0x91
#define HID_USAGE_KEY_LANG_3 1, 0x92
#define HID_USAGE_KEY_LANG_4 1, 0x93
#define HID_USAGE_KEY_LANG_5 1, 0x94
#define HID_USAGE_KEY_LANG_6 1, 0x95
#define HID_USAGE_KEY_LANG_7 1, 0x96
#define HID_USAGE_KEY_LANG_8 1, 0x97
#define HID_USAGE_KEY_LANG_9 1, 0x98
#define HID_USAGE_KEY_ALTERNATE_ERASE 1, 0x99
#define HID_USAGE_KEY_SYSTEM_REQUEST 1, 0x9a
#define HID_USAGE_KEY_ATTENTION 1, 0x9a
#define HID_USAGE_KEY_CANCEL 1, 0x9b
#define HID_USAGE_KEY_CLEAR 1, 0x9c
#define HID_USAGE_KEY_PRIOR 1, 0x9d
#define HID_USAGE_KEY_RETURN 1, 0x9e
#define HID_USAGE_KEY_SEPARATOR 1, 0x9f
#define HID_USAGE_KEY_OUT 1, 0xa0
#define HID_USAGE_KEY_OPER 1, 0xa1
#define HID_USAGE_KEY_CLEAR_AGAIN 1, 0xa2
#define HID_USAGE_KEY_CR_SEL_PROPS 1, 0xa3
#define HID_USAGE_KEY_EX_SEL 1, 0xa4
#define HID_USAGE_KEY_PAD_00 1, 0xb0
#define HID_USAGE_KEY_PAD_000 1, 0xb1
#define HID_USAGE_KEY_THOUSANDS_SEPARATOR 1, 0xb2
#define HID_USAGE_KEY_DECIMAL_SEPARATOR 1, 0xb3
#define HID_USAGE_KEY_CURRENCY_UNIT 1, 0xb4
#define HID_USAGE_KEY_CURRENCY_SUB_UNIT 1, 0xb5
#define HID_USAGE_KEY_PAD_PAREN_OPEN 1, 0xb6
#define HID_USAGE_KEY_PAD_ROUND_OPEN 1, 0xb6
#define HID_USAGE_KEY_PAD_PAREN_CLOSE 1, 0xb7
#define HID_USAGE_KEY_PAD_ROUND_CLOSE 1, 0xb7
#define HID_USAGE_KEY_PAD_BRACE_OPEN 1, 0xb8
#define HID_USAGE_KEY_PAD_BRACE_CLOSE 1, 0xb9
#define HID_USAGE_KEY_PAD_TAB 1, 0xba
#define HID_USAGE_KEY_PAD_BACKSPACE 1, 0xbb
#define HID_USAGE_KEY_PAD_A 1, 0xbc
#define HID_USAGE_KEY_PAD_B 1, 0xbd
#define HID_USAGE_KEY_PAD_C 1, 0xbe
#define HID_USAGE_KEY_PAD_D 1, 0xbf
#define HID_USAGE_KEY_PAD_E 1, 0xc0
#define HID_USAGE_KEY_PAD_F 1, 0xc1
#define HID_USAGE_KEY_PAD_XOR 1, 0xc2
#define HID_USAGE_KEY_PAD_CARET 1, 0xc3
#define HID_USAGE_KEY_PAD_BINARY_XOR 1, 0xc3
#define HID_USAGE_KEY_PAD_PERCENT 1, 0xc4
#define HID_USAGE_KEY_PAD_LESS_THAN 1, 0xc5
#define HID_USAGE_KEY_PAD_LEFT_ANGLE 1, 0xc5
#define HID_USAGE_KEY_PAD_GREAT_THAN 1, 0xc6
#define HID_USAGE_KEY_PAD_RIGHT_ANGLE 1, 0xc6
#define HID_USAGE_KEY_PAD_AMPERSAND 1, 0xc7
#define HID_USAGE_KEY_PAD_BINARY_AND 1, 0xc7
#define HID_USAGE_KEY_PAD_LOGIC_AND 1, 0xc8
#define HID_USAGE_KEY_PAD_BINARY_OR 1, 0xc9
#define HID_USAGE_KEY_PAD_LOGIC_OR 1, 0xca
#define HID_USAGE_KEY_PAD_COLON 1, 0xcb
#define HID_USAGE_KEY_PAD_SHARP 1, 0xcc
#define HID_USAGE_KEY_PAD_SPACE 1, 0xcd
#define HID_USAGE_KEY_PAD_AT 1, 0xce
#define HID_USAGE_KEY_PAD_LOGIC_NOT 1, 0xcf
#define HID_USAGE_KEY_PAD_EXCLAMATION 1, 0xcf
#define HID_USAGE_KEY_PAD_MEMORY_STORE 1, 0xd0
#define HID_USAGE_KEY_PAD_MEMORY_RECALL 1, 0xd1
#define HID_USAGE_KEY_PAD_MEMORY_CLEAR 1, 0xd2
#define HID_USAGE_KEY_PAD_MEMORY_ADD 1, 0xd3
#define HID_USAGE_KEY_PAD_MEMORY_SUBSTRACT 1, 0xd4
#define HID_USAGE_KEY_PAD_MEMORY_MULTIPLY 1, 0xd5
#define HID_USAGE_KEY_PAD_MEMORY_DIVIDE 1, 0xd6
#define HID_USAGE_KEY_PAD_PLUS_MINUS 1, 0xd7
#define HID_USAGE_KEY_PAD_CLEAR 1, 0xd8
#define HID_USAGE_KEY_PAD_CLEAR_ENTRY 1, 0xd9
#define HID_USAGE_KEY_PAD_BINARY 1, 0xda
#define HID_USAGE_KEY_PAD_OCTAL 1, 0xdb
#define HID_USAGE_KEY_PAD_DECIMAL 1, 0xdc
#define HID_USAGE_KEY_PAD_HEXADECIMAL 1, 0xdd
#define HID_USAGE_KEY_LEFT_CONTROL 1, 0xe0
#define HID_USAGE_KEY_LEFT_SHIFT 1, 0xe1
#define HID_USAGE_KEY_LEFT_ALT 1, 0xe2
#define HID_USAGE_KEY_LEFT_GUI 1, 0xe3
#define HID_USAGE_KEY_RIGHT_CONTROL 1, 0xe4
#define HID_USAGE_KEY_RIGHT_SHIFT 1, 0xe5
#define HID_USAGE_KEY_RIGHT_ALT 1, 0xe6
#define HID_USAGE_KEY_RIGHT_GUI 1, 0xe7
/* LED Usages */
#define HID_USAGE_NUM_LOCK 1, 0x01
#define HID_USAGE_CAPS_LOCK 1, 0x02
#define HID_USAGE_SCROLL_LOCK 1, 0x03
#define HID_USAGE_COMPOSE 1, 0x04
#define HID_USAGE_KANA 1, 0x05
#define HID_USAGE_POWER 1, 0x06
#define HID_USAGE_SHIFT 1, 0x07
#define HID_USAGE_DO_NOT_DISTURB 1, 0x08
#define HID_USAGE_MUTE 1, 0x09
#define HID_USAGE_TONE_ENABLE 1, 0x0a
#define HID_USAGE_HIGH_CUT_FILTER 1, 0x0b
#define HID_USAGE_LOW_CUT_FILTER 1, 0x0c
#define HID_USAGE_EQUALIZER_ENABLE 1, 0x0d
#define HID_USAGE_SOUND_FIELD_ON 1, 0x0e
#define HID_USAGE_SURROUND_ON 1, 0x0f
#define HID_USAGE_REPEAT 1, 0x10
#define HID_USAGE_STEREO 1, 0x11
#define HID_USAGE_SAMPLING_RATE_DETECT 1, 0x12
#define HID_USAGE_SPINNING 1, 0x13
#define HID_USAGE_CAV 1, 0x14
#define HID_USAGE_CLV 1, 0x15
#define HID_USAGE_RECORDING_FORMAT_DETECT 1, 0x16
#define HID_USAGE_OFF_HOOK 1, 0x17
#define HID_USAGE_RING 1, 0x18
#define HID_USAGE_MESSAGE_WAITING 1, 0x19
#define HID_USAGE_DATA_MODE 1, 0x1a
#define HID_USAGE_BATTERY_OPERATION 1, 0x1b
#define HID_USAGE_BATTERY_OK 1, 0x1c
#define HID_USAGE_BATTERY_LOW 1, 0x1d
#define HID_USAGE_SPEAKER 1, 0x1e
#define HID_USAGE_HEAD_SET 1, 0x1f
#define HID_USAGE_HOLD 1, 0x20
#define HID_USAGE_MICROPHONE 1, 0x21
#define HID_USAGE_COVERAGE 1, 0x22
#define HID_USAGE_NIGHT_MODE 1, 0x23
#define HID_USAGE_SEND_CALLS 1, 0x24
#define HID_USAGE_CALL_PICKUP 1, 0x25
#define HID_USAGE_CONFERENCE 1, 0x26
#define HID_USAGE_STAND_BY 1, 0x27
#define HID_USAGE_CAMERA_ON 1, 0x28
#define HID_USAGE_CAMERA_OFF 1, 0x29
#define HID_USAGE_ON_LINE 1, 0x2a
#define HID_USAGE_OFF_LINE 1, 0x2b
#define HID_USAGE_BUSY 1, 0x2c
#define HID_USAGE_READY 1, 0x2d
#define HID_USAGE_PAPER_OUT 1, 0x2e
#define HID_USAGE_PAPER_JAM 1, 0x2f
#define HID_USAGE_REMOTE 1, 0x30
#define HID_USAGE_FORWARD 1, 0x31
#define HID_USAGE_REVERSE 1, 0x32
#define HID_USAGE_STOP 1, 0x33
#define HID_USAGE_REWIND 1, 0x34
#define HID_USAGE_FAST_FORWARD 1, 0x35
#define HID_USAGE_PLAY 1, 0x36
#define HID_USAGE_PAUSE 1, 0x37
#define HID_USAGE_RECORD 1, 0x38
#define HID_USAGE_ERROR 1, 0x39
#define HID_USAGE_USAGE_SELECTED_INDICATOR 1, 0x3a
#define HID_USAGE_USAGE_IN_USE_INDICATOR 1, 0x3b
#define HID_USAGE_USAGE_MULTI_MODE_INDICATOR 1, 0x3c
#define HID_USAGE_INDICATOR_ON 1, 0x3d
#define HID_USAGE_INDICATOR_FLASH 1, 0x3e
#define HID_USAGE_INDICATOR_SLOW_BLINK 1, 0x3f
#define HID_USAGE_INDICATOR_FAST_BLINK 1, 0x40
#define HID_USAGE_INDICATOR_OFF 1, 0x41
#define HID_USAGE_FLASH_ON_TIME 1, 0x42
#define HID_USAGE_SLOW_BLINK_ON_TIME 1, 0x43
#define HID_USAGE_SLOW_BLINK_OFF_TIME 1, 0x44
#define HID_USAGE_FAST_BLINK_ON_TIME 1, 0x45
#define HID_USAGE_FAST_BLINK_OFF_TIME 1, 0x46
#define HID_USAGE_USAGE_INDICATOR_COLOR 1, 0x47
#define HID_USAGE_INDICATOR_RED 1, 0x48
#define HID_USAGE_INDICATOR_GREEN 1, 0x49
#define HID_USAGE_INDICATOR_AMBER 1, 0x4a
#define HID_USAGE_GENERIC_INDICATOR 1, 0x4b
#define HID_USAGE_SYSTEM_SUSPEND 1, 0x4c
#define HID_USAGE_EXTERNAL_POWER_CONNECTED 1, 0x4d
/* Button Usages */
#define HID_USAGE_BUTTON_PRIMARY 1, 0x01
#define HID_USAGE_BUTTON_TRIGGER 1, 0x01
#define HID_USAGE_BUTTON_SECONDARY 1, 0x02
#define HID_USAGE_BUTTON_TERTIARY 1, 0x03
#define HID_USAGE_BUTTON(n, x) n, (0x00 + (_ASSERT(1 <= (n) && (n) <= 2 && 1 <= (x) && (x) <= ((n) == 1 ? 0xff : 0xffff)) ? (x) : (0))) /* x: [1..255] (n:1) or [1..65535] (n:2) */
/* Ordinal Usages */
#define HID_USAGE_INSTANCE(n, x) n, (0x00 + (_ASSERT(1 <= (n) && (n) <= 2 && 1 <= (x) && (x) <= ((n) == 1 ? 0xff : 0xffff)) ? (x) : (0))) /* x: [1..255] (n:1) or [1..65535] (n:2) */
/* Telephony Usages */
#define HID_USAGE_PHONE 1, 0x01
#define HID_USAGE_ANSWERING_MACHINE 1, 0x02
#define HID_USAGE_MESSAGE_CONTROLS 1, 0x03
#define HID_USAGE_HANDSET 1, 0x04
#define HID_USAGE_HEADSET 1, 0x05
#define HID_USAGE_TELEPHONY_KEYPAD 1, 0x06
#define HID_USAGE_PROGRAMMABLE_BUTTON 1, 0x07
#define HID_USAGE_HOOK_SWITCH 1, 0x20
#define HID_USAGE_FLASH 1, 0x21
#define HID_USAGE_FEATURE 1, 0x22
#define HID_USAGE_TELEPHONY_HOLD 1, 0x23
#define HID_USAGE_REDIAL 1, 0x24
#define HID_USAGE_TRANSFER 1, 0x25
#define HID_USAGE_DROP 1, 0x26
#define HID_USAGE_PARK 1, 0x27
#define HID_USAGE_FORWARD_CALLS 1, 0x28
#define HID_USAGE_ALTERNATE_FUNCTION 1, 0x29
#define HID_USAGE_LINE 1, 0x2a
#define HID_USAGE_SPEAKER_PHONE 1, 0x2b
#define HID_USAGE_TELEPHONY_CONFERENCE 1, 0x2c
#define HID_USAGE_RING_ENABLE 1, 0x2d
#define HID_USAGE_RING_SELECT 1, 0x2e
#define HID_USAGE_PHONE_MUTE 1, 0x2f
#define HID_USAGE_CALLER_ID 1, 0x30
#define HID_USAGE_SEND 1, 0x31
#define HID_USAGE_SPEED_DIAL 1, 0x50
#define HID_USAGE_STORE_NUMBER 1, 0x51
#define HID_USAGE_RECALL_NUMBER 1, 0x52
#define HID_USAGE_PHONE_DIRECTORY 1, 0x53
#define HID_USAGE_VOICE_MAIL 1, 0x70
#define HID_USAGE_SCREEN_CALLS 1, 0x71
#define HID_USAGE_TELEPHONY_DO_NOT_DISTURB 1, 0x72
#define HID_USAGE_MESSAGE 1, 0x73
#define HID_USAGE_ANSWER_ON_OFF 1, 0x74
#define HID_USAGE_INSIDE_DIAL_TONE 1, 0x90
#define HID_USAGE_OUTSIDE_DIAL_TONE 1, 0x91
#define HID_USAGE_INSIDE_RING_TONE 1, 0x92
#define HID_USAGE_OUTSIDE_RING_TONE 1, 0x93
#define HID_USAGE_PRIORITY_RING_TONE 1, 0x94
#define HID_USAGE_INSIDE_RINGBACK 1, 0x95
#define HID_USAGE_PRIORITY_RINGBACK 1, 0x96
#define HID_USAGE_LINE_BUSY_TONE 1, 0x97
#define HID_USAGE_REORDER_TONE 1, 0x98
#define HID_USAGE_CALL_WAITING_TONE 1, 0x99
#define HID_USAGE_CONFIRMATION_TONE_1 1, 0x9a
#define HID_USAGE_CONFIRMATION_TONE_2 1, 0x9b
#define HID_USAGE_TONES_OFF 1, 0x9c
#define HID_USAGE_OUTSIDE_RINGBACK 1, 0x9d
#define HID_USAGE_RINGER 1, 0x9e
#define HID_USAGE_PHONE_KEY_0 1, 0xb0
#define HID_USAGE_PHONE_KEY_1 1, 0xb1
#define HID_USAGE_PHONE_KEY_2 1, 0xb2
#define HID_USAGE_PHONE_KEY_3 1, 0xb3
#define HID_USAGE_PHONE_KEY_4 1, 0xb4
#define HID_USAGE_PHONE_KEY_5 1, 0xb5
#define HID_USAGE_PHONE_KEY_6 1, 0xb6
#define HID_USAGE_PHONE_KEY_7 1, 0xb7
#define HID_USAGE_PHONE_KEY_8 1, 0xb8
#define HID_USAGE_PHONE_KEY_9 1, 0xb9
#define HID_USAGE_PHONE_KEY_STAR 1, 0xba
#define HID_USAGE_PHONE_KEY_POUND 1, 0xbb
#define HID_USAGE_PHONE_KEY_A 1, 0xbc
#define HID_USAGE_PHONE_KEY_B 1, 0xbd
#define HID_USAGE_PHONE_KEY_C 1, 0xbe
#define HID_USAGE_PHONE_KEY_D 1, 0xbf
/* Consumer Usages */
#define HID_USAGE_CONSUMER_CONTROL 1, 0x01
#define HID_USAGE_NUMERIC_KEY_PAD 1, 0x02
#define HID_USAGE_PROGRAMMABLE_BUTTONS 1, 0x03
#define HID_USAGE_CUSTOMER_MICROPHONE 1, 0x04
#define HID_USAGE_CUSTOMER_HEADPHONE 1, 0x05
#define HID_USAGE_GRAPHIC_EQUALIZER 1, 0x06
#define HID_USAGE_PLUS_10 1, 0x20
#define HID_USAGE_PLUS_100 1, 0x21
#define HID_USAGE_AM_PM 1, 0x22
#define HID_USAGE_CUSTOMER_POWER 1, 0x30
#define HID_USAGE_CUSTOMER_RESET 1, 0x31
#define HID_USAGE_CUSTOMER_SLEEP 1, 0x32
#define HID_USAGE_SLEEP_AFTER 1, 0x33
#define HID_USAGE_SLEEP_MODE 1, 0x34
#define HID_USAGE_ILLUMINATION 1, 0x35
#define HID_USAGE_FUNCTION_BUTTONS 1, 0x36
#define HID_USAGE_MENU 1, 0x40
#define HID_USAGE_MENU_PICK 1, 0x41
#define HID_USAGE_MENU_UP 1, 0x42
#define HID_USAGE_MENU_DOWN 1, 0x43
#define HID_USAGE_MENU_LEFT 1, 0x44
#define HID_USAGE_MENU_RIGHT 1, 0x45
#define HID_USAGE_MENU_ESCAPE 1, 0x46
#define HID_USAGE_MENU_VALUE_INCREASE 1, 0x47
#define HID_USAGE_MENU_VALUE_DECREASE 1, 0x48
#define HID_USAGE_DATA_ON_SCREEN 1, 0x60
#define HID_USAGE_CLOSED_CAPTION 1, 0x61
#define HID_USAGE_CLOSED_CAPTION_SELECT 1, 0x62
#define HID_USAGE_VCR_TV 1, 0x63
#define HID_USAGE_BROADCAST_MODE 1, 0x64
#define HID_USAGE_SNAPSHOT 1, 0x65
#define HID_USAGE_STILL 1, 0x66
#define HID_USAGE_SELECTION 1, 0x80
#define HID_USAGE_ASSIGN_SELECTION 1, 0x81
#define HID_USAGE_MODE_STEP 1, 0x82
#define HID_USAGE_RECALL_LAST 1, 0x83
#define HID_USAGE_ENTER_CHANNEL 1, 0x84
#define HID_USAGE_ORDER_MOVIE 1, 0x85
#define HID_USAGE_CHANNEL 1, 0x86
#define HID_USAGE_MEDIA_SELECTION 1, 0x87
#define HID_USAGE_MEDIA_SELECT_COMPUTER 1, 0x88
#define HID_USAGE_MEDIA_SELECT_TV 1, 0x89
#define HID_USAGE_MEDIA_SELECT_WWW 1, 0x8a
#define HID_USAGE_MEDIA_SELECT_DVD 1, 0x8b
#define HID_USAGE_MEDIA_SELECT_TELEPHONE 1, 0x8c
#define HID_USAGE_MEDIA_SELECT_PROGRAM_GUIDE 1, 0x8d
#define HID_USAGE_MEDIA_SELECT_VIDEO_PHONE 1, 0x8e
#define HID_USAGE_MEDIA_SELECT_GAMES 1, 0x8f
#define HID_USAGE_MEDIA_SELECT_MESSAGES 1, 0x90
#define HID_USAGE_MEDIA_SELECT_CD 1, 0x91
#define HID_USAGE_MEDIA_SELECT_VCR 1, 0x92
#define HID_USAGE_MEDIA_SELECT_TUNER 1, 0x93
#define HID_USAGE_QUIT 1, 0x94
#define HID_USAGE_HELP 1, 0x95
#define HID_USAGE_MEDIA_SELECT_TAPE 1, 0x96
#define HID_USAGE_MEDIA_SELECT_CABLE 1, 0x97
#define HID_USAGE_MEDIA_SELECT_SATELLITE 1, 0x98
#define HID_USAGE_MEDIA_SELECT_SECURITY 1, 0x99
#define HID_USAGE_MEDIA_SELECT_HOME 1, 0x9a
#define HID_USAGE_MEDIA_SELECT_CALL 1, 0x9b
#define HID_USAGE_CHANNEL_INCREMENT 1, 0x9c
#define HID_USAGE_CHANNEL_DECREMENT 1, 0x9d
#define HID_USAGE_MEDIA_SELECT_SAP 1, 0x9e
#define HID_USAGE_VCR_PLUS 1, 0xa0
#define HID_USAGE_ONCE 1, 0xa1
#define HID_USAGE_DAILY 1, 0xa2
#define HID_USAGE_WEEKLY 1, 0xa3
#define HID_USAGE_MONTHLY 1, 0xa4
#define HID_USAGE_CUSTOMER_PLAY 1, 0xb0
#define HID_USAGE_CUSTOMER_PAUSE 1, 0xb1
#define HID_USAGE_CUSTOMER_RECORD 1, 0xb2
#define HID_USAGE_CUSTOMER_FAST_FORWARD 1, 0xb3
#define HID_USAGE_CUSTOMER_REWIND 1, 0xb4
#define HID_USAGE_SCAN_NEXT_TRACK 1, 0xb5
#define HID_USAGE_SCAN_PREVIOUS_TRACK 1, 0xb6
#define HID_USAGE_CUSTOMER_STOP 1, 0xb7
#define HID_USAGE_CUSTOMER_EJECT 1, 0xb8
#define HID_USAGE_RANDOM_PLAY 1, 0xb9
#define HID_USAGE_SELECT_DISC 1, 0xba
#define HID_USAGE_ENTER_DISC 1, 0xbb
#define HID_USAGE_CUSTOMER_REPEAT 1, 0xbc
#define HID_USAGE_TRACKING 1, 0xbd
#define HID_USAGE_TRACK_NORMAL 1, 0xbe
#define HID_USAGE_SLOW_TRACKING 1, 0xbf
#define HID_USAGE_FRAME_FORWARD 1, 0xc0
#define HID_USAGE_FRAME_BACK 1, 0xc1
#define HID_USAGE_MARK 1, 0xc2
#define HID_USAGE_CLEAR_MARK 1, 0xc3
#define HID_USAGE_REPEAT_FROM_MARK 1, 0xc4
#define HID_USAGE_RETURN_TO_MARK 1, 0xc5
#define HID_USAGE_SEARCH_MARK_FORWARD 1, 0xc6
#define HID_USAGE_SEARCH_MARK_BACKWARDS 1, 0xc7
#define HID_USAGE_COUNTER_RESET 1, 0xc8
#define HID_USAGE_SHOW_COUNTER 1, 0xc9
#define HID_USAGE_TRACKING_INCREMENT 1, 0xca
#define HID_USAGE_TRACKING_DECREMENT 1, 0xcb
#define HID_USAGE_STOP_EJECT 1, 0xcc
#define HID_USAGE_PLAY_PAUSE 1, 0xcd
#define HID_USAGE_PLAY_SKIP 1, 0xce
#define HID_USAGE_VOLUME 1, 0xe0
#define HID_USAGE_BALANCE 1, 0xe1
#define HID_USAGE_CUSTOMER_MUTE 1, 0xe2
#define HID_USAGE_BASS 1, 0xe3
#define HID_USAGE_TREBLE 1, 0xe4
#define HID_USAGE_BASS_BOOST 1, 0xe5
#define HID_USAGE_SURROUND_MODE 1, 0xe6
#define HID_USAGE_LOUDNESS 1, 0xe7
#define HID_USAGE_MPX 1, 0xe8
#define HID_USAGE_VOLUME_INCREMENT 1, 0xe9
#define HID_USAGE_VOLUME_DECREMENT 1, 0xea
#define HID_USAGE_SPEED_SELECT 1, 0xf0
#define HID_USAGE_PLAYBACK_SPEED 1, 0xf1
#define HID_USAGE_STANDARD_PLAY 1, 0xf2
#define HID_USAGE_LONG_PLAY 1, 0xf3
#define HID_USAGE_EXTENDED_PLAY 1, 0xf4
#define HID_USAGE_SLOW 1, 0xf5
#define HID_USAGE_FAN_ENABLE 2, 0x100
#define HID_USAGE_FAN_SPEED 2, 0x101
#define HID_USAGE_LIGHT_ENABLE 2, 0x102
#define HID_USAGE_LIGHT_ILLUMINATION_LEVEL 2, 0x103
#define HID_USAGE_CLIMATE_CONTROL_ENABLE 2, 0x104
#define HID_USAGE_ROOM_TEMPERATURE 2, 0x105
#define HID_USAGE_SECURITY_ENABLE 2, 0x106
#define HID_USAGE_FIRE_ALARM 2, 0x107
#define HID_USAGE_POLICE_ALARM 2, 0x108
#define HID_USAGE_PROXIMITY 2, 0x109
#define HID_USAGE_MOTION 2, 0x10a
#define HID_USAGE_DURESS_ALARM 2, 0x10b
#define HID_USAGE_HOLDUP_ALARM 2, 0x10c
#define HID_USAGE_MEDICAL_ALARM 2, 0x10d
#define HID_USAGE_BALANCE_RIGHT 2, 0x150
#define HID_USAGE_BALANCE_LEFT 2, 0x151
#define HID_USAGE_BASS_INCREMENT 2, 0x152
#define HID_USAGE_BASS_DECREMENT 2, 0x153
#define HID_USAGE_TREBLE_INCREMENT 2, 0x154
#define HID_USAGE_TREBLE_DECREMENT 2, 0x155
#define HID_USAGE_SPEAKER_SYSTEM 2, 0x160
#define HID_USAGE_CHANNEL_LEFT 2, 0x161
#define HID_USAGE_CHANNEL_RIGHT 2, 0x162
#define HID_USAGE_CHANNEL_CENTER 2, 0x163
#define HID_USAGE_CHANNEL_FRONT 2, 0x164
#define HID_USAGE_CHANNEL_CENTER_FRONT 2, 0x165
#define HID_USAGE_CHANNEL_SIDE 2, 0x166
#define HID_USAGE_CHANNEL_SURROUND 2, 0x167
#define HID_USAGE_CHANNEL_LOW_FREQUENCY_ENHANCEMENT 2, 0x168
#define HID_USAGE_CHANNEL_TOP 2, 0x169
#define HID_USAGE_CHANNEL_UNKNOWN 2, 0x16a
#define HID_USAGE_SUB_CHANNEL 2, 0x170
#define HID_USAGE_SUB_CHANNEL_INCREMENT 2, 0x171
#define HID_USAGE_SUB_CHANNEL_DECREMENT 2, 0x172
#define HID_USAGE_ALTERNATE_AUDIO_INCREMENT 2, 0x173
#define HID_USAGE_ALTERNATE_AUDIO_DECREMENT 2, 0x174
#define HID_USAGE_APPLICATION_LAUNCH_BUTTONS 2, 0x180
#define HID_USAGE_AL_LAUNCH_BUTTON_CONFIGURATION_TOOL 2, 0x181
#define HID_USAGE_AL_PROGRAMMABLE_BUTTON_CONFIGURATION 2, 0x182
#define HID_USAGE_AL_CONSUMER_CONTROL_CONFIGURATION 2, 0x183
#define HID_USAGE_AL_WORD_PROCESSOR 2, 0x184
#define HID_USAGE_AL_TEXT_EDITOR 2, 0x185
#define HID_USAGE_AL_SPREADSHEET 2, 0x186
#define HID_USAGE_AL_GRAPHICS_EDITOR 2, 0x187
#define HID_USAGE_AL_PRESENTATION_APP 2, 0x188
#define HID_USAGE_AL_DATABASE_APP 2, 0x189
#define HID_USAGE_AL_EMAIL_READER 2, 0x18a
#define HID_USAGE_AL_NEWS_READER 2, 0x18b
#define HID_USAGE_AL_VOICE_MAIL 2, 0x18c
#define HID_USAGE_AL_CONTACTS_ADDRESS_BOOK 2, 0x18d
#define HID_USAGE_AL_CALENDAR_SCHEDULE 2, 0x18e
#define HID_USAGE_AL_TASK_PROJECT_MANAGER 2, 0x18f
#define HID_USAGE_AL_LOG_JOURNAL_TIMECARD 2, 0x190
#define HID_USAGE_AL_CHECKBOOK_FINANCE 2, 0x191
#define HID_USAGE_AL_CALCULATOR 2, 0x192
#define HID_USAGE_AL_AV_CAPTURE_PLAYBACK 2, 0x193
#define HID_USAGE_AL_LOCAL_MACHINE_BROWSER 2, 0x194
#define HID_USAGE_AL_LAN_WAN_BROWSER 2, 0x195
#define HID_USAGE_AL_INTERNET_BROWSER 2, 0x196
#define HID_USAGE_AL_REMOTE_NETWORKING_ISP_CONNECT 2, 0x197
#define HID_USAGE_AL_NETWORK_CONFERENCE 2, 0x198
#define HID_USAGE_AL_NETWORK_CHAT 2, 0x199
#define HID_USAGE_AL_TELEPHONE_DIALER 2, 0x19a
#define HID_USAGE_AL_LOGON 2, 0x19b
#define HID_USAGE_AL_LOGOFF 2, 0x19c
#define HID_USAGE_AL_LOGON_LOGOFF 2, 0x19d
#define HID_USAGE_AL_TERMINAL_LOCK_SCREENSAVER 2, 0x19e
#define HID_USAGE_AL_CONTROL_PANEL 2, 0x19f
#define HID_USAGE_AL_COMMAND_LINE_PROCESSOR_RUN 2, 0x1a0
#define HID_USAGE_AL_PROCESS_TASK_MANAGER 2, 0x1a1
#define HID_USAGE_AL_SELECT_TASK_APPLICATION 2, 0x1a2
#define HID_USAGE_AL_NEXT_TASK_APPLICATION 2, 0x1a3
#define HID_USAGE_AL_PREVIOUS_TASK_APPLICATION 2, 0x1a4
#define HID_USAGE_AL_PREEMPTIVE_HALT_TASK_APPLICATION 2, 0x1a5
#define HID_USAGE_AL_INTEGRATED_HELP_CENTER 2, 0x1a6
#define HID_USAGE_AL_DOCUMENTS 2, 0x1a7
#define HID_USAGE_AL_THESAURUS 2, 0x1a8
#define HID_USAGE_AL_DICTIONARY 2, 0x1a9
#define HID_USAGE_AL_DESKTOP 2, 0x1aa
#define HID_USAGE_AL_SPELL_CHECK 2, 0x1ab
#define HID_USAGE_AL_GRAMMAR_CHECK 2, 0x1ac
#define HID_USAGE_AL_WIRELESS_STATUS 2, 0x1ad
#define HID_USAGE_AL_KEYBOARD_LAYOUT 2, 0x1ae
#define HID_USAGE_AL_VIRUS_PROTECTION 2, 0x1af
#define HID_USAGE_AL_ENCRYPTION 2, 0x1b0
#define HID_USAGE_AL_SCREEN_SAVER 2, 0x1b1
#define HID_USAGE_AL_ALARMS 2, 0x1b2
#define HID_USAGE_AL_CLOCK 2, 0x1b3
#define HID_USAGE_AL_FILE_BROWSER 2, 0x1b4
#define HID_USAGE_AL_POWER_STATUS 2, 0x1b5
#define HID_USAGE_AL_IMAGE_BROWSER 2, 0x1b6
#define HID_USAGE_AL_AUDIO_BROWSER 2, 0x1b7
#define HID_USAGE_AL_MOVIE_BROWSER 2, 0x1b8
#define HID_USAGE_AL_DIGITAL_RIGHTS_MANAGER 2, 0x1b9
#define HID_USAGE_AL_DIGITAL_WALLET 2, 0x1ba
#define HID_USAGE_AL_INSTANT_MESSAGING 2, 0x1bc
#define HID_USAGE_AL_OEM_FEATURES_TIPS_TUTORIAL_BROWSER 2, 0x1bd
#define HID_USAGE_AL_OEM_HELP 2, 0x1be
#define HID_USAGE_AL_ONLINE_COMMUNITY 2, 0x1bf
#define HID_USAGE_AL_ENTERTAINMENT_CONTENT_BROWSER 2, 0x1c0
#define HID_USAGE_AL_ONLINE_SHOPPING_BROWSER 2, 0x1c1
#define HID_USAGE_AL_SMARTCARD_INFORMATION_HELP 2, 0x1c2
#define HID_USAGE_AL_MARKET_MONITOR_FINANCE_BROWSER 2, 0x1c3
#define HID_USAGE_AL_CUSTOMIZED_CORPORATE_NEWS_BROWSER 2, 0x1c4
#define HID_USAGE_AL_ONLINE_ACTIVITY_BROWSER 2, 0x1c5
#define HID_USAGE_AL_RESEARCH_SEARCH_BROWSER 2, 0x1c6
#define HID_USAGE_AL_AUDIO_PLAYER 2, 0x1c7
#define HID_USAGE_GENERIC_GUI_APPLICATION_CONTROLS 2, 0x200
#define HID_USAGE_AC_NEW 2, 0x201
#define HID_USAGE_AC_OPEN 2, 0x202
#define HID_USAGE_AC_CLOSE 2, 0x203
#define HID_USAGE_AC_EXIT 2, 0x204
#define HID_USAGE_AC_MAXIMIZE 2, 0x205
#define HID_USAGE_AC_MINIMIZE 2, 0x206
#define HID_USAGE_AC_SAVE 2, 0x207
#define HID_USAGE_AC_PRINT 2, 0x208
#define HID_USAGE_AC_PROPERTIES 2, 0x209
#define HID_USAGE_AC_UNDO 2, 0x21a
#define HID_USAGE_AC_COPY 2, 0x21b
#define HID_USAGE_AC_CUT 2, 0x21c
#define HID_USAGE_AC_PASTE 2, 0x21d
#define HID_USAGE_AC_SELECT_ALL 2, 0x21e
#define HID_USAGE_AC_FIND 2, 0x21f
#define HID_USAGE_AC_FIND_AND_REPLACE 2, 0x220
#define HID_USAGE_AC_SEARCH 2, 0x221
#define HID_USAGE_AC_GO_TO 2, 0x222
#define HID_USAGE_AC_HOME 2, 0x223
#define HID_USAGE_AC_BACK 2, 0x224
#define HID_USAGE_AC_FORWARD 2, 0x225
#define HID_USAGE_AC_STOP 2, 0x226
#define HID_USAGE_AC_REFRESH 2, 0x227
#define HID_USAGE_AC_PREVIOUS_LINK 2, 0x228
#define HID_USAGE_AC_NEXT_LINK 2, 0x229
#define HID_USAGE_AC_BOOKMARKS 2, 0x22a
#define HID_USAGE_AC_HISTORY 2, 0x22b
#define HID_USAGE_AC_SUBSCRIPTIONS 2, 0x22c
#define HID_USAGE_AC_ZOOM_IN 2, 0x22d
#define HID_USAGE_AC_ZOOM_OUT 2, 0x22e
#define HID_USAGE_AC_ZOOM 2, 0x22f
#define HID_USAGE_AC_FULL_SCREEN_VIEW 2, 0x230
#define HID_USAGE_AC_NORMAL_VIEW 2, 0x231
#define HID_USAGE_AC_VIEW_TOGGLE 2, 0x232
#define HID_USAGE_AC_SCROLL_UP 2, 0x233
#define HID_USAGE_AC_SCROLL_DOWN 2, 0x234
#define HID_USAGE_AC_SCROLL 2, 0x325
#define HID_USAGE_AC_PAN_LEFT 2, 0x236
#define HID_USAGE_AC_PAN_RIGHT 2, 0x237
#define HID_USAGE_AC_PAN 2, 0x238
#define HID_USAGE_AC_NEW_WINDOW 2, 0x239
#define HID_USAGE_AC_TILE_HORIZONTALLY 2, 0x23a
#define HID_USAGE_AC_TILE_VERTICALLY 2, 0x23b
#define HID_USAGE_AC_FORMAT 2, 0x23c
#define HID_USAGE_AC_EDIT 2, 0x23d
#define HID_USAGE_AC_BOLD 2, 0x23e
#define HID_USAGE_AC_ITALICS 2, 0x23f
#define HID_USAGE_AC_UNDERLINE 2, 0x240
#define HID_USAGE_AC_STRIKETHROUGH 2, 0x241
#define HID_USAGE_AC_SUBSCRIPT 2, 0x242
#define HID_USAGE_AC_SUPERSCRIPT 2, 0x243
#define HID_USAGE_AC_ALL_CAPS 2, 0x244
#define HID_USAGE_AC_ROATE 2, 0x245
#define HID_USAGE_AC_RESIZE 2, 0x246
#define HID_USAGE_AC_FLIP_HORIZONTAL 2, 0x247
#define HID_USAGE_AC_FLIP_VERTICAL 2, 0x248
#define HID_USAGE_AC_MIRROR_HORIZONTAL 2, 0x249
#define HID_USAGE_AC_MIRROR_VERTICAL 2, 0x24a
#define HID_USAGE_AC_FONT_SELECT 2, 0x24b
#define HID_USAGE_AC_FONT_COLOR 2, 0x24c
#define HID_USAGE_AC_FONT_SIZE 2, 0x24d
#define HID_USAGE_AC_JUSTIFY_LEFT 2, 0x24e
#define HID_USAGE_AC_JUSTIFY_CENTER_H 2, 0x24f
#define HID_USAGE_AC_JUSTIFY_RIGHT 2, 0x250
#define HID_USAGE_AC_JUSTIFY_BLOCK_H 2, 0x251
#define HID_USAGE_AC_JUSTIFY_TOP 2, 0x252
#define HID_USAGE_AC_JUSTIFY_CENTER_V 2, 0x253
#define HID_USAGE_AC_JUSTIFY_BOTTOM 2, 0x254
#define HID_USAGE_AC_JUSTIFY_BLOCK_V 2, 0x255
#define HID_USAGE_AC_INDENT_DECREASE 2, 0x256
#define HID_USAGE_AC_INDENT_INCREASE 2, 0x257
#define HID_USAGE_AC_NUMBERED_LIST 2, 0x258
#define HID_USAGE_AC_RESTART_NUMBERING 2, 0x259
#define HID_USAGE_AC_BULLETED_LIST 2, 0x25a
#define HID_USAGE_AC_PROMOTE 2, 0x25b
#define HID_USAGE_AC_DEMOTE 2, 0x25c
#define HID_USAGE_AC_YES 2, 0x25d
#define HID_USAGE_AC_NO 2, 0x25e
#define HID_USAGE_AC_CANCEL 2, 0x25f
#define HID_USAGE_AC_CATALOG 2, 0x260
#define HID_USAGE_AC_BUY_CHECKOUT 2, 0x261
#define HID_USAGE_AC_ADD_TO_CART 2, 0x262
#define HID_USAGE_AC_EXPAND 2, 0x263
#define HID_USAGE_AC_EXPAND_ALL 2, 0x264
#define HID_USAGE_AC_COLLAPSE 2, 0x265
#define HID_USAGE_AC_COLLAPSE_ALL 2, 0x266
#define HID_USAGE_AC_PRINT_PREVIEW 2, 0x267
#define HID_USAGE_AC_PASTE_SPECIAL 2, 0x268
#define HID_USAGE_AC_INSERT_MODE 2, 0x269
#define HID_USAGE_AC_DELETE 2, 0x26a
#define HID_USAGE_AC_LOCK 2, 0x26b
#define HID_USAGE_AC_UNLOCK 2, 0x26c
#define HID_USAGE_AC_PROTECT 2, 0x26d
#define HID_USAGE_AC_UNPROTECT 2, 0x26e
#define HID_USAGE_AC_ATTACH_COMMENT 2, 0x26f
#define HID_USAGE_AC_DELETE_COMMENT 2, 0x270
#define HID_USAGE_AC_VIEW_COMMENT 2, 0x271
#define HID_USAGE_AC_SELECT_WORD 2, 0x272
#define HID_USAGE_AC_SELECT_SENTENCE 2, 0x273
#define HID_USAGE_AC_SELECT_PARAGRAPH 2, 0x274
#define HID_USAGE_AC_SELECT_COLUMN 2, 0x275
#define HID_USAGE_AC_SELECT_ROW 2, 0x276
#define HID_USAGE_AC_SELECT_TABLE 2, 0x277
#define HID_USAGE_AC_SELECT_OBJECT 2, 0x278
#define HID_USAGE_AC_REDO_REPEAT 2, 0x279
#define HID_USAGE_AC_SORT 2, 0x27a
#define HID_USAGE_AC_SORT_ASCENDING 2, 0x27b
#define HID_USAGE_AC_SORT_DESCENDING 2, 0x27c
#define HID_USAGE_AC_FILTER 2, 0x27d
#define HID_USAGE_AC_SET_CLOCK 2, 0x27e
#define HID_USAGE_AC_VIEW_CLOCK 2, 0x27f
#define HID_USAGE_AC_SELECT_TIME_ZONE 2, 0x280
#define HID_USAGE_AC_EDIT_TIME_ZONES 2, 0x281
#define HID_USAGE_AC_SET_ALARM 2, 0x282
#define HID_USAGE_AC_CLEAR_ALARM 2, 0x283
#define HID_USAGE_AC_SNOOZE_ALARM 2, 0x284
#define HID_USAGE_AC_RESET_ALARM 2, 0x285
#define HID_USAGE_AC_SYNCHRONIZE 2, 0x286
#define HID_USAGE_AC_SEND_RECEIVE 2, 0x287
#define HID_USAGE_AC_SEND_TO 2, 0x288
#define HID_USAGE_AC_REPLY 2, 0x289
#define HID_USAGE_AC_REPLY_ALL 2, 0x28a
#define HID_USAGE_AC_FORWARD_MESSAGE 2, 0x28b
#define HID_USAGE_AC_SEND 2, 0x28c
#define HID_USAGE_AC_ATTACH_FILE 2, 0x28d
#define HID_USAGE_AC_UPLOAD 2, 0x28e
#define HID_USAGE_AC_DOWNLOAD 2, 0x28f
#define HID_USAGE_AC_SET_BORDERS 2, 0x290
#define HID_USAGE_AC_INSERT_ROW 2, 0x291
#define HID_USAGE_AC_INSERT_COLUMN 2, 0x292
#define HID_USAGE_AC_INSERT_FILE 2, 0x293
#define HID_USAGE_AC_INSERT_PICTURE 2, 0x294
#define HID_USAGE_AC_INSERT_OBJECT 2, 0x295
#define HID_USAGE_AC_INSERT_SYMBOL 2, 0x296
#define HID_USAGE_AC_SAVE_AND_CLOSE 2, 0x297
#define HID_USAGE_AC_RENAME 2, 0x298
#define HID_USAGE_AC_MERGE 2, 0x299
#define HID_USAGE_AC_SPLIT 2, 0x29a
#define HID_USAGE_AC_DISTRIBUTE_HORIZONTALLY 2, 0x29b
#define HID_USAGE_AC_DISTRIBUTE_VERTICALLY 2, 0x29c
/* Digitizer Usages */
#define HID_USAGE_DIGITIZER 1, 0x01
#define HID_USAGE_PEN 1, 0x02
#define HID_USAGE_LIGHT_PEN 1, 0x03
#define HID_USAGE_TOUCH_SCREEN 1, 0x04
#define HID_USAGE_TOUCH_PAD 1, 0x05
#define HID_USAGE_WHITE_BOARD 1, 0x06
#define HID_USAGE_COORDINATE_MEASURING_MACHINE 1, 0x07
#define HID_USAGE_DIGITIZER_3D 1, 0x08
#define HID_USAGE_STEREO_PLOTTER 1, 0x09
#define HID_USAGE_ARTICULATED_ARM 1, 0x0a
#define HID_USAGE_ARMATURE 1, 0x0b
#define HID_USAGE_MULTIPLE_POINT_DIGITIZER 1, 0x0c
#define HID_USAGE_FREE_SPACE_WAND 1, 0x0d
#define HID_USAGE_STYLUS 1, 0x20
#define HID_USAGE_PUCK 1, 0x21
#define HID_USAGE_FINGER 1, 0x22
#define HID_USAGE_TIP_PRESSURE 1, 0x30
#define HID_USAGE_BARREL_PRESSURE 1, 0x31
#define HID_USAGE_IN_RANGE 1, 0x32
#define HID_USAGE_TOUCH 1, 0x33
#define HID_USAGE_UNTOUCH 1, 0x34
#define HID_USAGE_TAP 1, 0x35
#define HID_USAGE_QUALITY 1, 0x36
#define HID_USAGE_DATA_VALID 1, 0x37
#define HID_USAGE_TRANSDUCER_INDEX 1, 0x38
#define HID_USAGE_TABLET_FUNCTION_KEYS 1, 0x39
#define HID_USAGE_PROGRAM_CHANGE_KEYS 1, 0x3a
#define HID_USAGE_DIG_BATTERY_STRENGTH 1, 0x3b
#define HID_USAGE_INVERT 1, 0x3c
#define HID_USAGE_X_TILT 1, 0x3d
#define HID_USAGE_Y_TILT 1, 0x3e
#define HID_USAGE_AZIMUTH 1, 0x3f
#define HID_USAGE_ALTITUDE 1, 0x40
#define HID_USAGE_TWIST 1, 0x41
#define HID_USAGE_TIP_SWITCH 1, 0x42
#define HID_USAGE_SECONDARY_TIP_SWITCH 1, 0x43
#define HID_USAGE_BARREL_SWITCH 1, 0x44
#define HID_USAGE_ERASER 1, 0x45
#define HID_USAGE_TABLET_PICK 1, 0x46
/* Alphanumeric Display Usages */
#define HID_USAGE_ALPHANUMERIC_DISPLAY 1, 0x01
#define HID_USAGE_BITMAPPED_DISPLAY 1, 0x02
#define HID_USAGE_DISPLAY_ATTRIBUTES_REPORT 1, 0x20
#define HID_USAGE_ASCII_CHARACTER_SET 1, 0x21
#define HID_USAGE_DATA_READ_BACK 1, 0x22
#define HID_USAGE_FONT_READ_BACK 1, 0x23
#define HID_USAGE_DISPLAY_CONTROL_REPORT 1, 0x24
#define HID_USAGE_CLEAR_DISPLAY 1, 0x25
#define HID_USAGE_ALNUM_DISPLAY_ENABLE 1, 0x26
#define HID_USAGE_SCREEN_SAVER_DELAY 1, 0x27
#define HID_USAGE_SCREEN_SAVER_ENABLE 1, 0x28
#define HID_USAGE_VERTICAL_SCROLL 1, 0x29
#define HID_USAGE_HORIZONTAL_SCROLL 1, 0x2a
#define HID_USAGE_CHARACTER_REPORT 1, 0x2b
#define HID_USAGE_DISPLAY_DATA 1, 0x2c
#define HID_USAGE_DISPLAY_STATUS 1, 0x2d
#define HID_USAGE_STAT_NOT_READY 1, 0x2e
#define HID_USAGE_STAT_READY 1, 0x2f
#define HID_USAGE_NOT_A_LOADABLE_CHARACTER 1, 0x30
#define HID_USAGE_FONT_DATA_CANNOT_BE_READ 1, 0x31
#define HID_USAGE_CURSOR_POSITION_REPORT 1, 0x32
#define HID_USAGE_ROW 1, 0x33
#define HID_USAGE_COLUMN 1, 0x34
#define HID_USAGE_ROWS 1, 0x35
#define HID_USAGE_COLUMNS 1, 0x36
#define HID_USAGE_CURSOR_PIXEL_POSITION 1, 0x37
#define HID_USAGE_CURSOR_MODE 1, 0x38
#define HID_USAGE_CURSOR_ENABLE 1, 0x39
#define HID_USAGE_CURSOR_BLINK 1, 0x3a
#define HID_USAGE_FONT_REPORT 1, 0x3b
#define HID_USAGE_FONT_DATA 1, 0x3c
#define HID_USAGE_CHARACTER_WIDTH 1, 0x3d
#define HID_USAGE_CHARACTER_HEIGHT 1, 0x3e
#define HID_USAGE_SPACING_HORIZONTAL 1, 0x3f
#define HID_USAGE_SPACING_VERTICAL 1, 0x40
#define HID_USAGE_UNICODE_CHARACTER_SET 1, 0x41
#define HID_USAGE_FONT_SEVEN_SEGMENT 1, 0x42
#define HID_USAGE_SEVEN_SEGMENT_DIRECT_MAP 1, 0x43
#define HID_USAGE_FONT_FOURTEEN_SEGMENT 1, 0x44
#define HID_USAGE_FOURTEEN_SEGMENT_DIRECT_MAP 1, 0x45
#define HID_USAGE_DISPLAY_BRIGHTNESS 1, 0x46
#define HID_USAGE_DISPLAY_CONTRAST 1, 0x47
#define HID_USAGE_CHARACTER_ATTRIBUTE 1, 0x48
#define HID_USAGE_ATTRIBUTE_READBACK 1, 0x49
#define HID_USAGE_ATTRIBUTE_DATA 1, 0x4a
#define HID_USAGE_CHAR_ATTR_ENHANCE 1, 0x4b
#define HID_USAGE_CHAR_ATTR_UNDERLINE 1, 0x4c
#define HID_USAGE_CHAR_ATTR_BLINK 1, 0x4d
#define HID_USAGE_BITMAP_SIZE_X 1, 0x80
#define HID_USAGE_BITMAP_SIZE_Y 1, 0x81
#define HID_USAGE_BIT_DEPTH_FORMAT 1, 0x83
#define HID_USAGE_DISPLAY_ORIENTATION 1, 0x84
#define HID_USAGE_PALETTE_REPORT 1, 0x85
#define HID_USAGE_PALETTE_DATA_SIZE 1, 0x86
#define HID_USAGE_PALETTE_DATA_OFFSET 1, 0x87
#define HID_USAGE_PALETTE_DATA 1, 0x88
#define HID_USAGE_BLIT_REPORT 1, 0x8a
#define HID_USAGE_BLIT_RECTANGLE_X1 1, 0x8b
#define HID_USAGE_BLIT_RECTANGLE_Y1 1, 0x8c
#define HID_USAGE_BLIT_RECTANGLE_X2 1, 0x8d
#define HID_USAGE_BLIT_RECTANGLE_Y2 1, 0x8e
#define HID_USAGE_BLIT_DATA 1, 0x8f
#define HID_USAGE_SOFT_BUTTON 1, 0x90
#define HID_USAGE_SOFT_BUTTON_ID 1, 0x91
#define HID_USAGE_SOFT_BUTTON_SIDE 1, 0x92
#define HID_USAGE_SOFT_BUTTON_OFFSET_1 1, 0x93
#define HID_USAGE_SOFT_BUTTON_OFFSET_2 1, 0x94
#define HID_USAGE_SOFT_BUTTON_REPORT 1, 0x95
/* Medical Instrument Usages */
#define HID_USAGE_MEDICAL_ULTRASOUND 1, 0x01
#define HID_USAGE_VCR_ACQUISITION 1, 0x20
#define HID_USAGE_FREEZE_THAW 1, 0x21
#define HID_USAGE_CLIP_STORE 1, 0x22
#define HID_USAGE_UPDATE 1, 0x23
#define HID_USAGE_NEXT 1, 0x24
#define HID_USAGE_SAVE 1, 0x25
#define HID_USAGE_PRINT 1, 0x26
#define HID_USAGE_MICROPHONE_ENABLE 1, 0x27
#define HID_USAGE_CINE 1, 0x40
#define HID_USAGE_TRANSMIT_POWER 1, 0x41
#define HID_USAGE_SOUND_VOLUME 1, 0x42
#define HID_USAGE_FOCUS 1, 0x43
#define HID_USAGE_DEPTH 1, 0x44
#define HID_USAGE_SOFT_STEP_PRIMARY 1, 0x60
#define HID_USAGE_SOFT_STEP_SECONDARY 1, 0x61
#define HID_USAGE_DEPTH_GAIN_COMPENSATION 1, 0x70
#define HID_USAGE_ZOOM_SELECT 1, 0x80
#define HID_USAGE_ZOOM_ADJUST 1, 0x81
#define HID_USAGE_SPECTRAL_DOPPLER_MODE_SELECT 1, 0x82
#define HID_USAGE_SPECTRAL_DOPPLER_ADJUST 1, 0x83
#define HID_USAGE_COLOR_DOPPLER_MODE_SELECT 1, 0x84
#define HID_USAGE_COLOR_DOPPLER_ADJUST 1, 0x85
#define HID_USAGE_MOTION_MODE_SELECT 1, 0x86
#define HID_USAGE_MOTION_MODE_ADJUST 1, 0x87
#define HID_USAGE_MODE_2D_SELECT 1, 0x88
#define HID_USAGE_MODE_2D_ADJUST 1, 0x89
#define HID_USAGE_SOFT_CONTROL_SELECT 1, 0xa0
#define HID_USAGE_SOFT_CONTROL_ADJUST 1, 0xa1
/* Power Device Usages */
#define HID_USAGE_INAME 1, 0x01
#define HID_USAGE_PRESENT_STATUS 1, 0x02
#define HID_USAGE_CHANGED_STATUS 1, 0x03
#define HID_USAGE_UPS 1, 0x04
#define HID_USAGE_POWER_SUPPLY 1, 0x05
#define HID_USAGE_BATTERY_SYSTEM 1, 0x10
#define HID_USAGE_BATTERY_SYSTEM_ID 1, 0x11
#define HID_USAGE_BATTERY 1, 0x12
#define HID_USAGE_BATTERY_ID 1, 0x13
#define HID_USAGE_CHARGER 1, 0x14
#define HID_USAGE_CHARGER_ID 1, 0x15
#define HID_USAGE_POWER_CONVERTER 1, 0x16
#define HID_USAGE_POWER_CONVERTER_ID 1, 0x17
#define HID_USAGE_OUTLET_SYSTEM 1, 0x18
#define HID_USAGE_OUTLET_SYSTEM_ID 1, 0x19
#define HID_USAGE_INPUT 1, 0x1a
#define HID_USAGE_INPUT_ID 1, 0x1b
#define HID_USAGE_OUTPUT 1, 0x1c
#define HID_USAGE_OUTPUT_ID 1, 0x1d
#define HID_USAGE_FLOW 1, 0x1e
#define HID_USAGE_FLOW_ID 1, 0x1f
#define HID_USAGE_OUTLET 1, 0x20
#define HID_USAGE_OUTLET_ID 1, 0x21
#define HID_USAGE_GANG 1, 0x22
#define HID_USAGE_GANG_ID 1, 0x23
#define HID_USAGE_POWER_SUMMARY 1, 0x24
#define HID_USAGE_POWER_SUMMARY_ID 1, 0x25
#define HID_USAGE_VOLTAGE 1, 0x30
#define HID_USAGE_CURRENT 1, 0x31
#define HID_USAGE_FREQUENCY 1, 0x32
#define HID_USAGE_APPARENT_POWER 1, 0x33
#define HID_USAGE_ACTIVE_POWER 1, 0x34
#define HID_USAGE_PERCENT_LOAD 1, 0x35
#define HID_USAGE_TEMPERATURE 1, 0x36
#define HID_USAGE_HUMIDITY 1, 0x37
#define HID_USAGE_BAD_COUNT 1, 0x38
#define HID_USAGE_CONFIG_VOLTAGE 1, 0x40
#define HID_USAGE_CONFIG_CURRENT 1, 0x41
#define HID_USAGE_CONFIG_FREQUENCY 1, 0x42
#define HID_USAGE_CONFIG_APPARENT_POWER 1, 0x43
#define HID_USAGE_CONFIG_ACTIVE_POWER 1, 0x44
#define HID_USAGE_CONFIG_PERCENT_LOAD 1, 0x45
#define HID_USAGE_CONFIG_TEMPERATURE 1, 0x46
#define HID_USAGE_CONFIG_HUMIDITY 1, 0x47
#define HID_USAGE_SWITCH_ON_CONTROL 1, 0x50
#define HID_USAGE_SWITCH_OFF_CONTROL 1, 0x51
#define HID_USAGE_TOGGLE_CONTROL 1, 0x52
#define HID_USAGE_LOW_VOLTAGE_TRANSFER 1, 0x53
#define HID_USAGE_HIGH_VOLTAGE_TRANSFER 1, 0x54
#define HID_USAGE_DELAY_BEFORE_REBOOT 1, 0x55
#define HID_USAGE_DELAY_BEFORE_STARTUP 1, 0x56
#define HID_USAGE_DELAY_BEFORE_SHUTDOWN 1, 0x57
#define HID_USAGE_TEST 1, 0x58
#define HID_USAGE_MODULE_RESET 1, 0x59
#define HID_USAGE_AUDIBLE_ALARM_CONTROL 1, 0x5a
#define HID_USAGE_PRESENT 1, 0x60
#define HID_USAGE_GOOD 1, 0x61
#define HID_USAGE_INTERNAL_FAILURE 1, 0x62
#define HID_USAGE_VOLTAGE_OUT_OF_RANGE_ 1, 0x63
#define HID_USAGE_FREQUENCY_OUT_OF_RANGE 1, 0x64
#define HID_USAGE_OVER_LOAD 1, 0x65
#define HID_USAGE_OVER_CHARGED 1, 0x66
#define HID_USAGE_OVER_TEMPERATURE 1, 0x67
#define HID_USAGE_SHUTDOWN_REQUESTED 1, 0x68
#define HID_USAGE_SHUTDOWN_IMMINENT 1, 0x69
#define HID_USAGE_SWITCH_ON_OFF 1, 0x6b
#define HID_USAGE_SWITCHABLE 1, 0x6c
#define HID_USAGE_USED 1, 0x6d
#define HID_USAGE_BOOST 1, 0x6e
#define HID_USAGE_BUCK 1, 0x6f
#define HID_USAGE_INITIALIZED 1, 0x70
#define HID_USAGE_TESTED 1, 0x71
#define HID_USAGE_AWAITING_POWER 1, 0x72
#define HID_USAGE_COMMUNICATION_LOST 1, 0x73
#define HID_USAGE_IMANUFACTURER 1, 0xfd
#define HID_USAGE_IPRODUCT 1, 0xfe
#define HID_USAGE_ISERIAL_NUMBER 1, 0xff
/* Battery System Usages */
#define HID_USAGE_SMB_BATTERY_MODE 1, 0x01
#define HID_USAGE_SMB_BATTERY_STATUS 1, 0x02
#define HID_USAGE_SMB_ALARM_WARNING 1, 0x03
#define HID_USAGE_SMB_CHARGER_MODE 1, 0x04
#define HID_USAGE_SMB_CHARGER_STATUS 1, 0x05
#define HID_USAGE_SMB_CHARGER_SPEC_INFO 1, 0x06
#define HID_USAGE_SMB_SELECTOR_STATE 1, 0x07
#define HID_USAGE_SMB_SELECTOR_PRESETS 1, 0x08
#define HID_USAGE_SMB_SELECTOR_INFO 1, 0x09
#define HID_USAGE_OPTIONAL_MFG_FUNCTION(n) 1, (0x09 + (_ASSERT(1 <= (n) && (n) <= 5) ? (n) : (0))) /* n: [1..5] */
#define HID_USAGE_CONNECTION_TO_SMBUS 1, 0x15
#define HID_USAGE_OUTPUT_CONNECTION 1, 0x16
#define HID_USAGE_CHARGER_CONNECTION 1, 0x17
#define HID_USAGE_BATTERY_INSERTION 1, 0x18
#define HID_USAGE_USE_NEXT 1, 0x19
#define HID_USAGE_OK_TO_USE 1, 0x1a
#define HID_USAGE_BATTERY_SUPPORTED 1, 0x1b
#define HID_USAGE_SELECTOR_REVISION 1, 0x1c
#define HID_USAGE_CHARGING_INDICATOR 1, 0x1d
#define HID_USAGE_MANUFACTURER_ACCESS 1, 0x28
#define HID_USAGE_REMAINING_CAPACITY_LIMIT 1, 0x29
#define HID_USAGE_REMAINING_TIME_LIMIT 1, 0x2a
#define HID_USAGE_AT_RATE 1, 0x2b
#define HID_USAGE_CAPACITY_MODE 1, 0x2c
#define HID_USAGE_BROADCAST_TO_CHARGER 1, 0x2d
#define HID_USAGE_PRIMARY_BATTERY 1, 0x2e
#define HID_USAGE_CHARGE_CONTROLLER 1, 0x2f
#define HID_USAGE_TERMINATE_CHARGE 1, 0x40
#define HID_USAGE_TERMINATE_DISCHARGE 1, 0x41
#define HID_USAGE_BELOW_REMAINING_CAPACITY_LIMIT 1, 0x42
#define HID_USAGE_REMAINING_TIME_LIMIT_EXPIRED 1, 0x43
#define HID_USAGE_CHARGING 1, 0x44
#define HID_USAGE_DISCHARGING 1, 0x45
#define HID_USAGE_FULLY_CHARGED 1, 0x46
#define HID_USAGE_FULLY_DISCHARGED 1, 0x47
#define HID_USAGE_CONDITIONING_FLAG 1, 0x48
#define HID_USAGE_AT_RATE_OK 1, 0x49
#define HID_USAGE_SMB_ERROR_CODE 1, 0x4a
#define HID_USAGE_NEED_REPLACEMENT 1, 0x4b
#define HID_USAGE_AT_RATE_TIME_TO_FULL 1, 0x60
#define HID_USAGE_AT_RATE_TIME_TO_EMPTY 1, 0x61
#define HID_USAGE_AVERAGE_CURRENT 1, 0x62
#define HID_USAGE_MAX_ERROR 1, 0x63
#define HID_USAGE_RELATIVE_STATE_OF_CHARGE 1, 0x64
#define HID_USAGE_ABSOLUTE_STATE_OF_CHARGE 1, 0x65
#define HID_USAGE_REMAINING_CAPACITY 1, 0x66
#define HID_USAGE_FULL_CHARGE_CAPACITY 1, 0x67
#define HID_USAGE_RUN_TIME_TO_EMPTY 1, 0x68
#define HID_USAGE_AVERAGE_TIME_TO_EMPTY 1, 0x69
#define HID_USAGE_AVERAGE_TIME_TO_FULL 1, 0x6a
#define HID_USAGE_CYCLE_COUNT 1, 0x6b
#define HID_USAGE_BATTERY_PACK_MODEL_LEVEL 1, 0x80
#define HID_USAGE_INTERNAL_CHARGE_CONTROLLER 1, 0x81
#define HID_USAGE_PRIMARY_BATTERY_SUPPORT 1, 0x82
#define HID_USAGE_DESIGN_CAPACITY 1, 0x83
#define HID_USAGE_SPECIFICATION_INFO 1, 0x84
#define HID_USAGE_MANUFACTURER_DATE 1, 0x85
#define HID_USAGE_SERIAL_NUMBER 1, 0x86
#define HID_USAGE_IMANUFACTURER_NAME 1, 0x87
#define HID_USAGE_IDEVICE_NAME 1, 0x88
#define HID_USAGE_IDEVICE_CHEMISTERY 1, 0x89
#define HID_USAGE_MANUFACTURER_DATA 1, 0x8a
#define HID_USAGE_RECHARGABLE 1, 0x8b
#define HID_USAGE_WARNING_CAPACITY_LIMIT 1, 0x8c
#define HID_USAGE_CAPACITY_GRANULARITY(n) 1, (0x8c + (_ASSERT(1 <= (n) && (n) <= 2) ? (n) : (n))) /* n: [1..2] */
#define HID_USAGE_IOEM_INFORMATION 1, 0x8f
#define HID_USAGE_INHIBIT_CHARGE 1, 0xc0
#define HID_USAGE_ENABLE_POLLING 1, 0xc1
#define HID_USAGE_RESET_TO_ZERO 1, 0xc2
#define HID_USAGE_AC_PRESENT 1, 0xd0
#define HID_USAGE_BATTERY_PRESENT 1, 0xd1
#define HID_USAGE_POWER_FAIL 1, 0xd2
#define HID_USAGE_ALARM_INHIBITED 1, 0xd3
#define HID_USAGE_THERMISTOR_UNDER_RANGE 1, 0xd4
#define HID_USAGE_THERMISTOR_HOT 1, 0xd5
#define HID_USAGE_THERMISTOR_COLD 1, 0xd6
#define HID_USAGE_THERMISTOR_OVER_RANGE 1, 0xd7
#define HID_USAGE_VOLTAGE_OUT_OF_RANGE 1, 0xd8
#define HID_USAGE_CURRENT_OUT_OF_RANGE 1, 0xd9
#define HID_USAGE_CURRENT_NOT_REGULATED 1, 0xda
#define HID_USAGE_VOLTAGE_NOT_REGULATED 1, 0xdb
#define HID_USAGE_MASTER_MODE 1, 0xdc
#define HID_USAGE_CHARGER_SELECTOR_SUPPORT 1, 0xf0
#define HID_USAGE_CHARGER_SPEC 1, 0xf1
#define HID_USAGE_LEVEL(n) 1, (0xf0 + (_ASSERT(2 <= (n) && (n) <= 3) ? (n) : (0))) /* n: [2..3] */
/* End of Usages */
#define HID_USAGE2(n, x) HID_ELEM(0x0, LOCAL, n, x)
#define HID_USAGE(x) _CALL(HID_USAGE2, _CAT2(HID_USAGE_, x))
#define HID_PAGED_USAGE(p, u) HID_ELEM(0x0, LOCAL, 4, (_NTH1(_CAT2(HID_USAGE_PAGE_, p)) << 16) | _NTH1(_CAT2(HID_USAGE_, u)))
#define HID_USAGE_MINIMUM(n, x) HID_ELEM(0x1, LOCAL, n, x)
#define HID_USAGE_MAXIMUM(n, x) HID_ELEM(0x2, LOCAL, n, x)
#define HID_DESIGNATOR_INDEX(n, x) HID_ELEM(0x3, LOCAL, n, x)
#define HID_DESIGNATOR_MINIMUM(n, x) HID_ELEM(0x4, LOCAL, n, x)
#define HID_DESIGNATOR_MAXIMUM(n, x) HID_ELEM(0x5, LOCAL, n, x)
#define HID_STRING_INDEX(n, x) HID_ELEM(0x7, LOCAL, n, x)
#define HID_STRING_MINIMUM(n, x) HID_ELEM(0x8, LOCAL, n, x)
#define HID_STRING_MAXIMUM(n, x) HID_ELEM(0x9, LOCAL, n, x)
#define HID_DELIMITER(x) HID_ELEM(0xa, LOCAL, 1, x)
#define HID_DELIMITER_OPEN HID_DELIMITER(1)
#define HID_DELIMITER_CLOSE HID_DELIMITER(0)
/**
* @}
*/
#endif /* __HID_DEF_H__ */