Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        public SettingsWindow()
        {
            var onlyMouseUpDelay     = (AppSettings.Instance.Keyboard.GazeClickDelay - GazeMouse.DefaultMouseDownDelay);
            var clickDelay           = (uint)AppSettings.Instance.Keyboard.GazeClickDelay;
            var repeatMouseDownDelay = (uint)(clickDelay + onlyMouseUpDelay);

            defaultClickParams = new GazeClickParameters()
            {
                MouseDownDelay       = GazeMouse.DefaultMouseDownDelay,
                MouseUpDelay         = clickDelay,
                RepeatMouseDownDelay = repeatMouseDownDelay
            };

            calibrateClickParams = new GazeClickParameters
            {
                MouseDownDelay       = GazeMouse.DefaultMouseDownDelay,
                MouseUpDelay         = clickDelay,
                RepeatMouseDownDelay = uint.MaxValue
            };

            exitClickParams = new GazeClickParameters
            {
                MouseDownDelay       = GazeMouse.DefaultMouseDownDelay,
                MouseUpDelay         = uint.MaxValue,
                RepeatMouseDownDelay = uint.MaxValue
            };

            ResetSettingsCommand = new RelayCommand((p) => { AppSettings.Store.Reset(); });
            CloseSettingsCommand = new RelayCommand((p) => { AppSettings.Store.Save(); Close(); });

            InitializeComponent();

            Loaded   += SettingsWindow_Loaded;
            Unloaded += (s, e) => Owner.IsEnabled = true;
        }
Beispiel #2
0
        GazeClickParameters GetGazeClickParameters(FrameworkElement element)
        {
            var clickParams = new GazeClickParameters
            {
                MouseDownDelay = GazeMouse.DefaultMouseDownDelay
            };

            // Look for an ancestor that implements IGazeTarget.
            var walker = element;
            var target = element as IGazeTarget;

            while (target == null && walker != null)
            {
                walker = VisualTreeHelper.GetParent(walker) as FrameworkElement;
                target = walker as IGazeTarget;
            }

            // If we don't have a IGazeTarget ancestor...
            if (target == null)
            {
                // ...use the default delays multiplied by attached properties (defaults are 1 and 0).
                var multiplier       = Controls.HandsFree.GetMultiplier(element);
                var repeatMultiplier = Controls.HandsFree.GetRepeatMultiplier(element);

                clickParams.MouseUpDelay = (uint)(clickParams.MouseDownDelay +
                                                  Math.Round(multiplier * (AppSettings.Instance.Keyboard.GazeClickDelay - GazeMouse.DefaultMouseDownDelay)));
                clickParams.RepeatMouseDownDelay = double.IsNaN(repeatMultiplier) ?
                                                   uint.MaxValue :
                                                   (uint)(repeatMultiplier * (AppSettings.Instance.Keyboard.GazeClickDelay - GazeMouse.DefaultMouseDownDelay));
            }
            else
            {
                // Get the keystrokes we're likely to send.
                var sendKeys = NormalizedSendKeys(target.SendKeys);

                // If we have keystrokes and they're known from the the predictor...
                double probability;
                if (sendKeys != null && _sendKeysProbabilities.TryGetValue(sendKeys, out probability))
                {
                    // ...use the probability to select the delay...
                    var delay = GetMouseUpDelayFromProbability(probability);
                    clickParams.MouseUpDelay         = (uint)(clickParams.MouseDownDelay + Math.Round(target.Multiplier * delay));
                    clickParams.RepeatMouseDownDelay =
                        AppSettings.Instance.Keyboard.IsNoAlphaAutorepeat ? uint.MaxValue : (uint)(clickParams.MouseUpDelay +
                                                                                                   (AppSettings.Instance.Keyboard.GazeClickDelay - GazeMouse.DefaultMouseDownDelay));
                }
                else
                {
                    // ...otherwise use the default delay.
                    var delay = AppSettings.Instance.Keyboard.GazeClickDelay - GazeMouse.DefaultMouseDownDelay;
                    clickParams.MouseUpDelay         = (uint)(clickParams.MouseDownDelay + Math.Round(target.Multiplier * delay));
                    clickParams.RepeatMouseDownDelay = double.IsNaN(target.RepeatMultiplier) ?
                                                       uint.MaxValue :
                                                       (uint)(clickParams.MouseUpDelay +
                                                              target.RepeatMultiplier * (AppSettings.Instance.Keyboard.GazeClickDelay - GazeMouse.DefaultMouseDownDelay));
                }
            }

            return(clickParams);
        }
Beispiel #3
0
        public MainWindow()
        {
            InitializeComponent();

            Loaded      += MainWindow_Loaded;
            Closed      += MainWindow_Closed;
            Activated   += MainWindow_Activated;
            Deactivated += MainWindow_Deactivated;

            SystemEvents.SessionSwitch += (s, e) =>
            {
                _trace.TraceEvent(TraceEventType.Information, 0, "Session switching occuring");
                MainWindow_Deactivated(s, e);
            };

            _eyesOffStopTimer = new DispatcherTimer(
                TimeSpan.FromMilliseconds(250),
                DispatcherPriority.Normal,
                (sender, args) =>
            {
                _trace.TraceEvent(TraceEventType.Information, 0, "Eyes Off, stopped");
                Stop();
                _eyesOffStopTimer.Stop();
            },
                Dispatcher);

            _quickClickParams = new GazeClickParameters
            {
                MouseDownDelay       = 99,
                MouseUpDelay         = 100,
                RepeatMouseDownDelay = uint.MaxValue
            };

            _delayedClickParams = new GazeClickParameters
            {
                MouseDownDelay       = 100,
                MouseUpDelay         = 1000,
                RepeatMouseDownDelay = uint.MaxValue
            };

            VisualStateManager.GoToElementState(Canvas, DriveStates.Stopped.ToString(), true);
        }