/// <summary> /// Here we receive HID events from our HID library. /// </summary> /// <param name="aSender"></param> /// <param name="aHidEvent"></param> public void HandleHidEvent(object aSender, SharpLib.Hid.Event aHidEvent) { Log.Write("MPTray: HandleHidEvent"); if (aHidEvent.IsStray) { //Stray event just ignore it return; } //We are in the proper thread if (!(aHidEvent.Usages.Count > 0 && aHidEvent.UsagePage == (ushort)Hid.UsagePage.WindowsMediaCenterRemoteControl && aHidEvent.Usages[0] == (ushort)Hid.Usage.WindowsMediaCenterRemoteControl.GreenStart)) //&& aHidEvent.UsagePage == (ushort)Hid.UsagePage.Consumer //&& aHidEvent.Usages[0] == (ushort)Hid.Usage.ConsumerControl.ThinkPadFullscreenMagnifier) { //Discard anything but the Green Start Button return; } DoStart(); }
private void HandleHidEventThreadSafe(object aSender, SharpLib.Hid.Event aHidEvent) { if (aHidEvent.IsStray) { // Stray event just ignore it return; } if (this.InvokeRequired) { // Not in the proper thread, invoke ourselves. // Repeat events usually come from another thread. OnHidEventDelegate d = new OnHidEventDelegate(HandleHidEventThreadSafe); this.Invoke(d, new object[] { aSender, aHidEvent }); } else { if (HidEvent != null) { foreach (ushort usage in aHidEvent.Usages) { String key = "HID " + usage.ToString("X4"); HidEvent(aSender, key); } } } }