HidUsageTables.cs
author StephaneLenclud
Sun, 15 Feb 2015 19:53:27 +0100
changeset 61 60bfe5083721
parent 35 928c966fcf42
child 66 3461ee6800e3
permissions -rw-r--r--
Much improved raw input device list.
     1 //
     2 //
     3 //
     4 
     5 namespace Hid
     6 {
     7     /// <summary>
     8     /// From USB HID usage tables.
     9     /// http://www.usb.org/developers/hidpage#HID_Usage
    10     /// http://www.usb.org/developers/devclass_docs/Hut1_12v2.pdf
    11     /// </summary>
    12     public enum UsagePage : ushort
    13     {
    14         Undefined = 0,
    15         GenericDesktopControls,
    16         SimulationControls,
    17         VirtualRealityControls,
    18         SportControls,
    19         GameControls,
    20         GenericDeviceControls,
    21         Keyboard,
    22         LightEmittingDiode,
    23         Button,
    24         Ordinal,
    25         Telephony,
    26         Consumer,
    27         Digitiser,
    28         PhysicalInterfaceDevice = 0x0f,
    29         Unicode = 0x10,
    30         AlphaNumericDisplay = 0x14,
    31         MedicalInstruments = 0x40,
    32         MonitorPage0 = 0x80,
    33         MonitorPage1,
    34         MonitorPage2,
    35         MonitorPage3,
    36         PowerPage0,
    37         PowerPage1,
    38         PowerPage2,
    39         PowerPage3,
    40         BarCodeScanner = 0x8c,
    41         Scale,
    42         MagneticStripeReader,
    43         ReservedPointOfSale,
    44         CameraControl,
    45         Arcade,
    46         // http://msdn.microsoft.com/en-us/library/windows/desktop/bb417079.aspx
    47         WindowsMediaCenterRemoteControl = 0xffbc,
    48         TerraTecRemote = 0xffcc
    49     }
    50 
    51     /// <summary>
    52     /// Usage Collection for usage page GenericDesktopControls.
    53     /// </summary>
    54     public enum UsageCollectionGenericDesktop : ushort
    55     {
    56         Pointer = 0x01,
    57         Mouse = 0x02,
    58         Joystick = 0x04,
    59         GamePad = 0x05,
    60         Keyboard = 0x06,
    61         KeyPad = 0x07,
    62         MultiAxisController = 0x08,
    63         TabletPCSystemControls = 0x09,
    64         SystemControl = 0x80
    65     }
    66 
    67     /// <summary>
    68     /// Usage Collection for usage page Consumer.
    69     /// </summary>
    70     public enum UsageCollectionConsumer : ushort
    71     {
    72         ConsumerControl = 0x01,
    73         NumericKeyPad = 0x02,
    74         ProgrammableButtons = 0x03,
    75         Microphone = 0x04,
    76         Headphone = 0x05,
    77         GraphicEqualizer = 0x06,
    78         FunctionButtons = 0x36,
    79         Selection = 0x80,
    80         MediaSelection = 0x0087,
    81         SelectDisc = 0x00BA,
    82         PlaybackSpeed = 0x00F1,
    83         Proximity = 0x0109,
    84         SpeakerSystem = 0x0160,
    85         ChannelLeft = 0x0161,
    86         ChannelRight = 0x0162,
    87         ChannelCenter = 0x0163,
    88         ChannelFront = 0x0164,
    89         ChannelCenterFront = 0x0165,
    90         ChannelSide = 0x0166,
    91         ChannelSurrond = 0x0167,
    92         ChannelLowFrequencyEnhancement = 0x0168,
    93         ChannelTop = 0x0169,
    94         ChannelUnknown = 0x016A,
    95         ApplicationLaunchButtons = 0x016A,
    96         GenericGuiApplicationControls = 0x0200,
    97     }
    98 
    99 
   100     public enum UsageCollectionWindowsMediaCenter : ushort
   101     {
   102         WindowsMediaCenterRemoteControl = 0x88
   103     }
   104 
   105 
   106 
   107     namespace UsageTables
   108     {
   109         /// <summary>
   110         ///
   111         /// </summary>
   112         public enum WindowsMediaCenterRemoteControl : ushort
   113         {
   114             /// <summary>
   115             /// Not defined by the Microsoft specs.
   116             /// </summary>
   117             Null = 0x00,
   118             GreenStart = 0x0D,
   119             ClosedCaptioning = 0x2B,
   120             Teletext = 0x5A,
   121             TeletextRed = 0x5B,
   122             TeletextGreen = 0x5C,
   123             TeletextYellow = 0x5D,
   124             TeletextBlue = 0x5E,
   125             LiveTv = 0x25,
   126             Tv = 0x46,
   127             Music = 0x47,
   128             RecordedTv = 0x48,
   129             Pictures = 0x49,
   130             Videos = 0x4A,
   131             FmRadio = 0x50,
   132             Extras = 0x3C,
   133             ExtrasApp = 0x3D,
   134             DvdMenu = 0x24,
   135             DvdAngle = 0x4B,
   136             DvdAudio = 0x4C,
   137             DvdSubtitle = 0x4D,
   138             /// <summary>
   139             /// First press action: Ejects a DVD drive.
   140             /// <para />
   141             /// Second press action: Repeats first press action.
   142             /// <para />
   143             /// Notably issued by XBOX360 remote as defined in irplus - Remote Control - Android application.
   144             /// </summary>
   145             Eject = 0x28,
   146             DvdTopMenu = 0x43,
   147             /// <summary>
   148             /// First press action: Generates EXTn HID message in the Media Center Vendor Specific
   149             /// Collection (page 0xFFBC, usage 0x88).
   150             /// <para />
   151             /// Second press action: Repeats message.
   152             /// <para />
   153             /// Auto-repeat: No
   154             /// <para />
   155             /// Notably sent by the 'Visualization' button of HP Windows Media Center Remote (TSGH-IR08).
   156             /// <para />
   157             /// According to HP specs it displays visual imagery that is synchronized to the sound of your music tracks.
   158             /// </summary>
   159             Ext0 = 0x32,
   160             /// <summary>
   161             /// First press action: Generates EXTn HID message in the Media Center Vendor Specific
   162             /// Collection (page 0xFFBC, usage 0x88).
   163             /// <para />
   164             /// Second press action: Repeats message.
   165             /// <para />
   166             /// Auto-repeat: No
   167             /// <para />
   168             /// Notably sent by the 'Slide Show' button of HP Windows Media Center Remote (TSGH-IR08).
   169             /// <para />
   170             /// According to HP specs it plays a slide show of all the pictures on your hard disk drive.
   171             /// </summary>
   172             Ext1 = 0x33,
   173             /// <summary>
   174             /// First press action: Generates EXTn HID message in the Media Center Vendor Specific
   175             /// Collection (page 0xFFBC, usage 0x88).
   176             /// <para />
   177             /// Second press action: Repeats message.
   178             /// <para />
   179             /// Auto-repeat: No
   180             /// <para />
   181             /// Notably sent by the 'Eject' button of HP Windows Media Center Remote (TSGH-IR08).
   182             /// Also interpreted as 'Eject' action by SoundGraph iMON Manager in MCE mode (OrigenAE VF310).
   183             /// </summary>
   184             Ext2 = 0x34,
   185             /// <summary>
   186             /// First press action: Generates EXTn HID message in the Media Center Vendor Specific
   187             /// Collection (page 0xFFBC, usage 0x88).
   188             /// <para />
   189             /// Second press action: Repeats message.
   190             /// <para />
   191             /// Auto-repeat: No
   192             /// <para />
   193             /// Notably sent by the 'Input selection' button of HP Windows Media Center Remote (TSGH-IR08).
   194             /// </summary>
   195             Ext3 = 0x35,
   196             Ext4 = 0x36,
   197             Ext5 = 0x37,
   198             Ext6 = 0x38,
   199             Ext7 = 0x39,
   200             Ext8 = 0x3A,
   201             Ext9 = 0x80,
   202             Ext10 = 0x81,
   203             Ext11 = 0x6F,
   204             Zoom = 0x27,
   205             ChannelInput = 0x42,
   206             SubAudio = 0x2D,
   207             Channel10 = 0x3E,
   208             Channel11 = 0x3F,
   209             Channel12 = 0x40,
   210             /// <summary>
   211             /// First press action: Generates OEM2 HID message in the Media Center Vendor Specific
   212             /// Collection. This button is intended to control the front panel display of home entertainment
   213             /// computers. When this button is pressed, the display could be turned on or off, or the display
   214             /// mode could change.
   215             /// <para />
   216             /// Second press action: Repeats message.
   217             /// <para />
   218             /// Auto-repeat: No
   219             /// <para />
   220             /// Notably issued by XBOX360 remote as defined in irplus - Remote Control - Android application.
   221             /// </summary>
   222             Display = 0x4F,
   223             /// <summary>
   224             /// First press action: To be determined.
   225             /// <para />
   226             /// Second press action: Repeats message.
   227             /// <para />
   228             /// Auto-repeat: No
   229             /// </summary>
   230             Kiosk = 0x6A,
   231             NetworkSelection = 0x2C,
   232             BlueRayTool = 0x78,
   233             ChannelInfo = 0x41,
   234             VideoSelection = 0x61
   235         }
   236 
   237         /// <summary>
   238         /// Those codes come from experimenting with HP remotes.
   239         /// </summary>
   240         public enum HpWindowsMediaCenterRemoteControl : ushort
   241         {
   242             /// <summary>
   243             /// Displays visual imagery that is synchronized to the sound of your music tracks.
   244             /// <para />
   245             /// Second press action: Repeats message.
   246             /// <para />
   247             /// Auto-repeat: No
   248             /// <para />
   249             /// Notably sent by the 'Visualization' button of HP Windows Media Center Remote (TSGH-IR08).
   250             /// <para />
   251             /// According to HP specs it displays visual imagery that is synchronized to the sound of your music tracks.
   252             /// </summary>
   253             Visualization = WindowsMediaCenterRemoteControl.Ext0,
   254             /// <summary>
   255             /// Plays a slide show of all the pictures on your hard disk drive.
   256             /// <para />
   257             /// Second press action: Repeats message.
   258             /// <para />
   259             /// Auto-repeat: No
   260             /// <para />
   261             /// Notably sent by the 'Slide Show' button of HP Windows Media Center Remote (TSGH-IR08).
   262             /// <para />
   263             /// According to HP specs it plays a slide show of all the pictures on your hard disk drive.
   264             /// </summary>
   265             SlideShow = WindowsMediaCenterRemoteControl.Ext1,
   266             /// <summary>
   267             /// Eject optical drive.
   268             /// <para />
   269             /// Second press action: Repeats message.
   270             /// <para />
   271             /// Auto-repeat: No
   272             /// <para />
   273             /// Notably sent by the 'Eject' button of HP Windows Media Center Remote (TSGH-IR08).
   274             /// Also interpreted as 'Eject' action by SoundGraph iMON Manager in MCE mode (OrigenAE VF310).
   275             /// </summary>
   276             HpEject = WindowsMediaCenterRemoteControl.Ext2,
   277             /// <summary>
   278             /// Not sure what this should do.
   279             /// <para />
   280             /// Second press action: Repeats message.
   281             /// <para />
   282             /// Auto-repeat: No
   283             /// <para />
   284             /// Notably sent by the 'Input selection' button of HP Windows Media Center Remote (TSGH-IR08).
   285             /// </summary>
   286             InputSelection = WindowsMediaCenterRemoteControl.Ext3,
   287         }
   288 
   289         /// <summary>
   290         /// Usage Table for Consumer Controls
   291         /// 0x0C 0X01
   292         /// </summary>
   293         public enum ConsumerControl : ushort
   294         {
   295             Null = 0x00,
   296             ConsumerControl = 0x01,
   297             NumericKeyPad = 0x02,
   298             ProgrammableButtons = 0x03,
   299             Microphone = 0x04,
   300             Headphone = 0x05,
   301             GraphicEqualizer = 0x06,
   302             Plus10 = 0x20,
   303             Plus100 = 0x21,
   304             AmPm = 0x22,
   305             Power = 0x30,
   306             Reset = 0x31,
   307             Sleep = 0x32,
   308             SleepAfter = 0x33,
   309             SleepMode = 0x34,
   310             Illumination = 0x35,
   311             FunctionButtons = 0x36,
   312             Menu = 0x40,
   313             MenuPick = 0x41,
   314             MenuUp = 0x42,
   315             MenuDown = 0x43,
   316             MenuLeft = 0x44,
   317             MenuRight = 0x45,
   318             MenuEscape = 0x46,
   319             MenuValueIncrease = 0x47,
   320             MenuValueDecrease = 0x48,
   321             DataOnScreen = 0x60,
   322             ClosedCaption = 0x61,
   323             ClosedCaptionSelect = 0x62,
   324             VcrTv = 0x63,
   325             BroadcastMode = 0x64,
   326             Snapshot = 0x65,
   327             Still = 0x66,
   328             Selection = 0x80,
   329             AssignSelection = 0x81,
   330             ModeStep = 0x82,
   331             RecallLast = 0x83,
   332             EnterChannel = 0x84,
   333             OrderMovie = 0x85,
   334             Channel = 0x86,
   335             MediaSelection = 0x87,
   336             MediaSelectComputer = 0x88,
   337             MediaSelectTv = 0x89,
   338             MediaSelectWww = 0x8A,
   339             MediaSelectDvd = 0x8B,
   340             MediaSelectTelephone = 0x8C,
   341             MediaSelectProgramGuide = 0x8D,
   342             MediaSelectVideoPhone = 0x8E,
   343             MediaSelectGames = 0x8F,
   344             MediaSelectMessages = 0x90,
   345             MediaSelectCd = 0x91,
   346             MediaSelectVcr = 0x92,
   347             MediaSelectTuner = 0x93,
   348             Quit = 0x94,
   349             Help = 0x95,
   350             MediaSelectTape = 0x96,
   351             MediaSelectCable = 0x97,
   352             MediaSelectSatellite = 0x98,
   353             MediaSelectSecurity = 0x99,
   354             MediaSelectHome = 0x9A,
   355             MediaSelectCall = 0x9B,
   356             ChannelIncrement = 0x9C,
   357             ChannelDecrement = 0x9D,
   358             MediaSelectSap = 0x9E,
   359             VcrPlus = 0xA0,
   360             Once = 0xA1,
   361             Daily = 0xA2,
   362             Weekly = 0xA3,
   363             Monthly = 0xA4,
   364             Play = 0xB0,
   365             Pause = 0xB1,
   366             Record = 0xB2,
   367             FastForward = 0xB3,
   368             Rewind = 0xB4,
   369             ScanNextTrack = 0xB5,
   370             ScanPreviousTrack = 0xB6,
   371             Stop = 0xB7,
   372             Eject = 0xB8,
   373             RandomPlay = 0xB9,
   374             SelectDisc = 0xBA,
   375             EnterDisc = 0xBB,
   376             Repeat = 0xBC,
   377             Tracking = 0xBD,
   378             TrackNormal = 0xBE,
   379             SlowTracking = 0xBF,
   380             FrameForward = 0xC0,
   381             FrameBack = 0xC1,
   382             Mark = 0xC2,
   383             ClearMark = 0xC3,
   384             RepeatFromMark = 0xC4,
   385             ReturnToMark = 0xC5,
   386             SearchMarkForward = 0xC6,
   387             SearchMarkBackwards = 0xC7,
   388             CounterReset = 0xC8,
   389             ShowCounter = 0xC9,
   390             TrackingIncrement = 0xCA,
   391             TrackingDecrement = 0xCB,
   392             StopEject = 0xCC,
   393             PlayPause = 0xCD,
   394             PlaySkip = 0xCE,
   395             Volume = 0xE0,
   396             Balance = 0xE1,
   397             Mute = 0xE2,
   398             Bass = 0xE3,
   399             Treble = 0xE4,
   400             BassBoost = 0xE5,
   401             SurroundMode = 0xE6,
   402             Loudness = 0xE7,
   403             Mpx = 0xE8,
   404             VolumeIncrement = 0xE9,
   405             VolumeDecrement = 0xEA,
   406             SpeedSelect = 0xF0,
   407             PlaybackSpeed = 0xF1,
   408             StandardPlay = 0xF2,
   409             LongPlay = 0xF3,
   410             ExtendedPlay = 0xF4,
   411             Slow = 0xF5,
   412             FanEnable = 0x100,
   413             FanSpeed = 0x101,
   414             LightEnable = 0x102,
   415             LightIlluminationLevel = 0x103,
   416             ClimateControlEnable = 0x104,
   417             RoomTemperature = 0x105,
   418             SecurityEnable = 0x106,
   419             FireAlarm = 0x107,
   420             PoliceAlarm = 0x108,
   421             Proximity = 0x109,
   422             Motion = 0x10A,
   423             DuressAlarm = 0x10B,
   424             HoldupAlarm = 0x10C,
   425             MedicalAlarm = 0x10D,
   426             BalanceRight = 0x150,
   427             BalanceLeft = 0x151,
   428             BassIncrement = 0x152,
   429             BassDecrement = 0x153,
   430             TrebleIncrement = 0x154,
   431             TrebleDecrement = 0x155,
   432             SpeakerSystem = 0x160,
   433             ChannelLeft = 0x161,
   434             ChannelRight = 0x162,
   435             ChannelCenter = 0x163,
   436             ChannelFront = 0x164,
   437             ChannelCenterFront = 0x165,
   438             ChannelSide = 0x166,
   439             ChannelSurround = 0x167,
   440             ChannelLowFrequencyEnhancement = 0x168,
   441             ChannelTop = 0x169,
   442             ChannelUnknown = 0x16A,
   443             SubChannel = 0x170,
   444             SubChannelIncrement = 0x171,
   445             SubChannelDecrement = 0x172,
   446             AlternateAudioIncrement = 0x173,
   447             AlternateAudioDecrement = 0x174,
   448             ApplicationLaunchButtons = 0x180,
   449             AppLaunchLaunchButtonConfigurationTool = 0x181,
   450             AppLaunchProgrammableButtonConfiguration = 0x182,
   451             AppLaunchConsumerControlConfiguration = 0x183,
   452             AppLaunchWordProcessor = 0x184,
   453             AppLaunchTextEditor = 0x185,
   454             AppLaunchSpreadsheet = 0x186,
   455             AppLaunchGraphicsEditor = 0x187,
   456             AppLaunchPresentationApp = 0x188,
   457             AppLaunchDatabaseApp = 0x189,
   458             AppLaunchEmailReader = 0x18A,
   459             AppLaunchNewsreader = 0x18B,
   460             AppLaunchVoicemail = 0x18C,
   461             AppLaunchContactsAddressBook = 0x18D,
   462             AppLaunchCalendarSchedule = 0x18E,
   463             AppLaunchTaskProjectManager = 0x18F,
   464             AppLaunchLogJournalTimecard = 0x190,
   465             AppLaunchCheckbookFinance = 0x191,
   466             AppLaunchCalculator = 0x192,
   467             AppLaunchAVCapturePlayback = 0x193,
   468             AppLaunchLocalMachineBrowser = 0x194,
   469             AppLaunchLanWanBrowser = 0x195,
   470             AppLaunchInternetBrowser = 0x196,
   471             AppLaunchRemoteNetworkingIspConnect = 0x197,
   472             AppLaunchNetworkConference = 0x198,
   473             AppLaunchNetworkChat = 0x199,
   474             AppLaunchTelephonyDialer = 0x19A,
   475             AppLaunchLogon = 0x19B,
   476             AppLaunchLogoff = 0x19C,
   477             AppLaunchLogonLogoff = 0x19D,
   478             AppLaunchTerminalLockScreensaver = 0x19E,
   479             AppLaunchControlPanel = 0x19F,
   480             AppLaunchCommandLineProcessorRun = 0x1A0,
   481             AppLaunchProcessTaskManager = 0x1A1,
   482             AppLaunchSelectTaskApplication = 0x1A2,
   483             AppLaunchNextTaskApplication = 0x1A3,
   484             AppLaunchPreviousTaskApplication = 0x1A4,
   485             AppLaunchPreemptiveHaltTaskApplication = 0x1A5,
   486             AppLaunchIntegratedHelpCenter = 0x1A6,
   487             AppLaunchDocuments = 0x1A7,
   488             AppLaunchThesaurus = 0x1A8,
   489             AppLaunchDictionary = 0x1A9,
   490             AppLaunchDesktop = 0x1AA,
   491             AppLaunchSpellCheck = 0x1AB,
   492             AppLaunchGrammarCheck = 0x1AC,
   493             AppLaunchWirelessStatus = 0x1AD,
   494             AppLaunchKeyboardLayout = 0x1AE,
   495             AppLaunchVirusProtection = 0x1AF,
   496             AppLaunchEncryption = 0x1B0,
   497             AppLaunchScreenSaver = 0x1B1,
   498             AppLaunchAlarms = 0x1B2,
   499             AppLaunchClock = 0x1B3,
   500             AppLaunchFileBrowser = 0x1B4,
   501             AppLaunchPowerStatus = 0x1B5,
   502             AppLaunchImageBrowser = 0x1B6,
   503             AppLaunchAudioBrowser = 0x1B7,
   504             AppLaunchMovieBrowser = 0x1B8,
   505             AppLaunchDigitalRightsManager = 0x1B9,
   506             AppLaunchDigitalWallet = 0x1BA,
   507             AppLaunchInstantMessaging = 0x1BC,
   508             AppLaunchOemFeaturesTipsTutorialBrowser = 0x1BD,
   509             AppLaunchOemHelp = 0x1BE,
   510             AppLaunchOnlineCommunity = 0x1BF,
   511             AppLaunchEntertainmentContentBrowser = 0x1C0,
   512             AppLaunchOnlineShoppingBrowser = 0x1C1,
   513             AppLaunchSmartcardInformationHelp = 0x1C2,
   514             AppLaunchMarketMonitorFinanceBrowser = 0x1C3,
   515             AppLaunchCustomizedCorporateNewsBrowser = 0x1C4,
   516             AppLaunchOnlineActivityBrowser = 0x1C5,
   517             AppLaunchResearchSearchBrowser = 0x1C6,
   518             AppLaunchAudioPlayer = 0x1C7,
   519             GenericGuiApplicationControls = 0x200,
   520             AppCtrlNew = 0x201,
   521             AppCtrlOpen = 0x202,
   522             AppCtrlClose = 0x203,
   523             AppCtrlExit = 0x204,
   524             AppCtrlMaximize = 0x205,
   525             AppCtrlMinimize = 0x206,
   526             AppCtrlSave = 0x207,
   527             AppCtrlPrint = 0x208,
   528             AppCtrlProperties = 0x209,
   529             AppCtrlUndo = 0x21A,
   530             AppCtrlCopy = 0x21B,
   531             AppCtrlCut = 0x21C,
   532             AppCtrlPaste = 0x21D,
   533             AppCtrlSelectAll = 0x21E,
   534             AppCtrlFind = 0x21F,
   535             AppCtrlFindAndReplace = 0x220,
   536             AppCtrlSearch = 0x221,
   537             AppCtrlGoTo = 0x222,
   538             AppCtrlHome = 0x223,
   539             AppCtrlBack = 0x224,
   540             AppCtrlForward = 0x225,
   541             AppCtrlStop = 0x226,
   542             AppCtrlRefresh = 0x227,
   543             AppCtrlPreviousLink = 0x228,
   544             AppCtrlNextLink = 0x229,
   545             AppCtrlBookmarks = 0x22A,
   546             AppCtrlHistory = 0x22B,
   547             AppCtrlSubscriptions = 0x22C,
   548             AppCtrlZoomIn = 0x22D,
   549             AppCtrlZoomOut = 0x22E,
   550             AppCtrlZoom = 0x22F,
   551             AppCtrlFullScreenView = 0x230,
   552             AppCtrlNormalView = 0x231,
   553             AppCtrlViewToggle = 0x232,
   554             AppCtrlScrollUp = 0x233,
   555             AppCtrlScrollDown = 0x234,
   556             AppCtrlScroll = 0x235,
   557             AppCtrlPanLeft = 0x236,
   558             AppCtrlPanRight = 0x237,
   559             AppCtrlPan = 0x238,
   560             AppCtrlNewWindow = 0x239,
   561             AppCtrlTileHorizontally = 0x23A,
   562             AppCtrlTileVertically = 0x23B,
   563             AppCtrlFormat = 0x23C,
   564             AppCtrlEdit = 0x23D,
   565             AppCtrlBold = 0x23E,
   566             AppCtrlItalics = 0x23F,
   567             AppCtrlUnderline = 0x240,
   568             AppCtrlStrikethrough = 0x241,
   569             AppCtrlSubscript = 0x242,
   570             AppCtrlSuperscript = 0x243,
   571             AppCtrlAllCaps = 0x244,
   572             AppCtrlRotate = 0x245,
   573             AppCtrlResize = 0x246,
   574             AppCtrlFlipHorizontal = 0x247,
   575             AppCtrlFlipVertical = 0x248,
   576             AppCtrlMirrorHorizontal = 0x249,
   577             AppCtrlMirrorVertical = 0x24A,
   578             AppCtrlFontSelect = 0x24B,
   579             AppCtrlFontColor = 0x24C,
   580             AppCtrlFontSize = 0x24D,
   581             AppCtrlJustifyLeft = 0x24E,
   582             AppCtrlJustifyCenterH = 0x24F,
   583             AppCtrlJustifyRight = 0x250,
   584             AppCtrlJustifyBlockH = 0x251,
   585             AppCtrlJustifyTop = 0x252,
   586             AppCtrlJustifyCenterV = 0x253,
   587             AppCtrlJustifyBottom = 0x254,
   588             AppCtrlJustifyBlockV = 0x255,
   589             AppCtrlIndentDecrease = 0x256,
   590             AppCtrlIndentIncrease = 0x257,
   591             AppCtrlNumberedList = 0x258,
   592             AppCtrlRestartNumbering = 0x259,
   593             AppCtrlBulletedList = 0x25A,
   594             AppCtrlPromote = 0x25B,
   595             AppCtrlDemote = 0x25C,
   596             AppCtrlYes = 0x25D,
   597             AppCtrlNo = 0x25E,
   598             AppCtrlCancel = 0x25F,
   599             AppCtrlCatalog = 0x260,
   600             AppCtrlBuyCheckout = 0x261,
   601             AppCtrlAddToCart = 0x262,
   602             AppCtrlExpand = 0x263,
   603             AppCtrlExpandAll = 0x264,
   604             AppCtrlCollapse = 0x265,
   605             AppCtrlCollapseAll = 0x266,
   606             AppCtrlPrintPreview = 0x267,
   607             AppCtrlPasteSpecial = 0x268,
   608             AppCtrlInsertMode = 0x269,
   609             AppCtrlDelete = 0x26A,
   610             AppCtrlLock = 0x26B,
   611             AppCtrlUnlock = 0x26C,
   612             AppCtrlProtect = 0x26D,
   613             AppCtrlUnprotect = 0x26E,
   614             AppCtrlAttachComment = 0x26F,
   615             AppCtrlDeleteComment = 0x270,
   616             AppCtrlViewComment = 0x271,
   617             AppCtrlSelectWord = 0x272,
   618             AppCtrlSelectSentence = 0x273,
   619             AppCtrlSelectParagraph = 0x274,
   620             AppCtrlSelectColumn = 0x275,
   621             AppCtrlSelectRow = 0x276,
   622             AppCtrlSelectTable = 0x277,
   623             AppCtrlSelectObject = 0x278,
   624             AppCtrlRedoRepeat = 0x279,
   625             AppCtrlSort = 0x27A,
   626             AppCtrlSortAscending = 0x27B,
   627             AppCtrlSortDescending = 0x27C,
   628             AppCtrlFilter = 0x27D,
   629             AppCtrlSetClock = 0x27E,
   630             AppCtrlViewClock = 0x27F,
   631             AppCtrlSelectTimeZone = 0x280,
   632             AppCtrlEditTimeZones = 0x281,
   633             AppCtrlSetAlarm = 0x282,
   634             AppCtrlClearAlarm = 0x283,
   635             AppCtrlSnoozeAlarm = 0x284,
   636             AppCtrlResetAlarm = 0x285,
   637             AppCtrlSynchronize = 0x286,
   638             AppCtrlSendReceive = 0x287,
   639             AppCtrlSendTo = 0x288,
   640             AppCtrlReply = 0x289,
   641             AppCtrlReplyAll = 0x28A,
   642             AppCtrlForwardMsg = 0x28B,
   643             AppCtrlSend = 0x28C,
   644             AppCtrlAttachFile = 0x28D,
   645             AppCtrlUpload = 0x28E,
   646             AppCtrlDownloadSaveTargetAs = 0x28F,
   647             AppCtrlSetBorders = 0x290,
   648             AppCtrlInsertRow = 0x291,
   649             AppCtrlInsertColumn = 0x292,
   650             AppCtrlInsertFile = 0x293,
   651             AppCtrlInsertPicture = 0x294,
   652             AppCtrlInsertObject = 0x295,
   653             AppCtrlInsertSymbol = 0x296,
   654             AppCtrlSaveAndClose = 0x297,
   655             AppCtrlRename = 0x298,
   656             AppCtrlMerge = 0x299,
   657             AppCtrlSplit = 0x29A,
   658             AppCtrlDistributeHorizontally = 0x29B,
   659             AppCtrlDistributeVertically = 0x29C
   660         }
   661 
   662         /// <summary>
   663         ///
   664         /// </summary>
   665         enum GenericDesktop : ushort
   666         {
   667             Null = 0x00,
   668             Pointer = 0x01,
   669             Mouse = 0x02,
   670             Joystick = 0x04,
   671             GamePad = 0x05,
   672             Keyboard = 0x06,
   673             Keypad = 0x07,
   674             MultiAxisController = 0x08,
   675             TabletPcSystemControls = 0x09,
   676             X = 0x30,
   677             Y = 0x31,
   678             Z = 0x32,
   679             Rx = 0x33,
   680             Ry = 0x34,
   681             Rz = 0x35,
   682             Slider = 0x36,
   683             Dial = 0x37,
   684             Wheel = 0x38,
   685             HatSwitch = 0x39,
   686             CountedBuffer = 0x3A,
   687             ByteCount = 0x3B,
   688             MotionWakeup = 0x3C,
   689             Start = 0x3D,
   690             Select = 0x3E,
   691             Vx = 0x40,
   692             Vy = 0x41,
   693             Vz = 0x42,
   694             Vbrx = 0x43,
   695             Vbry = 0x44,
   696             Vbrz = 0x45,
   697             Vno = 0x46,
   698             SystemControl = 0x80,
   699             SystemPowerDown = 0x81,
   700             SystemSleep = 0x82,
   701             SystemWakeUp = 0x83,
   702             SystemContextMenu = 0x84,
   703             SystemMainMenu = 0x85,
   704             SystemAppMenu = 0x86,
   705             SystemMenuHelp = 0x87,
   706             SystemMenuExit = 0x88,
   707             SystemMenuSelect = 0x89,
   708             SystemMenuRight = 0x8A,
   709             SystemMenuLeft = 0x8B,
   710             SystemMenuUp = 0x8C,
   711             SystemMenuDown = 0x8D,
   712             SystemColdRestart = 0x8E,
   713             SystemWarmRestart = 0x8F,
   714             DPadUp = 0x90,
   715             DPadDown = 0x91,
   716             DPadRight = 0x92,
   717             DPadLeft = 0x93,
   718             SystemDock = 0xA0,
   719             SystemUndock = 0xA1,
   720             SystemSetup = 0xA2,
   721             SystemBreak = 0xA3,
   722             SystemDebuggerBreak = 0xA4,
   723             ApplicationBreak = 0xA5,
   724             ApplicationDebuggerBreak = 0xA6,
   725             SystemSpeakerMute = 0xA7,
   726             SystemHibernate = 0xA8,
   727             SystemDisplayInvert = 0xB0,
   728             SystemDisplayInternal = 0xB1,
   729             SystemDisplayExternal = 0xB2,
   730             SystemDisplayBoth = 0xB3,
   731             SystemDisplayDual = 0xB4,
   732             SystemDisplayToggleIntExt = 0xB5,
   733             SystemDisplaySwapPrimarySecondary = 0xB6,
   734             SystemDisplayLcdAutoscale = 0xB7
   735         }
   736 
   737         /// <summary>
   738         ///
   739         /// </summary>
   740         enum SimulationControl : ushort
   741         {
   742             Null = 0x00,
   743             FlightSimulationDevice = 0x01,
   744             AutomobileSimulationDevice = 0x02,
   745             TankSimulationDevice = 0x03,
   746             SpaceshipSimulationDevice = 0x04,
   747             SubmarineSimulationDevice = 0x05,
   748             SailingSimulationDevice = 0x06,
   749             MotorcycleSimulationDevice = 0x07,
   750             SportsSimulationDevice = 0x08,
   751             AirplaneSimulationDevice = 0x09,
   752             HelicopterSimulationDevice = 0x0A,
   753             MagicCarpetSimulationDevice = 0x0B,
   754             BicycleSimulationDevice = 0x0C,
   755             FlightControlStick = 0x20,
   756             FlightStick = 0x21,
   757             CyclicControl = 0x22,
   758             CyclicTrim = 0x23,
   759             FlightYoke = 0x24,
   760             TrackControl = 0x25,
   761             Aileron = 0xB0,
   762             AileronTrim = 0xB1,
   763             AntiTorqueControl = 0xB2,
   764             AutopilotEnable = 0xB3,
   765             ChaffRelease = 0xB4,
   766             CollectiveControl = 0xB5,
   767             DiveBrake = 0xB6,
   768             ElectronicCountermeasures = 0xB7,
   769             Elevator = 0xB8,
   770             ElevatorTrim = 0xB9,
   771             Rudder = 0xBA,
   772             Throttle = 0xBB,
   773             FlightCommunications = 0xBC,
   774             FlareRelease = 0xBD,
   775             LandingGear = 0xBE,
   776             ToeBrake = 0xBF,
   777             Trigger = 0xC0,
   778             WeaponsArm = 0xC1,
   779             WeaponsSelect = 0xC2,
   780             WingFlaps = 0xC3,
   781             Accelerator = 0xC4,
   782             Brake = 0xC5,
   783             Clutch = 0xC6,
   784             Shifter = 0xC7,
   785             Steering = 0xC8,
   786             TurretDirection = 0xC9,
   787             BarrelElevation = 0xCA,
   788             DivePlane = 0xCB,
   789             Ballast = 0xCC,
   790             BicycleCrank = 0xCD,
   791             HandleBars = 0xCE,
   792             FrontBrake = 0xCF,
   793             RearBrake = 0xD0
   794         }
   795 
   796         /// <summary>
   797         ///
   798         /// </summary>
   799         enum GameControl : ushort
   800         {
   801             Null = 0x00,
   802             GameController3D = 0x01,
   803             PinballDevice = 0x02,
   804             GunDevice = 0x03,
   805             PointOfView = 0x20,
   806             TurnRightLeft = 0x21,
   807             PitchForwardBackward = 0x22,
   808             RollRightLeft = 0x23,
   809             MoveRightLeft = 0x24,
   810             MoveForwardBackward = 0x25,
   811             MoveUpDown = 0x26,
   812             LeanRightLeft = 0x27,
   813             LeanForwardBackward = 0x28,
   814             HeightOfPov = 0x29,
   815             Flipper = 0x2A,
   816             SecondaryFlipper = 0x2B,
   817             Bump = 0x2C,
   818             NewGame = 0x2D,
   819             ShootBall = 0x2E,
   820             Player = 0x2F,
   821             GunBolt = 0x30,
   822             GunClip = 0x31,
   823             GunSelector = 0x32,
   824             GunSingleShot = 0x33,
   825             GunBurst = 0x34,
   826             GunAutomatic = 0x35,
   827             GunSafety = 0x36,
   828             GamepadFireJump = 0x37,
   829             GamepadTrigger = 0x39
   830         }
   831 
   832         /// <summary>
   833         ///
   834         /// </summary>
   835         enum TelephonyDevice : ushort
   836         {
   837             Null = 0x00,
   838             Phone = 0x01,
   839             AnsweringMachine = 0x02,
   840             MessageControls = 0x03,
   841             Handset = 0x04,
   842             Headset = 0x05,
   843             TelephonyKeyPad = 0x06,
   844             ProgrammableButton = 0x07,
   845             HookSwitch = 0x20,
   846             Flash = 0x21,
   847             Feature = 0x22,
   848             Hold = 0x23,
   849             Redial = 0x24,
   850             Transfer = 0x25,
   851             Drop = 0x26,
   852             Park = 0x27,
   853             ForwardCalls = 0x28,
   854             AlternateFunction = 0x29,
   855             Line = 0x2A,
   856             SpeakerPhone = 0x2B,
   857             Conference = 0x2C,
   858             RingEnable = 0x2D,
   859             RingSelect = 0x2E,
   860             PhoneMute = 0x2F,
   861             CallerId = 0x30,
   862             Send = 0x31,
   863             SpeedDial = 0x50,
   864             StoreNumber = 0x51,
   865             RecallNumber = 0x52,
   866             PhoneDirectory = 0x53,
   867             VoiceMail = 0x70,
   868             ScreenCalls = 0x71,
   869             DoNotDisturb = 0x72,
   870             Message = 0x73,
   871             AnswerOnOff = 0x74,
   872             InsideDialTone = 0x90,
   873             OutsideDialTone = 0x91,
   874             InsideRingTone = 0x92,
   875             OutsideRingTone = 0x93,
   876             PriorityRingTone = 0x94,
   877             InsideRingback = 0x95,
   878             PriorityRingback = 0x96,
   879             LineBusyTone = 0x97,
   880             ReorderTone = 0x98,
   881             CallWaitingTone = 0x99,
   882             ConfirmationTone1 = 0x9A,
   883             ConfirmationTone2 = 0x9B,
   884             TonesOff = 0x9C,
   885             OutsideRingback = 0x9D,
   886             Ringer = 0x9E,
   887             PhoneKey0 = 0xB0,
   888             PhoneKey1 = 0xB1,
   889             PhoneKey2 = 0xB2,
   890             PhoneKey3 = 0xB3,
   891             PhoneKey4 = 0xB4,
   892             PhoneKey5 = 0xB5,
   893             PhoneKey6 = 0xB6,
   894             PhoneKey7 = 0xB7,
   895             PhoneKey8 = 0xB8,
   896             PhoneKey9 = 0xB9,
   897             PhoneKeyStar = 0xBA,
   898             PhoneKeyPound = 0xBB,
   899             PhoneKeyA = 0xBC,
   900             PhoneKeyB = 0xBD,
   901             PhoneKeyC = 0xBE,
   902             PhoneKeyD = 0xBF
   903         }
   904     }
   905 }