public static void ScrollMouseWheel(ScrollWheelDirection direction, int amount) { INPUT[] Inputs = new INPUT[1]; INPUT Input = new INPUT(); Input.type = (uint)SendInputEventType.InputMouse; Input.U.mi.dwFlags = MOUSEEVENTF.WHEEL; Input.U.mi.mouseData = (direction == ScrollWheelDirection.Up) ? 120 * amount : -120 * amount; Inputs[0] = Input; SendInput(1, Inputs, INPUT.Size); }
/// <summary> /// "Key Down" midi event handler /// </summary> /// <param name="msg"></param> private void MidiIn_NoteOn(NoteOnMessage msg) { try { var maps = NoteControl.Mappings.Where(p => p.Value == msg.Pitch); foreach (var map in maps) { KeyboardUtil.Send(map.Key); } var mouseMaps = NoteControl.MouseMappings.Where(p => p.Value == msg.Pitch); foreach (var map in mouseMaps) { if (map.Key == Models.MouseBindType.LeftClick || map.Key == Models.MouseBindType.MiddleClick || map.Key == Models.MouseBindType.RightClick) { MouseButton btn = MouseButton.Left; if (btn == MouseButton.Left) { if (ConfigUtil.AppConfig.ToggleLeftMouseClick) { KeyboardUtil.MouseClick(btn, !_mouseClickOn); _mouseClickOn = !_mouseClickOn; return; } else if (ConfigUtil.AppConfig.HoldLeftMouseClick) { if (_mouseClickOn) { return; } _mouseClickOn = true; var delay = ConfigUtil.AppConfig.HoldLeftMouseDelay; DelayReleaseMouse(delay); } } else if (map.Key == Models.MouseBindType.MiddleClick) { btn = MouseButton.Middle; } else if (map.Key == Models.MouseBindType.RightClick) { btn = MouseButton.Right; } KeyboardUtil.MouseClick(btn, false); } else if (map.Key == Models.MouseBindType.WheelUp || map.Key == Models.MouseBindType.WheelDown) { ScrollWheelDirection dn = (map.Key == Models.MouseBindType.WheelUp) ? ScrollWheelDirection.Up : ScrollWheelDirection.Down; KeyboardUtil.ScrollMouseWheel(dn, ConfigUtil.AppConfig.ScrollWheelClicks); } else { MouseMoveDirection md = MouseMoveDirection.Left; if (map.Key == Models.MouseBindType.MoveLeft) { md = MouseMoveDirection.Left; } else if (map.Key == Models.MouseBindType.MoveRight) { md = MouseMoveDirection.Right; } else if (map.Key == Models.MouseBindType.MoveUp) { md = MouseMoveDirection.Up; } else if (map.Key == Models.MouseBindType.MoveDown) { md = MouseMoveDirection.Down; } KeyboardUtil.MouseMove(md, ConfigUtil.AppConfig.MouseSensitivity); } } _noteViewer.AddNote(msg); } catch (Exception ex) { Logger.Error(ex, "Midi note conversion failed(keydown): "); } }