Exemplo n.º 1
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="device">The device that sent the event.</param>
 /// <param name="data">Raw input data to pass.</param>
 public RawInputPointingDeviceEventArgs(IntPtr device, ref RAWINPUTMOUSE data)
 {
     Handle             = device;
     PointingDeviceData = data;
 }
Exemplo n.º 2
0
        /// <summary>
        /// Function to dispatch the raw input to a mouse device.
        /// </summary>
        /// <param name="device">The device that will receive the data.</param>
        /// <param name="rawData">Raw input data to translate.</param>
        public static void Dispatch(IRawInputDeviceData <GorgonRawMouseData> device, ref RAWINPUTMOUSE rawData)
        {
            short            wheelDelta = 0;
            MouseButtonState state      = MouseButtonState.None;

            if ((rawData.ButtonFlags & RawMouseButtons.MouseWheel) == RawMouseButtons.MouseWheel)
            {
                wheelDelta = (short)rawData.ButtonData;
            }

            if ((rawData.ButtonFlags & RawMouseButtons.LeftDown) == RawMouseButtons.LeftDown)
            {
                state = MouseButtonState.ButtonLeftDown;
            }

            if ((rawData.ButtonFlags & RawMouseButtons.RightDown) == RawMouseButtons.RightDown)
            {
                state = MouseButtonState.ButtonRightDown;
            }

            if ((rawData.ButtonFlags & RawMouseButtons.MiddleDown) == RawMouseButtons.MiddleDown)
            {
                state = MouseButtonState.ButtonMiddleDown;
            }

            if ((rawData.ButtonFlags & RawMouseButtons.Button4Down) == RawMouseButtons.Button4Down)
            {
                state = MouseButtonState.Button4Down;
            }

            if ((rawData.ButtonFlags & RawMouseButtons.Button5Down) == RawMouseButtons.Button5Down)
            {
                state = MouseButtonState.Button5Down;
            }

            if ((rawData.ButtonFlags & RawMouseButtons.LeftUp) == RawMouseButtons.LeftUp)
            {
                state = MouseButtonState.ButtonLeftUp;
            }

            if ((rawData.ButtonFlags & RawMouseButtons.RightUp) == RawMouseButtons.RightUp)
            {
                state = MouseButtonState.ButtonRightUp;
            }

            if ((rawData.ButtonFlags & RawMouseButtons.MiddleUp) == RawMouseButtons.MiddleUp)
            {
                state = MouseButtonState.ButtonMiddleUp;
            }

            if ((rawData.ButtonFlags & RawMouseButtons.Button4Up) == RawMouseButtons.Button4Up)
            {
                state = MouseButtonState.Button4Up;
            }

            if ((rawData.ButtonFlags & RawMouseButtons.Button5Up) == RawMouseButtons.Button5Up)
            {
                state = MouseButtonState.Button5Up;
            }

            var processedData = new GorgonRawMouseData
            {
                ButtonState     = state,
                MouseWheelDelta = wheelDelta,
                Position        = new Point(rawData.LastX, rawData.LastY),
                IsRelative      = ((rawData.Flags & RawMouseFlags.MoveAbsolute) != RawMouseFlags.MoveAbsolute)
            };

            device.ProcessData(ref processedData);
        }