public GazeCaret(IWpfTextView textView, IKeyboardEventService keyboard, IEyetrackerService eyetracker) { _textView = textView; _keyboard = keyboard; _eyetracker = eyetracker; _textView.Closed += OnTextViewClosed; _keyboard.MoveCaret += OnCaretAction; }
public GazeScroll(IWpfTextView textView, IKeyboardEventService keyboard, IEyetrackerService eyetracker, IVelocityProvider velocityProvider) { _textView = textView; _keyboard = keyboard; _eyetracker = eyetracker; _textView.Closed += OnTextViewClosed; _keyboard.UpdateScroll += OnUpdateScroll; _velocityProvider = velocityProvider; }
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)); }