Esempio n. 1
0
        public GazeCaret(IWpfTextView textView, IKeyboardEventService keyboard, IEyetrackerService eyetracker)
        {
            _textView   = textView;
            _keyboard   = keyboard;
            _eyetracker = eyetracker;

            _textView.Closed    += OnTextViewClosed;
            _keyboard.MoveCaret += OnCaretAction;
        }
Esempio n. 2
0
        public GazeScroll(IWpfTextView textView, IKeyboardEventService keyboard, IEyetrackerService eyetracker, IVelocityProvider velocityProvider)
        {
            _textView   = textView;
            _keyboard   = keyboard;
            _eyetracker = eyetracker;

            _textView.Closed       += OnTextViewClosed;
            _keyboard.UpdateScroll += OnUpdateScroll;
            _velocityProvider       = velocityProvider;
        }
Esempio n. 3
0
        public FocusableWindowManager(IVsUIShell shell, WindowEvents events, IEyetrackerService eyetracker, IKeyboardEventService keyboardEventService)
        {
            _shell       = shell;
            _openWindows = new List <IVsWindowFrame>();

            events.WindowCreated   += OnWindowCreated;
            events.WindowClosing   += OnWindowClosing;
            events.WindowActivated += OnWindowActivated;
            events.WindowMoved     += OnWindowMoved;

            var wpfWindow = Application.Current.MainWindow;
            var scaling   = VisualTreeHelper.GetDpi(wpfWindow);

            var dpiX = scaling.DpiScaleX;
            var dpiY = scaling.DpiScaleY;

            keyboardEventService.ChangeFocus += () =>
            {
                if (!GeneralOptions.Instance.WindowFocusEnabled)
                {
                    return;
                }

                ThreadHelper.ThrowIfNotOnUIThread();

                // note: there might be floating windows outside main window bounds
                var lookingAtApp = eyetracker.IsLookingAt(wpfWindow);
                Logger.Log($"FocusableWindowManager ChangeFocus: {(lookingAtApp ? "L" : "Not l")}ooking at VS");

                IVsWindowFrame[] openWindows;
                lock (_openWindowsLock)
                {
                    openWindows = _openWindows.ToArray();
                }

                foreach (var openWindow in openWindows)
                {
                    if (openWindow.IsVisible() == 0 && openWindow.IsOnScreen(out var onScreen) == 0 && onScreen != 0)
                    {
                        var winRect = CreateWindowRect(openWindow, dpiX, dpiY);
                        if (eyetracker.IsGazeInScreenRegion(winRect))
                        {
                            dynamic test = openWindow;

                            string title = test.Title;

                            Logger.Log($"You looked at {title} ({openWindow.GetType()})");
                            openWindow.Show();
                        }
                    }
                }
            };
        }
 public WpfTextViewListener(SVsServiceProvider serviceProvider)
 {
     _eyetracker            = (IEyetrackerService)serviceProvider.GetService(typeof(SEyetrackerService));
     _keyboardService       = (IKeyboardEventService)serviceProvider.GetService(typeof(SKeyboardEventService));
     _scrollVelocityService = (IScrollVelocityService)serviceProvider.GetService(typeof(SScrollVelocityService));
 }