/// <inheritdoc /> public void InputEvent(int xPos, int yPos, InputGestureEnum gesture) { if (gesture == InputGestureEnum.Click) { _dataContext.InputClick(xPos, yPos, ((NewsWidgetFull)FullWidget)); } }
/// <inheritdoc /> public void InputEvent(int xPos, int yPos, InputGestureEnum gesture) { if (gesture == InputGestureEnum.Click) { _dataContext.InputClick(xPos, yPos, (SpotifyWidgetFull)_fullWidget); } if (gesture != InputGestureEnum.Position) { int a = 12; } }
/// <summary> /// Handles timer event /// </summary> /// <param name="sender">Sender</param> /// <param name="e">Args</param> private void OnTimer(object sender, ElapsedEventArgs e) { _gesture = _gesture == InputGestureEnum.None && !System.Windows.Forms.Cursor.Position.Equals(_previousPosition) ? InputGestureEnum.Position : _gesture; _previousPosition = System.Windows.Forms.Cursor.Position; ScreenInputEvent?.Invoke( this, new ScreenInputEventArg( System.Windows.Forms.Cursor.Position.X, System.Windows.Forms.Cursor.Position.Y, _gesture)); _gesture = InputGestureEnum.None; _timer.Start(); }
/// <summary> /// Default constructor /// </summary> public MouseInput() { _settingsManager = new SettingsManager <MouseSettings>(); _settingsManager.Initialize(Resources.SettingsFileName); _timer = new Timer(_settingsManager.Settings.RefreshPeriode.Value) { AutoReset = false }; _timer.Elapsed += OnTimer; _timer.Start(); _previousPosition = System.Windows.Forms.Cursor.Position; _gesture = InputGestureEnum.None; Application.Current.MainWindow.MouseWheel += OnMouseWheelEvent; Application.Current.MainWindow.MouseDown += OnMouseDownEvent; }
/// <summary> /// Instatiates screen input event oject /// </summary> /// <param name="x">X position</param> /// <param name="y">Y positon</param> /// <param name="gesture">Gesture</param> public ScreenInputEventArg(double x, double y, InputGestureEnum gesture) { XPos = x; YPos = y; Gesture = gesture; }
/// <inheritdoc /> public void InputEvent(int xPos, int yPos, InputGestureEnum gesture) { }
/// <summary> /// Handles mouse down event /// </summary> /// <param name="sender">Sender</param> /// <param name="e">Args</param> private void OnMouseDownEvent(object sender, MouseButtonEventArgs e) { _timer.Stop(); _gesture = e.ChangedButton == MouseButton.Left ? InputGestureEnum.Click : InputGestureEnum.Exit; OnTimer(null, null); }
/// <summary> /// Handles mouse wheel event /// </summary> /// <param name="sender">Sender</param> /// <param name="e">Args</param> private void OnMouseWheelEvent(object sender, MouseWheelEventArgs e) { _timer.Stop(); _gesture = e.Delta > 0 ? InputGestureEnum.RollIn : InputGestureEnum.Rollout; OnTimer(null, null); }
/// <summary> /// Handles timer event /// </summary> /// <param name="sender">Sender</param> /// <param name="e">Args</param> private void OnTimer(object sender, ElapsedEventArgs e) { try { Frame frame = _controller.Frame(); Hand currentHand = GetRightHand(frame); Vector tip = GetHandTip(currentHand); // Get reference frame get first time with a righthand if (_referenceFrame == null && currentHand != null) { _referenceFrame = frame; } else if (_referenceFrame != null && currentHand == null) { // Remove reference frame if no hand is detected _referenceFrame = null; } // Compute gesture float rotation = 0; if (_referenceFrame != null && currentHand != null) { rotation = currentHand.RotationAngle(_referenceFrame, Vector.ZAxis); } int screenX = _settingsManager.Settings.ScreenX.Value; int screenY = _settingsManager.Settings.ScreenY.Value; int screenH = _settingsManager.Settings.ScreenHeight.Value; int delayBetweenActions = _settingsManager.Settings.DelayBetweenActions.Value; double xPos = tip == null ? 0f : tip.x * screenX / 180f + screenY; double yPos = tip == null ? 0f : screenH - tip.y * 4f; if (frame.Hands.Count == 2) { _gesture = DateTime.Now.Subtract(_lastClick).TotalMilliseconds > delayBetweenActions ? InputGestureEnum.Exit : InputGestureEnum.None; } else if (_referenceFrame != null && Math.Abs(rotation) > Math.PI / 3) { _gesture = rotation > 0 ? InputGestureEnum.RollIn : InputGestureEnum.Rollout; } else if (tip != null) { _gesture = tip.z <0 && DateTime.Now.Subtract(_lastClick).TotalMilliseconds> delayBetweenActions ? InputGestureEnum.Click : InputGestureEnum.Position; } else { _gesture = InputGestureEnum.None; } if (_gesture == InputGestureEnum.Click || _gesture == InputGestureEnum.Exit) { _lastClick = DateTime.Now; } // Notify gesture ScreenInputEvent?.Invoke(this, new ScreenInputEventArg(xPos, yPos, _gesture)); } catch (Exception ex) { LogManager.LogLine(ex.Message); } _timer.Start(); }