sl@8: //
sl@8: //
sl@8: //
sl@8:
sl@8: namespace Hid
sl@8: {
sl@8: ///
sl@8: /// From USB HID usage tables.
sl@8: /// http://www.usb.org/developers/hidpage#HID_Usage
sl@8: /// http://www.usb.org/developers/devclass_docs/Hut1_12v2.pdf
sl@8: ///
sl@8: public enum UsagePage : ushort
sl@8: {
sl@8: Undefined = 0,
sl@28: GenericDesktopControls,
sl@28: SimulationControls,
sl@28: VirtualRealityControls,
sl@28: SportControls,
sl@28: GameControls,
sl@28: GenericDeviceControls,
sl@8: Keyboard,
sl@8: LightEmittingDiode,
sl@8: Button,
sl@8: Ordinal,
sl@8: Telephony,
sl@8: Consumer,
sl@8: Digitiser,
sl@8: PhysicalInterfaceDevice = 0x0f,
sl@8: Unicode = 0x10,
sl@8: AlphaNumericDisplay = 0x14,
sl@8: MedicalInstruments = 0x40,
sl@8: MonitorPage0 = 0x80,
sl@8: MonitorPage1,
sl@8: MonitorPage2,
sl@8: MonitorPage3,
sl@8: PowerPage0,
sl@8: PowerPage1,
sl@8: PowerPage2,
sl@8: PowerPage3,
sl@8: BarCodeScanner = 0x8c,
sl@8: Scale,
sl@8: MagneticStripeReader,
sl@8: ReservedPointOfSale,
sl@8: CameraControl,
sl@8: Arcade,
sl@8: // http://msdn.microsoft.com/en-us/library/windows/desktop/bb417079.aspx
sl@8: MceRemote = 0xffbc,
sl@8: TerraTecRemote = 0xffcc
sl@8: }
sl@8:
sl@28: public enum UsageCollectionGenericDesktop : ushort
sl@21: {
sl@21: Pointer = 0x01,
sl@21: Mouse = 0x02,
sl@21: Joystick = 0x04,
sl@21: GamePad = 0x05,
sl@21: Keyboard = 0x06,
sl@21: KeyPad = 0x07,
sl@21: MultiAxisController = 0x08,
sl@21: TabletPCSystemControls = 0x09,
sl@21: SystemControl = 0x80
sl@21: }
sl@21:
sl@28: public enum UsageCollectionConsumer : ushort
sl@8: {
sl@21: ConsumerControl = 0x01,
sl@21: NumericKeyPad = 0x02,
sl@21: ProgrammableButtons = 0x03,
sl@21: Microphone = 0x04,
sl@21: Headphone = 0x05,
sl@21: GraphicEqualizer = 0x06,
sl@28: FunctionButtons = 0x36,
sl@21: Selection = 0x80,
sl@28: MediaSelection = 0x0087,
sl@28: SelectDisc = 0x00BA,
sl@28: PlaybackSpeed = 0x00F1,
sl@28: Proximity = 0x0109,
sl@28: SpeakerSystem = 0x0160,
sl@28: ChannelLeft = 0x0161,
sl@28: ChannelRight = 0x0162,
sl@28: ChannelCenter = 0x0163,
sl@28: ChannelFront = 0x0164,
sl@28: ChannelCenterFront = 0x0165,
sl@28: ChannelSide = 0x0166,
sl@28: ChannelSurrond = 0x0167,
sl@28: ChannelLowFrequencyEnhancement = 0x0168,
sl@28: ChannelTop = 0x0169,
sl@28: ChannelUnknown = 0x016A,
sl@28: ApplicationLaunchButtons = 0x016A,
sl@28: GenericGuiApplicationControls = 0x0200,
sl@21: }
sl@21:
sl@21:
sl@21: public enum UsageIdMce: ushort
sl@21: {
sl@21: MceRemote = 0x88
sl@8: }
sl@8:
sl@8:
sl@8:
sl@8: namespace UsageTables
sl@8: {
sl@8: ///
sl@8: ///
sl@8: ///
sl@11: public enum MceButton: ushort
sl@8: {
sl@8: ///
sl@8: /// Not defined by the Microsoft specs.
sl@8: ///
sl@8: Null = 0x00,
sl@8: GreenStart = 0x0D,
sl@8: ClosedCaptioning = 0x2B,
sl@8: Teletext = 0x5A,
sl@8: TeletextRed = 0x5B,
sl@8: TeletextGreen = 0x5C,
sl@8: TeletextYellow = 0x5D,
sl@8: TeletextBlue = 0x5E,
sl@8: LiveTv = 0x25,
sl@8: Music = 0x47,
sl@8: RecordedTv = 0x48,
sl@8: Pictures = 0x49,
sl@8: Videos = 0x4A,
sl@8: FmRadio = 0x50,
sl@8: Extras = 0x3C,
sl@8: ExtrasApp = 0x3D,
sl@8: DvdMenu = 0x24,
sl@8: DvdAngle = 0x4B,
sl@8: DvdAudio = 0x4C,
sl@8: DvdSubtitle = 0x4D,
sl@8: ///
sl@8: /// First press action: Ejects a DVD drive.
sl@8: ///
sl@8: /// Second press action: Repeats first press action.
sl@8: ///
sl@8: /// Notably issued by XBOX360 remote as defined in irplus - Remote Control - Android application.
sl@8: ///
sl@8: Eject = 0x28,
sl@8: DvdTopMenu = 0x43,
sl@8: ///
sl@8: /// First press action: Generates EXTn HID message in the Media Center Vendor Specific
sl@8: /// Collection (page 0xFFBC, usage 0x88).
sl@8: ///
sl@8: /// Second press action: Repeats message.
sl@8: ///
sl@8: /// Auto-repeat: No
sl@8: ///
sl@8: /// Notably sent by the 'Visualization' button of HP Windows Media Center Remote (TSGH-IR08).
sl@8: ///
sl@8: /// According to HP specs it displays visual imagery that is synchronized to the sound of your music tracks.
sl@8: ///
sl@8: Ext0 = 0x32,
sl@8: ///
sl@8: /// First press action: Generates EXTn HID message in the Media Center Vendor Specific
sl@8: /// Collection (page 0xFFBC, usage 0x88).
sl@8: ///
sl@8: /// Second press action: Repeats message.
sl@8: ///
sl@8: /// Auto-repeat: No
sl@8: ///
sl@8: /// Notably sent by the 'Slide Show' button of HP Windows Media Center Remote (TSGH-IR08).
sl@8: ///
sl@8: /// According to HP specs it plays a slide show of all the pictures on your hard disk drive.
sl@8: ///
sl@8: Ext1 = 0x33,
sl@8: ///
sl@8: /// First press action: Generates EXTn HID message in the Media Center Vendor Specific
sl@8: /// Collection (page 0xFFBC, usage 0x88).
sl@8: ///
sl@8: /// Second press action: Repeats message.
sl@8: ///
sl@8: /// Auto-repeat: No
sl@8: ///
sl@8: /// Notably sent by the 'Eject' button of HP Windows Media Center Remote (TSGH-IR08).
sl@8: /// Also interpreted as 'Eject' action by SoundGraph iMON Manager in MCE mode (OrigenAE VF310).
sl@8: ///
sl@8: Ext2 = 0x34,
sl@8: ///
sl@8: /// First press action: Generates EXTn HID message in the Media Center Vendor Specific
sl@8: /// Collection (page 0xFFBC, usage 0x88).
sl@8: ///
sl@8: /// Second press action: Repeats message.
sl@8: ///
sl@8: /// Auto-repeat: No
sl@8: ///
sl@8: /// Notably sent by the 'Input selection' button of HP Windows Media Center Remote (TSGH-IR08).
sl@8: ///
sl@8: Ext3 = 0x35,
sl@8: Ext4 = 0x36,
sl@8: Ext5 = 0x37,
sl@8: Ext6 = 0x38,
sl@8: Ext7 = 0x39,
sl@8: Ext8 = 0x3A,
sl@8: Ext9 = 0x80,
sl@8: Ext10 = 0x81,
sl@8: Ext11 = 0x6F,
sl@8: Zoom = 0x27,
sl@8: ChannelInput = 0x42,
sl@8: SubAudio = 0x2D,
sl@8: Channel10 = 0x3E,
sl@8: Channel11 = 0x3F,
sl@8: Channel12 = 0x40,
sl@8: ///
sl@8: /// First press action: Generates OEM2 HID message in the Media Center Vendor Specific
sl@8: /// Collection. This button is intended to control the front panel display of home entertainment
sl@8: /// computers. When this button is pressed, the display could be turned on or off, or the display
sl@8: /// mode could change.
sl@8: ///
sl@8: /// Second press action: Repeats message.
sl@8: ///
sl@8: /// Auto-repeat: No
sl@8: ///
sl@8: /// Notably issued by XBOX360 remote as defined in irplus - Remote Control - Android application.
sl@8: ///
sl@8: Display = 0x4F,
sl@8: ///
sl@8: /// First press action: To be determined.
sl@8: ///
sl@8: /// Second press action: Repeats message.
sl@8: ///
sl@8: /// Auto-repeat: No
sl@8: ///
sl@8: Kiosk = 0x6A,
sl@8: NetworkSelection = 0x2C,
sl@8: BlueRayTool = 0x78,
sl@8: ChannelInfo = 0x41,
sl@8: VideoSelection = 0x61
sl@8: }
sl@8:
sl@11: ///
sl@11: /// Those codes come from experimenting with HP remotes.
sl@11: ///
sl@8: public enum HpMceButton: ushort
sl@8: {
sl@8: ///
sl@8: /// Displays visual imagery that is synchronized to the sound of your music tracks.
sl@8: ///
sl@8: /// Second press action: Repeats message.
sl@8: ///
sl@8: /// Auto-repeat: No
sl@8: ///
sl@8: /// Notably sent by the 'Visualization' button of HP Windows Media Center Remote (TSGH-IR08).
sl@8: ///
sl@8: /// According to HP specs it displays visual imagery that is synchronized to the sound of your music tracks.
sl@8: ///
sl@8: Visualization = MceButton.Ext0,
sl@8: ///
sl@8: /// Plays a slide show of all the pictures on your hard disk drive.
sl@8: ///
sl@8: /// Second press action: Repeats message.
sl@8: ///
sl@8: /// Auto-repeat: No
sl@8: ///
sl@8: /// Notably sent by the 'Slide Show' button of HP Windows Media Center Remote (TSGH-IR08).
sl@8: ///
sl@8: /// According to HP specs it plays a slide show of all the pictures on your hard disk drive.
sl@8: ///
sl@8: SlideShow = MceButton.Ext1,
sl@8: ///
sl@8: /// Eject optical drive.
sl@8: ///
sl@8: /// Second press action: Repeats message.
sl@8: ///
sl@8: /// Auto-repeat: No
sl@8: ///
sl@8: /// Notably sent by the 'Eject' button of HP Windows Media Center Remote (TSGH-IR08).
sl@8: /// Also interpreted as 'Eject' action by SoundGraph iMON Manager in MCE mode (OrigenAE VF310).
sl@8: ///
sl@8: Eject = MceButton.Ext2,
sl@8: ///
sl@8: /// Not sure what this should do.
sl@8: ///
sl@8: /// Second press action: Repeats message.
sl@8: ///
sl@8: /// Auto-repeat: No
sl@8: ///
sl@8: /// Notably sent by the 'Input selection' button of HP Windows Media Center Remote (TSGH-IR08).
sl@8: ///
sl@8: InputSelection = MceButton.Ext3,
sl@8: }
sl@8:
sl@8: ///
sl@8: /// Usage Table for Consumer Controls
sl@8: /// 0x0C 0X01
sl@8: ///
sl@8: public enum ConsumerControl: ushort
sl@8: {
sl@19: Null = 0x0000,
sl@19: //
sl@19: Channel = 0x0086,
sl@19: MediaSelectComputer = 0x0088,
sl@19: MediaSelectTV = 0x0089,
sl@19: MediaSelectWWW = 0x008A,
sl@19: MediaSelectDVD = 0x008B,
sl@19: MediaSelectTelephone = 0x008C,
sl@19: MediaSelectProgramGuide = 0x008D,
sl@19: MediaSelectVideoPhone = 0x008E,
sl@19: MediaSelectGames = 0x008F,
sl@19: MediaSelectMessages = 0x0090,
sl@19: MediaSelectCD = 0x0091,
sl@19: MediaSelectVCR = 0x0092,
sl@19: MediaSelectTuner = 0x0093,
sl@19: Quit = 0x0094,
sl@19: Help = 0x0095,
sl@19: MediaSelectTape = 0x0096,
sl@19: MediaSelectCable = 0x0097,
sl@19: MediaSelectSatellite = 0x0098,
sl@19: MediaSelectSecurity = 0x0099,
sl@19: MediaSelectHome = 0x009A,
sl@19: MediaSelectCall = 0x009B,
sl@19: ChannelIncrement = 0x009C,
sl@19: ChannelDecrement = 0x009D,
sl@19: MediaSelectSAP = 0x009E,
sl@19: //
sl@19: Play = 0x00B0,
sl@19: Pause = 0x00B1,
sl@19: Record = 0x00B2,
sl@19: FastForward = 0x00B3,
sl@19: Rewind = 0x00B4,
sl@19: ScanNextTrack = 0x00B5,
sl@19: ScanPreviousTrack = 0x00B6,
sl@19: Stop = 0x00B7,
sl@19: Eject = 0x00B8,
sl@28: RandomPlay = 0x00B9,
sl@19: EnterDisc = 0x00BB,
sl@19: Repeat = 0x00BC,
sl@19: Tracking = 0x00BD,
sl@19: TrackNormal = 0x00BE,
sl@19: SlowTracking = 0x00BF,
sl@19: FrameForward = 0x00C0,
sl@19: FrameBack = 0x00C1,
sl@19: Mark = 0x00C2,
sl@19: ClearMark = 0x00C3,
sl@19: RepeatFromMark = 0x00C4,
sl@19: ReturnToMark = 0x00C5,
sl@19: SearchMarkForward = 0x00C6,
sl@19: SearchMarkBackwards = 0x00C7,
sl@19: CounterReset = 0x00C8,
sl@19: ShowCounter = 0x00C9,
sl@19: TrackingIncrement = 0x00CA,
sl@19: TrackingDecrement = 0x00CB,
sl@19: StopEject = 0x00CC,
sl@19: PlayPause = 0x00CD,
sl@19: PlaySkip = 0x00CE,
sl@19:
sl@8: ///
sl@19: /// Audio controls
sl@8: ///
sl@19: Volume = 0x00E0,
sl@19: Balance = 0x00E1,
sl@19: Mute = 0x00E2,
sl@19: Bass = 0x00E3,
sl@19: Treble = 0x00E4,
sl@19: BassBoost = 0x00E5,
sl@19: SurroundMode = 0x00E6,
sl@19: Loudness = 0x00E7,
sl@19: MPX = 0x00E8,
sl@19: VolumeIncrement = 0x00E9,
sl@19: VolumeDecrement = 0x00EA,
sl@19:
sl@19: //Generic GUI Application Controls
sl@28: //GenericGUIApplicationControls = 0x0200,
sl@19: AppCtrlNew = 0x0201,
sl@19: AppCtrlOpen = 0x0202,
sl@19: AppCtrlClose = 0x0203,
sl@19: AppCtrlExit = 0x0204,
sl@19: AppCtrlMaximize = 0x0205,
sl@19: AppCtrlMinimize = 0x0206,
sl@19: AppCtrlSave = 0x0207,
sl@8: AppCtrlPrint = 0x0208,
sl@19: AppCtrlProperties = 0x0209,
sl@19: AppCtrlUndo = 0x021A,
sl@19: AppCtrlCopy = 0x021B,
sl@19: AppCtrlCut = 0x021C,
sl@19: AppCtrlPaste = 0x021D,
sl@19: AppCtrlSelectAll = 0x021E,
sl@19: AppCtrlFind = 0x021F,
sl@19: AppCtrlFindAndReplace = 0x0220,
sl@19: AppCtrlSearch = 0x0221,
sl@19: AppCtrlGoTo = 0x0222,
sl@19: AppCtrlHome = 0x0223,
sl@19: AppCtrlBack = 0x0224,
sl@19: AppCtrlForward = 0x0225,
sl@19: AppCtrlStop = 0x0226,
sl@19: AppCtrlRefresh = 0x0227,
sl@19: AppCtrlPreviousLink = 0x0228,
sl@19: AppCtrlNextLink = 0x0229,
sl@19: AppCtrlBookmarks = 0x022A,
sl@19: AppCtrlHistory = 0x022B,
sl@19: AppCtrlSubscriptions = 0x022C,
sl@19: AppCtrlZoomIn = 0x022D,
sl@19: AppCtrlZoomOut = 0x022E,
sl@19: AppCtrlZoom = 0x022F,
sl@19: AppCtrlFullScreenView = 0x0230,
sl@19: AppCtrlNormalView = 0x0231,
sl@19: AppCtrlViewToggle = 0x0232,
sl@19: AppCtrlScrollUp = 0x0233,
sl@19: AppCtrlScrollDown = 0x0234,
sl@19: AppCtrlScroll = 0x0235,
sl@19: AppCtrlPanLeft = 0x0236,
sl@19: AppCtrlPanRight = 0x0237,
sl@19: AppCtrlPan = 0x0238,
sl@19: AppCtrlNewWindow = 0x0239,
sl@19: AppCtrlTileHorizontally = 0x023A,
sl@19: AppCtrlTileVertically = 0x023B,
sl@19: AppCtrlFormat = 0x023C,
sl@19: AppCtrlEdit = 0x023D,
sl@8: }
sl@8: }
sl@8: }