private Mouse ListenForControl(BindingListenOptions listenOptions)
 {
     if (listenOptions.IncludeMouseButtons)
     {
         for (Mouse mouse = Mouse.None; mouse <= Mouse.Button9; mouse++)
         {
             if (MouseBindingSource.ButtonIsPressed(mouse))
             {
                 return(mouse);
             }
         }
     }
     if (listenOptions.IncludeMouseScrollWheel)
     {
         if (MouseBindingSource.NegativeScrollWheelIsActive(ScrollWheelThreshold))
         {
             return(Mouse.NegativeScrollWheel);
         }
         if (MouseBindingSource.PositiveScrollWheelIsActive(ScrollWheelThreshold))
         {
             return(Mouse.PositiveScrollWheel);
         }
     }
     return(Mouse.None);
 }
        Mouse ListenForControl(BindingListenOptions listenOptions)
        {
            if (listenOptions.IncludeMouseButtons)
            {
                for (var control = Mouse.None; control <= Mouse.Button9; control++)
                {
                    if (MouseBindingSource.ButtonIsPressed(control))
                    {
                        return(control);
                    }
                }
            }

            if (listenOptions.IncludeMouseScrollWheel)
            {
                if (MouseBindingSource.NegativeScrollWheelIsActive(ScrollWheelThreshold))
                {
                    return(Mouse.NegativeScrollWheel);
                }

                if (MouseBindingSource.PositiveScrollWheelIsActive(ScrollWheelThreshold))
                {
                    return(Mouse.PositiveScrollWheel);
                }
            }

            return(Mouse.None);
        }
        public BindingSource Listen(BindingListenOptions listenOptions, InputDevice device)
        {
            if (detectFound != Mouse.None)
            {
                if (!IsPressed(detectFound))
                {
                    if (detectPhase == 2)
                    {
                        var bindingSource = new MouseBindingSource(detectFound);
                        Reset();
                        return(bindingSource);
                    }
                }
            }

            var control = ListenForControl(listenOptions);

            if (control != Mouse.None)
            {
                if (detectPhase == 1)
                {
                    detectFound = control;
                    detectPhase = 2; // Wait for release.
                }
            }
            else
            {
                if (detectPhase == 0)
                {
                    detectPhase = 1; // Wait for press.
                }
            }

            return(null);
        }
 Mouse ListenForControl()
 {
     for (var control = Mouse.None; control <= Mouse.Button9; control++)
     {
         if (MouseBindingSource.ButtonIsPressed(control))
         {
             return(control);
         }
     }
     return(Mouse.None);
 }
        private bool IsPressed(Mouse control)
        {
            switch (control)
            {
            case Mouse.NegativeScrollWheel:
                return(MouseBindingSource.NegativeScrollWheelIsActive(ScrollWheelThreshold));

            case Mouse.PositiveScrollWheel:
                return(MouseBindingSource.PositiveScrollWheelIsActive(ScrollWheelThreshold));

            default:
                return(MouseBindingSource.ButtonIsPressed(control));
            }
        }
        public BindingSource Listen(BindingListenOptions listenOptions, InputDevice device)
        {
            if (detectFound != 0 && !IsPressed(detectFound) && detectPhase == 2)
            {
                MouseBindingSource result = new MouseBindingSource(detectFound);
                Reset();
                return(result);
            }
            Mouse mouse = ListenForControl(listenOptions);

            if (mouse != 0)
            {
                if (detectPhase == 1)
                {
                    detectFound = mouse;
                    detectPhase = 2;
                }
            }
            else if (detectPhase == 0)
            {
                detectPhase = 1;
            }
            return(null);
        }