public static bool IsDefinedHIDUsage(HIDElementDescriptor hidElement) { bool isKnown = false; if (PageId.IsDefined(typeof(PageId), hidElement.usagePageID)) { switch ((PageId)hidElement.usagePageID) { case PageId.GenericDesktopPage: { isKnown = GenericDesktopUsage.IsDefined(typeof(GenericDesktopUsage), hidElement.usageID); } break; case PageId.SimulationPage: { isKnown = SimulationUsage.IsDefined(typeof(SimulationUsage), hidElement.usageID); } break; case PageId.ButtonPage: { isKnown = hidElement.usageID > 0 && hidElement.usageID <= kMaxButtons; } break; } } return(isKnown); }
static string GetUsageName(int pageId, int usageId) { string usageName = string.Format("Unknown[{0}][{1}]", pageId, usageId); switch ((PageId)pageId) { case PageId.GenericDesktopPage: { if (GenericDesktopUsage.IsDefined(typeof(GenericDesktopUsage), usageId)) { usageName = ((GenericDesktopUsage)usageId).ToString(); } } break; case PageId.SimulationPage: { if (SimulationUsage.IsDefined(typeof(SimulationUsage), usageId)) { usageName = ((SimulationUsage)usageId).ToString(); } } break; case PageId.ButtonPage: { usageName = string.Format("Button {0}", usageId); } break; default: break; } return(usageName); }
public static void AddDefaultControls(ControlSetup controlSetup) { System.Array usagesArray = GenericDesktopUsage.GetValues(typeof(GenericDesktopUsage)); for (int i = 0; i < usagesArray.Length; i++) { GenericDesktopUsage usageId = (GenericDesktopUsage)usagesArray.GetValue(i); string usageType = GetGenericDesktopUsageType(usageId); int controlId = GetControlId((int)PageId.GenericDesktopPage, (int)usageId); string usageName = GetUsageName((int)PageId.GenericDesktopPage, (int)usageId); AddHIDControl(controlSetup, new HIDElementDescriptor(controlId, usageName, usageType, (int)usageId, (int)PageId.GenericDesktopPage)); } usagesArray = SimulationUsage.GetValues(typeof(SimulationUsage)); for (int i = 0; i < usagesArray.Length; i++) { SimulationUsage usageId = (SimulationUsage)usagesArray.GetValue(i); string usageType = GetSimulationUsageType(usageId); int controlId = GetControlId((int)PageId.SimulationPage, (int)usageId); string usageName = GetUsageName((int)PageId.SimulationPage, (int)usageId); AddHIDControl(controlSetup, new HIDElementDescriptor(controlId, usageName, usageType, (int)usageId, (int)PageId.SimulationPage)); } // Usages are 1 based for (int i = 1; i <= kMaxButtons; i++) { string usageType = "Button"; int controlId = GetControlId((int)PageId.ButtonPage, i); string usageName = GetUsageName((int)PageId.ButtonPage, i); AddHIDControl(controlSetup, new HIDElementDescriptor(controlId, usageName, usageType, i, (int)PageId.ButtonPage)); } }
static string GetGenericDesktopUsageType(GenericDesktopUsage usageId) { string usageType; switch (usageId) { case GenericDesktopUsage.Start: case GenericDesktopUsage.Select: case GenericDesktopUsage.SystemMenuContext: case GenericDesktopUsage.SystemMenuMain: case GenericDesktopUsage.SystemMenuApp: case GenericDesktopUsage.SystemMenuHelp: case GenericDesktopUsage.SystemMenuExit: case GenericDesktopUsage.SystemMenuSelect: case GenericDesktopUsage.SystemMenuRight: case GenericDesktopUsage.SystemMenuLeft: case GenericDesktopUsage.SystemMenuUp: case GenericDesktopUsage.SystemMenuDown: case GenericDesktopUsage.DPadUp: case GenericDesktopUsage.DPadDown: case GenericDesktopUsage.DPadRight: case GenericDesktopUsage.DPadLeft: usageType = "Button"; break; case GenericDesktopUsage.X: case GenericDesktopUsage.Y: case GenericDesktopUsage.Z: case GenericDesktopUsage.Rx: case GenericDesktopUsage.Ry: case GenericDesktopUsage.Rz: case GenericDesktopUsage.Slider: case GenericDesktopUsage.Dial: case GenericDesktopUsage.Wheel: case GenericDesktopUsage.HatSwitch: default: usageType = "Axis"; break; } return(usageType); }