HumanInterfaceDevice.cs
author sl
Sat, 06 Dec 2014 12:13:39 +0100
changeset 24 974f5fdaebfb
parent 19 d066e3999973
child 25 5f4e0fbb3ea1
permissions -rw-r--r--
Now getting manufacturer and product name.
sl@8
     1
//
sl@8
     2
//
sl@8
     3
//
sl@8
     4
sl@8
     5
namespace Hid
sl@8
     6
{
sl@8
     7
    /// <summary>
sl@8
     8
    /// From USB HID usage tables.
sl@8
     9
    /// http://www.usb.org/developers/hidpage#HID_Usage
sl@8
    10
    /// http://www.usb.org/developers/devclass_docs/Hut1_12v2.pdf
sl@8
    11
    /// </summary>
sl@8
    12
    public enum UsagePage : ushort
sl@8
    13
    {
sl@8
    14
        Undefined = 0,
sl@8
    15
        GenericDesktopControl,
sl@8
    16
        SimulationControl,
sl@8
    17
        VirtualRealityControl,
sl@8
    18
        SportControl,
sl@8
    19
        GameControl,
sl@8
    20
        GenericDeviceControl,
sl@8
    21
        Keyboard,
sl@8
    22
        LightEmittingDiode,
sl@8
    23
        Button,
sl@8
    24
        Ordinal,
sl@8
    25
        Telephony,
sl@8
    26
        Consumer,
sl@8
    27
        Digitiser,
sl@8
    28
        PhysicalInterfaceDevice = 0x0f,
sl@8
    29
        Unicode = 0x10,
sl@8
    30
        AlphaNumericDisplay = 0x14,
sl@8
    31
        MedicalInstruments = 0x40,
sl@8
    32
        MonitorPage0 = 0x80,
sl@8
    33
        MonitorPage1,
sl@8
    34
        MonitorPage2,
sl@8
    35
        MonitorPage3,
sl@8
    36
        PowerPage0,
sl@8
    37
        PowerPage1,
sl@8
    38
        PowerPage2,
sl@8
    39
        PowerPage3,
sl@8
    40
        BarCodeScanner = 0x8c,
sl@8
    41
        Scale,
sl@8
    42
        MagneticStripeReader,
sl@8
    43
        ReservedPointOfSale,
sl@8
    44
        CameraControl,
sl@8
    45
        Arcade,
sl@8
    46
        // http://msdn.microsoft.com/en-us/library/windows/desktop/bb417079.aspx
sl@8
    47
        MceRemote = 0xffbc,
sl@8
    48
        TerraTecRemote = 0xffcc
sl@8
    49
    }
sl@8
    50
sl@21
    51
    public enum UsageIdGenericDesktop : ushort
sl@21
    52
    {      
sl@21
    53
        Pointer = 0x01,
sl@21
    54
        Mouse = 0x02,
sl@21
    55
        Joystick = 0x04,
sl@21
    56
        GamePad = 0x05,
sl@21
    57
        Keyboard = 0x06,
sl@21
    58
        KeyPad = 0x07,
sl@21
    59
        MultiAxisController = 0x08,
sl@21
    60
        TabletPCSystemControls = 0x09,
sl@21
    61
        SystemControl = 0x80
sl@21
    62
    }
sl@21
    63
sl@21
    64
    public enum UsageIdConsumer : ushort
sl@8
    65
    {
sl@21
    66
        ConsumerControl = 0x01,
sl@21
    67
        NumericKeyPad = 0x02,
sl@21
    68
        ProgrammableButtons = 0x03,
sl@21
    69
        Microphone = 0x04,
sl@21
    70
        Headphone = 0x05,
sl@21
    71
        GraphicEqualizer = 0x06,
sl@21
    72
        Selection = 0x80,
sl@21
    73
    }
sl@21
    74
sl@21
    75
    
sl@21
    76
    public enum UsageIdMce: ushort
sl@21
    77
    {
sl@21
    78
        MceRemote = 0x88        
sl@8
    79
    }
sl@8
    80
sl@8
    81
sl@8
    82
sl@8
    83
    namespace UsageTables
sl@8
    84
    {
sl@8
    85
        /// <summary>
sl@8
    86
        ///
sl@8
    87
        /// </summary>
sl@11
    88
        public enum MceButton: ushort
sl@8
    89
        {
sl@8
    90
            /// <summary>
sl@8
    91
            /// Not defined by the Microsoft specs.
sl@8
    92
            /// </summary>
sl@8
    93
            Null                    =   0x00,
sl@8
    94
            GreenStart              =   0x0D,
sl@8
    95
            ClosedCaptioning        =   0x2B,
sl@8
    96
            Teletext                =   0x5A,
sl@8
    97
            TeletextRed             =   0x5B,
sl@8
    98
            TeletextGreen           =   0x5C,
sl@8
    99
            TeletextYellow          =   0x5D,
sl@8
   100
            TeletextBlue            =   0x5E,
sl@8
   101
            LiveTv                  =   0x25,
sl@8
   102
            Music                   =   0x47,
sl@8
   103
            RecordedTv              =   0x48,
sl@8
   104
            Pictures                =   0x49,
sl@8
   105
            Videos                  =   0x4A,
sl@8
   106
            FmRadio                 =   0x50,
sl@8
   107
            Extras                  =   0x3C,
sl@8
   108
            ExtrasApp               =   0x3D,
sl@8
   109
            DvdMenu                 =   0x24,
sl@8
   110
            DvdAngle                =   0x4B,
sl@8
   111
            DvdAudio                =   0x4C,
sl@8
   112
            DvdSubtitle             =   0x4D,
sl@8
   113
            /// <summary>
sl@8
   114
            /// First press action: Ejects a DVD drive.
sl@8
   115
            /// <para />
sl@8
   116
            /// Second press action: Repeats first press action.
sl@8
   117
            /// <para />
sl@8
   118
            /// Notably issued by XBOX360 remote as defined in irplus - Remote Control - Android application.
sl@8
   119
            /// </summary>
sl@8
   120
            Eject                   =   0x28,
sl@8
   121
            DvdTopMenu              =   0x43,
sl@8
   122
            /// <summary>
sl@8
   123
            /// First press action: Generates EXTn HID message in the Media Center Vendor Specific
sl@8
   124
            /// Collection (page 0xFFBC, usage 0x88).
sl@8
   125
            /// <para />
sl@8
   126
            /// Second press action: Repeats message.
sl@8
   127
            /// <para />
sl@8
   128
            /// Auto-repeat: No
sl@8
   129
            /// <para />
sl@8
   130
            /// Notably sent by the 'Visualization' button of HP Windows Media Center Remote (TSGH-IR08).
sl@8
   131
            /// <para />
sl@8
   132
            /// According to HP specs it displays visual imagery that is synchronized to the sound of your music tracks.
sl@8
   133
            /// </summary>
sl@8
   134
            Ext0                    =   0x32,
sl@8
   135
            /// <summary>
sl@8
   136
            /// First press action: Generates EXTn HID message in the Media Center Vendor Specific
sl@8
   137
            /// Collection (page 0xFFBC, usage 0x88).
sl@8
   138
            /// <para />
sl@8
   139
            /// Second press action: Repeats message.
sl@8
   140
            /// <para />
sl@8
   141
            /// Auto-repeat: No
sl@8
   142
            /// <para />
sl@8
   143
            /// Notably sent by the 'Slide Show' button of HP Windows Media Center Remote (TSGH-IR08).
sl@8
   144
            /// <para />
sl@8
   145
            /// According to HP specs it plays a slide show of all the pictures on your hard disk drive.
sl@8
   146
            /// </summary>
sl@8
   147
            Ext1                    =   0x33,
sl@8
   148
            /// <summary>
sl@8
   149
            /// First press action: Generates EXTn HID message in the Media Center Vendor Specific
sl@8
   150
            /// Collection (page 0xFFBC, usage 0x88).
sl@8
   151
            /// <para />
sl@8
   152
            /// Second press action: Repeats message.
sl@8
   153
            /// <para />
sl@8
   154
            /// Auto-repeat: No
sl@8
   155
            /// <para />
sl@8
   156
            /// Notably sent by the 'Eject' button of HP Windows Media Center Remote (TSGH-IR08).
sl@8
   157
            /// Also interpreted as 'Eject' action by SoundGraph iMON Manager in MCE mode (OrigenAE VF310).
sl@8
   158
            /// </summary>
sl@8
   159
            Ext2                    =   0x34,
sl@8
   160
            /// <summary>
sl@8
   161
            /// First press action: Generates EXTn HID message in the Media Center Vendor Specific
sl@8
   162
            /// Collection (page 0xFFBC, usage 0x88).
sl@8
   163
            /// <para />
sl@8
   164
            /// Second press action: Repeats message.
sl@8
   165
            /// <para />
sl@8
   166
            /// Auto-repeat: No
sl@8
   167
            /// <para />
sl@8
   168
            /// Notably sent by the 'Input selection' button of HP Windows Media Center Remote (TSGH-IR08).
sl@8
   169
            /// </summary>
sl@8
   170
            Ext3                    =   0x35,
sl@8
   171
            Ext4                    =   0x36,
sl@8
   172
            Ext5                    =   0x37,
sl@8
   173
            Ext6                    =   0x38,
sl@8
   174
            Ext7                    =   0x39,
sl@8
   175
            Ext8                    =   0x3A,
sl@8
   176
            Ext9                    =   0x80,
sl@8
   177
            Ext10                   =   0x81,
sl@8
   178
            Ext11                   =   0x6F,
sl@8
   179
            Zoom                    =   0x27,
sl@8
   180
            ChannelInput            =   0x42,
sl@8
   181
            SubAudio                =   0x2D,
sl@8
   182
            Channel10               =   0x3E,
sl@8
   183
            Channel11               =   0x3F,
sl@8
   184
            Channel12               =   0x40,
sl@8
   185
            /// <summary>
sl@8
   186
            /// First press action: Generates OEM2 HID message in the Media Center Vendor Specific
sl@8
   187
            /// Collection. This button is intended to control the front panel display of home entertainment
sl@8
   188
            /// computers. When this button is pressed, the display could be turned on or off, or the display
sl@8
   189
            /// mode could change.
sl@8
   190
            /// <para />
sl@8
   191
            /// Second press action: Repeats message.
sl@8
   192
            /// <para />
sl@8
   193
            /// Auto-repeat: No
sl@8
   194
            /// <para />
sl@8
   195
            /// Notably issued by XBOX360 remote as defined in irplus - Remote Control - Android application.
sl@8
   196
            /// </summary>
sl@8
   197
            Display                 =   0x4F,
sl@8
   198
            /// <summary>
sl@8
   199
            /// First press action: To be determined.
sl@8
   200
            /// <para />
sl@8
   201
            /// Second press action: Repeats message.
sl@8
   202
            /// <para />
sl@8
   203
            /// Auto-repeat: No
sl@8
   204
            /// </summary>
sl@8
   205
            Kiosk                   =   0x6A,
sl@8
   206
            NetworkSelection        =   0x2C,
sl@8
   207
            BlueRayTool             =   0x78,
sl@8
   208
            ChannelInfo             =   0x41,
sl@8
   209
            VideoSelection          =   0x61
sl@8
   210
        }
sl@8
   211
sl@11
   212
        /// <summary>
sl@11
   213
        /// Those codes come from experimenting with HP remotes.
sl@11
   214
        /// </summary>
sl@8
   215
        public enum HpMceButton: ushort
sl@8
   216
        {
sl@8
   217
            /// <summary>
sl@8
   218
            /// Displays visual imagery that is synchronized to the sound of your music tracks.
sl@8
   219
            /// <para />
sl@8
   220
            /// Second press action: Repeats message.
sl@8
   221
            /// <para />
sl@8
   222
            /// Auto-repeat: No
sl@8
   223
            /// <para />
sl@8
   224
            /// Notably sent by the 'Visualization' button of HP Windows Media Center Remote (TSGH-IR08).
sl@8
   225
            /// <para />
sl@8
   226
            /// According to HP specs it displays visual imagery that is synchronized to the sound of your music tracks.
sl@8
   227
            /// </summary>
sl@8
   228
            Visualization = MceButton.Ext0,
sl@8
   229
            /// <summary>
sl@8
   230
            /// Plays a slide show of all the pictures on your hard disk drive.
sl@8
   231
            /// <para />
sl@8
   232
            /// Second press action: Repeats message.
sl@8
   233
            /// <para />
sl@8
   234
            /// Auto-repeat: No
sl@8
   235
            /// <para />
sl@8
   236
            /// Notably sent by the 'Slide Show' button of HP Windows Media Center Remote (TSGH-IR08).
sl@8
   237
            /// <para />
sl@8
   238
            /// According to HP specs it plays a slide show of all the pictures on your hard disk drive.
sl@8
   239
            /// </summary>
sl@8
   240
            SlideShow = MceButton.Ext1,
sl@8
   241
            /// <summary>
sl@8
   242
            /// Eject optical drive.
sl@8
   243
            /// <para />
sl@8
   244
            /// Second press action: Repeats message.
sl@8
   245
            /// <para />
sl@8
   246
            /// Auto-repeat: No
sl@8
   247
            /// <para />
sl@8
   248
            /// Notably sent by the 'Eject' button of HP Windows Media Center Remote (TSGH-IR08).
sl@8
   249
            /// Also interpreted as 'Eject' action by SoundGraph iMON Manager in MCE mode (OrigenAE VF310).
sl@8
   250
            /// </summary>
sl@8
   251
            Eject = MceButton.Ext2,
sl@8
   252
            /// <summary>
sl@8
   253
            /// Not sure what this should do.
sl@8
   254
            /// <para />
sl@8
   255
            /// Second press action: Repeats message.
sl@8
   256
            /// <para />
sl@8
   257
            /// Auto-repeat: No
sl@8
   258
            /// <para />
sl@8
   259
            /// Notably sent by the 'Input selection' button of HP Windows Media Center Remote (TSGH-IR08).
sl@8
   260
            /// </summary>
sl@8
   261
            InputSelection = MceButton.Ext3,
sl@8
   262
        }
sl@8
   263
sl@8
   264
        /// <summary>
sl@8
   265
        /// Usage Table for Consumer Controls
sl@8
   266
        /// 0x0C 0X01
sl@8
   267
        /// </summary>
sl@8
   268
        public enum ConsumerControl: ushort
sl@8
   269
        {
sl@19
   270
            Null = 0x0000,           
sl@19
   271
            //           
sl@19
   272
            Channel = 0x0086,
sl@19
   273
            MediaSelection = 0x0087,
sl@19
   274
            MediaSelectComputer = 0x0088,
sl@19
   275
            MediaSelectTV = 0x0089,
sl@19
   276
            MediaSelectWWW = 0x008A,
sl@19
   277
            MediaSelectDVD = 0x008B,
sl@19
   278
            MediaSelectTelephone = 0x008C,
sl@19
   279
            MediaSelectProgramGuide = 0x008D,
sl@19
   280
            MediaSelectVideoPhone = 0x008E,
sl@19
   281
            MediaSelectGames = 0x008F,
sl@19
   282
            MediaSelectMessages = 0x0090,
sl@19
   283
            MediaSelectCD = 0x0091,
sl@19
   284
            MediaSelectVCR = 0x0092,
sl@19
   285
            MediaSelectTuner = 0x0093,
sl@19
   286
            Quit = 0x0094,
sl@19
   287
            Help = 0x0095,
sl@19
   288
            MediaSelectTape = 0x0096,
sl@19
   289
            MediaSelectCable = 0x0097,
sl@19
   290
            MediaSelectSatellite = 0x0098,
sl@19
   291
            MediaSelectSecurity = 0x0099,
sl@19
   292
            MediaSelectHome = 0x009A,
sl@19
   293
            MediaSelectCall = 0x009B,
sl@19
   294
            ChannelIncrement = 0x009C,
sl@19
   295
            ChannelDecrement = 0x009D,
sl@19
   296
            MediaSelectSAP = 0x009E,
sl@19
   297
            //
sl@19
   298
            Play = 0x00B0,
sl@19
   299
            Pause = 0x00B1,
sl@19
   300
            Record = 0x00B2,
sl@19
   301
            FastForward = 0x00B3,
sl@19
   302
            Rewind = 0x00B4,
sl@19
   303
            ScanNextTrack = 0x00B5,
sl@19
   304
            ScanPreviousTrack = 0x00B6,
sl@19
   305
            Stop = 0x00B7,
sl@19
   306
            Eject = 0x00B8,
sl@19
   307
            RandomPlay = 0x00B9,
sl@19
   308
            SelectDisc = 0x00BA,
sl@19
   309
            EnterDisc = 0x00BB,
sl@19
   310
            Repeat = 0x00BC,
sl@19
   311
            Tracking = 0x00BD,
sl@19
   312
            TrackNormal = 0x00BE,
sl@19
   313
            SlowTracking = 0x00BF,
sl@19
   314
            FrameForward = 0x00C0,
sl@19
   315
            FrameBack = 0x00C1,
sl@19
   316
            Mark = 0x00C2,
sl@19
   317
            ClearMark = 0x00C3,
sl@19
   318
            RepeatFromMark = 0x00C4,
sl@19
   319
            ReturnToMark = 0x00C5,
sl@19
   320
            SearchMarkForward = 0x00C6,
sl@19
   321
            SearchMarkBackwards = 0x00C7,
sl@19
   322
            CounterReset = 0x00C8,
sl@19
   323
            ShowCounter = 0x00C9,
sl@19
   324
            TrackingIncrement = 0x00CA,
sl@19
   325
            TrackingDecrement = 0x00CB,
sl@19
   326
            StopEject = 0x00CC,
sl@19
   327
            PlayPause = 0x00CD,
sl@19
   328
            PlaySkip = 0x00CE,
sl@19
   329
sl@8
   330
            /// <summary>
sl@19
   331
            /// Audio controls
sl@8
   332
            /// </summary>
sl@19
   333
            Volume = 0x00E0,
sl@19
   334
            Balance = 0x00E1,
sl@19
   335
            Mute = 0x00E2,
sl@19
   336
            Bass = 0x00E3,
sl@19
   337
            Treble = 0x00E4,
sl@19
   338
            BassBoost = 0x00E5,
sl@19
   339
            SurroundMode = 0x00E6,
sl@19
   340
            Loudness = 0x00E7,
sl@19
   341
            MPX = 0x00E8,
sl@19
   342
            VolumeIncrement = 0x00E9,
sl@19
   343
            VolumeDecrement = 0x00EA,
sl@19
   344
sl@19
   345
            //Generic GUI Application Controls
sl@19
   346
            GenericGUIApplicationControls = 0x0200,
sl@19
   347
            AppCtrlNew = 0x0201,
sl@19
   348
            AppCtrlOpen = 0x0202,
sl@19
   349
            AppCtrlClose = 0x0203,
sl@19
   350
            AppCtrlExit = 0x0204,
sl@19
   351
            AppCtrlMaximize = 0x0205,
sl@19
   352
            AppCtrlMinimize = 0x0206,
sl@19
   353
            AppCtrlSave = 0x0207,
sl@8
   354
            AppCtrlPrint = 0x0208,
sl@19
   355
            AppCtrlProperties = 0x0209,
sl@19
   356
            AppCtrlUndo = 0x021A,
sl@19
   357
            AppCtrlCopy = 0x021B,
sl@19
   358
            AppCtrlCut = 0x021C,
sl@19
   359
            AppCtrlPaste = 0x021D,
sl@19
   360
            AppCtrlSelectAll = 0x021E,
sl@19
   361
            AppCtrlFind = 0x021F,
sl@19
   362
            AppCtrlFindAndReplace = 0x0220,
sl@19
   363
            AppCtrlSearch = 0x0221,
sl@19
   364
            AppCtrlGoTo = 0x0222,
sl@19
   365
            AppCtrlHome = 0x0223,
sl@19
   366
            AppCtrlBack = 0x0224,
sl@19
   367
            AppCtrlForward = 0x0225,
sl@19
   368
            AppCtrlStop = 0x0226,
sl@19
   369
            AppCtrlRefresh = 0x0227,
sl@19
   370
            AppCtrlPreviousLink = 0x0228,
sl@19
   371
            AppCtrlNextLink = 0x0229,
sl@19
   372
            AppCtrlBookmarks = 0x022A,
sl@19
   373
            AppCtrlHistory = 0x022B,
sl@19
   374
            AppCtrlSubscriptions = 0x022C,
sl@19
   375
            AppCtrlZoomIn = 0x022D,
sl@19
   376
            AppCtrlZoomOut = 0x022E,
sl@19
   377
            AppCtrlZoom = 0x022F,
sl@19
   378
            AppCtrlFullScreenView = 0x0230,
sl@19
   379
            AppCtrlNormalView = 0x0231,
sl@19
   380
            AppCtrlViewToggle = 0x0232,
sl@19
   381
            AppCtrlScrollUp = 0x0233,
sl@19
   382
            AppCtrlScrollDown = 0x0234,
sl@19
   383
            AppCtrlScroll = 0x0235,
sl@19
   384
            AppCtrlPanLeft = 0x0236,
sl@19
   385
            AppCtrlPanRight = 0x0237,
sl@19
   386
            AppCtrlPan = 0x0238,
sl@19
   387
            AppCtrlNewWindow = 0x0239,
sl@19
   388
            AppCtrlTileHorizontally = 0x023A,
sl@19
   389
            AppCtrlTileVertically = 0x023B,
sl@19
   390
            AppCtrlFormat = 0x023C,
sl@19
   391
            AppCtrlEdit = 0x023D,
sl@19
   392
sl@8
   393
        }
sl@8
   394
    }
sl@8
   395
}