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