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