Пример #1
0
    /// <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();

    }
Пример #2
0
        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);
                    }
                }
            }
        }