/// <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; }
/// <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); }