コード例 #1
0
    internal PointerEventArgs ToEventArgs(InjectedInputState state)
    {
        var point = PointerInfo.ToPointerPoint(state);

        if (TouchParameters.HasFlag(InjectedInputTouchParameters.Pressure))
        {
            point.Properties.Pressure = (float)Pressure;
        }

        if (TouchParameters.HasFlag(InjectedInputTouchParameters.Orientation))
        {
            point.Properties.Orientation = Orientation;
        }

        if (TouchParameters.HasFlag(InjectedInputTouchParameters.Contact))
        {
            point.Properties.ContactRect = new Rect(Contact.Left, Contact.Top, Contact.Right - Contact.Left, Contact.Bottom - Contact.Top);
        }

        return(new PointerEventArgs(point, VirtualKeyModifiers.None));
    }
コード例 #2
0
    internal PointerEventArgs ToEventArgs(InjectedInputState state)
    {
        var update     = default(PointerUpdateKind);
        var position   = state.Position;
        var properties = new PointerPointProperties(state.Properties)
        {
            IsPrimary = false,
            IsInRange = true             // always true for mouse
        };

        if (MouseOptions.HasFlag(InjectedInputMouseOptions.LeftDown))
        {
            properties.IsLeftButtonPressed = true;
            update |= PointerUpdateKind.LeftButtonPressed;
        }
        else if (MouseOptions.HasFlag(InjectedInputMouseOptions.LeftUp))
        {
            properties.IsLeftButtonPressed = false;
            update |= PointerUpdateKind.LeftButtonReleased;
        }

        if (MouseOptions.HasFlag(InjectedInputMouseOptions.MiddleDown))
        {
            properties.IsMiddleButtonPressed = true;
            update |= PointerUpdateKind.MiddleButtonPressed;
        }
        else if (MouseOptions.HasFlag(InjectedInputMouseOptions.MiddleUp))
        {
            properties.IsMiddleButtonPressed = false;
            update |= PointerUpdateKind.MiddleButtonReleased;
        }

        if (MouseOptions.HasFlag(InjectedInputMouseOptions.RightDown))
        {
            properties.IsRightButtonPressed = true;
            update |= PointerUpdateKind.RightButtonPressed;
        }
        else if (MouseOptions.HasFlag(InjectedInputMouseOptions.RightUp))
        {
            properties.IsRightButtonPressed = false;
            update |= PointerUpdateKind.RightButtonReleased;
        }

        if (MouseOptions.HasFlag(InjectedInputMouseOptions.XDown))
        {
            properties.IsXButton1Pressed = true;
            update |= PointerUpdateKind.XButton1Pressed;
        }
        else if (MouseOptions.HasFlag(InjectedInputMouseOptions.XUp))
        {
            properties.IsXButton1Pressed = false;
            update |= PointerUpdateKind.XButton1Released;
        }

        if (MouseOptions.HasFlag(InjectedInputMouseOptions.Wheel))
        {
            properties.MouseWheelDelta        = DeltaY;
            properties.IsHorizontalMouseWheel = false;
        }
        else if (MouseOptions.HasFlag(InjectedInputMouseOptions.HWheel))
        {
            properties.MouseWheelDelta        = DeltaX;
            properties.IsHorizontalMouseWheel = true;
        }
        else if (MouseOptions.HasFlag(InjectedInputMouseOptions.Move) || MouseOptions.HasFlag(InjectedInputMouseOptions.MoveNoCoalesce))
        {
            properties.MouseWheelDelta        = default;
            properties.IsHorizontalMouseWheel = false;

            // Should we use MouseData ??? But How to discriminate between X and Y moves?
            position.X += DeltaX;
            position.Y += DeltaY;
        }
        else
        {
            properties.MouseWheelDelta        = default;
            properties.IsHorizontalMouseWheel = false;
        }

        properties.PointerUpdateKind = update;

        var point = new PointerPoint(
            state.FrameId + TimeOffsetInMilliseconds,
            state.Timestamp + TimeOffsetInMilliseconds,
            PointerDevice.For(PointerDeviceType.Mouse),
            uint.MaxValue - 42,             // Try to avoid conflict with the real mouse pointer
            position,
            position,
            isInContact: properties.HasPressedButton,
            properties);

        return(new PointerEventArgs(point, default));
    }
コード例 #3
0
    internal PointerPoint ToPointerPoint(InjectedInputState state)
    {
        var isNew      = PointerOptions.HasFlag(InjectedInputPointerOptions.New);
        var properties = isNew
                        ? new PointerPointProperties()
                        : new PointerPointProperties(state.Properties);

        properties.IsPrimary = PointerOptions.HasFlag(InjectedInputPointerOptions.Primary);
        properties.IsInRange = PointerOptions.HasFlag(InjectedInputPointerOptions.InRange);
        // IsLeftButtonPressed = // stateful, cf. below,
        // IsMiddleButtonPressed = // Mouse only
        // IsRightButtonPressed = // stateful, cf. below,
        // IsHorizontalMouseWheel = // Mouse only
        // IsXButton1Pressed =
        // IsXButton2Pressed =
        // IsBarrelButtonPressed = // Pen only
        // IsEraser = // Pen only
        // Pressure = // Touch only
        // Orientation = // Touch only
        // ContactRect = new Rect(Contact.Left, Contact.Top, Contact.Right - Contact.Left, Contact.Bottom - Contact.Top),
        properties.TouchConfidence = PointerOptions.HasFlag(InjectedInputPointerOptions.Confidence);
        properties.IsCanceled      = PointerOptions.HasFlag(InjectedInputPointerOptions.Canceled);

        var update = default(PointerUpdateKind);

        if (PointerOptions.HasFlag(InjectedInputPointerOptions.FirstButton))
        {
            if (PointerOptions.HasFlag(InjectedInputPointerOptions.PointerDown))
            {
                properties.IsLeftButtonPressed = true;
                update |= PointerUpdateKind.LeftButtonPressed;
            }
            else if (PointerOptions.HasFlag(InjectedInputPointerOptions.PointerUp))
            {
                properties.IsLeftButtonPressed = false;
                update |= PointerUpdateKind.LeftButtonReleased;
            }
        }
        if (PointerOptions.HasFlag(InjectedInputPointerOptions.SecondButton))
        {
            if (PointerOptions.HasFlag(InjectedInputPointerOptions.PointerDown))
            {
                properties.IsRightButtonPressed = true;
                update |= PointerUpdateKind.RightButtonPressed;
            }
            else if (PointerOptions.HasFlag(InjectedInputPointerOptions.PointerUp))
            {
                properties.IsRightButtonPressed = false;
                update |= PointerUpdateKind.RightButtonReleased;
            }
        }

        properties.PointerUpdateKind = update;
        if (state.Type is PointerDeviceType.Pen)
        {
            properties.IsBarrelButtonPressed = properties.IsRightButtonPressed;
        }

        var location = new Point(PixelLocation.PositionX, PixelLocation.PositionY);
        var point    = new PointerPoint(
            state.FrameId + TimeOffsetInMilliseconds,
            state.Timestamp + PerformanceCount,
            PointerDevice.For(state.Type),
            isNew ? PointerId : state.PointerId,
            location,
            location,
            PointerOptions.HasFlag(InjectedInputPointerOptions.InContact),
            properties);

        return(point);
    }
コード例 #4
0
    internal PointerEventArgs ToEventArgs(InjectedInputState state)
    {
        var update     = default(PointerUpdateKind);
        var position   = state.Position;
        var properties = new PointerPointProperties(state.Properties)
        {
            IsPrimary = false,
            IsInRange = true             // always true for mouse
        };

        if (MouseOptions.HasFlag(InjectedInputMouseOptions.LeftDown))
        {
            properties.IsLeftButtonPressed = true;
            update |= PointerUpdateKind.LeftButtonPressed;
        }
        else if (MouseOptions.HasFlag(InjectedInputMouseOptions.LeftUp))
        {
            properties.IsLeftButtonPressed = false;
            update |= PointerUpdateKind.LeftButtonReleased;
        }

        if (MouseOptions.HasFlag(InjectedInputMouseOptions.MiddleDown))
        {
            properties.IsMiddleButtonPressed = true;
            update |= PointerUpdateKind.MiddleButtonPressed;
        }
        else if (MouseOptions.HasFlag(InjectedInputMouseOptions.MiddleUp))
        {
            properties.IsMiddleButtonPressed = false;
            update |= PointerUpdateKind.MiddleButtonReleased;
        }

        if (MouseOptions.HasFlag(InjectedInputMouseOptions.RightDown))
        {
            properties.IsRightButtonPressed = true;
            update |= PointerUpdateKind.RightButtonPressed;
        }
        else if (MouseOptions.HasFlag(InjectedInputMouseOptions.RightUp))
        {
            properties.IsRightButtonPressed = false;
            update |= PointerUpdateKind.RightButtonReleased;
        }

        if (MouseOptions.HasFlag(InjectedInputMouseOptions.XDown))
        {
            properties.IsXButton1Pressed = true;
            update |= PointerUpdateKind.XButton1Pressed;
        }
        else if (MouseOptions.HasFlag(InjectedInputMouseOptions.XUp))
        {
            properties.IsXButton1Pressed = false;
            update |= PointerUpdateKind.XButton1Released;
        }

        if (MouseOptions.HasFlag(InjectedInputMouseOptions.Wheel))
        {
            properties.MouseWheelDelta        = DeltaY;
            properties.IsHorizontalMouseWheel = false;
        }
        else if (MouseOptions.HasFlag(InjectedInputMouseOptions.HWheel))
        {
            properties.MouseWheelDelta        = DeltaX;
            properties.IsHorizontalMouseWheel = true;
        }
        else
        {
            properties.MouseWheelDelta        = default;
            properties.IsHorizontalMouseWheel = false;
            position.X += DeltaX;
            position.Y += DeltaY;
        }

        properties.PointerUpdateKind = update;

        var point = new PointerPoint(
            state.FrameId + TimeOffsetInMilliseconds,
            state.Timestamp + TimeOffsetInMilliseconds,
            PointerDevice.For(PointerDeviceType.Mouse),
            1,
            position,
            position,
            isInContact: true,             // Always true for mouse
            properties);

        return(new PointerEventArgs(point, default));
    }