This site has been retired. For up to date information, see handbook.gnome.org or gitlab.gnome.org.


[Home] [TitleIndex] [WordIndex

GNOME Shell Magnifier track focus and caret

Summary:

GNOME Shell Magnifier does not track focus or the caret. As a result, keyboard only users, who also have magnification on, must either regularly move the mouse to see the active area, or use an extra application to cause the area of interest to be displayed in the magnified view. Screen magnifiers for other platforms are able to track both focus and caret independently.

Ideally, GNOME Shell Magnifier should display the focused area and the caret independently of a focus tracker such as Orca. For those users who require both magnification and speech output and/or braille, Orca and GNOME Shell Magnifier should coexist, each doing the jobs they are intended to do without interacting with the other.

While the project is described as adding focus tracking to the magnifier, actually it is made up of two separate tasks. First, implement a focus and caret tracking device that is independent of the magnifier. While the magnifier is likely the first consumer of the focus tracker, there are other applications that would make use of the tracker -- an example is an onscreen keyboard (Caribou). As such, the focus tracker is a separate object independent of any client.

Secondly, modify the magnifier to use the focus tracker in a way that makes sense for magnifier users. This involves providing different tracking settings (e.g., centered vs. proportional), and a user interface so users can choose among the settings.

Details:

Some background: there is a proof of concept standalone python script that shows how to track the focus and caret.

1. Implement a FocusCaretTracker object that runs within GNOME Shell

2. Modify GNOME Shell magnifier to use the FocusCaretTracker.

3. (User preferences) Provide support for two kinds of settings.

  1. Positioning:
    • Preferences include "centred", "proportional", and "push" positioning.
      • these are specific to the magnifier, and not part of the FocusCaretTracker.

      • Issue: separate preferences for focus tracking and for caret tracking?
      • gsettings-desktop-schemas:
        • focus-tracking { centered, proportional, push (default) }
        • caret-tracking { centered, proportional, push (default) }
      • magnifier: make it sensitive to changes in these settings.
      • gnome-control-center: dialog to allow user to modify these settings.
      • Issue: is this level of detail necessary? Is it not sufficient to support "push" mode only? And, is it necessary to have independent focus and caret tracking modes -- e.g., centered for focus, but push for caret?
  2. Linking mouse position:
    • Some users want the position of the mouse to be independent of focus/caret tracking.
      • the experience is that if the mouse is located far from the focus point, which is typical, then if the user moves the mouse, the view abruptly changes from the focus point to what is near the mouse. And, vice versa on a subsequent focus/caret event.
    • Other users prefer that the mouse position is linked to the focus/caret position.
      • here, as the view is modified due to focus/caret changes, the mouse is re-positioned to the focus point.
      • nonetheless, thereafter, the mouse can be moved away from the focus point.
    • gsettings-desktop-schemas: boolean for mouse-follows-focus setting.
    • gnome-control-center: switch or checkbox for mouse-follow-focus.
    • magnifier: sensitive to mouse-follow-focus. Really, only needed when the two are linked.
      • Unknown: Likely cannot move mouse from within GNOME Shell nor JavaScript. Probably need to access this ability through X11, possibly XFixesCursor.


2024-10-23 11:37